diff options
author | Zhou Sheng <zhousheng00@gmail.com> | 2012-12-01 04:38:53 +0000 |
---|---|---|
committer | Zhou Sheng <zhousheng00@gmail.com> | 2012-12-01 04:38:53 +0000 |
commit | 702aa2ee19132593b552d211c985aa540787c197 (patch) | |
tree | d2b4219bc2bca91ac6c71882afdef9419f506f33 | |
parent | 2587a8a18c55116b339d4b47d441512067e9c96b (diff) |
The patch is to improve the memory footprint of pass GlobalOpt.
Also check in a case to repeat the issue, on which 'opt -globalopt' consumes 1.6GB memory.
The big memory footprint cause is that current GlobalOpt one by one hoists and stores the leaf element constant into the global array, in each iteration, it recreates the global array initializer constant and leave the old initializer alone. This may result in many obsolete constants left.
For example: we have global array @rom = global [16 x i32] zeroinitializer
After the first element value is hoisted and installed: @rom = global [16 x i32] [ 1, 0, 0, ... ]
After the second element value is installed: @rom = global [16 x 32] [ 1, 2, 0, 0, ... ] // here the previous initializer is obsolete
...
When the transform is done, we have 15 obsolete initializers left useless.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169079 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 26 | ||||
-rw-r--r-- | test/Transforms/GlobalOpt/big-memory-footprint.ll | 8309 |
2 files changed, 8331 insertions, 4 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index 591278fa62..54b97fabdc 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -36,6 +36,7 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/SetVector.h" #include "llvm/ADT/Statistic.h" #include "llvm/ADT/STLExtras.h" #include <algorithm> @@ -2398,7 +2399,8 @@ static bool isSimpleEnoughPointerToCommit(Constant *C) { /// initializer. This returns 'Init' modified to reflect 'Val' stored into it. /// At this point, the GEP operands of Addr [0, OpNo) have been stepped into. static Constant *EvaluateStoreInto(Constant *Init, Constant *Val, - ConstantExpr *Addr, unsigned OpNo) { + ConstantExpr *Addr, unsigned OpNo, + SetVector<Constant*>& Obsolete) { // Base case of the recursion. if (OpNo == Addr->getNumOperands()) { assert(Val->getType() == Init->getType() && "Type mismatch!"); @@ -2415,7 +2417,9 @@ static Constant *EvaluateStoreInto(Constant *Init, Constant *Val, ConstantInt *CU = cast<ConstantInt>(Addr->getOperand(OpNo)); unsigned Idx = CU->getZExtValue(); assert(Idx < STy->getNumElements() && "Struct index out of range!"); - Elts[Idx] = EvaluateStoreInto(Elts[Idx], Val, Addr, OpNo+1); + if (Elts[Idx]->getType()->isAggregateType()) + Obsolete.insert(Elts[Idx]); + Elts[Idx] = EvaluateStoreInto(Elts[Idx], Val, Addr, OpNo+1, Obsolete); // Return the modified struct. return ConstantStruct::get(STy, Elts); @@ -2435,8 +2439,11 @@ static Constant *EvaluateStoreInto(Constant *Init, Constant *Val, Elts.push_back(Init->getAggregateElement(i)); assert(CI->getZExtValue() < NumElts); + Constant *OrigElem = Elts[CI->getZExtValue()]; + if (OrigElem->getType()->isAggregateType()) + Obsolete.insert(OrigElem); Elts[CI->getZExtValue()] = - EvaluateStoreInto(Elts[CI->getZExtValue()], Val, Addr, OpNo+1); + EvaluateStoreInto(OrigElem, Val, Addr, OpNo+1, Obsolete); if (Init->getType()->isArrayTy()) return ConstantArray::get(cast<ArrayType>(InitTy), Elts); @@ -2452,9 +2459,20 @@ static void CommitValueTo(Constant *Val, Constant *Addr) { return; } + // Collect obsolete constants created in previous CommitValueTo() invoke. + SetVector<Constant*> Obsolete; ConstantExpr *CE = cast<ConstantExpr>(Addr); GlobalVariable *GV = cast<GlobalVariable>(CE->getOperand(0)); - GV->setInitializer(EvaluateStoreInto(GV->getInitializer(), Val, CE, 2)); + Constant *OrigInit = GV->getInitializer(); + if (OrigInit->getType()->isAggregateType()) + Obsolete.insert(OrigInit); + Constant *Init = EvaluateStoreInto(OrigInit, Val, CE, 2, Obsolete); + GV->setInitializer(Init); + + for (unsigned i = 0; i < Obsolete.size(); ++i) { + if (Obsolete[i]->use_empty()) + Obsolete[i]->destroyConstant(); + } } namespace { diff --git a/test/Transforms/GlobalOpt/big-memory-footprint.ll b/test/Transforms/GlobalOpt/big-memory-footprint.ll new file mode 100644 index 0000000000..ebde180b11 --- /dev/null +++ b/test/Transforms/GlobalOpt/big-memory-footprint.ll @@ -0,0 +1,8309 @@ +; RUN: opt < %s -globalopt -disable-output +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%struct.B = type { %struct.A, i32, i32 } +%struct.A = type { %struct.A3 } +%struct.A3 = type { %struct.A2, i32 } +%struct.A2 = type { %struct.A20 } +%struct.A20 = type { %struct.A1, i32 } +%struct.A1 = type { %struct.A0 } +%struct.A0 = type { i32 } + +@ROM = global [4 x [2048 x %struct.B]] zeroinitializer, align 16 +@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] + +define internal void @__cxx_global_var_init() section ".text.startup" { +entry: + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 0), i32 0, i32 0, i32 0, i32 0, i32 0) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 1), i32 0, i32 1, i32 0, i32 0, i32 1) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 2), i32 0, i32 2, i32 0, i32 0, i32 2) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 3), i32 0, i32 3, i32 0, i32 0, i32 3) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 4), i32 0, i32 4, i32 0, i32 0, i32 4) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 5), i32 0, i32 5, i32 0, i32 0, i32 5) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 6), i32 0, i32 6, i32 0, i32 0, i32 6) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 7), i32 0, i32 7, i32 0, i32 0, i32 7) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 8), i32 0, i32 8, i32 0, i32 0, i32 8) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 9), i32 0, i32 9, i32 0, i32 0, i32 9) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 10), i32 0, i32 10, i32 0, i32 0, i32 10) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 11), i32 0, i32 11, i32 0, i32 0, i32 11) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 12), i32 0, i32 12, i32 0, i32 0, i32 12) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 13), i32 0, i32 13, i32 0, i32 0, i32 13) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 14), i32 0, i32 14, i32 0, i32 0, i32 14) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 15), i32 0, i32 15, i32 0, i32 0, i32 15) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 16), i32 0, i32 16, i32 0, i32 0, i32 16) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 17), i32 0, i32 17, i32 0, i32 0, i32 17) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 18), i32 0, i32 18, i32 0, i32 0, i32 18) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 19), i32 0, i32 19, i32 0, i32 0, i32 19) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 20), i32 0, i32 20, i32 0, i32 0, i32 20) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 21), i32 0, i32 21, i32 0, i32 0, i32 21) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 22), i32 0, i32 22, i32 0, i32 0, i32 22) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 23), i32 0, i32 23, i32 0, i32 0, i32 23) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 24), i32 0, i32 24, i32 0, i32 0, i32 24) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 25), i32 0, i32 25, i32 0, i32 0, i32 25) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 26), i32 0, i32 26, i32 0, i32 0, i32 26) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 27), i32 0, i32 27, i32 0, i32 0, i32 27) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 28), i32 0, i32 28, i32 0, i32 0, i32 28) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 29), i32 0, i32 29, i32 0, i32 0, i32 29) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 30), i32 0, i32 30, i32 0, i32 0, i32 30) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 31), i32 0, i32 31, i32 0, i32 0, i32 31) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 32), i32 0, i32 32, i32 0, i32 0, i32 32) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 33), i32 0, i32 33, i32 0, i32 0, i32 33) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 34), i32 0, i32 34, i32 0, i32 0, i32 34) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 35), i32 0, i32 35, i32 0, i32 0, i32 35) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 36), i32 0, i32 36, i32 0, i32 0, i32 36) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 37), i32 0, i32 37, i32 0, i32 0, i32 37) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 38), i32 0, i32 38, i32 0, i32 0, i32 38) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 39), i32 0, i32 39, i32 0, i32 0, i32 39) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 40), i32 0, i32 40, i32 0, i32 0, i32 40) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 41), i32 0, i32 41, i32 0, i32 0, i32 41) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 42), i32 0, i32 42, i32 0, i32 0, i32 42) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 43), i32 0, i32 43, i32 0, i32 0, i32 43) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 44), i32 0, i32 44, i32 0, i32 0, i32 44) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 45), i32 0, i32 45, i32 0, i32 0, i32 45) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 46), i32 0, i32 46, i32 0, i32 0, i32 46) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 47), i32 0, i32 47, i32 0, i32 0, i32 47) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 48), i32 0, i32 48, i32 0, i32 0, i32 48) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 49), i32 0, i32 49, i32 0, i32 0, i32 49) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 50), i32 0, i32 50, i32 0, i32 0, i32 50) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 51), i32 0, i32 51, i32 0, i32 0, i32 51) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 52), i32 0, i32 52, i32 0, i32 0, i32 52) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 53), i32 0, i32 53, i32 0, i32 0, i32 53) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 54), i32 0, i32 54, i32 0, i32 0, i32 54) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 55), i32 0, i32 55, i32 0, i32 0, i32 55) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 56), i32 0, i32 56, i32 0, i32 0, i32 56) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 57), i32 0, i32 57, i32 0, i32 0, i32 57) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 58), i32 0, i32 58, i32 0, i32 0, i32 58) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 59), i32 0, i32 59, i32 0, i32 0, i32 59) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 60), i32 0, i32 60, i32 0, i32 0, i32 60) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 61), i32 0, i32 61, i32 0, i32 0, i32 61) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 62), i32 0, i32 62, i32 0, i32 0, i32 62) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 63), i32 0, i32 63, i32 0, i32 0, i32 63) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 64), i32 0, i32 64, i32 0, i32 0, i32 64) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 65), i32 0, i32 65, i32 0, i32 0, i32 65) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 66), i32 0, i32 66, i32 0, i32 0, i32 66) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 67), i32 0, i32 67, i32 0, i32 0, i32 67) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 68), i32 0, i32 68, i32 0, i32 0, i32 68) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 69), i32 0, i32 69, i32 0, i32 0, i32 69) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 70), i32 0, i32 70, i32 0, i32 0, i32 70) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 71), i32 0, i32 71, i32 0, i32 0, i32 71) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 72), i32 0, i32 72, i32 0, i32 0, i32 72) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 73), i32 0, i32 73, i32 0, i32 0, i32 73) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 74), i32 0, i32 74, i32 0, i32 0, i32 74) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 75), i32 0, i32 75, i32 0, i32 0, i32 75) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 76), i32 0, i32 76, i32 0, i32 0, i32 76) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 77), i32 0, i32 77, i32 0, i32 0, i32 77) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 78), i32 0, i32 78, i32 0, i32 0, i32 78) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 79), i32 0, i32 79, i32 0, i32 0, i32 79) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 80), i32 0, i32 80, i32 0, i32 0, i32 80) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 81), i32 0, i32 81, i32 0, i32 0, i32 81) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 82), i32 0, i32 82, i32 0, i32 0, i32 82) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 83), i32 0, i32 83, i32 0, i32 0, i32 83) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 84), i32 0, i32 84, i32 0, i32 0, i32 84) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 85), i32 0, i32 85, i32 0, i32 0, i32 85) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 86), i32 0, i32 86, i32 0, i32 0, i32 86) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 87), i32 0, i32 87, i32 0, i32 0, i32 87) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 88), i32 0, i32 88, i32 0, i32 0, i32 88) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 89), i32 0, i32 89, i32 0, i32 0, i32 89) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 90), i32 0, i32 90, i32 0, i32 0, i32 90) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 91), i32 0, i32 91, i32 0, i32 0, i32 91) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 92), i32 0, i32 92, i32 0, i32 0, i32 92) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 93), i32 0, i32 93, i32 0, i32 0, i32 93) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 94), i32 0, i32 94, i32 0, i32 0, i32 94) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 95), i32 0, i32 95, i32 0, i32 0, i32 95) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 96), i32 0, i32 96, i32 0, i32 0, i32 96) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 97), i32 0, i32 97, i32 0, i32 0, i32 97) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 98), i32 0, i32 98, i32 0, i32 0, i32 98) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 99), i32 0, i32 99, i32 0, i32 0, i32 99) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 100), i32 0, i32 100, i32 0, i32 0, i32 100) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 101), i32 0, i32 101, i32 0, i32 0, i32 101) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 102), i32 0, i32 102, i32 0, i32 0, i32 102) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 103), i32 0, i32 103, i32 0, i32 0, i32 103) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 104), i32 0, i32 104, i32 0, i32 0, i32 104) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 105), i32 0, i32 105, i32 0, i32 0, i32 105) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 106), i32 0, i32 106, i32 0, i32 0, i32 106) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 107), i32 0, i32 107, i32 0, i32 0, i32 107) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 108), i32 0, i32 108, i32 0, i32 0, i32 108) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 109), i32 0, i32 109, i32 0, i32 0, i32 109) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 110), i32 0, i32 110, i32 0, i32 0, i32 110) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 111), i32 0, i32 111, i32 0, i32 0, i32 111) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 112), i32 0, i32 112, i32 0, i32 0, i32 112) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 113), i32 0, i32 113, i32 0, i32 0, i32 113) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 114), i32 0, i32 114, i32 0, i32 0, i32 114) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 115), i32 0, i32 115, i32 0, i32 0, i32 115) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 116), i32 0, i32 116, i32 0, i32 0, i32 116) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 117), i32 0, i32 117, i32 0, i32 0, i32 117) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 118), i32 0, i32 118, i32 0, i32 0, i32 118) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 119), i32 0, i32 119, i32 0, i32 0, i32 119) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 120), i32 0, i32 120, i32 0, i32 0, i32 120) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 121), i32 0, i32 121, i32 0, i32 0, i32 121) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 122), i32 0, i32 122, i32 0, i32 0, i32 122) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 123), i32 0, i32 123, i32 0, i32 0, i32 123) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 124), i32 0, i32 124, i32 0, i32 0, i32 124) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 125), i32 0, i32 125, i32 0, i32 0, i32 125) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 126), i32 0, i32 126, i32 0, i32 0, i32 126) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 127), i32 0, i32 127, i32 0, i32 0, i32 127) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 128), i32 0, i32 128, i32 0, i32 0, i32 128) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 129), i32 0, i32 129, i32 0, i32 0, i32 129) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 130), i32 0, i32 130, i32 0, i32 0, i32 130) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 131), i32 0, i32 131, i32 0, i32 0, i32 131) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 132), i32 0, i32 132, i32 0, i32 0, i32 132) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 133), i32 0, i32 133, i32 0, i32 0, i32 133) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 134), i32 0, i32 134, i32 0, i32 0, i32 134) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 135), i32 0, i32 135, i32 0, i32 0, i32 135) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 136), i32 0, i32 136, i32 0, i32 0, i32 136) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 137), i32 0, i32 137, i32 0, i32 0, i32 137) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 138), i32 0, i32 138, i32 0, i32 0, i32 138) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 139), i32 0, i32 139, i32 0, i32 0, i32 139) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 140), i32 0, i32 140, i32 0, i32 0, i32 140) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 141), i32 0, i32 141, i32 0, i32 0, i32 141) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 142), i32 0, i32 142, i32 0, i32 0, i32 142) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 143), i32 0, i32 143, i32 0, i32 0, i32 143) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 144), i32 0, i32 144, i32 0, i32 0, i32 144) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 145), i32 0, i32 145, i32 0, i32 0, i32 145) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 146), i32 0, i32 146, i32 0, i32 0, i32 146) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 147), i32 0, i32 147, i32 0, i32 0, i32 147) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 148), i32 0, i32 148, i32 0, i32 0, i32 148) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 149), i32 0, i32 149, i32 0, i32 0, i32 149) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 150), i32 0, i32 150, i32 0, i32 0, i32 150) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 151), i32 0, i32 151, i32 0, i32 0, i32 151) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 152), i32 0, i32 152, i32 0, i32 0, i32 152) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 153), i32 0, i32 153, i32 0, i32 0, i32 153) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 154), i32 0, i32 154, i32 0, i32 0, i32 154) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 155), i32 0, i32 155, i32 0, i32 0, i32 155) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 156), i32 0, i32 156, i32 0, i32 0, i32 156) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 157), i32 0, i32 157, i32 0, i32 0, i32 157) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 158), i32 0, i32 158, i32 0, i32 0, i32 158) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 159), i32 0, i32 159, i32 0, i32 0, i32 159) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 160), i32 0, i32 160, i32 0, i32 0, i32 160) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 161), i32 0, i32 161, i32 0, i32 0, i32 161) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 162), i32 0, i32 162, i32 0, i32 0, i32 162) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 163), i32 0, i32 163, i32 0, i32 0, i32 163) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 164), i32 0, i32 164, i32 0, i32 0, i32 164) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 165), i32 0, i32 165, i32 0, i32 0, i32 165) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 166), i32 0, i32 166, i32 0, i32 0, i32 166) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 167), i32 0, i32 167, i32 0, i32 0, i32 167) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 168), i32 0, i32 168, i32 0, i32 0, i32 168) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 169), i32 0, i32 169, i32 0, i32 0, i32 169) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 170), i32 0, i32 170, i32 0, i32 0, i32 170) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 171), i32 0, i32 171, i32 0, i32 0, i32 171) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 172), i32 0, i32 172, i32 0, i32 0, i32 172) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 173), i32 0, i32 173, i32 0, i32 0, i32 173) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 174), i32 0, i32 174, i32 0, i32 0, i32 174) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 175), i32 0, i32 175, i32 0, i32 0, i32 175) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 176), i32 0, i32 176, i32 0, i32 0, i32 176) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 177), i32 0, i32 177, i32 0, i32 0, i32 177) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 178), i32 0, i32 178, i32 0, i32 0, i32 178) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 179), i32 0, i32 179, i32 0, i32 0, i32 179) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 180), i32 0, i32 180, i32 0, i32 0, i32 180) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 181), i32 0, i32 181, i32 0, i32 0, i32 181) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 182), i32 0, i32 182, i32 0, i32 0, i32 182) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 183), i32 0, i32 183, i32 0, i32 0, i32 183) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 184), i32 0, i32 184, i32 0, i32 0, i32 184) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 185), i32 0, i32 185, i32 0, i32 0, i32 185) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 186), i32 0, i32 186, i32 0, i32 0, i32 186) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 187), i32 0, i32 187, i32 0, i32 0, i32 187) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 188), i32 0, i32 188, i32 0, i32 0, i32 188) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 189), i32 0, i32 189, i32 0, i32 0, i32 189) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 190), i32 0, i32 190, i32 0, i32 0, i32 190) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 191), i32 0, i32 191, i32 0, i32 0, i32 191) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 192), i32 0, i32 192, i32 0, i32 0, i32 192) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 193), i32 0, i32 193, i32 0, i32 0, i32 193) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 194), i32 0, i32 194, i32 0, i32 0, i32 194) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 195), i32 0, i32 195, i32 0, i32 0, i32 195) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 196), i32 0, i32 196, i32 0, i32 0, i32 196) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 197), i32 0, i32 197, i32 0, i32 0, i32 197) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 198), i32 0, i32 198, i32 0, i32 0, i32 198) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 199), i32 0, i32 199, i32 0, i32 0, i32 199) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 200), i32 0, i32 200, i32 0, i32 0, i32 200) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 201), i32 0, i32 201, i32 0, i32 0, i32 201) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 202), i32 0, i32 202, i32 0, i32 0, i32 202) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 203), i32 0, i32 203, i32 0, i32 0, i32 203) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 204), i32 0, i32 204, i32 0, i32 0, i32 204) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 205), i32 0, i32 205, i32 0, i32 0, i32 205) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 206), i32 0, i32 206, i32 0, i32 0, i32 206) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 207), i32 0, i32 207, i32 0, i32 0, i32 207) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 208), i32 0, i32 208, i32 0, i32 0, i32 208) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 209), i32 0, i32 209, i32 0, i32 0, i32 209) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 210), i32 0, i32 210, i32 0, i32 0, i32 210) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 211), i32 0, i32 211, i32 0, i32 0, i32 211) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 212), i32 0, i32 212, i32 0, i32 0, i32 212) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 213), i32 0, i32 213, i32 0, i32 0, i32 213) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 214), i32 0, i32 214, i32 0, i32 0, i32 214) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 215), i32 0, i32 215, i32 0, i32 0, i32 215) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 216), i32 0, i32 216, i32 0, i32 0, i32 216) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 217), i32 0, i32 217, i32 0, i32 0, i32 217) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 218), i32 0, i32 218, i32 0, i32 0, i32 218) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 219), i32 0, i32 219, i32 0, i32 0, i32 219) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 220), i32 0, i32 220, i32 0, i32 0, i32 220) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 221), i32 0, i32 221, i32 0, i32 0, i32 221) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 222), i32 0, i32 222, i32 0, i32 0, i32 222) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 223), i32 0, i32 223, i32 0, i32 0, i32 223) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 224), i32 0, i32 224, i32 0, i32 0, i32 224) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 225), i32 0, i32 225, i32 0, i32 0, i32 225) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 226), i32 0, i32 226, i32 0, i32 0, i32 226) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 227), i32 0, i32 227, i32 0, i32 0, i32 227) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 228), i32 0, i32 228, i32 0, i32 0, i32 228) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 229), i32 0, i32 229, i32 0, i32 0, i32 229) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 230), i32 0, i32 230, i32 0, i32 0, i32 230) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 231), i32 0, i32 231, i32 0, i32 0, i32 231) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 232), i32 0, i32 232, i32 0, i32 0, i32 232) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 233), i32 0, i32 233, i32 0, i32 0, i32 233) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 234), i32 0, i32 234, i32 0, i32 0, i32 234) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 235), i32 0, i32 235, i32 0, i32 0, i32 235) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 236), i32 0, i32 236, i32 0, i32 0, i32 236) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 237), i32 0, i32 237, i32 0, i32 0, i32 237) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 238), i32 0, i32 238, i32 0, i32 0, i32 238) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 239), i32 0, i32 239, i32 0, i32 0, i32 239) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 240), i32 0, i32 240, i32 0, i32 0, i32 240) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 241), i32 0, i32 241, i32 0, i32 0, i32 241) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 242), i32 0, i32 242, i32 0, i32 0, i32 242) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 243), i32 0, i32 243, i32 0, i32 0, i32 243) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 244), i32 0, i32 244, i32 0, i32 0, i32 244) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 245), i32 0, i32 245, i32 0, i32 0, i32 245) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 246), i32 0, i32 246, i32 0, i32 0, i32 246) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 247), i32 0, i32 247, i32 0, i32 0, i32 247) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 248), i32 0, i32 248, i32 0, i32 0, i32 248) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 249), i32 0, i32 249, i32 0, i32 0, i32 249) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 250), i32 0, i32 250, i32 0, i32 0, i32 250) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 251), i32 0, i32 251, i32 0, i32 0, i32 251) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 252), i32 0, i32 252, i32 0, i32 0, i32 252) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 253), i32 0, i32 253, i32 0, i32 0, i32 253) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 254), i32 0, i32 254, i32 0, i32 0, i32 254) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 255), i32 0, i32 255, i32 0, i32 0, i32 255) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 256), i32 0, i32 256, i32 0, i32 0, i32 256) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 257), i32 0, i32 257, i32 0, i32 0, i32 257) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 258), i32 0, i32 258, i32 0, i32 0, i32 258) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 259), i32 0, i32 259, i32 0, i32 0, i32 259) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 260), i32 0, i32 260, i32 0, i32 0, i32 260) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 261), i32 0, i32 261, i32 0, i32 0, i32 261) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 262), i32 0, i32 262, i32 0, i32 0, i32 262) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 263), i32 0, i32 263, i32 0, i32 0, i32 263) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 264), i32 0, i32 264, i32 0, i32 0, i32 264) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 265), i32 0, i32 265, i32 0, i32 0, i32 265) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 266), i32 0, i32 266, i32 0, i32 0, i32 266) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 267), i32 0, i32 267, i32 0, i32 0, i32 267) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 268), i32 0, i32 268, i32 0, i32 0, i32 268) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 269), i32 0, i32 269, i32 0, i32 0, i32 269) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 270), i32 0, i32 270, i32 0, i32 0, i32 270) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 271), i32 0, i32 271, i32 0, i32 0, i32 271) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 272), i32 0, i32 272, i32 0, i32 0, i32 272) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 273), i32 0, i32 273, i32 0, i32 0, i32 273) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 274), i32 0, i32 274, i32 0, i32 0, i32 274) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 275), i32 0, i32 275, i32 0, i32 0, i32 275) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 276), i32 0, i32 276, i32 0, i32 0, i32 276) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 277), i32 0, i32 277, i32 0, i32 0, i32 277) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 278), i32 0, i32 278, i32 0, i32 0, i32 278) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 279), i32 0, i32 279, i32 0, i32 0, i32 279) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 280), i32 0, i32 280, i32 0, i32 0, i32 280) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, |