diff --git a/deobfuscated_binaries/tigress-2-challenge-0.deobfuscated b/deobfuscated_binaries/tigress-2-challenge-0.deobfuscated new file mode 100755 index 0000000..458a92b Binary files /dev/null and b/deobfuscated_binaries/tigress-2-challenge-0.deobfuscated differ diff --git a/llvm_expressions/tigress-2-challenge-0.O2.ll b/llvm_expressions/tigress-2-challenge-0.O2.ll new file mode 100644 index 0000000..912d25d --- /dev/null +++ b/llvm_expressions/tigress-2-challenge-0.O2.ll @@ -0,0 +1,124 @@ +; ModuleID = 'llvm_expressions/tigress-2-challenge-0.ll' +source_filename = "llvm_expressions/tigress-2-challenge-0.ll" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-linux-gnu" + +; Function Attrs: norecurse nounwind readnone +define i64 @SECRET(i64 %SymVar_0) local_unnamed_addr #0 { +.3: + %.6 = mul i64 %SymVar_0, 8349898219520 + %0 = udiv i64 %.6, 7 + %.37 = or i64 %.6, %SymVar_0 + %.38 = add i64 %.37, %SymVar_0 + %.41 = mul i64 %SymVar_0, 1068786972098560 + %.42 = add i64 %.37, %.41 + %.44 = add i64 %SymVar_0, 327625093 + %.46 = mul i64 %.42, %.44 + %.48 = add i64 %.46, %.38 + %.49 = sub i64 %0, %.48 + %.55 = or i64 %.49, %.48 + %.57 = icmp sgt i64 %.55, -1 + %.59 = icmp ne i64 %.49, 0 + %.85.demorgan = and i1 %.59, %.57 + br i1 %.85.demorgan, label %.3.endif.endif.endif.endif.else, label %.3.endif.endif.endif.endif.if + +.3.endif.endif.endif.endif.if: ; preds = %.3 + %.132 = lshr i64 %.46, 1 + %.134 = shl i64 %.132, 2 + %.137 = and i64 %.134, 28 + %.138 = shl i64 %.46, 2 + %.141 = and i64 %.138, 28 + %.142 = or i64 %.141, %.6 + %.143 = shl i64 %.46, 4 + %.146 = and i64 %.143, 16 + %.147 = or i64 %.142, %.146 + %.148 = or i64 %.147, %.137 + %.149 = shl i64 %.148, 2 + %.152 = and i64 %.149, 16 + %.153 = and i64 %.46, 14 + %.154 = or i64 %.153, 1 + %.156 = sub nsw i64 0, %.154 + %.160 = and i64 %.156, 63 + %.161 = shl i64 %.6, %.160 + %.169 = lshr i64 %.6, %.154 + %.170 = or i64 %.161, %.169 + %.171 = or i64 %.152, %.170 + %.172 = add i64 %.171, %.148 + %.173 = and i64 %.132, 14 + %.174 = or i64 %.173, 1 + %.176 = sub nsw i64 0, %.174 + %.180 = and i64 %.176, 63 + %.181 = shl i64 %.170, %.180 + %.189 = lshr i64 %.170, %.174 + %.190 = or i64 %.181, %.189 + %.222 = lshr i64 %.46, 51 + %.230 = and i64 %.222, 14 + %.231 = or i64 %.230, 1 + %.233 = sub nsw i64 0, %.231 + %.237 = and i64 %.233, 63 + %.238 = shl i64 %.190, %.237 + %.256 = lshr i64 %.190, %.231 + %.257 = or i64 %.238, %.256 + %.260 = lshr i64 %.257, 1 + %.261 = and i64 %.260, 14 + %.262 = or i64 %.261, 1 + %.264 = sub nsw i64 0, %.262 + %.268 = and i64 %.264, 63 + %.269 = lshr i64 %.172, %.268 + %.319 = shl i64 %.172, %.262 + br label %.3.endif.endif.endif.endif.endif + +.3.endif.endif.endif.endif.else: ; preds = %.3 + %.328 = shl i64 %.38, 2 + %.331 = and i64 %.328, 28 + %.341 = shl i64 %.46, 2 + %.344 = and i64 %.341, 28 + %.345 = shl i64 %.38, 1 + %.346 = or i64 %.344, %.345 + %.347 = shl i64 %.346, 2 + %.350 = and i64 %.347, 24 + %.351 = or i64 %.346, %.331 + %.352 = or i64 %.351, %.350 + %.353 = shl i64 %.351, 2 + %.356 = and i64 %.353, 24 + %.357 = and i64 %.46, 14 + %.358 = or i64 %.357, 1 + %.360 = sub nsw i64 0, %.358 + %.364 = and i64 %.360, 63 + %.365 = shl i64 %.345, %.364 + %.373 = lshr i64 %.345, %.358 + %.374 = or i64 %.365, %.373 + %.375 = or i64 %.356, %.374 + %.376 = add i64 %.375, %.352 + %.377 = and i64 %.38, 14 + %.378 = or i64 %.377, 1 + %.380 = sub nsw i64 0, %.378 + %.384 = and i64 %.380, 63 + %.385 = shl i64 %.374, %.384 + %.393 = lshr i64 %.374, %.378 + %.394 = or i64 %.385, %.393 + %.426 = lshr i64 %.38, 50 + %.434 = and i64 %.426, 14 + %.435 = or i64 %.434, 1 + %.437 = sub nsw i64 0, %.435 + %.441 = and i64 %.437, 63 + %.442 = shl i64 %.394, %.441 + %.460 = lshr i64 %.394, %.435 + %.461 = or i64 %.442, %.460 + %.464 = lshr i64 %.461, 1 + %.465 = and i64 %.464, 14 + %.466 = or i64 %.465, 1 + %.468 = sub nsw i64 0, %.466 + %.472 = and i64 %.468, 63 + %.473 = lshr i64 %.376, %.472 + %.523 = shl i64 %.376, %.466 + br label %.3.endif.endif.endif.endif.endif + +.3.endif.endif.endif.endif.endif: ; preds = %.3.endif.endif.endif.endif.else, %.3.endif.endif.endif.endif.if + %.523.sink = phi i64 [ %.523, %.3.endif.endif.endif.endif.else ], [ %.319, %.3.endif.endif.endif.endif.if ] + %.473.sink = phi i64 [ %.473, %.3.endif.endif.endif.endif.else ], [ %.269, %.3.endif.endif.endif.endif.if ] + %.524 = or i64 %.473.sink, %.523.sink + ret i64 %.524 +} + +attributes #0 = { norecurse nounwind readnone } diff --git a/llvm_expressions/tigress-2-challenge-0.ll b/llvm_expressions/tigress-2-challenge-0.ll new file mode 100644 index 0000000..8fc0ffb --- /dev/null +++ b/llvm_expressions/tigress-2-challenge-0.ll @@ -0,0 +1,547 @@ +; ModuleID = "" +target triple = "x86_64-pc-linux-gnu" +target datalayout = "" + +define i64 @"SECRET"(i64 %"SymVar_0") nounwind +{ +.3: + %".4" = sext i64 8349898219520 to i128 + %".5" = sext i64 %"SymVar_0" to i128 + %".6" = mul i128 %".4", %".5" + %".7" = trunc i128 %".6" to i64 + %".8" = zext i64 %".7" to i128 + %".9" = zext i64 0 to i128 + %".10" = shl i128 %".9", 64 + %".11" = or i128 %".8", %".10" + %".12" = zext i8 7 to i64 + %".13" = zext i8 0 to i64 + %".14" = shl i64 %".13", 8 + %".15" = or i64 %".12", %".14" + %".16" = zext i8 0 to i64 + %".17" = shl i64 %".16", 16 + %".18" = or i64 %".15", %".17" + %".19" = zext i8 0 to i64 + %".20" = shl i64 %".19", 24 + %".21" = or i64 %".18", %".20" + %".22" = zext i8 0 to i64 + %".23" = shl i64 %".22", 32 + %".24" = or i64 %".21", %".23" + %".25" = zext i8 0 to i64 + %".26" = shl i64 %".25", 40 + %".27" = or i64 %".24", %".26" + %".28" = zext i8 0 to i64 + %".29" = shl i64 %".28", 48 + %".30" = or i64 %".27", %".29" + %".31" = zext i8 0 to i64 + %".32" = shl i64 %".31", 56 + %".33" = or i64 %".30", %".32" + %".34" = zext i64 %".33" to i128 + %".35" = udiv i128 %".11", %".34" + %".36" = trunc i128 %".35" to i64 + %".37" = or i64 %".7", %"SymVar_0" + %".38" = add i64 %".37", %"SymVar_0" + %".39" = zext i8 7 to i64 + %".40" = and i64 %".39", 63 + %".41" = shl i64 %".7", %".40" + %".42" = add i64 %".41", %".37" + %".43" = sext i64 %".42" to i128 + %".44" = add i64 327625093, %"SymVar_0" + %".45" = sext i64 %".44" to i128 + %".46" = mul i128 %".43", %".45" + %".47" = trunc i128 %".46" to i64 + %".48" = add i64 %".38", %".47" + %".49" = sub i64 %".36", %".48" + %".50" = xor i64 %".48", %".49" + %".51" = xor i64 %".36", %".50" + %".52" = xor i64 %".36", %".49" + %".53" = xor i64 %".36", %".48" + %".54" = and i64 %".52", %".53" + %".55" = xor i64 %".51", %".54" + %".56" = lshr i64 %".55", 63 + %".57" = trunc i64 %".56" to i1 + %".58" = xor i1 %".57", -1 + %".59" = icmp eq i64 %".49", 0 + br i1 %".59", label %".3.if", label %".3.else" +.3.if: + br label %".3.endif" +.3.else: + br label %".3.endif" +.3.endif: + %".63" = phi i1 [1, %".3.if"], [0, %".3.else"] + %".64" = xor i1 %".63", -1 + %".65" = and i1 %".58", %".64" + %".66" = icmp eq i1 %".65", 1 + br i1 %".66", label %".3.endif.if", label %".3.endif.else" +.3.endif.if: + br label %".3.endif.endif" +.3.endif.else: + br label %".3.endif.endif" +.3.endif.endif: + %".70" = phi i8 [1, %".3.endif.if"], [0, %".3.endif.else"] + %".71" = zext i8 %".70" to i64 + %".72" = lshr i64 %".48", 8 + %".73" = trunc i64 %".72" to i56 + %".74" = zext i56 %".73" to i64 + %".75" = shl i64 %".74", 8 + %".76" = or i64 %".71", %".75" + %".77" = trunc i64 %".76" to i8 + %".78" = zext i8 %".77" to i32 + %".79" = zext i32 %".78" to i64 + %".80" = trunc i64 %".79" to i32 + %".81" = zext i32 %".80" to i64 + %".82" = trunc i64 %".81" to i32 + %".83" = trunc i64 %".81" to i32 + %".84" = and i32 %".82", %".83" + %".85" = icmp eq i32 %".84", 0 + br i1 %".85", label %".3.endif.endif.if", label %".3.endif.endif.else" +.3.endif.endif.if: + br label %".3.endif.endif.endif" +.3.endif.endif.else: + br label %".3.endif.endif.endif" +.3.endif.endif.endif: + %".89" = phi i1 [1, %".3.endif.endif.if"], [0, %".3.endif.endif.else"] + %".90" = icmp eq i1 %".89", 1 + br i1 %".90", label %".3.endif.endif.endif.if", label %".3.endif.endif.endif.else" +.3.endif.endif.endif.if: + br label %".3.endif.endif.endif.endif" +.3.endif.endif.endif.else: + br label %".3.endif.endif.endif.endif" +.3.endif.endif.endif.endif: + %".94" = phi i1 [1, %".3.endif.endif.endif.if"], [0, %".3.endif.endif.endif.else"] + br i1 %".94", label %".3.endif.endif.endif.endif.if", label %".3.endif.endif.endif.endif.else" +.3.endif.endif.endif.endif.if: + %".96" = sext i64 8349898219520 to i128 + %".97" = sext i64 %"SymVar_0" to i128 + %".98" = mul i128 %".96", %".97" + %".99" = trunc i128 %".98" to i64 + %".100" = zext i8 7 to i64 + %".101" = and i64 %".100", 63 + %".102" = shl i64 %".99", %".101" + %".103" = or i64 %".99", %"SymVar_0" + %".104" = add i64 %".102", %".103" + %".105" = sext i64 %".104" to i128 + %".106" = add i64 327625093, %"SymVar_0" + %".107" = sext i64 %".106" to i128 + %".108" = mul i128 %".105", %".107" + %".109" = trunc i128 %".108" to i64 + %".110" = zext i8 3 to i64 + %".111" = and i64 %".110", 63 + %".112" = lshr i64 %".99", %".111" + %".113" = and i64 15, %".112" + %".114" = or i64 1, %".113" + %".115" = sub i64 64, %".114" + %".116" = trunc i64 %".115" to i32 + %".117" = zext i32 %".116" to i64 + %".118" = trunc i64 %".117" to i8 + %".119" = zext i8 %".118" to i64 + %".120" = and i64 %".119", 63 + %".121" = shl i64 %".109", %".120" + %".122" = zext i8 3 to i64 + %".123" = and i64 %".122", 63 + %".124" = lshr i64 %".99", %".123" + %".125" = and i64 15, %".124" + %".126" = or i64 1, %".125" + %".127" = trunc i64 %".126" to i32 + %".128" = zext i32 %".127" to i64 + %".129" = trunc i64 %".128" to i8 + %".130" = zext i8 %".129" to i64 + %".131" = and i64 %".130", 63 + %".132" = lshr i64 %".109", %".131" + %".133" = or i64 %".121", %".132" + %".134" = and i64 7, %".133" + %".135" = zext i8 2 to i64 + %".136" = and i64 %".135", 63 + %".137" = shl i64 %".134", %".136" + %".138" = and i64 7, %".109" + %".139" = zext i8 2 to i64 + %".140" = and i64 %".139", 63 + %".141" = shl i64 %".138", %".140" + %".142" = or i64 %".141", %".99" + %".143" = and i64 7, %".142" + %".144" = zext i8 2 to i64 + %".145" = and i64 %".144", 63 + %".146" = shl i64 %".143", %".145" + %".147" = or i64 %".146", %".142" + %".148" = or i64 %".137", %".147" + %".149" = and i64 7, %".148" + %".150" = zext i8 2 to i64 + %".151" = and i64 %".150", 63 + %".152" = shl i64 %".149", %".151" + %".153" = and i64 15, %".109" + %".154" = or i64 1, %".153" + %".155" = sub i64 64, %".154" + %".156" = trunc i64 %".155" to i32 + %".157" = zext i32 %".156" to i64 + %".158" = trunc i64 %".157" to i8 + %".159" = zext i8 %".158" to i64 + %".160" = and i64 %".159", 63 + %".161" = shl i64 %".99", %".160" + %".162" = and i64 15, %".109" + %".163" = or i64 1, %".162" + %".164" = trunc i64 %".163" to i32 + %".165" = zext i32 %".164" to i64 + %".166" = trunc i64 %".165" to i8 + %".167" = zext i8 %".166" to i64 + %".168" = and i64 %".167", 63 + %".169" = lshr i64 %".99", %".168" + %".170" = or i64 %".161", %".169" + %".171" = or i64 %".152", %".170" + %".172" = add i64 %".171", %".148" + %".173" = and i64 15, %".133" + %".174" = or i64 1, %".173" + %".175" = sub i64 64, %".174" + %".176" = trunc i64 %".175" to i32 + %".177" = zext i32 %".176" to i64 + %".178" = trunc i64 %".177" to i8 + %".179" = zext i8 %".178" to i64 + %".180" = and i64 %".179", 63 + %".181" = shl i64 %".170", %".180" + %".182" = and i64 15, %".133" + %".183" = or i64 1, %".182" + %".184" = trunc i64 %".183" to i32 + %".185" = zext i32 %".184" to i64 + %".186" = trunc i64 %".185" to i8 + %".187" = zext i8 %".186" to i64 + %".188" = and i64 %".187", 63 + %".189" = lshr i64 %".170", %".188" + %".190" = or i64 %".181", %".189" + %".191" = zext i8 3 to i64 + %".192" = and i64 %".191", 63 + %".193" = lshr i64 %".148", %".192" + %".194" = and i64 15, %".193" + %".195" = or i64 1, %".194" + %".196" = sub i64 64, %".195" + %".197" = trunc i64 %".196" to i32 + %".198" = zext i32 %".197" to i64 + %".199" = trunc i64 %".198" to i8 + %".200" = zext i8 %".199" to i64 + %".201" = and i64 %".200", 63 + %".202" = shl i64 %".133", %".201" + %".203" = zext i8 3 to i64 + %".204" = and i64 %".203", 63 + %".205" = lshr i64 %".148", %".204" + %".206" = and i64 15, %".205" + %".207" = or i64 1, %".206" + %".208" = trunc i64 %".207" to i32 + %".209" = zext i32 %".208" to i64 + %".210" = trunc i64 %".209" to i8 + %".211" = zext i8 %".210" to i64 + %".212" = and i64 %".211", 63 + %".213" = lshr i64 %".133", %".212" + %".214" = or i64 %".202", %".213" + %".215" = and i64 63, %".214" + %".216" = zext i8 4 to i64 + %".217" = and i64 %".216", 63 + %".218" = shl i64 %".215", %".217" + %".219" = or i64 %".218", %".133" + %".220" = zext i8 49 to i64 + %".221" = and i64 %".220", 63 + %".222" = lshr i64 %".219", %".221" + %".223" = zext i8 15 to i64 + %".224" = and i64 %".223", 63 + %".225" = shl i64 %".219", %".224" + %".226" = or i64 %".222", %".225" + %".227" = zext i8 1 to i64 + %".228" = and i64 %".227", 63 + %".229" = lshr i64 %".226", %".228" + %".230" = and i64 15, %".229" + %".231" = or i64 1, %".230" + %".232" = sub i64 64, %".231" + %".233" = trunc i64 %".232" to i32 + %".234" = zext i32 %".233" to i64 + %".235" = trunc i64 %".234" to i8 + %".236" = zext i8 %".235" to i64 + %".237" = and i64 %".236", 63 + %".238" = shl i64 %".190", %".237" + %".239" = zext i8 49 to i64 + %".240" = and i64 %".239", 63 + %".241" = lshr i64 %".219", %".240" + %".242" = zext i8 15 to i64 + %".243" = and i64 %".242", 63 + %".244" = shl i64 %".219", %".243" + %".245" = or i64 %".241", %".244" + %".246" = zext i8 1 to i64 + %".247" = and i64 %".246", 63 + %".248" = lshr i64 %".245", %".247" + %".249" = and i64 15, %".248" + %".250" = or i64 1, %".249" + %".251" = trunc i64 %".250" to i32 + %".252" = zext i32 %".251" to i64 + %".253" = trunc i64 %".252" to i8 + %".254" = zext i8 %".253" to i64 + %".255" = and i64 %".254", 63 + %".256" = lshr i64 %".190", %".255" + %".257" = or i64 %".238", %".256" + %".258" = zext i8 1 to i64 + %".259" = and i64 %".258", 63 + %".260" = lshr i64 %".257", %".259" + %".261" = and i64 15, %".260" + %".262" = or i64 1, %".261" + %".263" = sub i64 64, %".262" + %".264" = trunc i64 %".263" to i32 + %".265" = zext i32 %".264" to i64 + %".266" = trunc i64 %".265" to i8 + %".267" = zext i8 %".266" to i64 + %".268" = and i64 %".267", 63 + %".269" = lshr i64 %".172", %".268" + %".270" = add i64 %".171", %".148" + %".271" = zext i8 49 to i64 + %".272" = and i64 %".271", 63 + %".273" = lshr i64 %".219", %".272" + %".274" = zext i8 15 to i64 + %".275" = and i64 %".274", 63 + %".276" = shl i64 %".219", %".275" + %".277" = or i64 %".273", %".276" + %".278" = zext i8 1 to i64 + %".279" = and i64 %".278", 63 + %".280" = lshr i64 %".277", %".279" + %".281" = and i64 15, %".280" + %".282" = or i64 1, %".281" + %".283" = sub i64 64, %".282" + %".284" = trunc i64 %".283" to i32 + %".285" = zext i32 %".284" to i64 + %".286" = trunc i64 %".285" to i8 + %".287" = zext i8 %".286" to i64 + %".288" = and i64 %".287", 63 + %".289" = shl i64 %".190", %".288" + %".290" = zext i8 49 to i64 + %".291" = and i64 %".290", 63 + %".292" = lshr i64 %".219", %".291" + %".293" = zext i8 15 to i64 + %".294" = and i64 %".293", 63 + %".295" = shl i64 %".219", %".294" + %".296" = or i64 %".292", %".295" + %".297" = zext i8 1 to i64 + %".298" = and i64 %".297", 63 + %".299" = lshr i64 %".296", %".298" + %".300" = and i64 15, %".299" + %".301" = or i64 1, %".300" + %".302" = trunc i64 %".301" to i32 + %".303" = zext i32 %".302" to i64 + %".304" = trunc i64 %".303" to i8 + %".305" = zext i8 %".304" to i64 + %".306" = and i64 %".305", 63 + %".307" = lshr i64 %".190", %".306" + %".308" = or i64 %".289", %".307" + %".309" = zext i8 1 to i64 + %".310" = and i64 %".309", 63 + %".311" = lshr i64 %".308", %".310" + %".312" = and i64 15, %".311" + %".313" = or i64 1, %".312" + %".314" = trunc i64 %".313" to i32 + %".315" = zext i32 %".314" to i64 + %".316" = trunc i64 %".315" to i8 + %".317" = zext i8 %".316" to i64 + %".318" = and i64 %".317", 63 + %".319" = shl i64 %".270", %".318" + %".320" = or i64 %".269", %".319" + br label %".3.endif.endif.endif.endif.endif" +.3.endif.endif.endif.endif.else: + %".322" = sext i64 8349898219520 to i128 + %".323" = sext i64 %"SymVar_0" to i128 + %".324" = mul i128 %".322", %".323" + %".325" = trunc i128 %".324" to i64 + %".326" = or i64 %".325", %"SymVar_0" + %".327" = add i64 %".326", %"SymVar_0" + %".328" = and i64 7, %".327" + %".329" = zext i8 2 to i64 + %".330" = and i64 %".329", 63 + %".331" = shl i64 %".328", %".330" + %".332" = zext i8 7 to i64 + %".333" = and i64 %".332", 63 + %".334" = shl i64 %".325", %".333" + %".335" = add i64 %".334", %".326" + %".336" = sext i64 %".335" to i128 + %".337" = add i64 327625093, %"SymVar_0" + %".338" = sext i64 %".337" to i128 + %".339" = mul i128 %".336", %".338" + %".340" = trunc i128 %".339" to i64 + %".341" = and i64 7, %".340" + %".342" = zext i8 2 to i64 + %".343" = and i64 %".342", 63 + %".344" = shl i64 %".341", %".343" + %".345" = add i64 %".327", %".327" + %".346" = or i64 %".344", %".345" + %".347" = and i64 7, %".346" + %".348" = zext i8 2 to i64 + %".349" = and i64 %".348", 63 + %".350" = shl i64 %".347", %".349" + %".351" = or i64 %".350", %".346" + %".352" = or i64 %".331", %".351" + %".353" = and i64 7, %".352" + %".354" = zext i8 2 to i64 + %".355" = and i64 %".354", 63 + %".356" = shl i64 %".353", %".355" + %".357" = and i64 15, %".340" + %".358" = or i64 1, %".357" + %".359" = sub i64 64, %".358" + %".360" = trunc i64 %".359" to i32 + %".361" = zext i32 %".360" to i64 + %".362" = trunc i64 %".361" to i8 + %".363" = zext i8 %".362" to i64 + %".364" = and i64 %".363", 63 + %".365" = shl i64 %".345", %".364" + %".366" = and i64 15, %".340" + %".367" = or i64 1, %".366" + %".368" = trunc i64 %".367" to i32 + %".369" = zext i32 %".368" to i64 + %".370" = trunc i64 %".369" to i8 + %".371" = zext i8 %".370" to i64 + %".372" = and i64 %".371", 63 + %".373" = lshr i64 %".345", %".372" + %".374" = or i64 %".365", %".373" + %".375" = or i64 %".356", %".374" + %".376" = add i64 %".375", %".352" + %".377" = and i64 15, %".327" + %".378" = or i64 1, %".377" + %".379" = sub i64 64, %".378" + %".380" = trunc i64 %".379" to i32 + %".381" = zext i32 %".380" to i64 + %".382" = trunc i64 %".381" to i8 + %".383" = zext i8 %".382" to i64 + %".384" = and i64 %".383", 63 + %".385" = shl i64 %".374", %".384" + %".386" = and i64 15, %".327" + %".387" = or i64 1, %".386" + %".388" = trunc i64 %".387" to i32 + %".389" = zext i32 %".388" to i64 + %".390" = trunc i64 %".389" to i8 + %".391" = zext i8 %".390" to i64 + %".392" = and i64 %".391", 63 + %".393" = lshr i64 %".374", %".392" + %".394" = or i64 %".385", %".393" + %".395" = zext i8 3 to i64 + %".396" = and i64 %".395", 63 + %".397" = lshr i64 %".352", %".396" + %".398" = and i64 15, %".397" + %".399" = or i64 1, %".398" + %".400" = sub i64 64, %".399" + %".401" = trunc i64 %".400" to i32 + %".402" = zext i32 %".401" to i64 + %".403" = trunc i64 %".402" to i8 + %".404" = zext i8 %".403" to i64 + %".405" = and i64 %".404", 63 + %".406" = shl i64 %".327", %".405" + %".407" = zext i8 3 to i64 + %".408" = and i64 %".407", 63 + %".409" = lshr i64 %".352", %".408" + %".410" = and i64 15, %".409" + %".411" = or i64 1, %".410" + %".412" = trunc i64 %".411" to i32 + %".413" = zext i32 %".412" to i64 + %".414" = trunc i64 %".413" to i8 + %".415" = zext i8 %".414" to i64 + %".416" = and i64 %".415", 63 + %".417" = lshr i64 %".327", %".416" + %".418" = or i64 %".406", %".417" + %".419" = and i64 63, %".418" + %".420" = zext i8 4 to i64 + %".421" = and i64 %".420", 63 + %".422" = shl i64 %".419", %".421" + %".423" = or i64 %".422", %".327" + %".424" = zext i8 49 to i64 + %".425" = and i64 %".424", 63 + %".426" = lshr i64 %".423", %".425" + %".427" = zext i8 15 to i64 + %".428" = and i64 %".427", 63 + %".429" = shl i64 %".423", %".428" + %".430" = or i64 %".426", %".429" + %".431" = zext i8 1 to i64 + %".432" = and i64 %".431", 63 + %".433" = lshr i64 %".430", %".432" + %".434" = and i64 15, %".433" + %".435" = or i64 1, %".434" + %".436" = sub i64 64, %".435" + %".437" = trunc i64 %".436" to i32 + %".438" = zext i32 %".437" to i64 + %".439" = trunc i64 %".438" to i8 + %".440" = zext i8 %".439" to i64 + %".441" = and i64 %".440", 63 + %".442" = shl i64 %".394", %".441" + %".443" = zext i8 49 to i64 + %".444" = and i64 %".443", 63 + %".445" = lshr i64 %".423", %".444" + %".446" = zext i8 15 to i64 + %".447" = and i64 %".446", 63 + %".448" = shl i64 %".423", %".447" + %".449" = or i64 %".445", %".448" + %".450" = zext i8 1 to i64 + %".451" = and i64 %".450", 63 + %".452" = lshr i64 %".449", %".451" + %".453" = and i64 15, %".452" + %".454" = or i64 1, %".453" + %".455" = trunc i64 %".454" to i32 + %".456" = zext i32 %".455" to i64 + %".457" = trunc i64 %".456" to i8 + %".458" = zext i8 %".457" to i64 + %".459" = and i64 %".458", 63 + %".460" = lshr i64 %".394", %".459" + %".461" = or i64 %".442", %".460" + %".462" = zext i8 1 to i64 + %".463" = and i64 %".462", 63 + %".464" = lshr i64 %".461", %".463" + %".465" = and i64 15, %".464" + %".466" = or i64 1, %".465" + %".467" = sub i64 64, %".466" + %".468" = trunc i64 %".467" to i32 + %".469" = zext i32 %".468" to i64 + %".470" = trunc i64 %".469" to i8 + %".471" = zext i8 %".470" to i64 + %".472" = and i64 %".471", 63 + %".473" = lshr i64 %".376", %".472" + %".474" = add i64 %".375", %".352" + %".475" = zext i8 49 to i64 + %".476" = and i64 %".475", 63 + %".477" = lshr i64 %".423", %".476" + %".478" = zext i8 15 to i64 + %".479" = and i64 %".478", 63 + %".480" = shl i64 %".423", %".479" + %".481" = or i64 %".477", %".480" + %".482" = zext i8 1 to i64 + %".483" = and i64 %".482", 63 + %".484" = lshr i64 %".481", %".483" + %".485" = and i64 15, %".484" + %".486" = or i64 1, %".485" + %".487" = sub i64 64, %".486" + %".488" = trunc i64 %".487" to i32 + %".489" = zext i32 %".488" to i64 + %".490" = trunc i64 %".489" to i8 + %".491" = zext i8 %".490" to i64 + %".492" = and i64 %".491", 63 + %".493" = shl i64 %".394", %".492" + %".494" = zext i8 49 to i64 + %".495" = and i64 %".494", 63 + %".496" = lshr i64 %".423", %".495" + %".497" = zext i8 15 to i64 + %".498" = and i64 %".497", 63 + %".499" = shl i64 %".423", %".498" + %".500" = or i64 %".496", %".499" + %".501" = zext i8 1 to i64 + %".502" = and i64 %".501", 63 + %".503" = lshr i64 %".500", %".502" + %".504" = and i64 15, %".503" + %".505" = or i64 1, %".504" + %".506" = trunc i64 %".505" to i32 + %".507" = zext i32 %".506" to i64 + %".508" = trunc i64 %".507" to i8 + %".509" = zext i8 %".508" to i64 + %".510" = and i64 %".509", 63 + %".511" = lshr i64 %".394", %".510" + %".512" = or i64 %".493", %".511" + %".513" = zext i8 1 to i64 + %".514" = and i64 %".513", 63 + %".515" = lshr i64 %".512", %".514" + %".516" = and i64 15, %".515" + %".517" = or i64 1, %".516" + %".518" = trunc i64 %".517" to i32 + %".519" = zext i32 %".518" to i64 + %".520" = trunc i64 %".519" to i8 + %".521" = zext i8 %".520" to i64 + %".522" = and i64 %".521", 63 + %".523" = shl i64 %".474", %".522" + %".524" = or i64 %".473", %".523" + br label %".3.endif.endif.endif.endif.endif" +.3.endif.endif.endif.endif.endif: + %".526" = phi i64 [%".320", %".3.endif.endif.endif.endif.if"], [%".524", %".3.endif.endif.endif.endif.else"] + ret i64 %".526" +} diff --git a/solve-vm-multiple-br.py b/solve-vm-multiple-br.py index be21f32..c006d0b 100755 --- a/solve-vm-multiple-br.py +++ b/solve-vm-multiple-br.py @@ -567,7 +567,7 @@ def symbolicLea(self, lea): seed.append({ 'comment': argc.getComment(), 'id': argc.getId(), - 'memory address': argc.getKindValue(), + 'memory address': argc.getOrigin(), 'model result': self.ctx.getConcreteVariableValue(argc), 'name': argc.getName(), 'src': None, @@ -580,7 +580,7 @@ def symbolicLea(self, lea): seed.append({ 'comment': symVar.getComment(), 'id': symVar.getId(), - 'memory address': symVar.getKindValue(), + 'memory address': symVar.getOrigin(), 'model result': v.getValue(), 'name': symVar.getName(), 'src': None, @@ -863,7 +863,7 @@ def _deepMerge(self, ctx, pcs, node, ret): for l in pc.getBranchConstraints(): if l['isTaken'] == True: if not node.src: - node.condition = ctx.unrollAst(l['constraint']) + node.condition = ctx.getAstContext().unrollAst(l['constraint']) node.src = l['srcAddr'] node.dst = l['dstAddr'] if len(pcs): @@ -872,7 +872,7 @@ def _deepMerge(self, ctx, pcs, node, ret): self._deepMerge(ctx, pcs, node.taken, ret) else: if not node.taken: - node.taken = ExprTreeNode(ctx.unrollAst(ret)) + node.taken = ExprTreeNode(ctx.getAstContext().unrollAst(ret)) elif node.src == l['srcAddr'] and node.dst != l['dstAddr']: if len(pcs): @@ -882,7 +882,7 @@ def _deepMerge(self, ctx, pcs, node, ret): else: if not node.ntaken: #node.ntaken = ExprTreeNode(ret) - node.ntaken = ExprTreeNode(ctx.unrollAst(ret)) + node.ntaken = ExprTreeNode(ctx.getAstContext().unrollAst(ret)) elif node.src == l['srcAddr'] and node.dst == l['dstAddr']: self._deepMerge(ctx, pcs, node.taken, ret) @@ -896,7 +896,7 @@ def tracesMerging(self): pcs = self.traces[0].getPathConstraints() if not len(pcs): - node = ExprTreeNode(self.traces[0].unrollAst(ret)) + node = ExprTreeNode(self.traces[0].getAstContext().unrollAst(ret)) return node node = IteTreeNode() @@ -951,7 +951,7 @@ def getNewInput(self, trace): seed.append({ 'comment': symVar.getComment(), 'id': symVar.getId(), - 'memory address': symVar.getKindValue(), + 'memory address': symVar.getOrigin(), 'model result': v.getValue(), 'name': symVar.getName(), 'src': branch['srcAddr'], @@ -999,10 +999,10 @@ def toLLVMIR(ctx, node): # Used to get symvar names tt_vars = set() def deep(node): - if node.getKind() == AST_NODE.VARIABLE: - tt_vars.add(node.getValue()) - if node.getKind() == AST_NODE.REFERENCE: - deep(ctx.getAstFromId(node.getValue())) + if node.getType() == AST_NODE.VARIABLE: + tt_vars.add(node.getSymbolicVariable().getName()) + if node.getType() == AST_NODE.REFERENCE: + deep(node.getSymbolicExpression().getAst()) for c in node.getChildren(): deep(c) diff --git a/symbolic_expressions/tigress-2-challenge-0.py b/symbolic_expressions/tigress-2-challenge-0.py new file mode 100644 index 0000000..4492b85 --- /dev/null +++ b/symbolic_expressions/tigress-2-challenge-0.py @@ -0,0 +1,842 @@ +#!/usr/bin/env python2 +## -*- coding: utf-8 -*- + +import sys + +def sx(bits, value): + sign_bit = 1 << (bits - 1) + return (value & (sign_bit - 1)) - (value & sign_bit) + +SymVar_0 = int(sys.argv[1]) + +ref_345 = SymVar_0 +ref_361 = ref_345 # MOV operation +ref_34527 = ref_361 # MOV operation +ref_35098 = ref_34527 # MOV operation +ref_35106 = (((sx(0x40, 0x7981CB7A000) * sx(0x40, ref_35098)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) & 0xFFFFFFFFFFFFFFFF) # IMUL operation +ref_35371 = ref_35106 # MOV operation +ref_39725 = ref_361 # MOV operation +ref_42026 = ref_35371 # MOV operation +ref_42310 = ref_39725 # MOV operation +ref_42316 = ref_42026 # MOV operation +ref_42318 = (ref_42316 | ref_42310) # OR operation +ref_42599 = ref_42318 # MOV operation +ref_47227 = ref_361 # MOV operation +ref_47449 = ref_47227 # MOV operation +ref_47465 = ((0x13872985 + ref_47449) & 0xFFFFFFFFFFFFFFFF) # ADD operation +ref_50132 = ref_35371 # MOV operation +ref_50368 = ref_50132 # MOV operation +ref_50384 = ref_50368 # MOV operation +ref_50388 = ((ref_50384 << (0x7 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation +ref_50395 = ref_50388 # MOV operation +ref_52728 = ref_42599 # MOV operation +ref_52988 = ref_52728 # MOV operation +ref_53002 = ref_50395 # MOV operation +ref_53004 = ((ref_53002 + ref_52988) & 0xFFFFFFFFFFFFFFFF) # ADD operation +ref_53300 = ref_47465 # MOV operation +ref_53306 = ref_53004 # MOV operation +ref_53308 = (((sx(0x40, ref_53306) * sx(0x40, ref_53300)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) & 0xFFFFFFFFFFFFFFFF) # IMUL operation +ref_53613 = ref_53308 # MOV operation +ref_58000 = ref_42599 # MOV operation +ref_60230 = ref_361 # MOV operation +ref_60490 = ref_60230 # MOV operation +ref_60504 = ref_58000 # MOV operation +ref_60506 = ((ref_60504 + ref_60490) & 0xFFFFFFFFFFFFFFFF) # ADD operation +ref_60802 = ref_60506 # MOV operation +ref_63408 = ref_60802 # MOV operation +ref_65735 = ref_53613 # MOV operation +ref_66011 = ref_65735 # MOV operation +ref_66025 = ref_63408 # MOV operation +ref_66027 = ((ref_66025 + ref_66011) & 0xFFFFFFFFFFFFFFFF) # ADD operation +ref_68353 = ref_35371 # MOV operation +ref_68924 = ref_68353 # MOV operation +ref_68945 = ((((0x0) << 64 | ref_68924) / ((((((((0x0) << 8 | 0x0) << 8 | 0x0) << 8 | 0x0) << 8 | 0x0) << 8 | 0x0) << 8 | 0x0) << 8 | 0x7)) & 0xFFFFFFFFFFFFFFFF) # DIV operation +ref_69201 = ref_68945 # MOV operation +ref_69215 = ref_66027 # MOV operation +ref_69217 = ((ref_69201 - ref_69215) & 0xFFFFFFFFFFFFFFFF) # CMP operation +ref_69219 = ((((ref_69201 ^ (ref_69215 ^ ref_69217)) ^ ((ref_69201 ^ ref_69217) & (ref_69201 ^ ref_69215))) >> 63) & 0x1) # Carry flag +ref_69223 = (0x1 if (ref_69217 == 0x0) else 0x0) # Zero flag +ref_69225 = ((((ref_69215 >> 8) & 0xFFFFFFFFFFFFFF)) << 8 | (0x1 if (((~(ref_69219) & 0x1) & (~(ref_69223) & 0x1)) == 0x1) else 0x0)) # SETA operation +ref_69227 = (ref_69225 & 0xFF) # MOVZX operation +ref_69496 = (ref_69227 & 0xFFFFFFFF) # MOV operation +ref_69498 = ((ref_69496 & 0xFFFFFFFF) & (ref_69496 & 0xFFFFFFFF)) # TEST operation +ref_69503 = (0x1 if (ref_69498 == 0x0) else 0x0) # Zero flag +ref_69505 = (0x4012DA if (ref_69503 == 0x1) else 0x4012B0) # Program Counter + + +if (ref_69503 == 0x1): + ref_345 = SymVar_0 + ref_361 = ref_345 # MOV operation + ref_34527 = ref_361 # MOV operation + ref_35098 = ref_34527 # MOV operation + ref_35106 = (((sx(0x40, 0x7981CB7A000) * sx(0x40, ref_35098)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) & 0xFFFFFFFFFFFFFFFF) # IMUL operation + ref_35371 = ref_35106 # MOV operation + ref_39725 = ref_361 # MOV operation + ref_42026 = ref_35371 # MOV operation + ref_42310 = ref_39725 # MOV operation + ref_42316 = ref_42026 # MOV operation + ref_42318 = (ref_42316 | ref_42310) # OR operation + ref_42599 = ref_42318 # MOV operation + ref_47227 = ref_361 # MOV operation + ref_47449 = ref_47227 # MOV operation + ref_47465 = ((0x13872985 + ref_47449) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_50132 = ref_35371 # MOV operation + ref_50368 = ref_50132 # MOV operation + ref_50384 = ref_50368 # MOV operation + ref_50388 = ((ref_50384 << (0x7 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_50395 = ref_50388 # MOV operation + ref_52728 = ref_42599 # MOV operation + ref_52988 = ref_52728 # MOV operation + ref_53002 = ref_50395 # MOV operation + ref_53004 = ((ref_53002 + ref_52988) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_53300 = ref_47465 # MOV operation + ref_53306 = ref_53004 # MOV operation + ref_53308 = (((sx(0x40, ref_53306) * sx(0x40, ref_53300)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) & 0xFFFFFFFFFFFFFFFF) # IMUL operation + ref_53613 = ref_53308 # MOV operation + ref_74189 = ref_53613 # MOV operation + ref_76526 = ref_35371 # MOV operation + ref_77068 = ref_76526 # MOV operation + ref_77076 = ref_77068 # MOV operation + ref_77080 = (ref_77076 >> (0x3 & 0x3F)) # SHR operation + ref_77087 = ref_77080 # MOV operation + ref_77650 = ref_77087 # MOV operation + ref_77658 = (0xF & ref_77650) # AND operation + ref_78265 = ref_77658 # MOV operation + ref_78273 = (0x1 | ref_78265) # OR operation + ref_78541 = ref_74189 # MOV operation + ref_78547 = ref_78273 # MOV operation + ref_78549 = ref_78541 # MOV operation + ref_78551 = (ref_78547 & 0xFFFFFFFF) # MOV operation + ref_78553 = (ref_78549 >> ((ref_78551 & 0xFF) & 0x3F)) # SHR operation + ref_78560 = ref_78553 # MOV operation + ref_81220 = ref_35371 # MOV operation + ref_81755 = ref_81220 # MOV operation + ref_81763 = ref_81755 # MOV operation + ref_81767 = (ref_81763 >> (0x3 & 0x3F)) # SHR operation + ref_81774 = ref_81767 # MOV operation + ref_82345 = ref_81774 # MOV operation + ref_82353 = (0xF & ref_82345) # AND operation + ref_82921 = ref_82353 # MOV operation + ref_82929 = (0x1 | ref_82921) # OR operation + ref_83227 = ref_82929 # MOV operation + ref_83231 = ((0x40 - ref_83227) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_83239 = ref_83231 # MOV operation + ref_85592 = ref_53613 # MOV operation + ref_85862 = ref_85592 # MOV operation + ref_85876 = ref_83239 # MOV operation + ref_85878 = ref_85862 # MOV operation + ref_85880 = (ref_85876 & 0xFFFFFFFF) # MOV operation + ref_85882 = ((ref_85878 << ((ref_85880 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_85889 = ref_85882 # MOV operation + ref_86152 = ref_78560 # MOV operation + ref_86158 = ref_85889 # MOV operation + ref_86160 = (ref_86158 | ref_86152) # OR operation + ref_86468 = ref_86160 # MOV operation + ref_114955 = ref_35371 # MOV operation + ref_118148 = ref_53613 # MOV operation + ref_118690 = ref_118148 # MOV operation + ref_118698 = (0xF & ref_118690) # AND operation + ref_119266 = ref_118698 # MOV operation + ref_119274 = (0x1 | ref_119266) # OR operation + ref_119573 = ref_114955 # MOV operation + ref_119579 = ref_119274 # MOV operation + ref_119581 = ref_119573 # MOV operation + ref_119583 = (ref_119579 & 0xFFFFFFFF) # MOV operation + ref_119585 = (ref_119581 >> ((ref_119583 & 0xFF) & 0x3F)) # SHR operation + ref_119592 = ref_119585 # MOV operation + ref_123071 = ref_53613 # MOV operation + ref_123654 = ref_123071 # MOV operation + ref_123662 = (0xF & ref_123654) # AND operation + ref_124244 = ref_123662 # MOV operation + ref_124252 = (0x1 | ref_124244) # OR operation + ref_124512 = ref_124252 # MOV operation + ref_124516 = ((0x40 - ref_124512) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_124524 = ref_124516 # MOV operation + ref_127734 = ref_35371 # MOV operation + ref_128010 = ref_127734 # MOV operation + ref_128024 = ref_124524 # MOV operation + ref_128026 = ref_128010 # MOV operation + ref_128028 = (ref_128024 & 0xFFFFFFFF) # MOV operation + ref_128030 = ((ref_128026 << ((ref_128028 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_128037 = ref_128030 # MOV operation + ref_128286 = ref_119592 # MOV operation + ref_128292 = ref_128037 # MOV operation + ref_128294 = (ref_128292 | ref_128286) # OR operation + ref_128586 = ref_128294 # MOV operation + ref_133027 = ref_35371 # MOV operation + ref_136478 = ref_53613 # MOV operation + ref_137049 = ref_136478 # MOV operation + ref_137057 = (0x7 & ref_137049) # AND operation + ref_137317 = ref_137057 # MOV operation + ref_137333 = ref_137317 # MOV operation + ref_137337 = ((ref_137333 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_137344 = ref_137337 # MOV operation + ref_137631 = ref_133027 # MOV operation + ref_137637 = ref_137344 # MOV operation + ref_137639 = (ref_137637 | ref_137631) # OR operation + ref_137947 = ref_137639 # MOV operation + ref_144047 = ref_137947 # MOV operation + ref_146662 = ref_137947 # MOV operation + ref_147206 = ref_146662 # MOV operation + ref_147214 = (0x7 & ref_147206) # AND operation + ref_147498 = ref_147214 # MOV operation + ref_147514 = ref_147498 # MOV operation + ref_147518 = ((ref_147514 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_147525 = ref_147518 # MOV operation + ref_147815 = ref_144047 # MOV operation + ref_147821 = ref_147525 # MOV operation + ref_147823 = (ref_147821 | ref_147815) # OR operation + ref_148131 = ref_147823 # MOV operation + ref_179277 = ref_128586 # MOV operation + ref_182470 = ref_86468 # MOV operation + ref_183012 = ref_182470 # MOV operation + ref_183020 = (0xF & ref_183012) # AND operation + ref_183588 = ref_183020 # MOV operation + ref_183596 = (0x1 | ref_183588) # OR operation + ref_183895 = ref_179277 # MOV operation + ref_183901 = ref_183596 # MOV operation + ref_183903 = ref_183895 # MOV operation + ref_183905 = (ref_183901 & 0xFFFFFFFF) # MOV operation + ref_183907 = (ref_183903 >> ((ref_183905 & 0xFF) & 0x3F)) # SHR operation + ref_183914 = ref_183907 # MOV operation + ref_187393 = ref_86468 # MOV operation + ref_187976 = ref_187393 # MOV operation + ref_187984 = (0xF & ref_187976) # AND operation + ref_188566 = ref_187984 # MOV operation + ref_188574 = (0x1 | ref_188566) # OR operation + ref_188834 = ref_188574 # MOV operation + ref_188838 = ((0x40 - ref_188834) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_188846 = ref_188838 # MOV operation + ref_192056 = ref_128586 # MOV operation + ref_192332 = ref_192056 # MOV operation + ref_192346 = ref_188846 # MOV operation + ref_192348 = ref_192332 # MOV operation + ref_192350 = (ref_192346 & 0xFFFFFFFF) # MOV operation + ref_192352 = ((ref_192348 << ((ref_192350 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_192359 = ref_192352 # MOV operation + ref_192608 = ref_183914 # MOV operation + ref_192614 = ref_192359 # MOV operation + ref_192616 = (ref_192614 | ref_192608) # OR operation + ref_192908 = ref_192616 # MOV operation + ref_197349 = ref_148131 # MOV operation + ref_200800 = ref_86468 # MOV operation + ref_201371 = ref_200800 # MOV operation + ref_201379 = (0x7 & ref_201371) # AND operation + ref_201639 = ref_201379 # MOV operation + ref_201655 = ref_201639 # MOV operation + ref_201659 = ((ref_201655 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_201666 = ref_201659 # MOV operation + ref_201953 = ref_197349 # MOV operation + ref_201959 = ref_201666 # MOV operation + ref_201961 = (ref_201959 | ref_201953) # OR operation + ref_202269 = ref_201961 # MOV operation + ref_208369 = ref_128586 # MOV operation + ref_210984 = ref_202269 # MOV operation + ref_211528 = ref_210984 # MOV operation + ref_211536 = (0x7 & ref_211528) # AND operation + ref_211820 = ref_211536 # MOV operation + ref_211836 = ref_211820 # MOV operation + ref_211840 = ((ref_211836 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_211847 = ref_211840 # MOV operation + ref_212137 = ref_208369 # MOV operation + ref_212143 = ref_211847 # MOV operation + ref_212145 = (ref_212143 | ref_212137) # OR operation + ref_212453 = ref_212145 # MOV operation + ref_218553 = ref_86468 # MOV operation + ref_221194 = ref_86468 # MOV operation + ref_223495 = ref_202269 # MOV operation + ref_224066 = ref_223495 # MOV operation + ref_224074 = ref_224066 # MOV operation + ref_224078 = (ref_224074 >> (0x3 & 0x3F)) # SHR operation + ref_224085 = ref_224078 # MOV operation + ref_224646 = ref_224085 # MOV operation + ref_224654 = (0xF & ref_224646) # AND operation + ref_225222 = ref_224654 # MOV operation + ref_225230 = (0x1 | ref_225222) # OR operation + ref_225529 = ref_221194 # MOV operation + ref_225535 = ref_225230 # MOV operation + ref_225537 = ref_225529 # MOV operation + ref_225539 = (ref_225535 & 0xFFFFFFFF) # MOV operation + ref_225541 = (ref_225537 >> ((ref_225539 & 0xFF) & 0x3F)) # SHR operation + ref_225548 = ref_225541 # MOV operation + ref_228178 = ref_202269 # MOV operation + ref_228760 = ref_228178 # MOV operation + ref_228768 = ref_228760 # MOV operation + ref_228772 = (ref_228768 >> (0x3 & 0x3F)) # SHR operation + ref_228779 = ref_228772 # MOV operation + ref_229333 = ref_228779 # MOV operation + ref_229341 = (0xF & ref_229333) # AND operation + ref_229917 = ref_229341 # MOV operation + ref_229925 = (0x1 | ref_229917) # OR operation + ref_230239 = ref_229925 # MOV operation + ref_230243 = ((0x40 - ref_230239) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_230251 = ref_230243 # MOV operation + ref_232597 = ref_86468 # MOV operation + ref_232819 = ref_232597 # MOV operation + ref_232833 = ref_230251 # MOV operation + ref_232835 = ref_232819 # MOV operation + ref_232837 = (ref_232833 & 0xFFFFFFFF) # MOV operation + ref_232839 = ((ref_232835 << ((ref_232837 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_232846 = ref_232839 # MOV operation + ref_233140 = ref_225548 # MOV operation + ref_233146 = ref_232846 # MOV operation + ref_233148 = (ref_233146 | ref_233140) # OR operation + ref_233724 = ref_233148 # MOV operation + ref_233732 = (0x3F & ref_233724) # AND operation + ref_234032 = ref_233732 # MOV operation + ref_234048 = ref_234032 # MOV operation + ref_234052 = ((ref_234048 << (0x4 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_234059 = ref_234052 # MOV operation + ref_234308 = ref_218553 # MOV operation + ref_234314 = ref_234059 # MOV operation + ref_234316 = (ref_234314 | ref_234308) # OR operation + ref_234608 = ref_234316 # MOV operation + ref_242930 = ref_192908 # MOV operation + ref_245518 = ref_234608 # MOV operation + ref_245778 = ref_245518 # MOV operation + ref_245794 = ref_245778 # MOV operation + ref_245798 = ((ref_245794 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_245805 = ref_245798 # MOV operation + ref_248158 = ref_234608 # MOV operation + ref_248710 = ref_248158 # MOV operation + ref_248718 = ref_248710 # MOV operation + ref_248722 = (ref_248718 >> (0x31 & 0x3F)) # SHR operation + ref_248729 = ref_248722 # MOV operation + ref_249032 = ref_245805 # MOV operation + ref_249038 = ref_248729 # MOV operation + ref_249040 = (ref_249038 | ref_249032) # OR operation + ref_249592 = ref_249040 # MOV operation + ref_249600 = ref_249592 # MOV operation + ref_249604 = (ref_249600 >> (0x1 & 0x3F)) # SHR operation + ref_249611 = ref_249604 # MOV operation + ref_250215 = ref_249611 # MOV operation + ref_250223 = (0xF & ref_250215) # AND operation + ref_250778 = ref_250223 # MOV operation + ref_250786 = (0x1 | ref_250778) # OR operation + ref_251078 = ref_242930 # MOV operation + ref_251084 = ref_250786 # MOV operation + ref_251086 = ref_251078 # MOV operation + ref_251088 = (ref_251084 & 0xFFFFFFFF) # MOV operation + ref_251090 = (ref_251086 >> ((ref_251088 & 0xFF) & 0x3F)) # SHR operation + ref_251097 = ref_251090 # MOV operation + ref_254045 = ref_234608 # MOV operation + ref_254294 = ref_254045 # MOV operation + ref_254310 = ref_254294 # MOV operation + ref_254314 = ((ref_254310 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_254321 = ref_254314 # MOV operation + ref_256668 = ref_234608 # MOV operation + ref_257196 = ref_256668 # MOV operation + ref_257204 = ref_257196 # MOV operation + ref_257208 = (ref_257204 >> (0x31 & 0x3F)) # SHR operation + ref_257215 = ref_257208 # MOV operation + ref_257505 = ref_254321 # MOV operation + ref_257511 = ref_257215 # MOV operation + ref_257513 = (ref_257511 | ref_257505) # OR operation + ref_258108 = ref_257513 # MOV operation + ref_258116 = ref_258108 # MOV operation + ref_258120 = (ref_258116 >> (0x1 & 0x3F)) # SHR operation + ref_258127 = ref_258120 # MOV operation + ref_258688 = ref_258127 # MOV operation + ref_258696 = (0xF & ref_258688) # AND operation + ref_259264 = ref_258696 # MOV operation + ref_259272 = (0x1 | ref_259264) # OR operation + ref_259577 = ref_259272 # MOV operation + ref_259581 = ((0x40 - ref_259577) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_259589 = ref_259581 # MOV operation + ref_261945 = ref_192908 # MOV operation + ref_262181 = ref_261945 # MOV operation + ref_262195 = ref_259589 # MOV operation + ref_262197 = ref_262181 # MOV operation + ref_262199 = (ref_262195 & 0xFFFFFFFF) # MOV operation + ref_262201 = ((ref_262197 << ((ref_262199 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_262208 = ref_262201 # MOV operation + ref_262495 = ref_251097 # MOV operation + ref_262501 = ref_262208 # MOV operation + ref_262503 = (ref_262501 | ref_262495) # OR operation + ref_263071 = ref_262503 # MOV operation + ref_263079 = ref_263071 # MOV operation + ref_263083 = (ref_263079 >> (0x1 & 0x3F)) # SHR operation + ref_263090 = ref_263083 # MOV operation + ref_263692 = ref_263090 # MOV operation + ref_263700 = (0xF & ref_263692) # AND operation + ref_264282 = ref_263700 # MOV operation + ref_264290 = (0x1 | ref_264282) # OR operation + ref_266641 = ref_212453 # MOV operation + ref_268942 = ref_202269 # MOV operation + ref_269218 = ref_268942 # MOV operation + ref_269232 = ref_266641 # MOV operation + ref_269234 = ((ref_269232 + ref_269218) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_269508 = ref_269234 # MOV operation + ref_269522 = ref_264290 # MOV operation + ref_269524 = ref_269508 # MOV operation + ref_269526 = (ref_269522 & 0xFFFFFFFF) # MOV operation + ref_269528 = ((ref_269524 << ((ref_269526 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_269535 = ref_269528 # MOV operation + ref_271882 = ref_212453 # MOV operation + ref_274209 = ref_202269 # MOV operation + ref_274431 = ref_274209 # MOV operation + ref_274445 = ref_271882 # MOV operation + ref_274447 = ((ref_274445 + ref_274431) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_277114 = ref_192908 # MOV operation + ref_279702 = ref_234608 # MOV operation + ref_279962 = ref_279702 # MOV operation + ref_279978 = ref_279962 # MOV operation + ref_279982 = ((ref_279978 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_279989 = ref_279982 # MOV operation + ref_282342 = ref_234608 # MOV operation + ref_282894 = ref_282342 # MOV operation + ref_282902 = ref_282894 # MOV operation + ref_282906 = (ref_282902 >> (0x31 & 0x3F)) # SHR operation + ref_282913 = ref_282906 # MOV operation + ref_283216 = ref_279989 # MOV operation + ref_283222 = ref_282913 # MOV operation + ref_283224 = (ref_283222 | ref_283216) # OR operation + ref_283776 = ref_283224 # MOV operation + ref_283784 = ref_283776 # MOV operation + ref_283788 = (ref_283784 >> (0x1 & 0x3F)) # SHR operation + ref_283795 = ref_283788 # MOV operation + ref_284399 = ref_283795 # MOV operation + ref_284407 = (0xF & ref_284399) # AND operation + ref_284962 = ref_284407 # MOV operation + ref_284970 = (0x1 | ref_284962) # OR operation + ref_285262 = ref_277114 # MOV operation + ref_285268 = ref_284970 # MOV operation + ref_285270 = ref_285262 # MOV operation + ref_285272 = (ref_285268 & 0xFFFFFFFF) # MOV operation + ref_285274 = (ref_285270 >> ((ref_285272 & 0xFF) & 0x3F)) # SHR operation + ref_285281 = ref_285274 # MOV operation + ref_288229 = ref_234608 # MOV operation + ref_288478 = ref_288229 # MOV operation + ref_288494 = ref_288478 # MOV operation + ref_288498 = ((ref_288494 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_288505 = ref_288498 # MOV operation + ref_290852 = ref_234608 # MOV operation + ref_291380 = ref_290852 # MOV operation + ref_291388 = ref_291380 # MOV operation + ref_291392 = (ref_291388 >> (0x31 & 0x3F)) # SHR operation + ref_291399 = ref_291392 # MOV operation + ref_291689 = ref_288505 # MOV operation + ref_291695 = ref_291399 # MOV operation + ref_291697 = (ref_291695 | ref_291689) # OR operation + ref_292292 = ref_291697 # MOV operation + ref_292300 = ref_292292 # MOV operation + ref_292304 = (ref_292300 >> (0x1 & 0x3F)) # SHR operation + ref_292311 = ref_292304 # MOV operation + ref_292872 = ref_292311 # MOV operation + ref_292880 = (0xF & ref_292872) # AND operation + ref_293448 = ref_292880 # MOV operation + ref_293456 = (0x1 | ref_293448) # OR operation + ref_293761 = ref_293456 # MOV operation + ref_293765 = ((0x40 - ref_293761) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_293773 = ref_293765 # MOV operation + ref_296129 = ref_192908 # MOV operation + ref_296365 = ref_296129 # MOV operation + ref_296379 = ref_293773 # MOV operation + ref_296381 = ref_296365 # MOV operation + ref_296383 = (ref_296379 & 0xFFFFFFFF) # MOV operation + ref_296385 = ((ref_296381 << ((ref_296383 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_296392 = ref_296385 # MOV operation + ref_296679 = ref_285281 # MOV operation + ref_296685 = ref_296392 # MOV operation + ref_296687 = (ref_296685 | ref_296679) # OR operation + ref_297255 = ref_296687 # MOV operation + ref_297263 = ref_297255 # MOV operation + ref_297267 = (ref_297263 >> (0x1 & 0x3F)) # SHR operation + ref_297274 = ref_297267 # MOV operation + ref_297876 = ref_297274 # MOV operation + ref_297884 = (0xF & ref_297876) # AND operation + ref_298466 = ref_297884 # MOV operation + ref_298474 = (0x1 | ref_298466) # OR operation + ref_298734 = ref_298474 # MOV operation + ref_298738 = ((0x40 - ref_298734) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_298746 = ref_298738 # MOV operation + ref_299033 = ref_274447 # MOV operation + ref_299039 = ref_298746 # MOV operation + ref_299041 = ref_299033 # MOV operation + ref_299043 = (ref_299039 & 0xFFFFFFFF) # MOV operation + ref_299045 = (ref_299041 >> ((ref_299043 & 0xFF) & 0x3F)) # SHR operation + ref_299052 = ref_299045 # MOV operation + ref_299342 = ref_269535 # MOV operation + ref_299348 = ref_299052 # MOV operation + ref_299350 = (ref_299348 | ref_299342) # OR operation + ref_299658 = ref_299350 # MOV operation + ref_300235 = ref_299658 # MOV operation + ref_300237 = ref_300235 # MOV operation + endb = ref_300237 + + +else: + ref_300641 = SymVar_0 + ref_300657 = ref_300641 # MOV operation + ref_334823 = ref_300657 # MOV operation + ref_335394 = ref_334823 # MOV operation + ref_335402 = (((sx(0x40, 0x7981CB7A000) * sx(0x40, ref_335394)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) & 0xFFFFFFFFFFFFFFFF) # IMUL operation + ref_335667 = ref_335402 # MOV operation + ref_340021 = ref_300657 # MOV operation + ref_342322 = ref_335667 # MOV operation + ref_342606 = ref_340021 # MOV operation + ref_342612 = ref_342322 # MOV operation + ref_342614 = (ref_342612 | ref_342606) # OR operation + ref_342895 = ref_342614 # MOV operation + ref_347523 = ref_300657 # MOV operation + ref_347745 = ref_347523 # MOV operation + ref_347761 = ((0x13872985 + ref_347745) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_350428 = ref_335667 # MOV operation + ref_350664 = ref_350428 # MOV operation + ref_350680 = ref_350664 # MOV operation + ref_350684 = ((ref_350680 << (0x7 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_350691 = ref_350684 # MOV operation + ref_353024 = ref_342895 # MOV operation + ref_353284 = ref_353024 # MOV operation + ref_353298 = ref_350691 # MOV operation + ref_353300 = ((ref_353298 + ref_353284) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_353596 = ref_347761 # MOV operation + ref_353602 = ref_353300 # MOV operation + ref_353604 = (((sx(0x40, ref_353602) * sx(0x40, ref_353596)) & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) & 0xFFFFFFFFFFFFFFFF) # IMUL operation + ref_353909 = ref_353604 # MOV operation + ref_358296 = ref_342895 # MOV operation + ref_360526 = ref_300657 # MOV operation + ref_360786 = ref_360526 # MOV operation + ref_360800 = ref_358296 # MOV operation + ref_360802 = ((ref_360800 + ref_360786) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_361098 = ref_360802 # MOV operation + ref_374223 = ref_361098 # MOV operation + ref_376578 = ref_361098 # MOV operation + ref_376827 = ref_376578 # MOV operation + ref_376841 = ref_374223 # MOV operation + ref_376843 = ((ref_376841 + ref_376827) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_377112 = ref_376843 # MOV operation + ref_405640 = ref_377112 # MOV operation + ref_408817 = ref_353909 # MOV operation + ref_409375 = ref_408817 # MOV operation + ref_409383 = (0xF & ref_409375) # AND operation + ref_409935 = ref_409383 # MOV operation + ref_409943 = (0x1 | ref_409935) # OR operation + ref_410238 = ref_405640 # MOV operation + ref_410244 = ref_409943 # MOV operation + ref_410246 = ref_410238 # MOV operation + ref_410248 = (ref_410244 & 0xFFFFFFFF) # MOV operation + ref_410250 = (ref_410246 >> ((ref_410248 & 0xFF) & 0x3F)) # SHR operation + ref_410257 = ref_410250 # MOV operation + ref_413740 = ref_353909 # MOV operation + ref_414325 = ref_413740 # MOV operation + ref_414333 = (0xF & ref_414325) # AND operation + ref_414888 = ref_414333 # MOV operation + ref_414896 = (0x1 | ref_414888) # OR operation + ref_415194 = ref_414896 # MOV operation + ref_415198 = ((0x40 - ref_415194) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_415206 = ref_415198 # MOV operation + ref_418418 = ref_377112 # MOV operation + ref_418654 = ref_418418 # MOV operation + ref_418668 = ref_415206 # MOV operation + ref_418670 = ref_418654 # MOV operation + ref_418672 = (ref_418668 & 0xFFFFFFFF) # MOV operation + ref_418674 = ((ref_418670 << ((ref_418672 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_418681 = ref_418674 # MOV operation + ref_418968 = ref_410257 # MOV operation + ref_418974 = ref_418681 # MOV operation + ref_418976 = (ref_418974 | ref_418968) # OR operation + ref_419284 = ref_418976 # MOV operation + ref_423675 = ref_377112 # MOV operation + ref_427135 = ref_353909 # MOV operation + ref_427718 = ref_427135 # MOV operation + ref_427726 = (0x7 & ref_427718) # AND operation + ref_427986 = ref_427726 # MOV operation + ref_428002 = ref_427986 # MOV operation + ref_428006 = ((ref_428002 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_428013 = ref_428006 # MOV operation + ref_428316 = ref_423675 # MOV operation + ref_428322 = ref_428013 # MOV operation + ref_428324 = (ref_428322 | ref_428316) # OR operation + ref_428578 = ref_428324 # MOV operation + ref_434704 = ref_428578 # MOV operation + ref_437346 = ref_428578 # MOV operation + ref_437888 = ref_437346 # MOV operation + ref_437896 = (0x7 & ref_437888) # AND operation + ref_438196 = ref_437896 # MOV operation + ref_438212 = ref_438196 # MOV operation + ref_438216 = ((ref_438212 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_438223 = ref_438216 # MOV operation + ref_438472 = ref_434704 # MOV operation + ref_438478 = ref_438223 # MOV operation + ref_438480 = (ref_438478 | ref_438472) # OR operation + ref_438779 = ref_438480 # MOV operation + ref_469962 = ref_419284 # MOV operation + ref_473139 = ref_361098 # MOV operation + ref_473697 = ref_473139 # MOV operation + ref_473705 = (0xF & ref_473697) # AND operation + ref_474257 = ref_473705 # MOV operation + ref_474265 = (0x1 | ref_474257) # OR operation + ref_474560 = ref_469962 # MOV operation + ref_474566 = ref_474265 # MOV operation + ref_474568 = ref_474560 # MOV operation + ref_474570 = (ref_474566 & 0xFFFFFFFF) # MOV operation + ref_474572 = (ref_474568 >> ((ref_474570 & 0xFF) & 0x3F)) # SHR operation + ref_474579 = ref_474572 # MOV operation + ref_478062 = ref_361098 # MOV operation + ref_478647 = ref_478062 # MOV operation + ref_478655 = (0xF & ref_478647) # AND operation + ref_479210 = ref_478655 # MOV operation + ref_479218 = (0x1 | ref_479210) # OR operation + ref_479516 = ref_479218 # MOV operation + ref_479520 = ((0x40 - ref_479516) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_479528 = ref_479520 # MOV operation + ref_482740 = ref_419284 # MOV operation + ref_482976 = ref_482740 # MOV operation + ref_482990 = ref_479528 # MOV operation + ref_482992 = ref_482976 # MOV operation + ref_482994 = (ref_482990 & 0xFFFFFFFF) # MOV operation + ref_482996 = ((ref_482992 << ((ref_482994 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_483003 = ref_482996 # MOV operation + ref_483290 = ref_474579 # MOV operation + ref_483296 = ref_483003 # MOV operation + ref_483298 = (ref_483296 | ref_483290) # OR operation + ref_483606 = ref_483298 # MOV operation + ref_487997 = ref_438779 # MOV operation + ref_491457 = ref_361098 # MOV operation + ref_492040 = ref_491457 # MOV operation + ref_492048 = (0x7 & ref_492040) # AND operation + ref_492308 = ref_492048 # MOV operation + ref_492324 = ref_492308 # MOV operation + ref_492328 = ((ref_492324 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_492335 = ref_492328 # MOV operation + ref_492638 = ref_487997 # MOV operation + ref_492644 = ref_492335 # MOV operation + ref_492646 = (ref_492644 | ref_492638) # OR operation + ref_492900 = ref_492646 # MOV operation + ref_499026 = ref_419284 # MOV operation + ref_501668 = ref_492900 # MOV operation + ref_502210 = ref_501668 # MOV operation + ref_502218 = (0x7 & ref_502210) # AND operation + ref_502518 = ref_502218 # MOV operation + ref_502534 = ref_502518 # MOV operation + ref_502538 = ((ref_502534 << (0x2 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_502545 = ref_502538 # MOV operation + ref_502794 = ref_499026 # MOV operation + ref_502800 = ref_502545 # MOV operation + ref_502802 = (ref_502800 | ref_502794) # OR operation + ref_503101 = ref_502802 # MOV operation + ref_509237 = ref_361098 # MOV operation + ref_511825 = ref_361098 # MOV operation + ref_514152 = ref_492900 # MOV operation + ref_514735 = ref_514152 # MOV operation + ref_514743 = ref_514735 # MOV operation + ref_514747 = (ref_514743 >> (0x3 & 0x3F)) # SHR operation + ref_514754 = ref_514747 # MOV operation + ref_515331 = ref_514754 # MOV operation + ref_515339 = (0xF & ref_515331) # AND operation + ref_515891 = ref_515339 # MOV operation + ref_515899 = (0x1 | ref_515891) # OR operation + ref_516194 = ref_511825 # MOV operation + ref_516200 = ref_515899 # MOV operation + ref_516202 = ref_516194 # MOV operation + ref_516204 = (ref_516200 & 0xFFFFFFFF) # MOV operation + ref_516206 = (ref_516202 >> ((ref_516204 & 0xFF) & 0x3F)) # SHR operation + ref_516213 = ref_516206 # MOV operation + ref_518847 = ref_492900 # MOV operation + ref_519391 = ref_518847 # MOV operation + ref_519399 = ref_519391 # MOV operation + ref_519403 = (ref_519399 >> (0x3 & 0x3F)) # SHR operation + ref_519410 = ref_519403 # MOV operation + ref_519998 = ref_519410 # MOV operation + ref_520006 = (0xF & ref_519998) # AND operation + ref_520601 = ref_520006 # MOV operation + ref_520609 = (0x1 | ref_520601) # OR operation + ref_520883 = ref_520609 # MOV operation + ref_520887 = ((0x40 - ref_520883) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_520895 = ref_520887 # MOV operation + ref_523228 = ref_361098 # MOV operation + ref_523488 = ref_523228 # MOV operation + ref_523502 = ref_520895 # MOV operation + ref_523504 = ref_523488 # MOV operation + ref_523506 = (ref_523502 & 0xFFFFFFFF) # MOV operation + ref_523508 = ((ref_523504 << ((ref_523506 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_523515 = ref_523508 # MOV operation + ref_523805 = ref_516213 # MOV operation + ref_523811 = ref_523515 # MOV operation + ref_523813 = (ref_523811 | ref_523805) # OR operation + ref_524408 = ref_523813 # MOV operation + ref_524416 = (0x3F & ref_524408) # AND operation + ref_524676 = ref_524416 # MOV operation + ref_524692 = ref_524676 # MOV operation + ref_524696 = ((ref_524692 << (0x4 & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_524703 = ref_524696 # MOV operation + ref_524990 = ref_509237 # MOV operation + ref_524996 = ref_524703 # MOV operation + ref_524998 = (ref_524996 | ref_524990) # OR operation + ref_525306 = ref_524998 # MOV operation + ref_533599 = ref_483606 # MOV operation + ref_536200 = ref_525306 # MOV operation + ref_536476 = ref_536200 # MOV operation + ref_536492 = ref_536476 # MOV operation + ref_536496 = ((ref_536492 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_536503 = ref_536496 # MOV operation + ref_538823 = ref_525306 # MOV operation + ref_539394 = ref_538823 # MOV operation + ref_539402 = ref_539394 # MOV operation + ref_539406 = (ref_539402 >> (0x31 & 0x3F)) # SHR operation + ref_539413 = ref_539406 # MOV operation + ref_539676 = ref_536503 # MOV operation + ref_539682 = ref_539413 # MOV operation + ref_539684 = (ref_539682 | ref_539676) # OR operation + ref_540290 = ref_539684 # MOV operation + ref_540298 = ref_540290 # MOV operation + ref_540302 = (ref_540298 >> (0x1 & 0x3F)) # SHR operation + ref_540309 = ref_540302 # MOV operation + ref_540863 = ref_540309 # MOV operation + ref_540871 = (0xF & ref_540863) # AND operation + ref_541447 = ref_540871 # MOV operation + ref_541455 = (0x1 | ref_541447) # OR operation + ref_541763 = ref_533599 # MOV operation + ref_541769 = ref_541455 # MOV operation + ref_541771 = ref_541763 # MOV operation + ref_541773 = (ref_541769 & 0xFFFFFFFF) # MOV operation + ref_541775 = (ref_541771 >> ((ref_541773 & 0xFF) & 0x3F)) # SHR operation + ref_541782 = ref_541775 # MOV operation + ref_544693 = ref_525306 # MOV operation + ref_544963 = ref_544693 # MOV operation + ref_544979 = ref_544963 # MOV operation + ref_544983 = ((ref_544979 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_544990 = ref_544983 # MOV operation + ref_547312 = ref_525306 # MOV operation + ref_547894 = ref_547312 # MOV operation + ref_547902 = ref_547894 # MOV operation + ref_547906 = (ref_547902 >> (0x31 & 0x3F)) # SHR operation + ref_547913 = ref_547906 # MOV operation + ref_548162 = ref_544990 # MOV operation + ref_548168 = ref_547913 # MOV operation + ref_548170 = (ref_548168 | ref_548162) # OR operation + ref_548777 = ref_548170 # MOV operation + ref_548785 = ref_548777 # MOV operation + ref_548789 = (ref_548785 >> (0x1 & 0x3F)) # SHR operation + ref_548796 = ref_548789 # MOV operation + ref_549373 = ref_548796 # MOV operation + ref_549381 = (0xF & ref_549373) # AND operation + ref_549933 = ref_549381 # MOV operation + ref_549941 = (0x1 | ref_549933) # OR operation + ref_550242 = ref_549941 # MOV operation + ref_550246 = ((0x40 - ref_550242) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_550254 = ref_550246 # MOV operation + ref_552614 = ref_483606 # MOV operation + ref_552850 = ref_552614 # MOV operation + ref_552864 = ref_550254 # MOV operation + ref_552866 = ref_552850 # MOV operation + ref_552868 = (ref_552864 & 0xFFFFFFFF) # MOV operation + ref_552870 = ((ref_552866 << ((ref_552868 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_552877 = ref_552870 # MOV operation + ref_553180 = ref_541782 # MOV operation + ref_553186 = ref_552877 # MOV operation + ref_553188 = (ref_553186 | ref_553180) # OR operation + ref_553740 = ref_553188 # MOV operation + ref_553748 = ref_553740 # MOV operation + ref_553752 = (ref_553748 >> (0x1 & 0x3F)) # SHR operation + ref_553759 = ref_553752 # MOV operation + ref_554363 = ref_553759 # MOV operation + ref_554371 = (0xF & ref_554363) # AND operation + ref_554926 = ref_554371 # MOV operation + ref_554934 = (0x1 | ref_554926) # OR operation + ref_557272 = ref_503101 # MOV operation + ref_559599 = ref_492900 # MOV operation + ref_559866 = ref_559599 # MOV operation + ref_559880 = ref_557272 # MOV operation + ref_559882 = ((ref_559880 + ref_559866) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_560177 = ref_559882 # MOV operation + ref_560191 = ref_554934 # MOV operation + ref_560193 = ref_560177 # MOV operation + ref_560195 = (ref_560191 & 0xFFFFFFFF) # MOV operation + ref_560197 = ((ref_560193 << ((ref_560195 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_560204 = ref_560197 # MOV operation + ref_562526 = ref_503101 # MOV operation + ref_564840 = ref_492900 # MOV operation + ref_565100 = ref_564840 # MOV operation + ref_565114 = ref_562526 # MOV operation + ref_565116 = ((ref_565114 + ref_565100) & 0xFFFFFFFFFFFFFFFF) # ADD operation + ref_567783 = ref_483606 # MOV operation + ref_570384 = ref_525306 # MOV operation + ref_570660 = ref_570384 # MOV operation + ref_570676 = ref_570660 # MOV operation + ref_570680 = ((ref_570676 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_570687 = ref_570680 # MOV operation + ref_573007 = ref_525306 # MOV operation + ref_573578 = ref_573007 # MOV operation + ref_573586 = ref_573578 # MOV operation + ref_573590 = (ref_573586 >> (0x31 & 0x3F)) # SHR operation + ref_573597 = ref_573590 # MOV operation + ref_573860 = ref_570687 # MOV operation + ref_573866 = ref_573597 # MOV operation + ref_573868 = (ref_573866 | ref_573860) # OR operation + ref_574474 = ref_573868 # MOV operation + ref_574482 = ref_574474 # MOV operation + ref_574486 = (ref_574482 >> (0x1 & 0x3F)) # SHR operation + ref_574493 = ref_574486 # MOV operation + ref_575047 = ref_574493 # MOV operation + ref_575055 = (0xF & ref_575047) # AND operation + ref_575631 = ref_575055 # MOV operation + ref_575639 = (0x1 | ref_575631) # OR operation + ref_575947 = ref_567783 # MOV operation + ref_575953 = ref_575639 # MOV operation + ref_575955 = ref_575947 # MOV operation + ref_575957 = (ref_575953 & 0xFFFFFFFF) # MOV operation + ref_575959 = (ref_575955 >> ((ref_575957 & 0xFF) & 0x3F)) # SHR operation + ref_575966 = ref_575959 # MOV operation + ref_578877 = ref_525306 # MOV operation + ref_579147 = ref_578877 # MOV operation + ref_579163 = ref_579147 # MOV operation + ref_579167 = ((ref_579163 << (0xF & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_579174 = ref_579167 # MOV operation + ref_581496 = ref_525306 # MOV operation + ref_582078 = ref_581496 # MOV operation + ref_582086 = ref_582078 # MOV operation + ref_582090 = (ref_582086 >> (0x31 & 0x3F)) # SHR operation + ref_582097 = ref_582090 # MOV operation + ref_582346 = ref_579174 # MOV operation + ref_582352 = ref_582097 # MOV operation + ref_582354 = (ref_582352 | ref_582346) # OR operation + ref_582961 = ref_582354 # MOV operation + ref_582969 = ref_582961 # MOV operation + ref_582973 = (ref_582969 >> (0x1 & 0x3F)) # SHR operation + ref_582980 = ref_582973 # MOV operation + ref_583557 = ref_582980 # MOV operation + ref_583565 = (0xF & ref_583557) # AND operation + ref_584117 = ref_583565 # MOV operation + ref_584125 = (0x1 | ref_584117) # OR operation + ref_584426 = ref_584125 # MOV operation + ref_584430 = ((0x40 - ref_584426) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_584438 = ref_584430 # MOV operation + ref_586798 = ref_483606 # MOV operation + ref_587034 = ref_586798 # MOV operation + ref_587048 = ref_584438 # MOV operation + ref_587050 = ref_587034 # MOV operation + ref_587052 = (ref_587048 & 0xFFFFFFFF) # MOV operation + ref_587054 = ((ref_587050 << ((ref_587052 & 0xFF) & 0x3F)) & 0xFFFFFFFFFFFFFFFF) # SHL operation + ref_587061 = ref_587054 # MOV operation + ref_587364 = ref_575966 # MOV operation + ref_587370 = ref_587061 # MOV operation + ref_587372 = (ref_587370 | ref_587364) # OR operation + ref_587924 = ref_587372 # MOV operation + ref_587932 = ref_587924 # MOV operation + ref_587936 = (ref_587932 >> (0x1 & 0x3F)) # SHR operation + ref_587943 = ref_587936 # MOV operation + ref_588547 = ref_587943 # MOV operation + ref_588555 = (0xF & ref_588547) # AND operation + ref_589110 = ref_588555 # MOV operation + ref_589118 = (0x1 | ref_589110) # OR operation + ref_589416 = ref_589118 # MOV operation + ref_589420 = ((0x40 - ref_589416) & 0xFFFFFFFFFFFFFFFF) # SUB operation + ref_589428 = ref_589420 # MOV operation + ref_589731 = ref_565116 # MOV operation + ref_589737 = ref_589428 # MOV operation + ref_589739 = ref_589731 # MOV operation + ref_589741 = (ref_589737 & 0xFFFFFFFF) # MOV operation + ref_589743 = (ref_589739 >> ((ref_589741 & 0xFF) & 0x3F)) # SHR operation + ref_589750 = ref_589743 # MOV operation + ref_589999 = ref_560204 # MOV operation + ref_590005 = ref_589750 # MOV operation + ref_590007 = (ref_590005 | ref_589999) # OR operation + ref_590306 = ref_590007 # MOV operation + ref_590904 = ref_590306 # MOV operation + ref_590906 = ref_590904 # MOV operation + endb = ref_590906 + + +print endb & 0xffffffffffffffff