From 48bd7e3bbc481cd9b99a981f7d8e06989774f9d2 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Thu, 13 Aug 2009 06:05:07 +0000 Subject: [PATCH] tPOP_RET now has predicate operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78898 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMConstantIslandPass.cpp | 4 +- .../Thumb/2009-08-12-ConstIslandAssert.ll | 737 ++++++++++++++++++ 2 files changed, 739 insertions(+), 2 deletions(-) create mode 100644 test/CodeGen/Thumb/2009-08-12-ConstIslandAssert.ll diff --git a/lib/Target/ARM/ARMConstantIslandPass.cpp b/lib/Target/ARM/ARMConstantIslandPass.cpp index 5f2c9025d82..d60799e199c 100644 --- a/lib/Target/ARM/ARMConstantIslandPass.cpp +++ b/lib/Target/ARM/ARMConstantIslandPass.cpp @@ -1340,8 +1340,8 @@ bool ARMConstantIslands::UndoLRSpillRestore() { for (unsigned i = 0, e = PushPopMIs.size(); i != e; ++i) { MachineInstr *MI = PushPopMIs[i]; if (MI->getOpcode() == ARM::tPOP_RET && - MI->getOperand(0).getReg() == ARM::PC && - MI->getNumExplicitOperands() == 1) { + MI->getOperand(2).getReg() == ARM::PC && + MI->getNumExplicitOperands() == 3) { BuildMI(MI->getParent(), MI->getDebugLoc(), TII->get(ARM::tBX_RET)); MI->eraseFromParent(); MadeChange = true; diff --git a/test/CodeGen/Thumb/2009-08-12-ConstIslandAssert.ll b/test/CodeGen/Thumb/2009-08-12-ConstIslandAssert.ll new file mode 100644 index 00000000000..5c1348827c7 --- /dev/null +++ b/test/CodeGen/Thumb/2009-08-12-ConstIslandAssert.ll @@ -0,0 +1,737 @@ +; RUN: llvm-as < %s | llc -mtriple=thumbv6-apple-darwin + + %struct.BF_KEY = type { [18 x i32], [1024 x i32] } + +define arm_apcscc void @BF_encrypt(i32* nocapture %data, %struct.BF_KEY* nocapture %key, i32 %encrypt) nounwind { +entry: + %0 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 0; [#uses=2] + %1 = load i32* %data, align 4 ; [#uses=2] + %2 = load i32* undef, align 4 ; [#uses=2] + br i1 undef, label %bb1, label %bb + +bb: ; preds = %entry + %3 = load i32* %0, align 4 ; [#uses=1] + %4 = xor i32 %3, %1 ; [#uses=4] + %5 = load i32* null, align 4 ; [#uses=1] + %6 = lshr i32 %4, 24 ; [#uses=1] + %7 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %6; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = lshr i32 %4, 16 ; [#uses=1] + %10 = or i32 %9, 256 ; [#uses=1] + %11 = and i32 %10, 511 ; [#uses=1] + %12 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %11; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = add i32 %13, %8 ; [#uses=1] + %15 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 undef; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = xor i32 %14, %16 ; [#uses=1] + %18 = or i32 %4, 768 ; [#uses=1] + %19 = and i32 %18, 1023 ; [#uses=1] + %20 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %19; [#uses=1] + %21 = load i32* %20, align 4 ; [#uses=1] + %22 = add i32 %17, %21 ; [#uses=1] + %23 = xor i32 %5, %2 ; [#uses=1] + %24 = xor i32 %23, %22 ; [#uses=5] + %25 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 2; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = lshr i32 %24, 24 ; [#uses=1] + %28 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %27; [#uses=1] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = lshr i32 %24, 16 ; [#uses=1] + %31 = or i32 %30, 256 ; [#uses=1] + %32 = and i32 %31, 511 ; [#uses=1] + %33 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %32; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + %35 = add i32 %34, %29 ; [#uses=1] + %36 = lshr i32 %24, 8 ; [#uses=1] + %37 = or i32 %36, 512 ; [#uses=1] + %38 = and i32 %37, 767 ; [#uses=1] + %39 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %38; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = xor i32 %35, %40 ; [#uses=1] + %42 = or i32 %24, 768 ; [#uses=1] + %43 = and i32 %42, 1023 ; [#uses=1] + %44 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %43; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = add i32 %41, %45 ; [#uses=1] + %47 = xor i32 %26, %4 ; [#uses=1] + %48 = xor i32 %47, %46 ; [#uses=5] + %49 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 3; [#uses=1] + %50 = load i32* %49, align 4 ; [#uses=1] + %51 = lshr i32 %48, 24 ; [#uses=1] + %52 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %51; [#uses=1] + %53 = load i32* %52, align 4 ; [#uses=1] + %54 = lshr i32 %48, 16 ; [#uses=1] + %55 = or i32 %54, 256 ; [#uses=1] + %56 = and i32 %55, 511 ; [#uses=1] + %57 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %56; [#uses=1] + %58 = load i32* %57, align 4 ; [#uses=1] + %59 = add i32 %58, %53 ; [#uses=1] + %60 = lshr i32 %48, 8 ; [#uses=1] + %61 = or i32 %60, 512 ; [#uses=1] + %62 = and i32 %61, 767 ; [#uses=1] + %63 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %62; [#uses=1] + %64 = load i32* %63, align 4 ; [#uses=1] + %65 = xor i32 %59, %64 ; [#uses=1] + %66 = or i32 %48, 768 ; [#uses=1] + %67 = and i32 %66, 1023 ; [#uses=1] + %68 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %67; [#uses=1] + %69 = load i32* %68, align 4 ; [#uses=1] + %70 = add i32 %65, %69 ; [#uses=1] + %71 = xor i32 %50, %24 ; [#uses=1] + %72 = xor i32 %71, %70 ; [#uses=5] + %73 = load i32* null, align 4 ; [#uses=1] + %74 = lshr i32 %72, 24 ; [#uses=1] + %75 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %74; [#uses=1] + %76 = load i32* %75, align 4 ; [#uses=1] + %77 = lshr i32 %72, 16 ; [#uses=1] + %78 = or i32 %77, 256 ; [#uses=1] + %79 = and i32 %78, 511 ; [#uses=1] + %80 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %79; [#uses=1] + %81 = load i32* %80, align 4 ; [#uses=1] + %82 = add i32 %81, %76 ; [#uses=1] + %83 = lshr i32 %72, 8 ; [#uses=1] + %84 = or i32 %83, 512 ; [#uses=1] + %85 = and i32 %84, 767 ; [#uses=1] + %86 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %85; [#uses=1] + %87 = load i32* %86, align 4 ; [#uses=1] + %88 = xor i32 %82, %87 ; [#uses=1] + %89 = or i32 %72, 768 ; [#uses=1] + %90 = and i32 %89, 1023 ; [#uses=1] + %91 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %90; [#uses=1] + %92 = load i32* %91, align 4 ; [#uses=1] + %93 = add i32 %88, %92 ; [#uses=1] + %94 = xor i32 %73, %48 ; [#uses=1] + %95 = xor i32 %94, %93 ; [#uses=5] + %96 = load i32* undef, align 4 ; [#uses=1] + %97 = lshr i32 %95, 24 ; [#uses=1] + %98 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %97; [#uses=1] + %99 = load i32* %98, align 4 ; [#uses=1] + %100 = lshr i32 %95, 16 ; [#uses=1] + %101 = or i32 %100, 256 ; [#uses=1] + %102 = and i32 %101, 511 ; [#uses=1] + %103 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %102; [#uses=1] + %104 = load i32* %103, align 4 ; [#uses=1] + %105 = add i32 %104, %99 ; [#uses=1] + %106 = lshr i32 %95, 8 ; [#uses=1] + %107 = or i32 %106, 512 ; [#uses=1] + %108 = and i32 %107, 767 ; [#uses=1] + %109 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %108; [#uses=1] + %110 = load i32* %109, align 4 ; [#uses=1] + %111 = xor i32 %105, %110 ; [#uses=1] + %112 = or i32 %95, 768 ; [#uses=1] + %113 = and i32 %112, 1023 ; [#uses=1] + %114 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %113; [#uses=1] + %115 = load i32* %114, align 4 ; [#uses=1] + %116 = add i32 %111, %115 ; [#uses=1] + %117 = xor i32 %96, %72 ; [#uses=1] + %118 = xor i32 %117, %116 ; [#uses=5] + %119 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 6; [#uses=1] + %120 = load i32* %119, align 4 ; [#uses=1] + %121 = lshr i32 %118, 24 ; [#uses=1] + %122 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %121; [#uses=1] + %123 = load i32* %122, align 4 ; [#uses=1] + %124 = lshr i32 %118, 16 ; [#uses=1] + %125 = or i32 %124, 256 ; [#uses=1] + %126 = and i32 %125, 511 ; [#uses=1] + %127 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %126; [#uses=1] + %128 = load i32* %127, align 4 ; [#uses=1] + %129 = add i32 %128, %123 ; [#uses=1] + %130 = lshr i32 %118, 8 ; [#uses=1] + %131 = or i32 %130, 512 ; [#uses=1] + %132 = and i32 %131, 767 ; [#uses=1] + %133 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %132; [#uses=1] + %134 = load i32* %133, align 4 ; [#uses=1] + %135 = xor i32 %129, %134 ; [#uses=1] + %136 = or i32 %118, 768 ; [#uses=1] + %137 = and i32 %136, 1023 ; [#uses=1] + %138 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %137; [#uses=1] + %139 = load i32* %138, align 4 ; [#uses=1] + %140 = add i32 %135, %139 ; [#uses=1] + %141 = xor i32 %120, %95 ; [#uses=1] + %142 = xor i32 %141, %140 ; [#uses=5] + %143 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 7; [#uses=1] + %144 = load i32* %143, align 4 ; [#uses=1] + %145 = lshr i32 %142, 24 ; [#uses=1] + %146 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %145; [#uses=1] + %147 = load i32* %146, align 4 ; [#uses=1] + %148 = lshr i32 %142, 16 ; [#uses=1] + %149 = or i32 %148, 256 ; [#uses=1] + %150 = and i32 %149, 511 ; [#uses=1] + %151 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %150; [#uses=1] + %152 = load i32* %151, align 4 ; [#uses=1] + %153 = add i32 %152, %147 ; [#uses=1] + %154 = lshr i32 %142, 8 ; [#uses=1] + %155 = or i32 %154, 512 ; [#uses=1] + %156 = and i32 %155, 767 ; [#uses=1] + %157 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %156; [#uses=1] + %158 = load i32* %157, align 4 ; [#uses=1] + %159 = xor i32 %153, %158 ; [#uses=1] + %160 = or i32 %142, 768 ; [#uses=1] + %161 = and i32 %160, 1023 ; [#uses=1] + %162 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %161; [#uses=1] + %163 = load i32* %162, align 4 ; [#uses=1] + %164 = add i32 %159, %163 ; [#uses=1] + %165 = xor i32 %144, %118 ; [#uses=1] + %166 = xor i32 %165, %164 ; [#uses=5] + %167 = load i32* undef, align 4 ; [#uses=1] + %168 = lshr i32 %166, 24 ; [#uses=1] + %169 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %168; [#uses=1] + %170 = load i32* %169, align 4 ; [#uses=1] + %171 = lshr i32 %166, 16 ; [#uses=1] + %172 = or i32 %171, 256 ; [#uses=1] + %173 = and i32 %172, 511 ; [#uses=1] + %174 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %173; [#uses=1] + %175 = load i32* %174, align 4 ; [#uses=1] + %176 = add i32 %175, %170 ; [#uses=1] + %177 = lshr i32 %166, 8 ; [#uses=1] + %178 = or i32 %177, 512 ; [#uses=1] + %179 = and i32 %178, 767 ; [#uses=1] + %180 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %179; [#uses=1] + %181 = load i32* %180, align 4 ; [#uses=1] + %182 = xor i32 %176, %181 ; [#uses=1] + %183 = or i32 %166, 768 ; [#uses=1] + %184 = and i32 %183, 1023 ; [#uses=1] + %185 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %184; [#uses=1] + %186 = load i32* %185, align 4 ; [#uses=1] + %187 = add i32 %182, %186 ; [#uses=1] + %188 = xor i32 %167, %142 ; [#uses=1] + %189 = xor i32 %188, %187 ; [#uses=5] + %190 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 9; [#uses=1] + %191 = load i32* %190, align 4 ; [#uses=1] + %192 = lshr i32 %189, 24 ; [#uses=1] + %193 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %192; [#uses=1] + %194 = load i32* %193, align 4 ; [#uses=1] + %195 = lshr i32 %189, 16 ; [#uses=1] + %196 = or i32 %195, 256 ; [#uses=1] + %197 = and i32 %196, 511 ; [#uses=1] + %198 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %197; [#uses=1] + %199 = load i32* %198, align 4 ; [#uses=1] + %200 = add i32 %199, %194 ; [#uses=1] + %201 = lshr i32 %189, 8 ; [#uses=1] + %202 = or i32 %201, 512 ; [#uses=1] + %203 = and i32 %202, 767 ; [#uses=1] + %204 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %203; [#uses=1] + %205 = load i32* %204, align 4 ; [#uses=1] + %206 = xor i32 %200, %205 ; [#uses=1] + %207 = or i32 %189, 768 ; [#uses=1] + %208 = and i32 %207, 1023 ; [#uses=1] + %209 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %208; [#uses=1] + %210 = load i32* %209, align 4 ; [#uses=1] + %211 = add i32 %206, %210 ; [#uses=1] + %212 = xor i32 %191, %166 ; [#uses=1] + %213 = xor i32 %212, %211 ; [#uses=5] + %214 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 10; [#uses=1] + %215 = load i32* %214, align 4 ; [#uses=1] + %216 = lshr i32 %213, 24 ; [#uses=1] + %217 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %216; [#uses=1] + %218 = load i32* %217, align 4 ; [#uses=1] + %219 = lshr i32 %213, 16 ; [#uses=1] + %220 = or i32 %219, 256 ; [#uses=1] + %221 = and i32 %220, 511 ; [#uses=1] + %222 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %221; [#uses=1] + %223 = load i32* %222, align 4 ; [#uses=1] + %224 = add i32 %223, %218 ; [#uses=1] + %225 = lshr i32 %213, 8 ; [#uses=1] + %226 = or i32 %225, 512 ; [#uses=1] + %227 = and i32 %226, 767 ; [#uses=1] + %228 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %227; [#uses=1] + %229 = load i32* %228, align 4 ; [#uses=1] + %230 = xor i32 %224, %229 ; [#uses=1] + %231 = or i32 %213, 768 ; [#uses=1] + %232 = and i32 %231, 1023 ; [#uses=1] + %233 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %232; [#uses=1] + %234 = load i32* %233, align 4 ; [#uses=1] + %235 = add i32 %230, %234 ; [#uses=1] + %236 = xor i32 %215, %189 ; [#uses=1] + %237 = xor i32 %236, %235 ; [#uses=5] + %238 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 11; [#uses=1] + %239 = load i32* %238, align 4 ; [#uses=1] + %240 = lshr i32 %237, 24 ; [#uses=1] + %241 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %240; [#uses=1] + %242 = load i32* %241, align 4 ; [#uses=1] + %243 = lshr i32 %237, 16 ; [#uses=1] + %244 = or i32 %243, 256 ; [#uses=1] + %245 = and i32 %244, 511 ; [#uses=1] + %246 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %245; [#uses=1] + %247 = load i32* %246, align 4 ; [#uses=1] + %248 = add i32 %247, %242 ; [#uses=1] + %249 = lshr i32 %237, 8 ; [#uses=1] + %250 = or i32 %249, 512 ; [#uses=1] + %251 = and i32 %250, 767 ; [#uses=1] + %252 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %251; [#uses=1] + %253 = load i32* %252, align 4 ; [#uses=1] + %254 = xor i32 %248, %253 ; [#uses=1] + %255 = or i32 %237, 768 ; [#uses=1] + %256 = and i32 %255, 1023 ; [#uses=1] + %257 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %256; [#uses=1] + %258 = load i32* %257, align 4 ; [#uses=1] + %259 = add i32 %254, %258 ; [#uses=1] + %260 = xor i32 %239, %213 ; [#uses=1] + %261 = xor i32 %260, %259 ; [#uses=5] + %262 = load i32* undef, align 4 ; [#uses=1] + %263 = lshr i32 %261, 24 ; [#uses=1] + %264 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %263; [#uses=1] + %265 = load i32* %264, align 4 ; [#uses=1] + %266 = lshr i32 %261, 16 ; [#uses=1] + %267 = or i32 %266, 256 ; [#uses=1] + %268 = and i32 %267, 511 ; [#uses=1] + %269 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %268; [#uses=1] + %270 = load i32* %269, align 4 ; [#uses=1] + %271 = add i32 %270, %265 ; [#uses=1] + %272 = lshr i32 %261, 8 ; [#uses=1] + %273 = or i32 %272, 512 ; [#uses=1] + %274 = and i32 %273, 767 ; [#uses=1] + %275 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %274; [#uses=1] + %276 = load i32* %275, align 4 ; [#uses=1] + %277 = xor i32 %271, %276 ; [#uses=1] + %278 = or i32 %261, 768 ; [#uses=1] + %279 = and i32 %278, 1023 ; [#uses=1] + %280 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %279; [#uses=1] + %281 = load i32* %280, align 4 ; [#uses=1] + %282 = add i32 %277, %281 ; [#uses=1] + %283 = xor i32 %262, %237 ; [#uses=1] + %284 = xor i32 %283, %282 ; [#uses=4] + %285 = load i32* null, align 4 ; [#uses=1] + %286 = lshr i32 %284, 24 ; [#uses=1] + %287 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %286; [#uses=1] + %288 = load i32* %287, align 4 ; [#uses=1] + %289 = lshr i32 %284, 16 ; [#uses=1] + %290 = or i32 %289, 256 ; [#uses=1] + %291 = and i32 %290, 511 ; [#uses=1] + %292 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %291; [#uses=1] + %293 = load i32* %292, align 4 ; [#uses=1] + %294 = add i32 %293, %288 ; [#uses=1] + %295 = lshr i32 %284, 8 ; [#uses=1] + %296 = or i32 %295, 512 ; [#uses=1] + %297 = and i32 %296, 767 ; [#uses=1] + %298 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %297; [#uses=1] + %299 = load i32* %298, align 4 ; [#uses=1] + %300 = xor i32 %294, %299 ; [#uses=1] + %301 = or i32 %284, 768 ; [#uses=1] + %302 = and i32 %301, 1023 ; [#uses=1] + %303 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %302; [#uses=1] + %304 = load i32* %303, align 4 ; [#uses=1] + %305 = add i32 %300, %304 ; [#uses=1] + %306 = xor i32 %285, %261 ; [#uses=1] + %307 = xor i32 %306, %305 ; [#uses=1] + %308 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 15; [#uses=1] + %309 = load i32* %308, align 4 ; [#uses=1] + %310 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 0; [#uses=1] + %311 = load i32* %310, align 4 ; [#uses=1] + %312 = or i32 0, 256 ; [#uses=1] + %313 = and i32 %312, 511 ; [#uses=1] + %314 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %313; [#uses=1] + %315 = load i32* %314, align 4 ; [#uses=1] + %316 = add i32 %315, %311 ; [#uses=1] + %317 = or i32 0, 512 ; [#uses=1] + %318 = and i32 %317, 767 ; [#uses=1] + %319 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %318; [#uses=1] + %320 = load i32* %319, align 4 ; [#uses=1] + %321 = xor i32 %316, %320 ; [#uses=1] + %322 = or i32 0, 768 ; [#uses=1] + %323 = and i32 %322, 1023 ; [#uses=1] + %324 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %323; [#uses=1] + %325 = load i32* %324, align 4 ; [#uses=1] + %326 = add i32 %321, %325 ; [#uses=1] + %327 = xor i32 %309, %307 ; [#uses=1] + %328 = xor i32 %327, %326 ; [#uses=5] + %329 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 17; [#uses=1] + br label %bb2 + +bb1: ; preds = %entry + %330 = load i32* null, align 4 ; [#uses=1] + %331 = xor i32 %330, %1 ; [#uses=4] + %332 = load i32* null, align 4 ; [#uses=1] + %333 = lshr i32 %331, 24 ; [#uses=1] + %334 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %333; [#uses=1] + %335 = load i32* %334, align 4 ; [#uses=1] + %336 = load i32* null, align 4 ; [#uses=1] + %337 = add i32 %336, %335 ; [#uses=1] + %338 = lshr i32 %331, 8 ; [#uses=1] + %339 = or i32 %338, 512 ; [#uses=1] + %340 = and i32 %339, 767 ; [#uses=1] + %341 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %340; [#uses=1] + %342 = load i32* %341, align 4 ; [#uses=1] + %343 = xor i32 %337, %342 ; [#uses=1] + %344 = or i32 %331, 768 ; [#uses=1] + %345 = and i32 %344, 1023 ; [#uses=1] + %346 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %345; [#uses=1] + %347 = load i32* %346, align 4 ; [#uses=1] + %348 = add i32 %343, %347 ; [#uses=1] + %349 = xor i32 %332, %2 ; [#uses=1] + %350 = xor i32 %349, %348 ; [#uses=5] + %351 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 15; [#uses=1] + %352 = load i32* %351, align 4 ; [#uses=1] + %353 = lshr i32 %350, 24 ; [#uses=1] + %354 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %353; [#uses=1] + %355 = load i32* %354, align 4 ; [#uses=1] + %356 = lshr i32 %350, 16 ; [#uses=1] + %357 = or i32 %356, 256 ; [#uses=1] + %358 = and i32 %357, 511 ; [#uses=1] + %359 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %358; [#uses=1] + %360 = load i32* %359, align 4 ; [#uses=1] + %361 = add i32 %360, %355 ; [#uses=1] + %362 = lshr i32 %350, 8 ; [#uses=1] + %363 = or i32 %362, 512 ; [#uses=1] + %364 = and i32 %363, 767 ; [#uses=1] + %365 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %364; [#uses=1] + %366 = load i32* %365, align 4 ; [#uses=1] + %367 = xor i32 %361, %366 ; [#uses=1] + %368 = or i32 %350, 768 ; [#uses=1] + %369 = and i32 %368, 1023 ; [#uses=1] + %370 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %369; [#uses=1] + %371 = load i32* %370, align 4 ; [#uses=1] + %372 = add i32 %367, %371 ; [#uses=1] + %373 = xor i32 %352, %331 ; [#uses=1] + %374 = xor i32 %373, %372 ; [#uses=5] + %375 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 14; [#uses=1] + %376 = load i32* %375, align 4 ; [#uses=1] + %377 = lshr i32 %374, 24 ; [#uses=1] + %378 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %377; [#uses=1] + %379 = load i32* %378, align 4 ; [#uses=1] + %380 = lshr i32 %374, 16 ; [#uses=1] + %381 = or i32 %380, 256 ; [#uses=1] + %382 = and i32 %381, 511 ; [#uses=1] + %383 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %382; [#uses=1] + %384 = load i32* %383, align 4 ; [#uses=1] + %385 = add i32 %384, %379 ; [#uses=1] + %386 = lshr i32 %374, 8 ; [#uses=1] + %387 = or i32 %386, 512 ; [#uses=1] + %388 = and i32 %387, 767 ; [#uses=1] + %389 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %388; [#uses=1] + %390 = load i32* %389, align 4 ; [#uses=1] + %391 = xor i32 %385, %390 ; [#uses=1] + %392 = or i32 %374, 768 ; [#uses=1] + %393 = and i32 %392, 1023 ; [#uses=1] + %394 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %393; [#uses=1] + %395 = load i32* %394, align 4 ; [#uses=1] + %396 = add i32 %391, %395 ; [#uses=1] + %397 = xor i32 %376, %350 ; [#uses=1] + %398 = xor i32 %397, %396 ; [#uses=5] + %399 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 13; [#uses=1] + %400 = load i32* %399, align 4 ; [#uses=1] + %401 = lshr i32 %398, 24 ; [#uses=1] + %402 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %401; [#uses=1] + %403 = load i32* %402, align 4 ; [#uses=1] + %404 = lshr i32 %398, 16 ; [#uses=1] + %405 = or i32 %404, 256 ; [#uses=1] + %406 = and i32 %405, 511 ; [#uses=1] + %407 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %406; [#uses=1] + %408 = load i32* %407, align 4 ; [#uses=1] + %409 = add i32 %408, %403 ; [#uses=1] + %410 = lshr i32 %398, 8 ; [#uses=1] + %411 = or i32 %410, 512 ; [#uses=1] + %412 = and i32 %411, 767 ; [#uses=1] + %413 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %412; [#uses=1] + %414 = load i32* %413, align 4 ; [#uses=1] + %415 = xor i32 %409, %414 ; [#uses=1] + %416 = or i32 %398, 768 ; [#uses=1] + %417 = and i32 %416, 1023 ; [#uses=1] + %418 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %417; [#uses=1] + %419 = load i32* %418, align 4 ; [#uses=1] + %420 = add i32 %415, %419 ; [#uses=1] + %421 = xor i32 %400, %374 ; [#uses=1] + %422 = xor i32 %421, %420 ; [#uses=5] + %423 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 12; [#uses=1] + %424 = load i32* %423, align 4 ; [#uses=1] + %425 = lshr i32 %422, 24 ; [#uses=1] + %426 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %425; [#uses=1] + %427 = load i32* %426, align 4 ; [#uses=1] + %428 = lshr i32 %422, 16 ; [#uses=1] + %429 = or i32 %428, 256 ; [#uses=1] + %430 = and i32 %429, 511 ; [#uses=1] + %431 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %430; [#uses=1] + %432 = load i32* %431, align 4 ; [#uses=1] + %433 = add i32 %432, %427 ; [#uses=1] + %434 = lshr i32 %422, 8 ; [#uses=1] + %435 = or i32 %434, 512 ; [#uses=1] + %436 = and i32 %435, 767 ; [#uses=1] + %437 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %436; [#uses=1] + %438 = load i32* %437, align 4 ; [#uses=1] + %439 = xor i32 %433, %438 ; [#uses=1] + %440 = or i32 %422, 768 ; [#uses=1] + %441 = and i32 %440, 1023 ; [#uses=1] + %442 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %441; [#uses=1] + %443 = load i32* %442, align 4 ; [#uses=1] + %444 = add i32 %439, %443 ; [#uses=1] + %445 = xor i32 %424, %398 ; [#uses=1] + %446 = xor i32 %445, %444 ; [#uses=5] + %447 = load i32* undef, align 4 ; [#uses=1] + %448 = lshr i32 %446, 24 ; [#uses=1] + %449 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %448; [#uses=1] + %450 = load i32* %449, align 4 ; [#uses=1] + %451 = lshr i32 %446, 16 ; [#uses=1] + %452 = or i32 %451, 256 ; [#uses=1] + %453 = and i32 %452, 511 ; [#uses=1] + %454 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %453; [#uses=1] + %455 = load i32* %454, align 4 ; [#uses=1] + %456 = add i32 %455, %450 ; [#uses=1] + %457 = lshr i32 %446, 8 ; [#uses=1] + %458 = or i32 %457, 512 ; [#uses=1] + %459 = and i32 %458, 767 ; [#uses=1] + %460 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %459; [#uses=1] + %461 = load i32* %460, align 4 ; [#uses=1] + %462 = xor i32 %456, %461 ; [#uses=1] + %463 = or i32 %446, 768 ; [#uses=1] + %464 = and i32 %463, 1023 ; [#uses=1] + %465 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %464; [#uses=1] + %466 = load i32* %465, align 4 ; [#uses=1] + %467 = add i32 %462, %466 ; [#uses=1] + %468 = xor i32 %447, %422 ; [#uses=1] + %469 = xor i32 %468, %467 ; [#uses=5] + %470 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 10; [#uses=1] + %471 = load i32* %470, align 4 ; [#uses=1] + %472 = lshr i32 %469, 24 ; [#uses=1] + %473 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %472; [#uses=1] + %474 = load i32* %473, align 4 ; [#uses=1] + %475 = lshr i32 %469, 16 ; [#uses=1] + %476 = or i32 %475, 256 ; [#uses=1] + %477 = and i32 %476, 511 ; [#uses=1] + %478 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %477; [#uses=1] + %479 = load i32* %478, align 4 ; [#uses=1] + %480 = add i32 %479, %474 ; [#uses=1] + %481 = lshr i32 %469, 8 ; [#uses=1] + %482 = or i32 %481, 512 ; [#uses=1] + %483 = and i32 %482, 767 ; [#uses=1] + %484 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %483; [#uses=1] + %485 = load i32* %484, align 4 ; [#uses=1] + %486 = xor i32 %480, %485 ; [#uses=1] + %487 = or i32 %469, 768 ; [#uses=1] + %488 = and i32 %487, 1023 ; [#uses=1] + %489 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %488; [#uses=1] + %490 = load i32* %489, align 4 ; [#uses=1] + %491 = add i32 %486, %490 ; [#uses=1] + %492 = xor i32 %471, %446 ; [#uses=1] + %493 = xor i32 %492, %491 ; [#uses=5] + %494 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 9; [#uses=1] + %495 = load i32* %494, align 4 ; [#uses=1] + %496 = lshr i32 %493, 24 ; [#uses=1] + %497 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %496; [#uses=1] + %498 = load i32* %497, align 4 ; [#uses=1] + %499 = lshr i32 %493, 16 ; [#uses=1] + %500 = or i32 %499, 256 ; [#uses=1] + %501 = and i32 %500, 511 ; [#uses=1] + %502 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %501; [#uses=1] + %503 = load i32* %502, align 4 ; [#uses=1] + %504 = add i32 %503, %498 ; [#uses=1] + %505 = lshr i32 %493, 8 ; [#uses=1] + %506 = or i32 %505, 512 ; [#uses=1] + %507 = and i32 %506, 767 ; [#uses=1] + %508 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %507; [#uses=1] + %509 = load i32* %508, align 4 ; [#uses=1] + %510 = xor i32 %504, %509 ; [#uses=1] + %511 = or i32 %493, 768 ; [#uses=1] + %512 = and i32 %511, 1023 ; [#uses=1] + %513 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %512; [#uses=1] + %514 = load i32* %513, align 4 ; [#uses=1] + %515 = add i32 %510, %514 ; [#uses=1] + %516 = xor i32 %495, %469 ; [#uses=1] + %517 = xor i32 %516, %515 ; [#uses=5] + %518 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 8; [#uses=1] + %519 = load i32* %518, align 4 ; [#uses=1] + %520 = lshr i32 %517, 24 ; [#uses=1] + %521 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %520; [#uses=1] + %522 = load i32* %521, align 4 ; [#uses=1] + %523 = lshr i32 %517, 16 ; [#uses=1] + %524 = or i32 %523, 256 ; [#uses=1] + %525 = and i32 %524, 511 ; [#uses=1] + %526 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %525; [#uses=1] + %527 = load i32* %526, align 4 ; [#uses=1] + %528 = add i32 %527, %522 ; [#uses=1] + %529 = lshr i32 %517, 8 ; [#uses=1] + %530 = or i32 %529, 512 ; [#uses=1] + %531 = and i32 %530, 767 ; [#uses=1] + %532 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %531; [#uses=1] + %533 = load i32* %532, align 4 ; [#uses=1] + %534 = xor i32 %528, %533 ; [#uses=1] + %535 = or i32 %517, 768 ; [#uses=1] + %536 = and i32 %535, 1023 ; [#uses=1] + %537 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %536; [#uses=1] + %538 = load i32* %537, align 4 ; [#uses=1] + %539 = add i32 %534, %538 ; [#uses=1] + %540 = xor i32 %519, %493 ; [#uses=1] + %541 = xor i32 %540, %539 ; [#uses=5] + %542 = load i32* undef, align 4 ; [#uses=1] + %543 = lshr i32 %541, 24 ; [#uses=1] + %544 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %543; [#uses=1] + %545 = load i32* %544, align 4 ; [#uses=1] + %546 = lshr i32 %541, 16 ; [#uses=1] + %547 = or i32 %546, 256 ; [#uses=1] + %548 = and i32 %547, 511 ; [#uses=1] + %549 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %548; [#uses=1] + %550 = load i32* %549, align 4 ; [#uses=1] + %551 = add i32 %550, %545 ; [#uses=1] + %552 = lshr i32 %541, 8 ; [#uses=1] + %553 = or i32 %552, 512 ; [#uses=1] + %554 = and i32 %553, 767 ; [#uses=1] + %555 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %554; [#uses=1] + %556 = load i32* %555, align 4 ; [#uses=1] + %557 = xor i32 %551, %556 ; [#uses=1] + %558 = or i32 %541, 768 ; [#uses=1] + %559 = and i32 %558, 1023 ; [#uses=1] + %560 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %559; [#uses=1] + %561 = load i32* %560, align 4 ; [#uses=1] + %562 = add i32 %557, %561 ; [#uses=1] + %563 = xor i32 %542, %517 ; [#uses=1] + %564 = xor i32 %563, %562 ; [#uses=5] + %565 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 6; [#uses=1] + %566 = load i32* %565, align 4 ; [#uses=1] + %567 = lshr i32 %564, 24 ; [#uses=1] + %568 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %567; [#uses=1] + %569 = load i32* %568, align 4 ; [#uses=1] + %570 = lshr i32 %564, 16 ; [#uses=1] + %571 = or i32 %570, 256 ; [#uses=1] + %572 = and i32 %571, 511 ; [#uses=1] + %573 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %572; [#uses=1] + %574 = load i32* %573, align 4 ; [#uses=1] + %575 = add i32 %574, %569 ; [#uses=1] + %576 = lshr i32 %564, 8 ; [#uses=1] + %577 = or i32 %576, 512 ; [#uses=1] + %578 = and i32 %577, 767 ; [#uses=1] + %579 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %578; [#uses=1] + %580 = load i32* %579, align 4 ; [#uses=1] + %581 = xor i32 %575, %580 ; [#uses=1] + %582 = or i32 %564, 768 ; [#uses=1] + %583 = and i32 %582, 1023 ; [#uses=1] + %584 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %583; [#uses=1] + %585 = load i32* %584, align 4 ; [#uses=1] + %586 = add i32 %581, %585 ; [#uses=1] + %587 = xor i32 %566, %541 ; [#uses=1] + %588 = xor i32 %587, %586 ; [#uses=5] + %589 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 5; [#uses=1] + %590 = load i32* %589, align 4 ; [#uses=1] + %591 = lshr i32 %588, 24 ; [#uses=1] + %592 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %591; [#uses=1] + %593 = load i32* %592, align 4 ; [#uses=1] + %594 = lshr i32 %588, 16 ; [#uses=1] + %595 = or i32 %594, 256 ; [#uses=1] + %596 = and i32 %595, 511 ; [#uses=1] + %597 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %596; [#uses=1] + %598 = load i32* %597, align 4 ; [#uses=1] + %599 = add i32 %598, %593 ; [#uses=1] + %600 = lshr i32 %588, 8 ; [#uses=1] + %601 = or i32 %600, 512 ; [#uses=1] + %602 = and i32 %601, 767 ; [#uses=1] + %603 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %602; [#uses=1] + %604 = load i32* %603, align 4 ; [#uses=1] + %605 = xor i32 %599, %604 ; [#uses=1] + %606 = or i32 %588, 768 ; [#uses=1] + %607 = and i32 %606, 1023 ; [#uses=1] + %608 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %607; [#uses=1] + %609 = load i32* %608, align 4 ; [#uses=1] + %610 = add i32 %605, %609 ; [#uses=1] + %611 = xor i32 %590, %564 ; [#uses=1] + %612 = xor i32 %611, %610 ; [#uses=5] + %613 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 4; [#uses=1] + %614 = load i32* %613, align 4 ; [#uses=1] + %615 = lshr i32 %612, 24 ; [#uses=1] + %616 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %615; [#uses=1] + %617 = load i32* %616, align 4 ; [#uses=1] + %618 = lshr i32 %612, 16 ; [#uses=1] + %619 = or i32 %618, 256 ; [#uses=1] + %620 = and i32 %619, 511 ; [#uses=1] + %621 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %620; [#uses=1] + %622 = load i32* %621, align 4 ; [#uses=1] + %623 = add i32 %622, %617 ; [#uses=1] + %624 = lshr i32 %612, 8 ; [#uses=1] + %625 = or i32 %624, 512 ; [#uses=1] + %626 = and i32 %625, 767 ; [#uses=1] + %627 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %626; [#uses=1] + %628 = load i32* %627, align 4 ; [#uses=1] + %629 = xor i32 %623, %628 ; [#uses=1] + %630 = or i32 %612, 768 ; [#uses=1] + %631 = and i32 %630, 1023 ; [#uses=1] + %632 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %631; [#uses=1] + %633 = load i32* %632, align 4 ; [#uses=1] + %634 = add i32 %629, %633 ; [#uses=1] + %635 = xor i32 %614, %588 ; [#uses=1] + %636 = xor i32 %635, %634 ; [#uses=5] + %637 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 3; [#uses=1] + %638 = load i32* %637, align 4 ; [#uses=1] + %639 = lshr i32 %636, 24 ; [#uses=1] + %640 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %639; [#uses=1] + %641 = load i32* %640, align 4 ; [#uses=1] + %642 = lshr i32 %636, 16 ; [#uses=1] + %643 = or i32 %642, 256 ; [#uses=1] + %644 = and i32 %643, 511 ; [#uses=1] + %645 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %644; [#uses=1] + %646 = load i32* %645, align 4 ; [#uses=1] + %647 = add i32 %646, %641 ; [#uses=1] + %648 = lshr i32 %636, 8 ; [#uses=1] + %649 = or i32 %648, 512 ; [#uses=1] + %650 = and i32 %649, 767 ; [#uses=1] + %651 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %650; [#uses=1] + %652 = load i32* %651, align 4 ; [#uses=1] + %653 = xor i32 %647, %652 ; [#uses=1] + %654 = or i32 %636, 768 ; [#uses=1] + %655 = and i32 %654, 1023 ; [#uses=1] + %656 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %655; [#uses=1] + %657 = load i32* %656, align 4 ; [#uses=1] + %658 = add i32 %653, %657 ; [#uses=1] + %659 = xor i32 %638, %612 ; [#uses=1] + %660 = xor i32 %659, %658 ; [#uses=5] + %661 = load i32* undef, align 4 ; [#uses=1] + %662 = lshr i32 %660, 24 ; [#uses=1] + %663 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %662; [#uses=1] + %664 = load i32* %663, align 4 ; [#uses=1] + %665 = lshr i32 %660, 16 ; [#uses=1] + %666 = or i32 %665, 256 ; [#uses=1] + %667 = and i32 %666, 511 ; [#uses=1] + %668 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %667; [#uses=1] + %669 = load i32* %668, align 4 ; [#uses=1] + %670 = add i32 %669, %664 ; [#uses=1] + %671 = lshr i32 %660, 8 ; [#uses=1] + %672 = or i32 %671, 512 ; [#uses=1] + %673 = and i32 %672, 767 ; [#uses=1] + %674 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %673; [#uses=1] + %675 = load i32* %674, align 4 ; [#uses=1] + %676 = xor i32 %670, %675 ; [#uses=1] + %677 = or i32 %660, 768 ; [#uses=1] + %678 = and i32 %677, 1023 ; [#uses=1] + %679 = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %678; [#uses=1] + %680 = load i32* %679, align 4 ; [#uses=1] + %681 = add i32 %676, %680 ; [#uses=1] + %682 = xor i32 %661, %636 ; [#uses=1] + %683 = xor i32 %682, %681 ; [#uses=5] + %684 = getelementptr %struct.BF_KEY* %key, i32 0, i32 0, i32 1; [#uses=1] + br label %bb2 + +bb2: ; preds = %bb1, %bb + %.pn2.in = phi i32* [ %329, %bb ], [ %0, %bb1 ]; [#uses=1] + %.pn3 = phi i32 [ %328, %bb ], [ %683, %bb1 ]; [#uses=1] + %.pn15.in = phi i32 [ %328, %bb ], [ %683, %bb1 ]; [#uses=1] + %.pn14.in.in.in = phi i32 [ %328, %bb ], [ %683, %bb1 ]; [#uses=1] + %.pn13.in.in.in = phi i32 [ %328, %bb ], [ %683, %bb1 ]; [#uses=1] + %.pn10.in.in = phi i32 [ %328, %bb ], [ %683, %bb1 ]; [#uses=1] + %.pn4.in = phi i32* [ null, %bb ], [ %684, %bb1 ]; [#uses=1] + %.pn5 = phi i32 [ 0, %bb ], [ %660, %bb1 ]; [#uses=1] + %.pn14.in.in = lshr i32 %.pn14.in.in.in, 16; [#uses=1] + %.pn14.in = or i32 %.pn14.in.in, 256 ; [#uses=1] + %.pn13.in.in = lshr i32 %.pn13.in.in.in, 8; [#uses=1] + %.pn15 = lshr i32 %.pn15.in, 24 ; [#uses=1] + %.pn14 = and i32 %.pn14.in, 511 ; [#uses=1] + %.pn13.in = or i32 %.pn13.in.in, 512 ; [#uses=1] + %.pn11.in = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %.pn15; [#uses=1] + %.pn12.in = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %.pn14; [#uses=1] + %.pn13 = and i32 %.pn13.in, 767 ; [#uses=1] + %.pn10.in = or i32 %.pn10.in.in, 768 ; [#uses=1] + %.pn11 = load i32* %.pn11.in ; [#uses=1] + %.pn12 = load i32* %.pn12.in ; [#uses=1] + %.pn9.in = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %.pn13; [#uses=1] + %.pn10 = and i32 %.pn10.in, 1023 ; [#uses=1] + %.pn8 = add i32 %.pn12, %.pn11 ; [#uses=1] + %.pn9 = load i32* %.pn9.in ; [#uses=1] + %.pn7.in = getelementptr %struct.BF_KEY* %key, i32 0, i32 1, i32 %.pn10; [#uses=1] + %.pn6 = xor i32 %.pn8, %.pn9 ; [#uses=1] + %.pn7 = load i32* %.pn7.in ; [#uses=1] + %.pn4 = load i32* %.pn4.in ; [#uses=1] + %.pn2 = load i32* %.pn2.in ; [#uses=1] + %.pn = add i32 %.pn6, %.pn7 ; [#uses=1] + %r.0 = xor i32 %.pn2, %.pn3 ; [#uses=1] + %.pn1 = xor i32 %.pn, %.pn5 ; [#uses=1] + %l.0 = xor i32 %.pn1, %.pn4 ; [#uses=1] + store i32 %l.0, i32* undef, align 4 + store i32 %r.0, i32* %data, align 4 + ret void +}