Last active
August 29, 2015 14:28
-
-
Save danilaml/220855362fd97d2aa0e3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Recompiling block : | |
001d85b8: 00 00 00 00 stdu r1,-128(r1) #ffffff80 | |
001d85bc: 00 00 00 00 mflr r0 | |
001d85c0: 00 00 00 00 std r31,120(r1) #78 | |
001d85c4: 00 00 00 00 std r0,144(r1) #90 | |
001d85c8: 00 00 00 00 mr r31,r3 | |
001d85cc: 00 00 00 00 lwz r0,552(r3) #228 | |
001d85d0: 00 00 00 00 extsw r9,r0 | |
001d85d4: 00 00 00 00 li r0,0 #0 | |
001d85d8: 00 00 00 00 stw r0,552(r3) #228 | |
001d85dc: 00 00 00 00 lwz r0,548(r3) #224 | |
001d85e0: 00 00 00 00 cmpwi cr7,r0,0 #0 | |
001d85e4: 00 00 00 00 beq cr7,0x1d861c | |
001d85e8: 00 00 00 00 cmpdi cr7,r9,0 #0 | |
001d85ec: 00 00 00 00 bne cr7,0x1d861c | |
001d85f0: 00 00 00 00 bl 0x2368f4 | |
001d85f4: 00 00 00 00 ld r2,40(r1) #28 | |
001d85f8: 00 00 00 00 lwz r0,556(r31) #22c | |
001d85fc: 00 00 00 00 subf r3,r0,r3 | |
001d8600: 00 00 00 00 cmpwi cr7,r3,29999 #752f | |
001d8604: 00 00 00 00 ble cr7,0x1d8610 | |
001d8608: 00 00 00 00 li r0,1 #1 | |
001d860c: 00 00 00 00 stw r0,552(r31) #228 | |
001d8610: 00 00 00 00 bl 0x2368f4 | |
001d8614: 00 00 00 00 ld r2,40(r1) #28 | |
001d8618: 00 00 00 00 stw r3,556(r31) #22c | |
001d861c: 00 00 00 00 ld r0,144(r1) #90 | |
001d8620: 00 00 00 00 mtlr r0 | |
001d8624: 00 00 00 00 ld r31,120(r1) #78 | |
001d8628: 00 00 00 00 addi r1,128(r1) #80 | |
001d862c: 00 00 00 00 blr | |
LLVM bytecode: | |
define x86_64_win64cc i32 @function_0x001D85B8(i8* %ppu_state, i64 %context) { | |
entry: | |
br label %instr_0x001D85B8 | |
instr_0x001D85B8: ; preds = %entry | |
%0 = getelementptr i8* %ppu_state, i32 776 | |
%1 = bitcast i8* %0 to i64* | |
%2 = load i64* %1, align 8 | |
%3 = add i64 %2, -128 | |
%4 = getelementptr i8* %ppu_state, i32 776 | |
%5 = bitcast i8* %4 to i64* | |
%6 = load i64* %5, align 8 | |
%7 = call i64 @llvm.bswap.i64(i64 %6) | |
%8 = and i64 %3, 4294967295 | |
%9 = add i64 %8, 2147418112 | |
%10 = inttoptr i64 %9 to i64* | |
store i64 %7, i64* %10 | |
%11 = getelementptr i8* %ppu_state, i32 776 | |
%12 = bitcast i8* %11 to i64* | |
store i64 %3, i64* %12, align 8 | |
br label %instr_0x001D85BC | |
instr_0x001D85BC: ; preds = %instr_0x001D85B8 | |
%13 = getelementptr i8* %ppu_state, i32 1568 | |
%14 = bitcast i8* %13 to i64* | |
%15 = load i64* %14, align 8 | |
%16 = getelementptr i8* %ppu_state, i32 768 | |
%17 = bitcast i8* %16 to i64* | |
store i64 %15, i64* %17, align 8 | |
br label %instr_0x001D85C0 | |
instr_0x001D85C0: ; preds = %instr_0x001D85BC | |
%18 = getelementptr i8* %ppu_state, i32 776 | |
%19 = bitcast i8* %18 to i64* | |
%20 = load i64* %19, align 8 | |
%21 = add i64 %20, 120 | |
%22 = getelementptr i8* %ppu_state, i32 1016 | |
%23 = bitcast i8* %22 to i64* | |
%24 = load i64* %23, align 8 | |
%25 = call i64 @llvm.bswap.i64(i64 %24) | |
%26 = and i64 %21, 4294967295 | |
%27 = add i64 %26, 2147418112 | |
%28 = inttoptr i64 %27 to i64* | |
store i64 %25, i64* %28 | |
br label %instr_0x001D85C4 | |
instr_0x001D85C4: ; preds = %instr_0x001D85C0 | |
%29 = getelementptr i8* %ppu_state, i32 776 | |
%30 = bitcast i8* %29 to i64* | |
%31 = load i64* %30, align 8 | |
%32 = add i64 %31, 144 | |
%33 = getelementptr i8* %ppu_state, i32 768 | |
%34 = bitcast i8* %33 to i64* | |
%35 = load i64* %34, align 8 | |
%36 = call i64 @llvm.bswap.i64(i64 %35) | |
%37 = and i64 %32, 4294967295 | |
%38 = add i64 %37, 2147418112 | |
%39 = inttoptr i64 %38 to i64* | |
store i64 %36, i64* %39 | |
br label %instr_0x001D85C8 | |
instr_0x001D85C8: ; preds = %instr_0x001D85C4 | |
%40 = getelementptr i8* %ppu_state, i32 792 | |
%41 = bitcast i8* %40 to i64* | |
%42 = load i64* %41, align 8 | |
%43 = getelementptr i8* %ppu_state, i32 792 | |
%44 = bitcast i8* %43 to i64* | |
%45 = load i64* %44, align 8 | |
%46 = or i64 %42, %45 | |
%47 = getelementptr i8* %ppu_state, i32 1016 | |
%48 = bitcast i8* %47 to i64* | |
store i64 %46, i64* %48, align 8 | |
br label %instr_0x001D85CC | |
instr_0x001D85CC: ; preds = %instr_0x001D85C8 | |
%49 = getelementptr i8* %ppu_state, i32 792 | |
%50 = bitcast i8* %49 to i64* | |
%51 = load i64* %50, align 8 | |
%52 = add i64 %51, 552 | |
%53 = and i64 %52, 4294967295 | |
%54 = add i64 %53, 2147418112 | |
%55 = inttoptr i64 %54 to i32* | |
%56 = load i32* %55 | |
%57 = call i32 @llvm.bswap.i32(i32 %56) | |
%58 = zext i32 %57 to i64 | |
%59 = getelementptr i8* %ppu_state, i32 768 | |
%60 = bitcast i8* %59 to i64* | |
store i64 %58, i64* %60, align 8 | |
br label %instr_0x001D85D0 | |
instr_0x001D85D0: ; preds = %instr_0x001D85CC | |
%61 = getelementptr i8* %ppu_state, i32 768 | |
%62 = bitcast i8* %61 to i32* | |
%63 = load i32* %62, align 8 | |
%64 = sext i32 %63 to i64 | |
%65 = getelementptr i8* %ppu_state, i32 840 | |
%66 = bitcast i8* %65 to i64* | |
store i64 %64, i64* %66, align 8 | |
br label %instr_0x001D85D4 | |
instr_0x001D85D4: ; preds = %instr_0x001D85D0 | |
%67 = getelementptr i8* %ppu_state, i32 768 | |
%68 = bitcast i8* %67 to i64* | |
store i64 0, i64* %68, align 8 | |
br label %instr_0x001D85D8 | |
instr_0x001D85D8: ; preds = %instr_0x001D85D4 | |
%69 = getelementptr i8* %ppu_state, i32 792 | |
%70 = bitcast i8* %69 to i64* | |
%71 = load i64* %70, align 8 | |
%72 = add i64 %71, 552 | |
%73 = getelementptr i8* %ppu_state, i32 768 | |
%74 = bitcast i8* %73 to i32* | |
%75 = load i32* %74, align 8 | |
%76 = call i32 @llvm.bswap.i32(i32 %75) | |
%77 = and i64 %72, 4294967295 | |
%78 = add i64 %77, 2147418112 | |
%79 = inttoptr i64 %78 to i32* | |
store i32 %76, i32* %79 | |
br label %instr_0x001D85DC | |
instr_0x001D85DC: ; preds = %instr_0x001D85D8 | |
%80 = getelementptr i8* %ppu_state, i32 792 | |
%81 = bitcast i8* %80 to i64* | |
%82 = load i64* %81, align 8 | |
%83 = add i64 %82, 548 | |
%84 = and i64 %83, 4294967295 | |
%85 = add i64 %84, 2147418112 | |
%86 = inttoptr i64 %85 to i32* | |
%87 = load i32* %86 | |
%88 = call i32 @llvm.bswap.i32(i32 %87) | |
%89 = zext i32 %88 to i64 | |
%90 = getelementptr i8* %ppu_state, i32 768 | |
%91 = bitcast i8* %90 to i64* | |
store i64 %89, i64* %91, align 8 | |
br label %instr_0x001D85E0 | |
instr_0x001D85E0: ; preds = %instr_0x001D85DC | |
%92 = getelementptr i8* %ppu_state, i32 768 | |
%93 = bitcast i8* %92 to i32* | |
%94 = load i32* %93, align 8 | |
%95 = sext i32 %94 to i64 | |
%96 = icmp slt i64 %95, 0 | |
%97 = icmp sgt i64 %95, 0 | |
%98 = icmp eq i64 %95, 0 | |
%99 = getelementptr i8* %ppu_state, i32 1540 | |
%100 = bitcast i8* %99 to i32* | |
%101 = load i32* %100, align 4 | |
%102 = getelementptr i8* %ppu_state, i32 1544 | |
%103 = bitcast i8* %102 to i64* | |
%104 = load i64* %103, align 8 | |
%105 = lshr i64 %104, 31 | |
%106 = and i64 %105, 1 | |
%107 = and i32 %101, -16 | |
%108 = zext i1 %96 to i32 | |
%109 = shl i32 %108, 3 | |
%110 = or i32 %107, %109 | |
%111 = zext i1 %97 to i32 | |
%112 = shl i32 %111, 2 | |
%113 = or i32 %110, %112 | |
%114 = zext i1 %98 to i32 | |
%115 = shl i32 %114, 1 | |
%116 = or i32 %113, %115 | |
%117 = trunc i64 %106 to i32 | |
%118 = or i32 %116, %117 | |
%119 = getelementptr i8* %ppu_state, i32 1540 | |
%120 = bitcast i8* %119 to i32* | |
store i32 %118, i32* %120, align 4 | |
br label %instr_0x001D85E4 | |
instr_0x001D85E4: ; preds = %instr_0x001D85E0 | |
%121 = getelementptr i8* %ppu_state, i32 1576 | |
%122 = bitcast i8* %121 to i64* | |
%123 = load i64* %122, align 8 | |
%124 = getelementptr i8* %ppu_state, i32 1540 | |
%125 = bitcast i8* %124 to i32* | |
%126 = load i32* %125, align 4 | |
%127 = lshr i32 %126, 1 | |
%128 = and i32 %127, 1 | |
%129 = trunc i32 %128 to i1 | |
br i1 %129, label %instr_0x001D861C, label %instr_0x001D85E8 | |
instr_0x001D85E8: ; preds = %instr_0x001D85E4 | |
%130 = getelementptr i8* %ppu_state, i32 840 | |
%131 = bitcast i8* %130 to i64* | |
%132 = load i64* %131, align 8 | |
%133 = icmp slt i64 %132, 0 | |
%134 = icmp sgt i64 %132, 0 | |
%135 = icmp eq i64 %132, 0 | |
%136 = getelementptr i8* %ppu_state, i32 1540 | |
%137 = bitcast i8* %136 to i32* | |
%138 = load i32* %137, align 4 | |
%139 = getelementptr i8* %ppu_state, i32 1544 | |
%140 = bitcast i8* %139 to i64* | |
%141 = load i64* %140, align 8 | |
%142 = lshr i64 %141, 31 | |
%143 = and i64 %142, 1 | |
%144 = and i32 %138, -16 | |
%145 = zext i1 %133 to i32 | |
%146 = shl i32 %145, 3 | |
%147 = or i32 %144, %146 | |
%148 = zext i1 %134 to i32 | |
%149 = shl i32 %148, 2 | |
%150 = or i32 %147, %149 | |
%151 = zext i1 %135 to i32 | |
%152 = shl i32 %151, 1 | |
%153 = or i32 %150, %152 | |
%154 = trunc i64 %143 to i32 | |
%155 = or i32 %153, %154 | |
%156 = getelementptr i8* %ppu_state, i32 1540 | |
%157 = bitcast i8* %156 to i32* | |
store i32 %155, i32* %157, align 4 | |
br label %instr_0x001D85EC | |
instr_0x001D85EC: ; preds = %instr_0x001D85E8 | |
%158 = getelementptr i8* %ppu_state, i32 1576 | |
%159 = bitcast i8* %158 to i64* | |
%160 = load i64* %159, align 8 | |
%161 = getelementptr i8* %ppu_state, i32 1540 | |
%162 = bitcast i8* %161 to i32* | |
%163 = load i32* %162, align 4 | |
%164 = lshr i32 %163, 1 | |
%165 = and i32 %164, 1 | |
%166 = trunc i32 %165 to i1 | |
%167 = xor i1 %166, true | |
br i1 %167, label %instr_0x001D861C, label %instr_0x001D85F0 | |
instr_0x001D85F0: ; preds = %instr_0x001D85EC | |
%168 = getelementptr i8* %ppu_state, i32 1568 | |
%169 = bitcast i8* %168 to i64* | |
store i64 1934836, i64* %169, align 8 | |
%170 = getelementptr i8* %ppu_state, i32 1664 | |
%171 = bitcast i8* %170 to i32* | |
store i32 2320628, i32* %171, align 4 | |
%172 = call i32 @execute_unknown_function(i8* %ppu_state, i64 0) | |
br label %instr_0x001D85F4 | |
instr_0x001D85F4: ; preds = %instr_0x001D85F0 | |
%173 = getelementptr i8* %ppu_state, i32 776 | |
%174 = bitcast i8* %173 to i64* | |
%175 = load i64* %174, align 8 | |
%176 = add i64 %175, 40 | |
%177 = and i64 %176, 4294967295 | |
%178 = add i64 %177, 2147418112 | |
%179 = inttoptr i64 %178 to i64* | |
%180 = load i64* %179 | |
%181 = call i64 @llvm.bswap.i64(i64 %180) | |
%182 = getelementptr i8* %ppu_state, i32 784 | |
%183 = bitcast i8* %182 to i64* | |
store i64 %181, i64* %183, align 8 | |
br label %instr_0x001D85F8 | |
instr_0x001D85F8: ; preds = %instr_0x001D85F4 | |
%184 = getelementptr i8* %ppu_state, i32 1016 | |
%185 = bitcast i8* %184 to i64* | |
%186 = load i64* %185, align 8 | |
%187 = add i64 %186, 556 | |
%188 = and i64 %187, 4294967295 | |
%189 = add i64 %188, 2147418112 | |
%190 = inttoptr i64 %189 to i32* | |
%191 = load i32* %190 | |
%192 = call i32 @llvm.bswap.i32(i32 %191) | |
%193 = zext i32 %192 to i64 | |
%194 = getelementptr i8* %ppu_state, i32 768 | |
%195 = bitcast i8* %194 to i64* | |
store i64 %193, i64* %195, align 8 | |
br label %instr_0x001D85FC | |
instr_0x001D85FC: ; preds = %instr_0x001D85F8 | |
%196 = getelementptr i8* %ppu_state, i32 768 | |
%197 = bitcast i8* %196 to i64* | |
%198 = load i64* %197, align 8 | |
%199 = getelementptr i8* %ppu_state, i32 792 | |
%200 = bitcast i8* %199 to i64* | |
%201 = load i64* %200, align 8 | |
%202 = sub i64 %201, %198 | |
%203 = getelementptr i8* %ppu_state, i32 792 | |
%204 = bitcast i8* %203 to i64* | |
store i64 %202, i64* %204, align 8 | |
br label %instr_0x001D8600 | |
instr_0x001D8600: ; preds = %instr_0x001D85FC | |
%205 = getelementptr i8* %ppu_state, i32 792 | |
%206 = bitcast i8* %205 to i32* | |
%207 = load i32* %206, align 8 | |
%208 = sext i32 %207 to i64 | |
%209 = icmp slt i64 %208, 29999 | |
%210 = icmp sgt i64 %208, 29999 | |
%211 = icmp eq i64 %208, 29999 | |
%212 = getelementptr i8* %ppu_state, i32 1540 | |
%213 = bitcast i8* %212 to i32* | |
%214 = load i32* %213, align 4 | |
%215 = getelementptr i8* %ppu_state, i32 1544 | |
%216 = bitcast i8* %215 to i64* | |
%217 = load i64* %216, align 8 | |
%218 = lshr i64 %217, 31 | |
%219 = and i64 %218, 1 | |
%220 = and i32 %214, -16 | |
%221 = zext i1 %209 to i32 | |
%222 = shl i32 %221, 3 | |
%223 = or i32 %220, %222 | |
%224 = zext i1 %210 to i32 | |
%225 = shl i32 %224, 2 | |
%226 = or i32 %223, %225 | |
%227 = zext i1 %211 to i32 | |
%228 = shl i32 %227, 1 | |
%229 = or i32 %226, %228 | |
%230 = trunc i64 %219 to i32 | |
%231 = or i32 %229, %230 | |
%232 = getelementptr i8* %ppu_state, i32 1540 | |
%233 = bitcast i8* %232 to i32* | |
store i32 %231, i32* %233, align 4 | |
br label %instr_0x001D8604 | |
instr_0x001D8604: ; preds = %instr_0x001D8600 | |
%234 = getelementptr i8* %ppu_state, i32 1576 | |
%235 = bitcast i8* %234 to i64* | |
%236 = load i64* %235, align 8 | |
%237 = getelementptr i8* %ppu_state, i32 1540 | |
%238 = bitcast i8* %237 to i32* | |
%239 = load i32* %238, align 4 | |
%240 = lshr i32 %239, 2 | |
%241 = and i32 %240, 1 | |
%242 = trunc i32 %241 to i1 | |
%243 = xor i1 %242, true | |
br i1 %243, label %instr_0x001D8610, label %instr_0x001D8608 | |
instr_0x001D8608: ; preds = %instr_0x001D8604 | |
%244 = getelementptr i8* %ppu_state, i32 768 | |
%245 = bitcast i8* %244 to i64* | |
store i64 1, i64* %245, align 8 | |
br label %instr_0x001D860C | |
instr_0x001D860C: ; preds = %instr_0x001D8608 | |
%246 = getelementptr i8* %ppu_state, i32 1016 | |
%247 = bitcast i8* %246 to i64* | |
%248 = load i64* %247, align 8 | |
%249 = add i64 %248, 552 | |
%250 = getelementptr i8* %ppu_state, i32 768 | |
%251 = bitcast i8* %250 to i32* | |
%252 = load i32* %251, align 8 | |
%253 = call i32 @llvm.bswap.i32(i32 %252) | |
%254 = and i64 %249, 4294967295 | |
%255 = add i64 %254, 2147418112 | |
%256 = inttoptr i64 %255 to i32* | |
store i32 %253, i32* %256 | |
br label %instr_0x001D8610 | |
instr_0x001D8610: ; preds = %instr_0x001D860C, %instr_0x001D8604 | |
%257 = getelementptr i8* %ppu_state, i32 1568 | |
%258 = bitcast i8* %257 to i64* | |
store i64 1934868, i64* %258, align 8 | |
%259 = getelementptr i8* %ppu_state, i32 1664 | |
%260 = bitcast i8* %259 to i32* | |
store i32 2320628, i32* %260, align 4 | |
%261 = call i32 @execute_unknown_function(i8* %ppu_state, i64 0) | |
br label %instr_0x001D8614 | |
instr_0x001D8614: ; preds = %instr_0x001D8610 | |
%262 = getelementptr i8* %ppu_state, i32 776 | |
%263 = bitcast i8* %262 to i64* | |
%264 = load i64* %263, align 8 | |
%265 = add i64 %264, 40 | |
%266 = and i64 %265, 4294967295 | |
%267 = add i64 %266, 2147418112 | |
%268 = inttoptr i64 %267 to i64* | |
%269 = load i64* %268 | |
%270 = call i64 @llvm.bswap.i64(i64 %269) | |
%271 = getelementptr i8* %ppu_state, i32 784 | |
%272 = bitcast i8* %271 to i64* | |
store i64 %270, i64* %272, align 8 | |
br label %instr_0x001D8618 | |
instr_0x001D8618: ; preds = %instr_0x001D8614 | |
%273 = getelementptr i8* %ppu_state, i32 1016 | |
%274 = bitcast i8* %273 to i64* | |
%275 = load i64* %274, align 8 | |
%276 = add i64 %275, 556 | |
%277 = getelementptr i8* %ppu_state, i32 792 | |
%278 = bitcast i8* %277 to i32* | |
%279 = load i32* %278, align 8 | |
%280 = call i32 @llvm.bswap.i32(i32 %279) | |
%281 = and i64 %276, 4294967295 | |
%282 = add i64 %281, 2147418112 | |
%283 = inttoptr i64 %282 to i32* | |
store i32 %280, i32* %283 | |
br label %instr_0x001D861C | |
instr_0x001D861C: ; preds = %instr_0x001D8618, %instr_0x001D85EC, %instr_0x001D85E4 | |
%284 = getelementptr i8* %ppu_state, i32 776 | |
%285 = bitcast i8* %284 to i64* | |
%286 = load i64* %285, align 8 | |
%287 = add i64 %286, 144 | |
%288 = and i64 %287, 4294967295 | |
%289 = add i64 %288, 2147418112 | |
%290 = inttoptr i64 %289 to i64* | |
%291 = load i64* %290 | |
%292 = call i64 @llvm.bswap.i64(i64 %291) | |
%293 = getelementptr i8* %ppu_state, i32 768 | |
%294 = bitcast i8* %293 to i64* | |
store i64 %292, i64* %294, align 8 | |
br label %instr_0x001D8620 | |
instr_0x001D8620: ; preds = %instr_0x001D861C | |
%295 = getelementptr i8* %ppu_state, i32 768 | |
%296 = bitcast i8* %295 to i64* | |
%297 = load i64* %296, align 8 | |
%298 = getelementptr i8* %ppu_state, i32 1568 | |
%299 = bitcast i8* %298 to i64* | |
store i64 %297, i64* %299, align 8 | |
br label %instr_0x001D8624 | |
instr_0x001D8624: ; preds = %instr_0x001D8620 | |
%300 = getelementptr i8* %ppu_state, i32 776 | |
%301 = bitcast i8* %300 to i64* | |
%302 = load i64* %301, align 8 | |
%303 = add i64 %302, 120 | |
%304 = and i64 %303, 4294967295 | |
%305 = add i64 %304, 2147418112 | |
%306 = inttoptr i64 %305 to i64* | |
%307 = load i64* %306 | |
%308 = call i64 @llvm.bswap.i64(i64 %307) | |
%309 = getelementptr i8* %ppu_state, i32 1016 | |
%310 = bitcast i8* %309 to i64* | |
store i64 %308, i64* %310, align 8 | |
br label %instr_0x001D8628 | |
instr_0x001D8628: ; preds = %instr_0x001D8624 | |
%311 = getelementptr i8* %ppu_state, i32 776 | |
%312 = bitcast i8* %311 to i64* | |
%313 = load i64* %312, align 8 | |
%314 = add i64 %313, 128 | |
%315 = getelementptr i8* %ppu_state, i32 776 | |
%316 = bitcast i8* %315 to i64* | |
store i64 %314, i64* %316, align 8 | |
br label %instr_0x001D862C | |
instr_0x001D862C: ; preds = %instr_0x001D8628 | |
%317 = getelementptr i8* %ppu_state, i32 1568 | |
%318 = bitcast i8* %317 to i64* | |
%319 = load i64* %318, align 8 | |
%320 = and i64 %319, -4 | |
%321 = trunc i64 %320 to i32 | |
%322 = getelementptr i8* %ppu_state, i32 1576 | |
%323 = bitcast i8* %322 to i64* | |
%324 = load i64* %323, align 8 | |
%325 = getelementptr i8* %ppu_state, i32 1664 | |
%326 = bitcast i8* %325 to i32* | |
store i32 %321, i32* %326, align 4 | |
ret i32 0 | |
} | |
Recompiling block : | |
001de5f0: 00 00 00 00 stdu r1,-112(r1) #ffffff90 | |
001de5f4: 00 00 00 00 mflr r0 | |
001de5f8: 00 00 00 00 std r0,128(r1) #80 | |
001de5fc: 00 00 00 00 lwz r9,-9300(r2) #ffffdbac | |
001de600: 00 00 00 00 lwz r9,0(r9) #0 | |
001de604: 00 00 00 00 lwz r0,552(r9) #228 | |
001de608: 00 00 00 00 cmpwi cr7,r0,0 #0 | |
001de60c: 00 00 00 00 bne cr7,0x1de620 | |
001de610: 00 00 00 00 lwz r9,-9292(r2) #ffffdbb4 | |
001de614: 00 00 00 00 lwz r3,0(r9) #0 | |
001de618: 00 00 00 00 bl 0x207370 | |
001de61c: 00 00 00 00 nop | |
001de620: 00 00 00 00 lwz r9,-9300(r2) #ffffdbac | |
001de624: 00 00 00 00 lwz r3,0(r9) #0 | |
001de628: 00 00 00 00 bl 0x1d85b8 | |
001de62c: 00 00 00 00 nop | |
001de630: 00 00 00 00 ld r0,128(r1) #80 | |
001de634: 00 00 00 00 mtlr r0 | |
001de638: 00 00 00 00 addi r1,112(r1) #70 | |
001de63c: 00 00 00 00 blr | |
LLVM bytecode: | |
define x86_64_win64cc i32 @function_0x001DE5F0(i8* %ppu_state, i64 %context) { | |
entry: | |
br label %instr_0x001DE5F0 | |
instr_0x001DE5F0: ; preds = %entry | |
%0 = getelementptr i8* %ppu_state, i32 776 | |
%1 = bitcast i8* %0 to i64* | |
%2 = load i64* %1, align 8 | |
%3 = add i64 %2, -112 | |
%4 = getelementptr i8* %ppu_state, i32 776 | |
%5 = bitcast i8* %4 to i64* | |
%6 = load i64* %5, align 8 | |
%7 = call i64 @llvm.bswap.i64(i64 %6) | |
%8 = and i64 %3, 4294967295 | |
%9 = add i64 %8, 2147418112 | |
%10 = inttoptr i64 %9 to i64* | |
store i64 %7, i64* %10 | |
%11 = getelementptr i8* %ppu_state, i32 776 | |
%12 = bitcast i8* %11 to i64* | |
store i64 %3, i64* %12, align 8 | |
br label %instr_0x001DE5F4 | |
instr_0x001DE5F4: ; preds = %instr_0x001DE5F0 | |
%13 = getelementptr i8* %ppu_state, i32 1568 | |
%14 = bitcast i8* %13 to i64* | |
%15 = load i64* %14, align 8 | |
%16 = getelementptr i8* %ppu_state, i32 768 | |
%17 = bitcast i8* %16 to i64* | |
store i64 %15, i64* %17, align 8 | |
br label %instr_0x001DE5F8 | |
instr_0x001DE5F8: ; preds = %instr_0x001DE5F4 | |
%18 = getelementptr i8* %ppu_state, i32 776 | |
%19 = bitcast i8* %18 to i64* | |
%20 = load i64* %19, align 8 | |
%21 = add i64 %20, 128 | |
%22 = getelementptr i8* %ppu_state, i32 768 | |
%23 = bitcast i8* %22 to i64* | |
%24 = load i64* %23, align 8 | |
%25 = call i64 @llvm.bswap.i64(i64 %24) | |
%26 = and i64 %21, 4294967295 | |
%27 = add i64 %26, 2147418112 | |
%28 = inttoptr i64 %27 to i64* | |
store i64 %25, i64* %28 | |
br label %instr_0x001DE5FC | |
instr_0x001DE5FC: ; preds = %instr_0x001DE5F8 | |
%29 = getelementptr i8* %ppu_state, i32 784 | |
%30 = bitcast i8* %29 to i64* | |
%31 = load i64* %30, align 8 | |
%32 = add i64 %31, -9300 | |
%33 = and i64 %32, 4294967295 | |
%34 = add i64 %33, 2147418112 | |
%35 = inttoptr i64 %34 to i32* | |
%36 = load i32* %35 | |
%37 = call i32 @llvm.bswap.i32(i32 %36) | |
%38 = zext i32 %37 to i64 | |
%39 = getelementptr i8* %ppu_state, i32 840 | |
%40 = bitcast i8* %39 to i64* | |
store i64 %38, i64* %40, align 8 | |
br label %instr_0x001DE600 | |
instr_0x001DE600: ; preds = %instr_0x001DE5FC | |
%41 = getelementptr i8* %ppu_state, i32 840 | |
%42 = bitcast i8* %41 to i64* | |
%43 = load i64* %42, align 8 | |
%44 = add i64 %43, 0 | |
%45 = and i64 %44, 4294967295 | |
%46 = add i64 %45, 2147418112 | |
%47 = inttoptr i64 %46 to i32* | |
%48 = load i32* %47 | |
%49 = call i32 @llvm.bswap.i32(i32 %48) | |
%50 = zext i32 %49 to i64 | |
%51 = getelementptr i8* %ppu_state, i32 840 | |
%52 = bitcast i8* %51 to i64* | |
store i64 %50, i64* %52, align 8 | |
br label %instr_0x001DE604 | |
instr_0x001DE604: ; preds = %instr_0x001DE600 | |
%53 = getelementptr i8* %ppu_state, i32 840 | |
%54 = bitcast i8* %53 to i64* | |
%55 = load i64* %54, align 8 | |
%56 = add i64 %55, 552 | |
%57 = and i64 %56, 4294967295 | |
%58 = add i64 %57, 2147418112 | |
%59 = inttoptr i64 %58 to i32* | |
%60 = load i32* %59 | |
%61 = call i32 @llvm.bswap.i32(i32 %60) | |
%62 = zext i32 %61 to i64 | |
%63 = getelementptr i8* %ppu_state, i32 768 | |
%64 = bitcast i8* %63 to i64* | |
store i64 %62, i64* %64, align 8 | |
br label %instr_0x001DE608 | |
instr_0x001DE608: ; preds = %instr_0x001DE604 | |
%65 = getelementptr i8* %ppu_state, i32 768 | |
%66 = bitcast i8* %65 to i32* | |
%67 = load i32* %66, align 8 | |
%68 = sext i32 %67 to i64 | |
%69 = icmp slt i64 %68, 0 | |
%70 = icmp sgt i64 %68, 0 | |
%71 = icmp eq i64 %68, 0 | |
%72 = getelementptr i8* %ppu_state, i32 1540 | |
%73 = bitcast i8* %72 to i32* | |
%74 = load i32* %73, align 4 | |
%75 = getelementptr i8* %ppu_state, i32 1544 | |
%76 = bitcast i8* %75 to i64* | |
%77 = load i64* %76, align 8 | |
%78 = lshr i64 %77, 31 | |
%79 = and i64 %78, 1 | |
%80 = and i32 %74, -16 | |
%81 = zext i1 %69 to i32 | |
%82 = shl i32 %81, 3 | |
%83 = or i32 %80, %82 | |
%84 = zext i1 %70 to i32 | |
%85 = shl i32 %84, 2 | |
%86 = or i32 %83, %85 | |
%87 = zext i1 %71 to i32 | |
%88 = shl i32 %87, 1 | |
%89 = or i32 %86, %88 | |
%90 = trunc i64 %79 to i32 | |
%91 = or i32 %89, %90 | |
%92 = getelementptr i8* %ppu_state, i32 1540 | |
%93 = bitcast i8* %92 to i32* | |
store i32 %91, i32* %93, align 4 | |
br label %instr_0x001DE60C | |
instr_0x001DE60C: ; preds = %instr_0x001DE608 | |
%94 = getelementptr i8* %ppu_state, i32 1576 | |
%95 = bitcast i8* %94 to i64* | |
%96 = load i64* %95, align 8 | |
%97 = getelementptr i8* %ppu_state, i32 1540 | |
%98 = bitcast i8* %97 to i32* | |
%99 = load i32* %98, align 4 | |
%100 = lshr i32 %99, 1 | |
%101 = and i32 %100, 1 | |
%102 = trunc i32 %101 to i1 | |
%103 = xor i1 %102, true | |
br i1 %103, label %instr_0x001DE620, label %instr_0x001DE610 | |
instr_0x001DE610: ; preds = %instr_0x001DE60C | |
%104 = getelementptr i8* %ppu_state, i32 784 | |
%105 = bitcast i8* %104 to i64* | |
%106 = load i64* %105, align 8 | |
%107 = add i64 %106, -9292 | |
%108 = and i64 %107, 4294967295 | |
%109 = add i64 %108, 2147418112 | |
%110 = inttoptr i64 %109 to i32* | |
%111 = load i32* %110 | |
%112 = call i32 @llvm.bswap.i32(i32 %111) | |
%113 = zext i32 %112 to i64 | |
%114 = getelementptr i8* %ppu_state, i32 840 | |
%115 = bitcast i8* %114 to i64* | |
store i64 %113, i64* %115, align 8 | |
br label %instr_0x001DE614 | |
instr_0x001DE614: ; preds = %instr_0x001DE610 | |
%116 = getelementptr i8* %ppu_state, i32 840 | |
%117 = bitcast i8* %116 to i64* | |
%118 = load i64* %117, align 8 | |
%119 = add i64 %118, 0 | |
%120 = and i64 %119, 4294967295 | |
%121 = add i64 %120, 2147418112 | |
%122 = inttoptr i64 %121 to i32* | |
%123 = load i32* %122 | |
%124 = call i32 @llvm.bswap.i32(i32 %123) | |
%125 = zext i32 %124 to i64 | |
%126 = getelementptr i8* %ppu_state, i32 792 | |
%127 = bitcast i8* %126 to i64* | |
store i64 %125, i64* %127, align 8 | |
br label %instr_0x001DE618 | |
instr_0x001DE618: ; preds = %instr_0x001DE614 | |
%128 = getelementptr i8* %ppu_state, i32 1568 | |
%129 = bitcast i8* %128 to i64* | |
store i64 1959452, i64* %129, align 8 | |
%130 = getelementptr i8* %ppu_state, i32 1664 | |
%131 = bitcast i8* %130 to i32* | |
store i32 2126704, i32* %131, align 4 | |
%132 = call i32 @execute_unknown_function(i8* %ppu_state, i64 0) | |
br label %instr_0x001DE61C | |
instr_0x001DE61C: ; preds = %instr_0x001DE618 | |
%133 = getelementptr i8* %ppu_state, i32 768 | |
%134 = bitcast i8* %133 to i64* | |
%135 = load i64* %134, align 8 | |
%136 = getelementptr i8* %ppu_state, i32 768 | |
%137 = bitcast i8* %136 to i64* | |
store i64 %135, i64* %137, align 8 | |
br label %instr_0x001DE620 | |
instr_0x001DE620: ; preds = %instr_0x001DE61C, %instr_0x001DE60C | |
%138 = getelementptr i8* %ppu_state, i32 784 | |
%139 = bitcast i8* %138 to i64* | |
%140 = load i64* %139, align 8 | |
%141 = add i64 %140, -9300 | |
%142 = and i64 %141, 4294967295 | |
%143 = add i64 %142, 2147418112 | |
%144 = inttoptr i64 %143 to i32* | |
%145 = load i32* %144 | |
%146 = call i32 @llvm.bswap.i32(i32 %145) | |
%147 = zext i32 %146 to i64 | |
%148 = getelementptr i8* %ppu_state, i32 840 | |
%149 = bitcast i8* %148 to i64* | |
store i64 %147, i64* %149, align 8 | |
br label %instr_0x001DE624 | |
instr_0x001DE624: ; preds = %instr_0x001DE620 | |
%150 = getelementptr i8* %ppu_state, i32 840 | |
%151 = bitcast i8* %150 to i64* | |
%152 = load i64* %151, align 8 | |
%153 = add i64 %152, 0 | |
%154 = and i64 %153, 4294967295 | |
%155 = add i64 %154, 2147418112 | |
%156 = inttoptr i64 %155 to i32* | |
%157 = load i32* %156 | |
%158 = call i32 @llvm.bswap.i32(i32 %157) | |
%159 = zext i32 %158 to i64 | |
%160 = getelementptr i8* %ppu_state, i32 792 | |
%161 = bitcast i8* %160 to i64* | |
store i64 %159, i64* %161, align 8 | |
br label %instr_0x001DE628 | |
instr_0x001DE628: ; preds = %instr_0x001DE624 | |
%162 = getelementptr i8* %ppu_state, i32 1568 | |
%163 = bitcast i8* %162 to i64* | |
store i64 1959468, i64* %163, align 8 | |
%164 = getelementptr i8* %ppu_state, i32 1664 | |
%165 = bitcast i8* %164 to i32* | |
store i32 1934776, i32* %165, align 4 | |
%166 = call i32 @function_0x001D85B8(i8* %ppu_state, i64 0) | |
br label %instr_0x001DE62C | |
instr_0x001DE62C: ; preds = %instr_0x001DE628 | |
%167 = getelementptr i8* %ppu_state, i32 768 | |
%168 = bitcast i8* %167 to i64* | |
%169 = load i64* %168, align 8 | |
%170 = getelementptr i8* %ppu_state, i32 768 | |
%171 = bitcast i8* %170 to i64* | |
store i64 %169, i64* %171, align 8 | |
br label %instr_0x001DE630 | |
instr_0x001DE630: ; preds = %instr_0x001DE62C | |
%172 = getelementptr i8* %ppu_state, i32 776 | |
%173 = bitcast i8* %172 to i64* | |
%174 = load i64* %173, align 8 | |
%175 = add i64 %174, 128 | |
%176 = and i64 %175, 4294967295 | |
%177 = add i64 %176, 2147418112 | |
%178 = inttoptr i64 %177 to i64* | |
%179 = load i64* %178 | |
%180 = call i64 @llvm.bswap.i64(i64 %179) | |
%181 = getelementptr i8* %ppu_state, i32 768 | |
%182 = bitcast i8* %181 to i64* | |
store i64 %180, i64* %182, align 8 | |
br label %instr_0x001DE634 | |
instr_0x001DE634: ; preds = %instr_0x001DE630 | |
%183 = getelementptr i8* %ppu_state, i32 768 | |
%184 = bitcast i8* %183 to i64* | |
%185 = load i64* %184, align 8 | |
%186 = getelementptr i8* %ppu_state, i32 1568 | |
%187 = bitcast i8* %186 to i64* | |
store i64 %185, i64* %187, align 8 | |
br label %instr_0x001DE638 | |
instr_0x001DE638: ; preds = %instr_0x001DE634 | |
%188 = getelementptr i8* %ppu_state, i32 776 | |
%189 = bitcast i8* %188 to i64* | |
%190 = load i64* %189, align 8 | |
%191 = add i64 %190, 112 | |
%192 = getelementptr i8* %ppu_state, i32 776 | |
%193 = bitcast i8* %192 to i64* | |
store i64 %191, i64* %193, align 8 | |
br label %instr_0x001DE63C | |
instr_0x001DE63C: ; preds = %instr_0x001DE638 | |
%194 = getelementptr i8* %ppu_state, i32 1568 | |
%195 = bitcast i8* %194 to i64* | |
%196 = load i64* %195, align 8 | |
%197 = and i64 %196, -4 | |
%198 = trunc i64 %197 to i32 | |
%199 = getelementptr i8* %ppu_state, i32 1576 | |
%200 = bitcast i8* %199 to i64* | |
%201 = load i64* %200, align 8 | |
%202 = getelementptr i8* %ppu_state, i32 1664 | |
%203 = bitcast i8* %202 to i32* | |
store i32 %198, i32* %203, align 4 | |
ret i32 0 | |
} | |
block_0x00207370 ID IS 262 | |
block_0x001D85B8 ID IS 263 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment