Deprecation warning: Use self.model.get_any_node() instead of get_any_node 1329 0x400531 Main func [, , , , ] Postorder [, , , , ] Reverse postorder [, , , , ] Checking block for source IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I32 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I32 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I32 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I32 t34:Ity_I32 t35:Ity_I32 t36:Ity_I32 t37:Ity_I32 t38:Ity_I32 t39:Ity_I32 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 t45:Ity_I32 t46:Ity_I32 t47:Ity_I32 t48:Ity_I32 t49:Ity_I32 t50:Ity_I32 t51:Ity_I32 t52:Ity_I32 t53:Ity_I32 t54:Ity_I32 t55:Ity_I1 t56:Ity_I32 t57:Ity_I32 t58:Ity_I32 t59:Ity_I32 t60:Ity_I32 t61:Ity_I32 t62:Ity_I32 t63:Ity_I32 t64:Ity_I1 t65:Ity_I32 t66:Ity_I32 t67:Ity_I32 t68:Ity_I1 t69:Ity_I1 t70:Ity_I32 t71:Ity_I32 t72:Ity_I32 t73:Ity_I32 t74:Ity_I32 t75:Ity_I32 t76:Ity_I32 t77:Ity_I32 t78:Ity_I32 t79:Ity_I32 t80:Ity_I1 t81:Ity_I32 t82:Ity_I32 t83:Ity_I32 t84:Ity_I32 t85:Ity_I1 t86:Ity_I32 t87:Ity_I32 t88:Ity_I32 t89:Ity_I1 t90:Ity_I32 t91:Ity_I32 t92:Ity_I32 t93:Ity_I1 t94:Ity_I32 t95:Ity_I32 t96:Ity_I1 t97:Ity_I32 t98:Ity_I32 t99:Ity_I32 t100:Ity_I1 t101:Ity_I32 t102:Ity_I32 t103:Ity_I1 t104:Ity_I32 t105:Ity_I32 t106:Ity_I32 t107:Ity_I1 t108:Ity_I32 t109:Ity_I32 t110:Ity_I1 t111:Ity_I32 t112:Ity_I32 t113:Ity_I32 t114:Ity_I1 t115:Ity_I32 t116:Ity_I32 t117:Ity_I1 t118:Ity_I32 t119:Ity_I32 t120:Ity_I32 t121:Ity_I1 t122:Ity_I32 t123:Ity_I32 t124:Ity_I1 t125:Ity_I32 t126:Ity_I32 t127:Ity_I32 t128:Ity_I1 t129:Ity_I32 t130:Ity_I32 t131:Ity_I32 t132:Ity_I1 t133:Ity_I32 t134:Ity_I32 t135:Ity_I1 t136:Ity_I32 t137:Ity_I32 t138:Ity_I32 t139:Ity_I1 t140:Ity_I32 t141:Ity_I32 t142:Ity_I1 t143:Ity_I32 t144:Ity_I32 t145:Ity_I32 t146:Ity_I32 t147:Ity_I32 t148:Ity_I32 t149:Ity_I32 t150:Ity_I32 t151:Ity_I32 t152:Ity_I32 t153:Ity_I32 t154:Ity_I32 t155:Ity_I1 t156:Ity_I32 t157:Ity_I32 t158:Ity_I32 t159:Ity_I32 t160:Ity_I32 t161:Ity_I32 t162:Ity_I32 t163:Ity_I32 t164:Ity_I32 t165:Ity_I32 t166:Ity_I1 t167:Ity_I32 t168:Ity_I32 t169:Ity_I32 t170:Ity_I32 t171:Ity_I32 t172:Ity_I32 t173:Ity_I32 t174:Ity_I32 t175:Ity_I32 t176:Ity_I32 t177:Ity_I32 t178:Ity_I32 t179:Ity_I1 t180:Ity_I32 t181:Ity_I32 t182:Ity_I32 t183:Ity_I32 t184:Ity_I32 t185:Ity_I32 t186:Ity_I32 t187:Ity_I32 t188:Ity_I1 t189:Ity_I1 t190:Ity_I1 t191:Ity_I32 t192:Ity_I32 t193:Ity_I32 t194:Ity_I32 00 | ------ IMark(0x400530, 2, 1) ------ 01 | t71 = GET:I32(sp) 02 | t70 = Sub32(t71,0x00000008) 03 | PUT(sp) = t70 04 | t3 = And32(t70,0xfffffffc) 05 | t73 = GET:I32(r7) 06 | STle(t3) = t73 07 | t74 = Add32(t3,0x00000004) 08 | t75 = GET:I32(lr) 09 | STle(t74) = t75 10 | ------ IMark(0x400532, 2, 1) ------ 11 | t78 = Sub32(t70,0x000000a0) 12 | PUT(sp) = t78 13 | ------ IMark(0x400534, 2, 1) ------ 14 | PUT(r7) = t78 15 | PUT(pc) = 0x00400537 16 | ------ IMark(0x400536, 2, 1) ------ 17 | t86 = Add32(t78,0x00000004) 18 | t88 = GET:I32(r0) 19 | STle(t86) = t88 20 | PUT(pc) = 0x00400539 21 | ------ IMark(0x400538, 2, 1) ------ 22 | t92 = GET:I32(r1) 23 | STle(t78) = t92 24 | ------ IMark(0x40053a, 4, 1) ------ 25 | PUT(pc) = 0x0040053f 26 | ------ IMark(0x40053e, 2, 1) ------ 27 | t97 = Add32(t78,0x00000014) 28 | STle(t97) = 0x0000dead 29 | ------ IMark(0x400540, 4, 1) ------ 30 | PUT(pc) = 0x00400545 31 | ------ IMark(0x400544, 2, 1) ------ 32 | t104 = Add32(t78,0x00000008) 33 | STle(t104) = 0x0000beef 34 | ------ IMark(0x400546, 4, 1) ------ 35 | PUT(pc) = 0x0040054b 36 | ------ IMark(0x40054a, 2, 1) ------ 37 | t111 = Add32(t78,0x00000018) 38 | STle(t111) = 0x0000cafe 39 | ------ IMark(0x40054c, 4, 1) ------ 40 | PUT(pc) = 0x00400551 41 | ------ IMark(0x400550, 2, 1) ------ 42 | t118 = Add32(t78,0x0000000c) 43 | STle(t118) = 0x0000babe 44 | ------ IMark(0x400552, 4, 1) ------ 45 | t32 = t97 46 | PUT(pc) = 0x00400557 47 | ------ IMark(0x400556, 2, 1) ------ 48 | t125 = Add32(t78,0x00000010) 49 | STle(t125) = t32 50 | PUT(pc) = 0x00400559 51 | ------ IMark(0x400558, 2, 1) ------ 52 | t129 = t125 53 | t192 = LDle:I32(t129) 54 | ------ IMark(0x40055a, 4, 1) ------ 55 | t42 = Add32(t78,0x00000020) 56 | PUT(pc) = 0x0040055f 57 | ------ IMark(0x40055e, 2, 1) ------ 58 | t136 = Add32(t192,0x00000008) 59 | STle(t136) = t42 60 | ------ IMark(0x400560, 4, 1) ------ 61 | t49 = t42 62 | PUT(r3) = t49 63 | ------ IMark(0x400564, 2, 1) ------ 64 | t143 = GET:I32(cc_op) 65 | t144 = GET:I32(cc_dep1) 66 | t145 = GET:I32(cc_dep2) 67 | t146 = GET:I32(cc_ndep) 68 | t193 = armg_calculate_flag_v(t143,t144,t145,t146):Ity_I32 69 | t194 = armg_calculate_flag_c(t143,t144,t145,t146):Ity_I32 70 | PUT(r2) = 0x00000080 71 | ------ IMark(0x400566, 2, 1) ------ 72 | PUT(r1) = t49 73 | ------ IMark(0x400568, 2, 1) ------ 74 | PUT(r0) = 0x00000000 75 | PUT(cc_op) = 0x00000005 76 | PUT(cc_dep1) = 0x00000000 77 | PUT(cc_dep2) = t194 78 | PUT(cc_ndep) = t193 79 | ------ IMark(0x40056a, 4, 1) ------ 80 | PUT(itstate) = 0x00000000 81 | PUT(lr) = 0x0040056f NEXT: PUT(pc) = 0x00400404; Ijk_Call } 0 PUT(offset=64) = 0x0040056f 1 PUT(offset=392) = 0x00000000 2 ------ IMark(0x40056a, 4, 1) ------ 3 PUT(offset=84) = t193 4 PUT(offset=80) = t194 5 PUT(offset=76) = 0x00000000 6 PUT(offset=72) = 0x00000005 7 PUT(offset=8) = 0x00000000 8 ------ IMark(0x400568, 2, 1) ------ 9 PUT(offset=12) = t49 10 ------ IMark(0x400566, 2, 1) ------ 11 PUT(offset=16) = 0x00000080 12 t194 = armg_calculate_flag_c(t143,t144,t145,t146):Ity_I32 13 t193 = armg_calculate_flag_v(t143,t144,t145,t146):Ity_I32 14 t146 = GET:I32(offset=84) 15 t145 = GET:I32(offset=80) 16 t144 = GET:I32(offset=76) 17 t143 = GET:I32(offset=72) 18 ------ IMark(0x400564, 2, 1) ------ 19 PUT(offset=20) = t49 20 t49 = t42 21 ------ IMark(0x400560, 4, 1) ------ 22 STle(t136) = t42 23 t136 = Add32(t192,0x00000008) 24 ------ IMark(0x40055e, 2, 1) ------ 25 PUT(offset=68) = 0x0040055f 26 t42 = Add32(t78,0x00000020) 27 ------ IMark(0x40055a, 4, 1) ------ 28 t192 = LDle:I32(t129) 29 t129 = t125 30 ------ IMark(0x400558, 2, 1) ------ 31 PUT(offset=68) = 0x00400559 32 STle(t125) = t32 33 t125 = Add32(t78,0x00000010) 34 ------ IMark(0x400556, 2, 1) ------ 35 PUT(offset=68) = 0x00400557 36 t32 = t97 37 ------ IMark(0x400552, 4, 1) ------ 38 STle(t118) = 0x0000babe 39 t118 = Add32(t78,0x0000000c) 40 ------ IMark(0x400550, 2, 1) ------ 41 PUT(offset=68) = 0x00400551 42 ------ IMark(0x40054c, 4, 1) ------ 43 STle(t111) = 0x0000cafe 44 t111 = Add32(t78,0x00000018) 45 ------ IMark(0x40054a, 2, 1) ------ 46 PUT(offset=68) = 0x0040054b 47 ------ IMark(0x400546, 4, 1) ------ 48 STle(t104) = 0x0000beef 49 t104 = Add32(t78,0x00000008) 50 ------ IMark(0x400544, 2, 1) ------ 51 PUT(offset=68) = 0x00400545 52 ------ IMark(0x400540, 4, 1) ------ 53 STle(t97) = 0x0000dead 54 t97 = Add32(t78,0x00000014) 55 ------ IMark(0x40053e, 2, 1) ------ 56 PUT(offset=68) = 0x0040053f 57 ------ IMark(0x40053a, 4, 1) ------ 58 STle(t78) = t92 59 t92 = GET:I32(offset=12) 60 ------ IMark(0x400538, 2, 1) ------ 61 PUT(offset=68) = 0x00400539 62 STle(t86) = t88 63 t88 = GET:I32(offset=8) 64 t86 = Add32(t78,0x00000004) 65 ------ IMark(0x400536, 2, 1) ------ 66 PUT(offset=68) = 0x00400537 67 PUT(offset=36) = t78 68 ------ IMark(0x400534, 2, 1) ------ 69 PUT(offset=60) = t78 70 t78 = Sub32(t70,0x000000a0) 71 ------ IMark(0x400532, 2, 1) ------ 72 STle(t74) = t75 73 t75 = GET:I32(offset=64) 74 t74 = Add32(t3,0x00000004) 75 STle(t3) = t73 76 t73 = GET:I32(offset=36) 77 t3 = And32(t70,0xfffffffc) 78 PUT(offset=60) = t70 79 t70 = Sub32(t71,0x00000008) 80 t71 = GET:I32(offset=60) 81 ------ IMark(0x400530, 2, 1) ------ List of sources [(72, 'r1')] [, , , , ] Starting analysis Block analysis IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I32 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I32 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I32 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I32 t34:Ity_I32 t35:Ity_I32 t36:Ity_I32 t37:Ity_I32 t38:Ity_I32 t39:Ity_I32 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 t45:Ity_I32 t46:Ity_I32 t47:Ity_I32 t48:Ity_I32 t49:Ity_I32 t50:Ity_I32 t51:Ity_I32 t52:Ity_I32 t53:Ity_I32 t54:Ity_I32 t55:Ity_I1 t56:Ity_I32 t57:Ity_I32 t58:Ity_I32 t59:Ity_I32 t60:Ity_I32 t61:Ity_I32 t62:Ity_I32 t63:Ity_I32 t64:Ity_I1 t65:Ity_I32 t66:Ity_I32 t67:Ity_I32 t68:Ity_I1 t69:Ity_I1 t70:Ity_I32 t71:Ity_I32 t72:Ity_I32 t73:Ity_I32 t74:Ity_I32 t75:Ity_I32 t76:Ity_I32 t77:Ity_I32 t78:Ity_I32 t79:Ity_I32 t80:Ity_I1 t81:Ity_I32 t82:Ity_I32 t83:Ity_I32 t84:Ity_I32 t85:Ity_I1 t86:Ity_I32 t87:Ity_I32 t88:Ity_I32 t89:Ity_I1 t90:Ity_I32 t91:Ity_I32 t92:Ity_I32 t93:Ity_I1 t94:Ity_I32 t95:Ity_I32 t96:Ity_I1 t97:Ity_I32 t98:Ity_I32 t99:Ity_I32 t100:Ity_I1 t101:Ity_I32 t102:Ity_I32 t103:Ity_I1 t104:Ity_I32 t105:Ity_I32 t106:Ity_I32 t107:Ity_I1 t108:Ity_I32 t109:Ity_I32 t110:Ity_I1 t111:Ity_I32 t112:Ity_I32 t113:Ity_I32 t114:Ity_I1 t115:Ity_I32 t116:Ity_I32 t117:Ity_I1 t118:Ity_I32 t119:Ity_I32 t120:Ity_I32 t121:Ity_I1 t122:Ity_I32 t123:Ity_I32 t124:Ity_I1 t125:Ity_I32 t126:Ity_I32 t127:Ity_I32 t128:Ity_I1 t129:Ity_I32 t130:Ity_I32 t131:Ity_I32 t132:Ity_I1 t133:Ity_I32 t134:Ity_I32 t135:Ity_I1 t136:Ity_I32 t137:Ity_I32 t138:Ity_I32 t139:Ity_I1 t140:Ity_I32 t141:Ity_I32 t142:Ity_I1 t143:Ity_I32 t144:Ity_I32 t145:Ity_I32 t146:Ity_I32 t147:Ity_I32 t148:Ity_I32 t149:Ity_I32 t150:Ity_I32 t151:Ity_I32 t152:Ity_I32 t153:Ity_I32 t154:Ity_I32 t155:Ity_I1 t156:Ity_I32 t157:Ity_I32 t158:Ity_I32 t159:Ity_I32 t160:Ity_I32 t161:Ity_I32 t162:Ity_I32 t163:Ity_I32 t164:Ity_I32 t165:Ity_I32 t166:Ity_I1 t167:Ity_I32 t168:Ity_I32 t169:Ity_I32 t170:Ity_I32 t171:Ity_I32 t172:Ity_I32 t173:Ity_I32 t174:Ity_I32 t175:Ity_I32 t176:Ity_I32 t177:Ity_I32 t178:Ity_I32 t179:Ity_I1 t180:Ity_I32 t181:Ity_I32 t182:Ity_I32 t183:Ity_I32 t184:Ity_I32 t185:Ity_I32 t186:Ity_I32 t187:Ity_I32 t188:Ity_I1 t189:Ity_I1 t190:Ity_I1 t191:Ity_I32 t192:Ity_I32 t193:Ity_I32 t194:Ity_I32 00 | ------ IMark(0x400530, 2, 1) ------ 01 | t71 = GET:I32(sp) 02 | t70 = Sub32(t71,0x00000008) 03 | PUT(sp) = t70 04 | t3 = And32(t70,0xfffffffc) 05 | t73 = GET:I32(r7) 06 | STle(t3) = t73 07 | t74 = Add32(t3,0x00000004) 08 | t75 = GET:I32(lr) 09 | STle(t74) = t75 10 | ------ IMark(0x400532, 2, 1) ------ 11 | t78 = Sub32(t70,0x000000a0) 12 | PUT(sp) = t78 13 | ------ IMark(0x400534, 2, 1) ------ 14 | PUT(r7) = t78 15 | PUT(pc) = 0x00400537 16 | ------ IMark(0x400536, 2, 1) ------ 17 | t86 = Add32(t78,0x00000004) 18 | t88 = GET:I32(r0) 19 | STle(t86) = t88 20 | PUT(pc) = 0x00400539 21 | ------ IMark(0x400538, 2, 1) ------ 22 | t92 = GET:I32(r1) 23 | STle(t78) = t92 24 | ------ IMark(0x40053a, 4, 1) ------ 25 | PUT(pc) = 0x0040053f 26 | ------ IMark(0x40053e, 2, 1) ------ 27 | t97 = Add32(t78,0x00000014) 28 | STle(t97) = 0x0000dead 29 | ------ IMark(0x400540, 4, 1) ------ 30 | PUT(pc) = 0x00400545 31 | ------ IMark(0x400544, 2, 1) ------ 32 | t104 = Add32(t78,0x00000008) 33 | STle(t104) = 0x0000beef 34 | ------ IMark(0x400546, 4, 1) ------ 35 | PUT(pc) = 0x0040054b 36 | ------ IMark(0x40054a, 2, 1) ------ 37 | t111 = Add32(t78,0x00000018) 38 | STle(t111) = 0x0000cafe 39 | ------ IMark(0x40054c, 4, 1) ------ 40 | PUT(pc) = 0x00400551 41 | ------ IMark(0x400550, 2, 1) ------ 42 | t118 = Add32(t78,0x0000000c) 43 | STle(t118) = 0x0000babe 44 | ------ IMark(0x400552, 4, 1) ------ 45 | t32 = t97 46 | PUT(pc) = 0x00400557 47 | ------ IMark(0x400556, 2, 1) ------ 48 | t125 = Add32(t78,0x00000010) 49 | STle(t125) = t32 50 | PUT(pc) = 0x00400559 51 | ------ IMark(0x400558, 2, 1) ------ 52 | t129 = t125 53 | t192 = LDle:I32(t129) 54 | ------ IMark(0x40055a, 4, 1) ------ 55 | t42 = Add32(t78,0x00000020) 56 | PUT(pc) = 0x0040055f 57 | ------ IMark(0x40055e, 2, 1) ------ 58 | t136 = Add32(t192,0x00000008) 59 | STle(t136) = t42 60 | ------ IMark(0x400560, 4, 1) ------ 61 | t49 = t42 62 | PUT(r3) = t49 63 | ------ IMark(0x400564, 2, 1) ------ 64 | t143 = GET:I32(cc_op) 65 | t144 = GET:I32(cc_dep1) 66 | t145 = GET:I32(cc_dep2) 67 | t146 = GET:I32(cc_ndep) 68 | t193 = armg_calculate_flag_v(t143,t144,t145,t146):Ity_I32 69 | t194 = armg_calculate_flag_c(t143,t144,t145,t146):Ity_I32 70 | PUT(r2) = 0x00000080 71 | ------ IMark(0x400566, 2, 1) ------ 72 | PUT(r1) = t49 73 | ------ IMark(0x400568, 2, 1) ------ 74 | PUT(r0) = 0x00000000 75 | PUT(cc_op) = 0x00000005 76 | PUT(cc_dep1) = 0x00000000 77 | PUT(cc_dep2) = t194 78 | PUT(cc_ndep) = t193 79 | ------ IMark(0x40056a, 4, 1) ------ 80 | PUT(itstate) = 0x00000000 81 | PUT(lr) = 0x0040056f NEXT: PUT(pc) = 0x00400404; Ijk_Call } Analyzing block IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I32 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I32 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I32 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I32 t34:Ity_I32 t35:Ity_I32 t36:Ity_I32 t37:Ity_I32 t38:Ity_I32 t39:Ity_I32 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 t45:Ity_I32 t46:Ity_I32 t47:Ity_I32 t48:Ity_I32 t49:Ity_I32 t50:Ity_I32 t51:Ity_I32 t52:Ity_I32 t53:Ity_I32 t54:Ity_I32 t55:Ity_I1 t56:Ity_I32 t57:Ity_I32 t58:Ity_I32 t59:Ity_I32 t60:Ity_I32 t61:Ity_I32 t62:Ity_I32 t63:Ity_I32 t64:Ity_I1 t65:Ity_I32 t66:Ity_I32 t67:Ity_I32 t68:Ity_I1 t69:Ity_I1 t70:Ity_I32 t71:Ity_I32 t72:Ity_I32 t73:Ity_I32 t74:Ity_I32 t75:Ity_I32 t76:Ity_I32 t77:Ity_I32 t78:Ity_I32 t79:Ity_I32 t80:Ity_I1 t81:Ity_I32 t82:Ity_I32 t83:Ity_I32 t84:Ity_I32 t85:Ity_I1 t86:Ity_I32 t87:Ity_I32 t88:Ity_I32 t89:Ity_I1 t90:Ity_I32 t91:Ity_I32 t92:Ity_I32 t93:Ity_I1 t94:Ity_I32 t95:Ity_I32 t96:Ity_I1 t97:Ity_I32 t98:Ity_I32 t99:Ity_I32 t100:Ity_I1 t101:Ity_I32 t102:Ity_I32 t103:Ity_I1 t104:Ity_I32 t105:Ity_I32 t106:Ity_I32 t107:Ity_I1 t108:Ity_I32 t109:Ity_I32 t110:Ity_I1 t111:Ity_I32 t112:Ity_I32 t113:Ity_I32 t114:Ity_I1 t115:Ity_I32 t116:Ity_I32 t117:Ity_I1 t118:Ity_I32 t119:Ity_I32 t120:Ity_I32 t121:Ity_I1 t122:Ity_I32 t123:Ity_I32 t124:Ity_I1 t125:Ity_I32 t126:Ity_I32 t127:Ity_I32 t128:Ity_I1 t129:Ity_I32 t130:Ity_I32 t131:Ity_I32 t132:Ity_I1 t133:Ity_I32 t134:Ity_I32 t135:Ity_I1 t136:Ity_I32 t137:Ity_I32 t138:Ity_I32 t139:Ity_I1 t140:Ity_I32 t141:Ity_I32 t142:Ity_I1 t143:Ity_I32 t144:Ity_I32 t145:Ity_I32 t146:Ity_I32 t147:Ity_I32 t148:Ity_I32 t149:Ity_I32 t150:Ity_I32 t151:Ity_I32 t152:Ity_I32 t153:Ity_I32 t154:Ity_I32 t155:Ity_I1 t156:Ity_I32 t157:Ity_I32 t158:Ity_I32 t159:Ity_I32 t160:Ity_I32 t161:Ity_I32 t162:Ity_I32 t163:Ity_I32 t164:Ity_I32 t165:Ity_I32 t166:Ity_I1 t167:Ity_I32 t168:Ity_I32 t169:Ity_I32 t170:Ity_I32 t171:Ity_I32 t172:Ity_I32 t173:Ity_I32 t174:Ity_I32 t175:Ity_I32 t176:Ity_I32 t177:Ity_I32 t178:Ity_I32 t179:Ity_I1 t180:Ity_I32 t181:Ity_I32 t182:Ity_I32 t183:Ity_I32 t184:Ity_I32 t185:Ity_I32 t186:Ity_I32 t187:Ity_I32 t188:Ity_I1 t189:Ity_I1 t190:Ity_I1 t191:Ity_I32 t192:Ity_I32 t193:Ity_I32 t194:Ity_I32 00 | ------ IMark(0x400530, 2, 1) ------ 01 | t71 = GET:I32(sp) 02 | t70 = Sub32(t71,0x00000008) 03 | PUT(sp) = t70 04 | t3 = And32(t70,0xfffffffc) 05 | t73 = GET:I32(r7) 06 | STle(t3) = t73 07 | t74 = Add32(t3,0x00000004) 08 | t75 = GET:I32(lr) 09 | STle(t74) = t75 10 | ------ IMark(0x400532, 2, 1) ------ 11 | t78 = Sub32(t70,0x000000a0) 12 | PUT(sp) = t78 13 | ------ IMark(0x400534, 2, 1) ------ 14 | PUT(r7) = t78 15 | PUT(pc) = 0x00400537 16 | ------ IMark(0x400536, 2, 1) ------ 17 | t86 = Add32(t78,0x00000004) 18 | t88 = GET:I32(r0) 19 | STle(t86) = t88 20 | PUT(pc) = 0x00400539 21 | ------ IMark(0x400538, 2, 1) ------ 22 | t92 = GET:I32(r1) 23 | STle(t78) = t92 24 | ------ IMark(0x40053a, 4, 1) ------ 25 | PUT(pc) = 0x0040053f 26 | ------ IMark(0x40053e, 2, 1) ------ 27 | t97 = Add32(t78,0x00000014) 28 | STle(t97) = 0x0000dead 29 | ------ IMark(0x400540, 4, 1) ------ 30 | PUT(pc) = 0x00400545 31 | ------ IMark(0x400544, 2, 1) ------ 32 | t104 = Add32(t78,0x00000008) 33 | STle(t104) = 0x0000beef 34 | ------ IMark(0x400546, 4, 1) ------ 35 | PUT(pc) = 0x0040054b 36 | ------ IMark(0x40054a, 2, 1) ------ 37 | t111 = Add32(t78,0x00000018) 38 | STle(t111) = 0x0000cafe 39 | ------ IMark(0x40054c, 4, 1) ------ 40 | PUT(pc) = 0x00400551 41 | ------ IMark(0x400550, 2, 1) ------ 42 | t118 = Add32(t78,0x0000000c) 43 | STle(t118) = 0x0000babe 44 | ------ IMark(0x400552, 4, 1) ------ 45 | t32 = t97 46 | PUT(pc) = 0x00400557 47 | ------ IMark(0x400556, 2, 1) ------ 48 | t125 = Add32(t78,0x00000010) 49 | STle(t125) = t32 50 | PUT(pc) = 0x00400559 51 | ------ IMark(0x400558, 2, 1) ------ 52 | t129 = t125 53 | t192 = LDle:I32(t129) 54 | ------ IMark(0x40055a, 4, 1) ------ 55 | t42 = Add32(t78,0x00000020) 56 | PUT(pc) = 0x0040055f 57 | ------ IMark(0x40055e, 2, 1) ------ 58 | t136 = Add32(t192,0x00000008) 59 | STle(t136) = t42 60 | ------ IMark(0x400560, 4, 1) ------ 61 | t49 = t42 62 | PUT(r3) = t49 63 | ------ IMark(0x400564, 2, 1) ------ 64 | t143 = GET:I32(cc_op) 65 | t144 = GET:I32(cc_dep1) 66 | t145 = GET:I32(cc_dep2) 67 | t146 = GET:I32(cc_ndep) 68 | t193 = armg_calculate_flag_v(t143,t144,t145,t146):Ity_I32 69 | t194 = armg_calculate_flag_c(t143,t144,t145,t146):Ity_I32 70 | PUT(r2) = 0x00000080 71 | ------ IMark(0x400566, 2, 1) ------ 72 | PUT(r1) = t49 73 | ------ IMark(0x400568, 2, 1) ------ 74 | PUT(r0) = 0x00000000 75 | PUT(cc_op) = 0x00000005 76 | PUT(cc_dep1) = 0x00000000 77 | PUT(cc_dep2) = t194 78 | PUT(cc_ndep) = t193 79 | ------ IMark(0x40056a, 4, 1) ------ 80 | PUT(itstate) = 0x00000000 81 | PUT(lr) = 0x0040056f NEXT: PUT(pc) = 0x00400404; Ijk_Call } Number of statements 82 Forward pass for End forward pass Backward pass for BWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] SSE just replaced not found in map | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD t49 = t42 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t49 [] SSE just replaced not found in map | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t136 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 12) | ri = load(rj) ---ri----> expr.replace(ri,load(rj) t129 ast replace what: withwhat variable t192 [, , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t129 = t125 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t129 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t125 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass (0, {'t49': []}, [], {}) (20, {'t49': [], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ]}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) Nothing to mege merging (20, {'t49': [], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ]}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ]} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } {'t49': [], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ]} [('t49', ), ('r3', ), ('t42', ), ('t136', ), ('t192', ), ('t78', ), ('t78', ), ('t129', ), ('t125', ), ('r7', ), ('r7', ), ('sp', ), ('sp', ), ('sp', ), ('sp', ), ('sp', ), ('sp', ), ('t70', ), ('t70', ), ('t71', ), ('t71', )] Forward pass for ('sp', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] Forward pass for ('sp', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] Forward pass for ('sp', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] Forward pass for ('sp', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 Forward pass for ('sp', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) Forward pass for ('t78', ) Replacing at 10 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) right do_sse_replace refused variable, match was found on wrong side Replacing at 11 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t118 = Add32(t78,0x0000000c) ------------ Forward pass for ('t78', ) Replacing at 10 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) right do_sse_replace refused variable, match was found on wrong side Replacing at 11 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t118 = Add32(t78,0x0000000c) ------------ | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 Forward pass for ('t42', ) Replacing at 54 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) right do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 60 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('t42', ) BWD t49 = t42 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t136 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 12) | ri = load(rj) ---ri----> expr.replace(ri,load(rj) t129 ast replace what: withwhat variable t192 [, , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t129 = t125 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t129 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('sp', ) BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Forward pass for ('sp', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] Forward pass for ('t136', ) Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side End forward pass Backward pass for ('t136', ) BWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t136 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 12) | ri = load(rj) ---ri----> expr.replace(ri,load(rj) t129 ast replace what: withwhat variable t192 [, , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t129 = t125 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t129 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t125 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 Forward pass for ('t129', ) End forward pass Backward pass for ('t129', ) BWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 12) | ri = load(rj) ---ri----> expr.replace(ri,load(rj) do_sse_replace refused variable, match was found on wrong side BWD t129 = t125 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t129 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t125 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ Forward pass for ('t125', ) End forward pass Backward pass for ('t125', ) BWD t129 = t125 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t125 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t125 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t125 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('t78', ) BWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Forward pass for ('r7', ) Replacing at 13 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Forward pass for ('t70', ) Replacing at 1 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) right do_sse_replace refused variable, match was found on wrong side Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('t78', ) BWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) Forward pass for ('r7', ) Replacing at 13 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Forward pass for ('t71', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 Forward pass for ('t49', ) Replacing at 60 FWD t49 = t42 ------------ [] | SSE kill - paper case 14 ri = rj --- ri --> expr.kill() SSE just replaced not found in map | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.KILLED End forward pass Backward pass for ('t49', ) End backward pass Forward pass for ('t71', ) Replacing at 0 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t71 - 0x8 - 0xa0 + 0x20 ['t71', '0x8'] ['t71 - 0x8 - 0xa0', 't71 - 0x8', 't71', '0x8', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t71 - 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) Forward pass for ('r3', ) Replacing at 61 | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('t70', ) Replacing at 1 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) right do_sse_replace refused variable, match was found on wrong side Replacing at 2 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 3 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xfffffffc'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 10 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t70 - 0xa0 + 0x20 ['t70', '0xa0'] ['t70 - 0xa0', 't70', '0xa0', '0x20'] ast replace what: withwhat variable Stripped guy: t70 - 0xa0 [, , , ] | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 11 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('sp', ) BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('sp', ) BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 13 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 16 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('sp', ) BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x4'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x4 [, ] | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 17 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t86) = t88 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 22 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 26 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x14'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x14 [, ] | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 27 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t97) = 0x0000dead ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 31 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x8'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x8 [, ] | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 32 | SSE: | which has boundaries | 32 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t104) = 0x0000beef ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 36 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x18'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x18 [, ] | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 37 | SSE: | which has boundaries | 37 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t111) = 0x0000cafe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 41 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0xc'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0xc [, ] | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 42 | SSE: | which has boundaries | 42 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t118) = 0x0000babe ------------ [, ] do_sse_replace encountered an SSE variable and an unrelated expression Replacing at 44 | SSE: | which has boundaries | 27 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] Forward pass for ('t192', ) End forward pass Backward pass for ('t192', ) BWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 12) | ri = load(rj) ---ri----> expr.replace(ri,load(rj) t129 ast replace what: withwhat variable t192 [, , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t129 = t125 ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t129 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 ast replace what: withwhat variable t125 [, , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t118 = Add32(t78,0x0000000c) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t111 = Add32(t78,0x00000018) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t104 = Add32(t78,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t97 = Add32(t78,0x00000014) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD STle(t78) = t92 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD t86 = Add32(t78,0x00000004) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Add32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 t32 = t97 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t97 [, ] | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 47 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t125 = Add32(t78,0x00000010) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x10'] ['t78', '0x20'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t78 + 0x10 [, ] | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 48 | SSE: | which has boundaries | 45 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t32 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 48 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t125) = t32 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 51 | SSE: | which has boundaries | 48 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, ] | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 51 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t129 = t125 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t125 [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 52 | SSE: | which has boundaries | 52 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, ] ('Full replace when children present',) do_sse_replace refused variable, probably compound expression Replacing at 52 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t192 = LDle:I32(t129) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t129) [, , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t129) [, , ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 54 | SSE: | which has boundaries | 11 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t42 = Add32(t78,0x00000020) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t78 + 0x20 ['t78', '0x20'] ['t78', '0x20'] ast replace what: withwhat variable Stripped guy: t78 + 0x20 [, ] | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 57 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t136 = Add32(t192,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t192 + 0xc ['t192', '0x8'] ['t192', '0xc'] No exact match, doing some algebra on integers ast replace what: withwhat variable Stripped guy: t192 + 0x8 [, ] | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | 12 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t78 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t42 [] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 58 | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('sp', ) BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('t70', ) BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 do_sse_replace refused variable, match was found on wrong side BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('sp', ) BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('t70', ) BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 do_sse_replace refused variable, match was found on wrong side BWD t78 = Sub32(t70,0x000000a0) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD t3 = And32(t70,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_And32 do_sse_replace refused variable, match was found on wrong side BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY BWD PUT(offset=60) = t70 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 ast replace what: withwhat variable t70 [, , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , ] | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass | SSE: | which has boundaries | SSEValidity.START_SCOPE_NOT_KNOWN_YET | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL End backward pass ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL End backward pass [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 58 | SSE: | store statement: 49 | Alive in SSETracking.BIDIRECT_SPECIAL FWD STle(t136) = t42 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) do_sse_replace refused variable, match was found on wrong side Replacing at 60 | SSE: | which has boundaries | 55 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t49 = t42 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t42 [] | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('t71', ) BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL End backward pass | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 61 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 71 | SSE: | which has boundaries | 61 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t49 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('t71', ) BWD t70 = Sub32(t71,0x00000008) ------------ [, , ] | Binop type statement - paper case 9) | ri = Binop() -----ri---> expr.replace(ri, binop) Iop_Sub32 do_sse_replace refused variable, match was found on wrong side BWD t71 = GET:I32(offset=60) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) ast replace what: withwhat variable t71 [, , , , , , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL End backward pass merging (1, {'t49': [, ], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ]}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ]} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege Nothing to mege Nothing to mege merging (2, {'t49': [, ], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [], 't192': [], 't78': [, ], 't129': [], 't125': [], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (14, {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': [], 'r1': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'t49': [, ], 'r3': [], 't42': [], 't136': [, ], 't192': [, ], 't78': [, ], 't129': [, , ], 't125': [, , ], 'r7': [, ], 'sp': [, , , , , ], 't70': [, ], 't71': [, ], 'r1': [], 't86': [], 't97': [], 't104': [], 't111': [], 't118': [], 't32': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege {'r3': [], 'r7': [, ], 'r1': []} {'r3': [], 'r7': [, ], 'r1': []} [('r3', ), ('r7', ), ('r7', ), ('r1', )] Forward pass for ('r3', ) Replacing at 61 | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [] | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r7', ) Replacing at 13 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Forward pass for ('r7', ) Replacing at 13 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD PUT(offset=36) = t78 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL BWD t73 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Forward pass for ('r1', ) Replacing at 71 | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=12) = t49 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r1 [] | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r1', ) End backward pass Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege {'r3': [], 'r7': [, ], 'r1': []} [('r3', ), ('r7', ), ('r7', ), ('r1', )] ########## ########### | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | store statement: 59 | Alive in SSETracking.BIDIRECT_SPECIAL ########## ########### | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Found 4 SSEs total in 2 passes ([('r3', ), ('r7', ), ('r7', ), ('r1', )], ['', '', '', ''], {: , : , : , : }) ([('r3', ), ('r7', ), ('r7', ), ('r1', )], ['', '', '', ''], {: , : , : , : }) Block analysis IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I1 t14:Ity_I32 t15:Ity_I32 t16:Ity_I1 t17:Ity_I1 t18:Ity_I1 t19:Ity_I1 t20:Ity_I32 00 | ------ IMark(0x40056e, 4, 1) ------ 01 | t2 = GET:I32(r7) 02 | t4 = Add32(t2,0x00000008) 03 | PUT(r3) = t4 04 | ------ IMark(0x400572, 2, 1) ------ 05 | PUT(r0) = t4 06 | ------ IMark(0x400574, 4, 1) ------ 07 | PUT(itstate) = 0x00000000 08 | PUT(lr) = 0x00400579 NEXT: PUT(pc) = 0x00400583; Ijk_Call } Analyzing block IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I1 t14:Ity_I32 t15:Ity_I32 t16:Ity_I1 t17:Ity_I1 t18:Ity_I1 t19:Ity_I1 t20:Ity_I32 00 | ------ IMark(0x40056e, 4, 1) ------ 01 | t2 = GET:I32(r7) 02 | t4 = Add32(t2,0x00000008) 03 | PUT(r3) = t4 04 | ------ IMark(0x400572, 2, 1) ------ 05 | PUT(r0) = t4 06 | ------ IMark(0x400574, 4, 1) ------ 07 | PUT(itstate) = 0x00000000 08 | PUT(lr) = 0x00400579 NEXT: PUT(pc) = 0x00400583; Ijk_Call } Number of statements 9 {'r3': [], 'r7': [, ], 'r1': []} [('r3', ), ('r7', ), ('r7', ), ('r1', )] Forward pass for ('r3', ) End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r1', ) End forward pass Backward pass for ('r1', ) End backward pass Forward pass for ('r7', ) Replacing at 0 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t4 = Add32(t2,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(load(t2 + 0x10) + 0x8) ['t2', '0x8'] ['load(t2 + 0x10) + 0x8', 'load(t2 + 0x10)', 't2 + 0x10', 't2', '0x10', '0x8'] 0x10 t2 + 0x10 ast replace what: withwhat variable Stripped guy: t2 + 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 4 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=8) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Forward pass for ('r7', ) Replacing at 0 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t4 = Add32(t2,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(load(t2 + 0x10) + 0x8) ['t2', '0x8'] ['load(t2 + 0x10) + 0x8', 'load(t2 + 0x10)', 't2 + 0x10', 't2', '0x10', '0x8'] 0x10 t2 + 0x10 ast replace what: withwhat variable Stripped guy: t2 + 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 4 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=8) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Nothing to mege Nothing to mege merging (4, {'r3': [, ], 'r7': [, ], 'r1': [], 't2': [], 't4': [], 'r0': []}, ['', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : }) merge result sses {'r3': [, ], 'r7': [, ], 'r1': [], 't2': [], 't4': [], 'r0': []} merge result sse_keys ['', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : } Nothing to mege merging (4, {'r3': [, ], 'r7': [, ], 'r1': [], 't2': [], 't4': [], 'r0': []}, ['', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : }) merge result sses {'r3': [, ], 'r7': [, ], 'r1': [], 't2': [], 't4': [], 'r0': []} merge result sse_keys ['', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : } Nothing to mege Nothing to mege Nothing to mege {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': []} {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] Forward pass for ('r1', ) End forward pass Backward pass for ('r1', ) End backward pass Forward pass for ('r3', ) Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r3', ) Replacing at 2 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r0', ) Replacing at 4 | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=8) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r0 [, , , , , ] | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r0', ) End backward pass Forward pass for ('r7', ) Replacing at 0 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t4 = Add32(t2,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(load(t2 + 0x10) + 0x8) ['t2', '0x8'] ['load(t2 + 0x10) + 0x8', 'load(t2 + 0x10)', 't2 + 0x10', 't2', '0x10', '0x8'] 0x10 t2 + 0x10 ast replace what: withwhat variable Stripped guy: t2 + 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 4 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=8) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Forward pass for ('r7', ) Replacing at 0 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 1 | SSE: | which has boundaries | 1 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t4 = Add32(t2,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(load(t2 + 0x10) + 0x8) ['t2', '0x8'] ['load(t2 + 0x10) + 0x8', 'load(t2 + 0x10)', 't2 + 0x10', 't2', '0x10', '0x8'] 0x10 t2 + 0x10 ast replace what: withwhat variable Stripped guy: t2 + 0x8 [, , , , , ] | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 2 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 4 | SSE: | which has boundaries | 2 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=8) = t4 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t4 [, , , , , ] | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) BWD t2 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 8 | ri = rj ---ri----> expr.replace(ri,rj) do_sse_replace refused variable, match was found on wrong side End backward pass Nothing to mege Nothing to mege Nothing to mege Nothing to mege merging (2, {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': [], 't2': [], 't4': []}, ['', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : }) merge result sses {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': [], 't2': [], 't4': []} merge result sse_keys ['', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : } Nothing to mege merging (2, {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': [], 't2': [], 't4': []}, ['', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : }) merge result sses {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': [], 't2': [], 't4': []} merge result sse_keys ['', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : } Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] ########## ########### | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL ########## ########### | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Found 6 SSEs total in 2 passes [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] Block analysis IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I1 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I1 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I32 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I32 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I32 t34:Ity_I32 t35:Ity_I32 t36:Ity_I1 t37:Ity_I32 t38:Ity_I32 t39:Ity_I32 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 t45:Ity_I32 t46:Ity_I32 t47:Ity_I1 t48:Ity_I32 t49:Ity_I32 t50:Ity_I32 t51:Ity_I1 t52:Ity_I32 t53:Ity_I32 t54:Ity_I32 t55:Ity_I32 t56:Ity_I32 t57:Ity_I32 t58:Ity_I32 t59:Ity_I32 t60:Ity_I32 t61:Ity_I32 t62:Ity_I1 t63:Ity_I1 t64:Ity_I1 t65:Ity_I32 t66:Ity_I32 t67:Ity_I32 t68:Ity_I32 t69:Ity_I32 00 | ------ IMark(0x400578, 2, 1) ------ 01 | PUT(r3) = 0x00000000 02 | ------ IMark(0x40057a, 2, 1) ------ 03 | PUT(r0) = 0x00000000 04 | ------ IMark(0x40057c, 2, 1) ------ 05 | t11 = GET:I32(r7) 06 | t50 = Add32(t11,0x000000a0) 07 | PUT(r7) = t50 08 | PUT(cc_op) = 0x00000001 09 | PUT(cc_dep1) = t11 10 | PUT(cc_dep2) = 0x000000a0 11 | PUT(cc_ndep) = 0x00000000 12 | ------ IMark(0x40057e, 2, 1) ------ 13 | PUT(sp) = t50 14 | PUT(pc) = 0x00400581 15 | ------ IMark(0x400580, 2, 1) ------ 16 | t21 = And32(t50,0xfffffffc) 17 | t22 = Add32(t50,0x00000008) 18 | t65 = LDle:I32(t21) 19 | PUT(r7) = t65 20 | t68 = Add32(t21,0x00000004) 21 | t67 = LDle:I32(t68) 22 | PUT(sp) = t22 23 | PUT(itstate) = 0x00000000 NEXT: PUT(pc) = t67; Ijk_Ret } Analyzing block IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I1 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I1 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I32 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I32 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I32 t34:Ity_I32 t35:Ity_I32 t36:Ity_I1 t37:Ity_I32 t38:Ity_I32 t39:Ity_I32 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 t45:Ity_I32 t46:Ity_I32 t47:Ity_I1 t48:Ity_I32 t49:Ity_I32 t50:Ity_I32 t51:Ity_I1 t52:Ity_I32 t53:Ity_I32 t54:Ity_I32 t55:Ity_I32 t56:Ity_I32 t57:Ity_I32 t58:Ity_I32 t59:Ity_I32 t60:Ity_I32 t61:Ity_I32 t62:Ity_I1 t63:Ity_I1 t64:Ity_I1 t65:Ity_I32 t66:Ity_I32 t67:Ity_I32 t68:Ity_I32 t69:Ity_I32 00 | ------ IMark(0x400578, 2, 1) ------ 01 | PUT(r3) = 0x00000000 02 | ------ IMark(0x40057a, 2, 1) ------ 03 | PUT(r0) = 0x00000000 04 | ------ IMark(0x40057c, 2, 1) ------ 05 | t11 = GET:I32(r7) 06 | t50 = Add32(t11,0x000000a0) 07 | PUT(r7) = t50 08 | PUT(cc_op) = 0x00000001 09 | PUT(cc_dep1) = t11 10 | PUT(cc_dep2) = 0x000000a0 11 | PUT(cc_ndep) = 0x00000000 12 | ------ IMark(0x40057e, 2, 1) ------ 13 | PUT(sp) = t50 14 | PUT(pc) = 0x00400581 15 | ------ IMark(0x400580, 2, 1) ------ 16 | t21 = And32(t50,0xfffffffc) 17 | t22 = Add32(t50,0x00000008) 18 | t65 = LDle:I32(t21) 19 | PUT(r7) = t65 20 | t68 = Add32(t21,0x00000004) 21 | t67 = LDle:I32(t68) 22 | PUT(sp) = t22 23 | PUT(itstate) = 0x00000000 NEXT: PUT(pc) = t67; Ijk_Ret } Number of statements 24 {'r3': [, ], 'r7': [, ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] Forward pass for ('r7', ) Replacing at 4 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t11 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 5 | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t50 = Add32(t11,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(load(t11 + 0x10) + 0x8) ['t11', '0xa0'] ['load(t11 + 0x10) + 0x8', 'load(t11 + 0x10)', 't11 + 0x10', 't11', '0x10', '0x8'] 0x10 t11 + 0x10 ast replace what: withwhat variable Stripped guy: t11 + 0xa0 [, , , , , ] | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 6 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=36) = t50 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 6 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t50 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t50 [] | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 8 | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=76) = t11 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t11 [, , , , , ] | SSE: | which has boundaries | 9 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 12 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t50 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t50 [] | SSE: | which has boundaries | 13 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 15 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t21 = And32(t50,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t50 ['t50', '0xfffffffc'] [] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 16 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t22 = Add32(t50,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t50 ['t50', '0x8'] [] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 18 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 21 | SSE: | which has boundaries | 13 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t22 ------------ [] | Simple variable assignment - paper case 1 Forward pass for ('r7', ) Replacing at 4 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD t11 = GET:I32(offset=36) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 5 | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t50 = Add32(t11,0x000000a0) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(load(t11 + 0x10) + 0x8) ['t11', '0xa0'] ['load(t11 + 0x10) + 0x8', 'load(t11 + 0x10)', 't11 + 0x10', 't11', '0x10', '0x8'] 0x10 t11 + 0x10 ast replace what: withwhat variable Stripped guy: t11 + 0xa0 [, , , , , ] | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 6 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.BIDIRECTIONAL FWD PUT(offset=36) = t50 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 6 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t50 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t50 [] | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 8 | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=76) = t11 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t11 [, , , , , ] | SSE: | which has boundaries | 9 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 12 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t50 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t50 [] | SSE: | which has boundaries | 13 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 15 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t21 = And32(t50,0xfffffffc) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t50 ['t50', '0xfffffffc'] [] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 16 | SSE: | which has boundaries | 6 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t22 = Add32(t50,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE t50 ['t50', '0x8'] [] ('Operands not found',) do_sse_replace refused variable, probably compound expression Replacing at 18 | SSE: | which has boundaries | 14 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 7 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 21 | SSE: | which has boundaries | 13 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=60) = t22 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) Forward pass for ('r1', ) End forward pass Backward pass for ('r1', ) End backward pass Forward pass for ('r0', ) End forward pass Backward pass for ('r0', ) End backward pass | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable sp [] | SSE: | which has boundaries | 22 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass ast replace what: withwhat variable sp [] | SSE: | which has boundaries | 22 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r3', ) End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r3', ) End forward pass Backward pass for ('r3', ) End backward pass Nothing to mege Nothing to mege Nothing to mege Nothing to mege merging (5, {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 't11': [], 't50': [], 'cc_dep1': [], 'sp': []}, ['', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : }) merge result sses {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 't11': [], 't50': [], 'cc_dep1': [], 'sp': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : } Nothing to mege merging (5, {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 't11': [], 't50': [], 'cc_dep1': [], 'sp': []}, ['', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : }) merge result sses {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 't11': [], 't50': [], 'cc_dep1': [], 'sp': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : } Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': []} {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] Forward pass for ('r3', ) End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r3', ) End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r0', ) End forward pass Backward pass for ('r0', ) End backward pass Forward pass for ('r7', ) Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r1', ) End forward pass Backward pass for ('r1', ) End backward pass Forward pass for ('r7', ) Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r7', ) Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t65 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] ########## ########### | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Found 7 SSEs total in 2 passes [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] Function vulnerable [4195715] Syscall: False SP difference: 0 Has return: True Returning: True Alignment: False Arguments: reg: [], stack: [] Blocks: [0x400583, 0x40059d] Calling convention: None Recursing interprocedurally [, , ] Function strcpy [4195344] Syscall: False SP difference: 0 Has return: False Returning: True Alignment: False Arguments: reg: [], stack: [] Blocks: [0x400410] Calling convention: None Checking sinks for Function strcpy [4195344] Syscall: False SP difference: 0 Has return: False Returning: True Alignment: False Arguments: reg: [], stack: [] Blocks: [0x400410] Calling convention: None Function strcpy [4195344] Syscall: False SP difference: 0 Has return: False Returning: True Alignment: False Arguments: reg: [], stack: [] Blocks: [0x400410] Calling convention: None False Out SSEs ([('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )], ['', '', '', '', '', '', ''], {: , : , : , : , : , : , : }) [ ! ] ALERT : Potential Buffer Overflow at 0x400410 [ ! ] Tainted operand to strcpy [ ! ] Alias chain : | SSE: | parent: | SSE: | parent: | SSE: | parent: | SSE: | parent: | SSE: | parent: | SSE: | parent: | SSE: | parent: | SSE: | parent: | SSE: | parent: | SSE: | parent: IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I1 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I32 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I1 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I1 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I32 t34:Ity_I32 t35:Ity_I32 t36:Ity_I32 t37:Ity_I1 t38:Ity_I1 t39:Ity_I1 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 00 | ------ IMark(0x40059c, 2, 1) ------ 01 | ------ IMark(0x40059e, 2, 1) ------ 02 | t4 = GET:I32(r3) 03 | PUT(r0) = t4 04 | ------ IMark(0x4005a0, 2, 1) ------ 05 | t7 = GET:I32(r7) 06 | t25 = Add32(t7,0x00000048) 07 | PUT(r7) = t25 08 | PUT(cc_op) = 0x00000001 09 | PUT(cc_dep1) = t7 10 | PUT(cc_dep2) = 0x00000048 11 | PUT(cc_ndep) = 0x00000000 12 | ------ IMark(0x4005a2, 2, 1) ------ 13 | PUT(sp) = t25 14 | PUT(pc) = 0x004005a5 15 | ------ IMark(0x4005a4, 2, 1) ------ 16 | t17 = And32(t25,0xfffffffc) 17 | t18 = Add32(t25,0x00000008) 18 | t40 = LDle:I32(t17) 19 | PUT(r7) = t40 20 | t43 = Add32(t17,0x00000004) 21 | t42 = LDle:I32(t43) 22 | PUT(sp) = t18 23 | PUT(itstate) = 0x00000000 NEXT: PUT(pc) = t42; Ijk_Ret } Analyzing block IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I1 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I32 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I1 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I1 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I32 t34:Ity_I32 t35:Ity_I32 t36:Ity_I32 t37:Ity_I1 t38:Ity_I1 t39:Ity_I1 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 00 | ------ IMark(0x40059c, 2, 1) ------ 01 | ------ IMark(0x40059e, 2, 1) ------ 02 | t4 = GET:I32(r3) 03 | PUT(r0) = t4 04 | ------ IMark(0x4005a0, 2, 1) ------ 05 | t7 = GET:I32(r7) 06 | t25 = Add32(t7,0x00000048) 07 | PUT(r7) = t25 08 | PUT(cc_op) = 0x00000001 09 | PUT(cc_dep1) = t7 10 | PUT(cc_dep2) = 0x00000048 11 | PUT(cc_ndep) = 0x00000000 12 | ------ IMark(0x4005a2, 2, 1) ------ 13 | PUT(sp) = t25 14 | PUT(pc) = 0x004005a5 15 | ------ IMark(0x4005a4, 2, 1) ------ 16 | t17 = And32(t25,0xfffffffc) 17 | t18 = Add32(t25,0x00000008) 18 | t40 = LDle:I32(t17) 19 | PUT(r7) = t40 20 | t43 = Add32(t17,0x00000004) 21 | t42 = LDle:I32(t43) 22 | PUT(sp) = t18 23 | PUT(itstate) = 0x00000000 NEXT: PUT(pc) = t42; Ijk_Ret } Number of statements 24 {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] Forward pass for ('r7', ) Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r0', ) End forward pass Backward pass for ('r0', ) End backward pass Forward pass for ('r7', ) Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r3', ) End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r3', ) End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r1', ) End forward pass Backward pass for ('r1', ) End backward pass Forward pass for ('r7', ) Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [, , , , , ] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=36) = t40 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r7 [] | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r7', ) End backward pass Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] ########## ########### | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 72 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Found 7 SSEs total in 1 passes ([('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )], ['', '', '', '', '', '', ''], {: , : , : , : , : , : , : }) IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I32 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I32 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I32 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I1 t34:Ity_I1 t35:Ity_I32 t36:Ity_I32 t37:Ity_I32 t38:Ity_I32 t39:Ity_I32 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 t45:Ity_I1 t46:Ity_I32 t47:Ity_I32 t48:Ity_I32 t49:Ity_I32 t50:Ity_I1 t51:Ity_I32 t52:Ity_I32 t53:Ity_I32 t54:Ity_I1 t55:Ity_I32 t56:Ity_I32 t57:Ity_I32 t58:Ity_I1 t59:Ity_I32 t60:Ity_I32 t61:Ity_I32 t62:Ity_I1 t63:Ity_I32 t64:Ity_I32 t65:Ity_I32 t66:Ity_I1 t67:Ity_I32 t68:Ity_I32 t69:Ity_I1 t70:Ity_I32 t71:Ity_I32 t72:Ity_I1 t73:Ity_I32 t74:Ity_I32 t75:Ity_I1 t76:Ity_I1 t77:Ity_I1 t78:Ity_I1 t79:Ity_I32 t80:Ity_I32 t81:Ity_I32 t82:Ity_I32 00 | ------ IMark(0x400582, 2, 1) ------ 01 | t36 = GET:I32(sp) 02 | t35 = Sub32(t36,0x00000008) 03 | PUT(sp) = t35 04 | t3 = And32(t35,0xfffffffc) 05 | t38 = GET:I32(r7) 06 | STle(t3) = t38 07 | t39 = Add32(t3,0x00000004) 08 | t40 = GET:I32(lr) 09 | STle(t39) = t40 10 | ------ IMark(0x400584, 2, 1) ------ 11 | t43 = Sub32(t35,0x00000048) 12 | PUT(sp) = t43 13 | ------ IMark(0x400586, 2, 1) ------ 14 | PUT(r7) = t43 15 | PUT(pc) = 0x00400589 16 | ------ IMark(0x400588, 2, 1) ------ 17 | t51 = Add32(t43,0x00000004) 18 | t53 = GET:I32(r0) 19 | STle(t51) = t53 20 | PUT(pc) = 0x0040058b 21 | ------ IMark(0x40058a, 2, 1) ------ 22 | t55 = t51 23 | t80 = LDle:I32(t55) 24 | PUT(pc) = 0x0040058d 25 | ------ IMark(0x40058c, 2, 1) ------ 26 | t59 = Add32(t80,0x00000008) 27 | t81 = LDle:I32(t59) 28 | PUT(pc) = 0x0040058f 29 | ------ IMark(0x40058e, 2, 1) ------ 30 | t63 = Add32(t81,0x00000008) 31 | t82 = LDle:I32(t63) 32 | PUT(r2) = t82 33 | ------ IMark(0x400590, 4, 1) ------ 34 | t23 = Add32(t43,0x00000008) 35 | PUT(r3) = t23 36 | ------ IMark(0x400594, 2, 1) ------ 37 | PUT(r1) = t82 38 | ------ IMark(0x400596, 2, 1) ------ 39 | PUT(r0) = t23 40 | ------ IMark(0x400598, 4, 1) ------ 41 | PUT(itstate) = 0x00000000 42 | PUT(lr) = 0x0040059d NEXT: PUT(pc) = 0x00400410; Ijk_Call } Analyzing block IRSB { t0:Ity_I32 t1:Ity_I32 t2:Ity_I32 t3:Ity_I32 t4:Ity_I32 t5:Ity_I32 t6:Ity_I32 t7:Ity_I32 t8:Ity_I32 t9:Ity_I32 t10:Ity_I32 t11:Ity_I32 t12:Ity_I32 t13:Ity_I32 t14:Ity_I32 t15:Ity_I32 t16:Ity_I32 t17:Ity_I32 t18:Ity_I32 t19:Ity_I32 t20:Ity_I32 t21:Ity_I32 t22:Ity_I32 t23:Ity_I32 t24:Ity_I32 t25:Ity_I32 t26:Ity_I32 t27:Ity_I32 t28:Ity_I32 t29:Ity_I32 t30:Ity_I32 t31:Ity_I32 t32:Ity_I32 t33:Ity_I1 t34:Ity_I1 t35:Ity_I32 t36:Ity_I32 t37:Ity_I32 t38:Ity_I32 t39:Ity_I32 t40:Ity_I32 t41:Ity_I32 t42:Ity_I32 t43:Ity_I32 t44:Ity_I32 t45:Ity_I1 t46:Ity_I32 t47:Ity_I32 t48:Ity_I32 t49:Ity_I32 t50:Ity_I1 t51:Ity_I32 t52:Ity_I32 t53:Ity_I32 t54:Ity_I1 t55:Ity_I32 t56:Ity_I32 t57:Ity_I32 t58:Ity_I1 t59:Ity_I32 t60:Ity_I32 t61:Ity_I32 t62:Ity_I1 t63:Ity_I32 t64:Ity_I32 t65:Ity_I32 t66:Ity_I1 t67:Ity_I32 t68:Ity_I32 t69:Ity_I1 t70:Ity_I32 t71:Ity_I32 t72:Ity_I1 t73:Ity_I32 t74:Ity_I32 t75:Ity_I1 t76:Ity_I1 t77:Ity_I1 t78:Ity_I1 t79:Ity_I32 t80:Ity_I32 t81:Ity_I32 t82:Ity_I32 00 | ------ IMark(0x400582, 2, 1) ------ 01 | t36 = GET:I32(sp) 02 | t35 = Sub32(t36,0x00000008) 03 | PUT(sp) = t35 04 | t3 = And32(t35,0xfffffffc) 05 | t38 = GET:I32(r7) 06 | STle(t3) = t38 07 | t39 = Add32(t3,0x00000004) 08 | t40 = GET:I32(lr) 09 | STle(t39) = t40 10 | ------ IMark(0x400584, 2, 1) ------ 11 | t43 = Sub32(t35,0x00000048) 12 | PUT(sp) = t43 13 | ------ IMark(0x400586, 2, 1) ------ 14 | PUT(r7) = t43 15 | PUT(pc) = 0x00400589 16 | ------ IMark(0x400588, 2, 1) ------ 17 | t51 = Add32(t43,0x00000004) 18 | t53 = GET:I32(r0) 19 | STle(t51) = t53 20 | PUT(pc) = 0x0040058b 21 | ------ IMark(0x40058a, 2, 1) ------ 22 | t55 = t51 23 | t80 = LDle:I32(t55) 24 | PUT(pc) = 0x0040058d 25 | ------ IMark(0x40058c, 2, 1) ------ 26 | t59 = Add32(t80,0x00000008) 27 | t81 = LDle:I32(t59) 28 | PUT(pc) = 0x0040058f 29 | ------ IMark(0x40058e, 2, 1) ------ 30 | t63 = Add32(t81,0x00000008) 31 | t82 = LDle:I32(t63) 32 | PUT(r2) = t82 33 | ------ IMark(0x400590, 4, 1) ------ 34 | t23 = Add32(t43,0x00000008) 35 | PUT(r3) = t23 36 | ------ IMark(0x400594, 2, 1) ------ 37 | PUT(r1) = t82 38 | ------ IMark(0x400596, 2, 1) ------ 39 | PUT(r0) = t23 40 | ------ IMark(0x400598, 4, 1) ------ 41 | PUT(itstate) = 0x00000000 42 | PUT(lr) = 0x0040059d NEXT: PUT(pc) = 0x00400410; Ijk_Call } Number of statements 43 {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', )] Forward pass for ('r0', ) Replacing at 17 | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD t53 = GET:I32(offset=8) ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r0 [, , , , , ] | SSE: | which has boundaries | 18 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY Replacing at 18 | SSE: | which has boundaries | 18 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD STle(t51) = t53 ------------ [, ] | Store type statement - paper case 6) | Store(ri) = rj -----rj---> expr.replace(rj,store(ri) ast replace what: withwhat variable t53 [, , , , , ] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 21 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t55 = t51 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t51 [, , , , , , ] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 22 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t80 = LDle:I32(t55) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t55) [, , , , , , ] | Load type statement - paper case 7) | ri = load(rj) ----store(rj)----> expr.replace(store(rj),ri) ast replace what: withwhat variable Stripped guy: store(t55) [, , , , , , ] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 25 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t59 = Add32(t80,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(load(t80 + 0x8) + 0x8) ['t80', '0x8'] ['load(t80 + 0x8) + 0x8', 'load(t80 + 0x8)', 't80 + 0x8', 't80', '0x8', '0x8'] 0x8 t80 + 0x8 ast replace what: withwhat variable Stripped guy: t80 + 0x8 [, , , , , ] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 26 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t81 = LDle:I32(t59) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t59) [, , , ] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 29 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t63 = Add32(t81,0x00000008) ------------ [, , ] | Binop type statement - paper case 2) | ri = Binop() -----binop---> expr.replace(binop, ri) Stripped SSE store(t81 + 0x8) ['t81', '0x8'] ['t81 + 0x8', 't81', '0x8'] 0x8 t81 + 0x8 ast replace what: withwhat variable Stripped guy: t81 + 0x8 [, , ] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 30 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD t82 = LDle:I32(t63) ------------ [, ] | Load type statement - paper case 5) | ri = load(rj) ---load(rj)----> expr.replace(load(rj),ri) ast replace what: withwhat variable Stripped guy: load(t63) [] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 31 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD PUT(offset=16) = t82 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t82 [] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 36 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD Forward pass for ('r1', ) End forward pass Backward pass for ('r1', ) End backward pass Forward pass for ('r3', ) Replacing at 34 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t23 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [, , , , , ] | SSE: | which has boundaries | 35 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r7', ) End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r3', ) Replacing at 34 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t23 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [, , , , , ] | SSE: | which has boundaries | 35 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r7', ) End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r7', ) End forward pass Backward pass for ('r7', ) End backward pass PUT(offset=12) = t82 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable t82 [] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Replacing at 38 | SSE: | which has boundaries | 5 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=8) = t23 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r0 [, , , , , ] | SSE: | which has boundaries | 39 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r0', ) End backward pass Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege merging (9, {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 't53': [], 't51': [], 't55': [], 't80': [], 't59': [], 't81': [], 't63': [], 't82': [], 'r2': []}, ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }) merge result sses {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 't53': [], 't51': [], 't55': [], 't80': [], 't59': [], 't81': [], 't63': [], 't82': [], 'r2': []} merge result sse_keys ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] merge result sse_map {: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : } Nothing to mege {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 'r2': []} {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 'r2': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', ), ('r2', )] Forward pass for ('r0', ) Replacing at 38 | SSE: | which has boundaries | 39 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=8) = t23 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r0 [, , , , , ] | SSE: | which has boundaries | 39 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r0', ) End backward pass Forward pass for ('r7', ) End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r7', ) End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r3', ) Replacing at 34 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t23 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [, , , , , ] | SSE: | which has boundaries | 35 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r3', ) Replacing at 34 | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY FWD PUT(offset=20) = t23 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r3 [, , , , , ] | SSE: | which has boundaries | 35 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY End forward pass Backward pass for ('r3', ) End backward pass Forward pass for ('r7', ) End forward pass Backward pass for ('r7', ) End backward pass Forward pass for ('r2', ) Replacing at 31 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD PUT(offset=16) = t82 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r2 [] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL End forward pass Backward pass for ('r2', ) BWD PUT(offset=16) = t82 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r2 [] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL End backward pass Forward pass for ('r1', ) Replacing at 36 | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL FWD PUT(offset=12) = t82 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r1 [] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL End forward pass Backward pass for ('r1', ) BWD PUT(offset=12) = t82 ------------ [] | Simple variable assignment - paper case 1 | ri = rj ---rj----> expr.replace(rj, ri) ast replace what: withwhat variable r1 [] | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL End backward pass Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege Nothing to mege {'r3': [, ], 'r7': [, , ], 'r1': [], 'r0': [], 'r2': []} [('r3', ), ('r3', ), ('r7', ), ('r7', ), ('r7', ), ('r1', ), ('r0', ), ('r2', )] ########## ########### | SSE: | which has boundaries | 62 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 3 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | which has boundaries | 19 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL ########## ########### | SSE: | which has boundaries | 39 | and SSEValidity.END_SCOPE_NOT_KNOWN_YET. | Alive in SSETracking.FORWARD_ONLY ########## ########### | SSE: | store statement: 19 | Alive in SSETracking.BIDIRECT_SPECIAL Found 8 SSEs total in 2 passes Function read [4195332] Syscall: False SP difference: 0 Has return: False Returning: True Alignment: False Arguments: reg: [], stack: [] Blocks: [0x400404] Calling convention: None Function read [4195332] Syscall: False SP difference: 0 Has return: False Returning: True Alignment: False Arguments: reg: [], stack: [] Blocks: [0x400404] Calling convention: None False 0.3156704920000002