Skip to content

Instantly share code, notes, and snippets.

@UplinkCoder
Created September 5, 2016 06:28
Show Gist options
  • Select an option

  • Save UplinkCoder/f6bda093695f01434684b8e2b5734e61 to your computer and use it in GitHub Desktop.

Select an option

Save UplinkCoder/f6bda093695f01434684b8e2b5734e61 to your computer and use it in GitHub Desktop.
auto jmp1 = beginJmp();
auto label1 = genLabel();
auto p1 = genParameter(BCType(BCTypeEnum.String));//SP[4]
//currSp();//SP[8]
incSp();
Set(BCValue(StackAddr(8), BCType(BCTypeEnum.i32)), BCValue(Imm32(0)));
//currSp();//SP[12]
incSp();
auto tmp1 = genTemporary(BCType(BCTypeEnum.Slice, 2));//SP[16]
auto tmp2 = genTemporary(BCType(BCTypeEnum.i32));//SP[20]
incSp();
//currSp();//SP[28]
Set(tmp2, BCValue(Imm32(0)));
Set(BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), tmp2);
//currSp();//SP[28]
incSp();
auto tmp3 = genTemporary(BCType(BCTypeEnum.i32));//SP[32]
auto tmp4 = genTemporary(BCType(BCTypeEnum.i32));//SP[36]
Load32(tmp4, p1);
Set(tmp3, tmp4);
Set(BCValue(StackAddr(28), BCType(BCTypeEnum.i32)), tmp3);
auto label2 = genLabel();
Set(tmp3, BCValue(StackAddr(28), BCType(BCTypeEnum.i32)));
Sub3(BCValue(StackAddr(28), BCType(BCTypeEnum.i32)), BCValue(StackAddr(28), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto cndJmp1 = beginCndJmp(tmp3, );
auto label3 = genLabel();
Set(tmp3, BCValue(StackAddr(8), BCType(BCTypeEnum.i32)));
Add3(BCValue(StackAddr(8), BCType(BCTypeEnum.i32)), BCValue(StackAddr(8), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp5 = genTemporary(BCType(BCTypeEnum.i32));//SP[40]
Add3(tmp5, p1, BCValue(Imm32(1)));
auto tmp6 = genTemporary(BCType(BCTypeEnum.i32));//SP[44]
auto tmp7 = genTemporary(BCType(BCTypeEnum.i32));//SP[48]
Mod3(tmp7, tmp3, BCValue(Imm32(4)));
Div3(tmp6, tmp3, BCValue(Imm32(4)));
Add3(tmp5, tmp5, tmp6);
Load32(tmp3, tmp5);
Byte3(tmp3, tmp3, tmp7);
Eq3(BCValue.init, tmp3, BCValue(Imm32(62)));
auto cndJmp2 = beginCndJmp();
auto label4 = genLabel();
//auto label4 = genLabel();
auto tmp8 = genTemporary(BCType(BCTypeEnum.i32));//SP[52]
Load32(tmp8, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp8, BCValue(Imm32(2)));
auto tmp9 = genTemporary(BCType(BCTypeEnum.i32));//SP[56]
Add3(tmp9, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp10 = genTemporary(BCType(BCTypeEnum.i32));//SP[60]
Mul3(tmp10, tmp3, BCValue(Imm32(1)));
Add3(tmp9, tmp9, tmp10);
Load32(tmp3, tmp9);
Eq3(tmp3, tmp3, BCValue(Imm32(62)));
auto cndJmp3 = beginCndJmp(tmp3, );
auto label5 = genLabel();
auto tmp11 = genTemporary(BCType(BCTypeEnum.i32));//SP[64]
Load32(tmp11, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp11, BCValue(Imm32(1)));
auto tmp12 = genTemporary(BCType(BCTypeEnum.i32));//SP[68]
Add3(tmp12, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp13 = genTemporary(BCType(BCTypeEnum.i32));//SP[72]
Mul3(tmp13, tmp3, BCValue(Imm32(1)));
Add3(tmp12, tmp12, tmp13);
Load32(tmp3, tmp12);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label6 = genLabel();
auto jmp2 = beginJmp();
auto label7 = genLabel();
incSp();
//currSp();//SP[80]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label8 = genLabel();
//auto label8 = genLabel();
endJmp(jmp2, label8);
endCndJmp(cndJmp3, label7);
auto jmp3 = beginJmp();
auto label9 = genLabel();
//auto label9 = genLabel();
endCndJmp(cndJmp2, label9);
Eq3(BCValue.init, tmp3, BCValue(Imm32(60)));
auto cndJmp4 = beginCndJmp();
auto label10 = genLabel();
//auto label10 = genLabel();
auto tmp14 = genTemporary(BCType(BCTypeEnum.i32));//SP[80]
Load32(tmp14, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp14, BCValue(Imm32(2)));
auto tmp15 = genTemporary(BCType(BCTypeEnum.i32));//SP[84]
Add3(tmp15, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp16 = genTemporary(BCType(BCTypeEnum.i32));//SP[88]
Mul3(tmp16, tmp3, BCValue(Imm32(1)));
Add3(tmp15, tmp15, tmp16);
Load32(tmp3, tmp15);
Eq3(tmp3, tmp3, BCValue(Imm32(60)));
auto cndJmp5 = beginCndJmp(tmp3, );
auto label11 = genLabel();
auto tmp17 = genTemporary(BCType(BCTypeEnum.i32));//SP[92]
Load32(tmp17, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp17, BCValue(Imm32(1)));
auto tmp18 = genTemporary(BCType(BCTypeEnum.i32));//SP[96]
Add3(tmp18, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp19 = genTemporary(BCType(BCTypeEnum.i32));//SP[100]
Mul3(tmp19, tmp3, BCValue(Imm32(1)));
Add3(tmp18, tmp18, tmp19);
Load32(tmp3, tmp18);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label12 = genLabel();
auto jmp4 = beginJmp();
auto label13 = genLabel();
incSp();
//currSp();//SP[108]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label14 = genLabel();
//auto label14 = genLabel();
endJmp(jmp4, label14);
endCndJmp(cndJmp5, label13);
auto jmp5 = beginJmp();
auto label15 = genLabel();
//auto label15 = genLabel();
endCndJmp(cndJmp4, label15);
Eq3(BCValue.init, tmp3, BCValue(Imm32(43)));
auto cndJmp6 = beginCndJmp();
auto label16 = genLabel();
//auto label16 = genLabel();
auto tmp20 = genTemporary(BCType(BCTypeEnum.i32));//SP[108]
Load32(tmp20, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp20, BCValue(Imm32(2)));
auto tmp21 = genTemporary(BCType(BCTypeEnum.i32));//SP[112]
Add3(tmp21, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp22 = genTemporary(BCType(BCTypeEnum.i32));//SP[116]
Mul3(tmp22, tmp3, BCValue(Imm32(1)));
Add3(tmp21, tmp21, tmp22);
Load32(tmp3, tmp21);
Eq3(tmp3, tmp3, BCValue(Imm32(43)));
auto cndJmp7 = beginCndJmp(tmp3, );
auto label17 = genLabel();
auto tmp23 = genTemporary(BCType(BCTypeEnum.i32));//SP[120]
Load32(tmp23, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp23, BCValue(Imm32(1)));
auto tmp24 = genTemporary(BCType(BCTypeEnum.i32));//SP[124]
Add3(tmp24, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp25 = genTemporary(BCType(BCTypeEnum.i32));//SP[128]
Mul3(tmp25, tmp3, BCValue(Imm32(1)));
Add3(tmp24, tmp24, tmp25);
Load32(tmp3, tmp24);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label18 = genLabel();
auto jmp6 = beginJmp();
auto label19 = genLabel();
incSp();
//currSp();//SP[136]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label20 = genLabel();
//auto label20 = genLabel();
endJmp(jmp6, label20);
endCndJmp(cndJmp7, label19);
auto jmp7 = beginJmp();
auto label21 = genLabel();
//auto label21 = genLabel();
endCndJmp(cndJmp6, label21);
Eq3(BCValue.init, tmp3, BCValue(Imm32(45)));
auto cndJmp8 = beginCndJmp();
auto label22 = genLabel();
//auto label22 = genLabel();
auto tmp26 = genTemporary(BCType(BCTypeEnum.i32));//SP[136]
Load32(tmp26, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp26, BCValue(Imm32(2)));
auto tmp27 = genTemporary(BCType(BCTypeEnum.i32));//SP[140]
Add3(tmp27, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp28 = genTemporary(BCType(BCTypeEnum.i32));//SP[144]
Mul3(tmp28, tmp3, BCValue(Imm32(1)));
Add3(tmp27, tmp27, tmp28);
Load32(tmp3, tmp27);
Eq3(tmp3, tmp3, BCValue(Imm32(45)));
auto cndJmp9 = beginCndJmp(tmp3, );
auto label23 = genLabel();
auto tmp29 = genTemporary(BCType(BCTypeEnum.i32));//SP[148]
Load32(tmp29, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp29, BCValue(Imm32(1)));
auto tmp30 = genTemporary(BCType(BCTypeEnum.i32));//SP[152]
Add3(tmp30, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp31 = genTemporary(BCType(BCTypeEnum.i32));//SP[156]
Mul3(tmp31, tmp3, BCValue(Imm32(1)));
Add3(tmp30, tmp30, tmp31);
Load32(tmp3, tmp30);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label24 = genLabel();
auto jmp8 = beginJmp();
auto label25 = genLabel();
incSp();
//currSp();//SP[164]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label26 = genLabel();
//auto label26 = genLabel();
endJmp(jmp8, label26);
endCndJmp(cndJmp9, label25);
auto jmp9 = beginJmp();
auto label27 = genLabel();
//auto label27 = genLabel();
endCndJmp(cndJmp8, label27);
Eq3(BCValue.init, tmp3, BCValue(Imm32(46)));
auto cndJmp10 = beginCndJmp();
auto label28 = genLabel();
//auto label28 = genLabel();
auto tmp32 = genTemporary(BCType(BCTypeEnum.i32));//SP[164]
Load32(tmp32, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp32, BCValue(Imm32(2)));
auto tmp33 = genTemporary(BCType(BCTypeEnum.i32));//SP[168]
Add3(tmp33, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp34 = genTemporary(BCType(BCTypeEnum.i32));//SP[172]
Mul3(tmp34, tmp3, BCValue(Imm32(1)));
Add3(tmp33, tmp33, tmp34);
Load32(tmp3, tmp33);
Eq3(tmp3, tmp3, BCValue(Imm32(46)));
auto cndJmp11 = beginCndJmp(tmp3, );
auto label29 = genLabel();
auto tmp35 = genTemporary(BCType(BCTypeEnum.i32));//SP[176]
Load32(tmp35, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp35, BCValue(Imm32(1)));
auto tmp36 = genTemporary(BCType(BCTypeEnum.i32));//SP[180]
Add3(tmp36, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp37 = genTemporary(BCType(BCTypeEnum.i32));//SP[184]
Mul3(tmp37, tmp3, BCValue(Imm32(1)));
Add3(tmp36, tmp36, tmp37);
Load32(tmp3, tmp36);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label30 = genLabel();
auto jmp10 = beginJmp();
auto label31 = genLabel();
incSp();
//currSp();//SP[192]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label32 = genLabel();
//auto label32 = genLabel();
endJmp(jmp10, label32);
endCndJmp(cndJmp11, label31);
auto jmp11 = beginJmp();
auto label33 = genLabel();
//auto label33 = genLabel();
endCndJmp(cndJmp10, label33);
Eq3(BCValue.init, tmp3, BCValue(Imm32(44)));
auto cndJmp12 = beginCndJmp();
auto label34 = genLabel();
//auto label34 = genLabel();
auto tmp38 = genTemporary(BCType(BCTypeEnum.i32));//SP[192]
Load32(tmp38, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp38, BCValue(Imm32(2)));
auto tmp39 = genTemporary(BCType(BCTypeEnum.i32));//SP[196]
Add3(tmp39, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp40 = genTemporary(BCType(BCTypeEnum.i32));//SP[200]
Mul3(tmp40, tmp3, BCValue(Imm32(1)));
Add3(tmp39, tmp39, tmp40);
Load32(tmp3, tmp39);
Eq3(tmp3, tmp3, BCValue(Imm32(44)));
auto cndJmp13 = beginCndJmp(tmp3, );
auto label35 = genLabel();
auto tmp41 = genTemporary(BCType(BCTypeEnum.i32));//SP[204]
Load32(tmp41, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp41, BCValue(Imm32(1)));
auto tmp42 = genTemporary(BCType(BCTypeEnum.i32));//SP[208]
Add3(tmp42, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp43 = genTemporary(BCType(BCTypeEnum.i32));//SP[212]
Mul3(tmp43, tmp3, BCValue(Imm32(1)));
Add3(tmp42, tmp42, tmp43);
Load32(tmp3, tmp42);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label36 = genLabel();
auto jmp12 = beginJmp();
auto label37 = genLabel();
incSp();
//currSp();//SP[220]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label38 = genLabel();
//auto label38 = genLabel();
endJmp(jmp12, label38);
endCndJmp(cndJmp13, label37);
auto jmp13 = beginJmp();
auto label39 = genLabel();
//auto label39 = genLabel();
endCndJmp(cndJmp12, label39);
Eq3(BCValue.init, tmp3, BCValue(Imm32(91)));
auto cndJmp14 = beginCndJmp();
auto label40 = genLabel();
//auto label40 = genLabel();
auto tmp44 = genTemporary(BCType(BCTypeEnum.i32));//SP[220]
Load32(tmp44, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp44, BCValue(Imm32(2)));
auto tmp45 = genTemporary(BCType(BCTypeEnum.i32));//SP[224]
Add3(tmp45, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp46 = genTemporary(BCType(BCTypeEnum.i32));//SP[228]
Mul3(tmp46, tmp3, BCValue(Imm32(1)));
Add3(tmp45, tmp45, tmp46);
Load32(tmp3, tmp45);
Eq3(tmp3, tmp3, BCValue(Imm32(91)));
auto cndJmp15 = beginCndJmp(tmp3, );
auto label41 = genLabel();
auto tmp47 = genTemporary(BCType(BCTypeEnum.i32));//SP[232]
Load32(tmp47, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp47, BCValue(Imm32(1)));
auto tmp48 = genTemporary(BCType(BCTypeEnum.i32));//SP[236]
Add3(tmp48, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp49 = genTemporary(BCType(BCTypeEnum.i32));//SP[240]
Mul3(tmp49, tmp3, BCValue(Imm32(1)));
Add3(tmp48, tmp48, tmp49);
Load32(tmp3, tmp48);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label42 = genLabel();
auto jmp14 = beginJmp();
auto label43 = genLabel();
incSp();
//currSp();//SP[248]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label44 = genLabel();
//auto label44 = genLabel();
endJmp(jmp14, label44);
endCndJmp(cndJmp15, label43);
auto jmp15 = beginJmp();
auto label45 = genLabel();
//auto label45 = genLabel();
endCndJmp(cndJmp14, label45);
Eq3(BCValue.init, tmp3, BCValue(Imm32(93)));
auto cndJmp16 = beginCndJmp();
auto label46 = genLabel();
//auto label46 = genLabel();
auto tmp50 = genTemporary(BCType(BCTypeEnum.i32));//SP[248]
Load32(tmp50, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp50, BCValue(Imm32(2)));
auto tmp51 = genTemporary(BCType(BCTypeEnum.i32));//SP[252]
Add3(tmp51, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp52 = genTemporary(BCType(BCTypeEnum.i32));//SP[256]
Mul3(tmp52, tmp3, BCValue(Imm32(1)));
Add3(tmp51, tmp51, tmp52);
Load32(tmp3, tmp51);
Eq3(tmp3, tmp3, BCValue(Imm32(93)));
auto cndJmp17 = beginCndJmp(tmp3, );
auto label47 = genLabel();
auto tmp53 = genTemporary(BCType(BCTypeEnum.i32));//SP[260]
Load32(tmp53, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)));
Sub3(tmp3, tmp53, BCValue(Imm32(1)));
auto tmp54 = genTemporary(BCType(BCTypeEnum.i32));//SP[264]
Add3(tmp54, BCValue(StackAddr(12), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto tmp55 = genTemporary(BCType(BCTypeEnum.i32));//SP[268]
Mul3(tmp55, tmp3, BCValue(Imm32(1)));
Add3(tmp54, tmp54, tmp55);
Load32(tmp3, tmp54);
Set(tmp3, tmp3);
Add3(tmp3, tmp3, BCValue(Imm32(1)));
auto label48 = genLabel();
auto jmp16 = beginJmp();
auto label49 = genLabel();
incSp();
//currSp();//SP[276]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
auto label50 = genLabel();
//auto label50 = genLabel();
endJmp(jmp16, label50);
endCndJmp(cndJmp17, label49);
auto jmp17 = beginJmp();
auto label51 = genLabel();
//auto label51 = genLabel();
endCndJmp(cndJmp16, label51);
Eq3(BCValue.init, tmp3, BCValue(Imm32(13)));
auto cndJmp18 = beginCndJmp();
auto label52 = genLabel();
//auto label52 = genLabel();
Set(tmp3, BCValue(StackAddr(8), BCType(BCTypeEnum.i32)));
Add3(BCValue(StackAddr(8), BCType(BCTypeEnum.i32)), BCValue(StackAddr(8), BCType(BCTypeEnum.i32)), BCValue(Imm32(1)));
auto jmp18 = beginJmp();
auto label53 = genLabel();
//auto label53 = genLabel();
endCndJmp(cndJmp18, label53);
Eq3(BCValue.init, tmp3, BCValue(Imm32(10)));
auto cndJmp19 = beginCndJmp();
auto label54 = genLabel();
//auto label54 = genLabel();
auto jmp19 = beginJmp();
auto label55 = genLabel();
//auto label55 = genLabel();
endCndJmp(cndJmp19, label55);
auto label56 = genLabel();
//auto label56 = genLabel();
endJmp(jmp3, label56);
endJmp(jmp5, label56);
endJmp(jmp7, label56);
endJmp(jmp9, label56);
endJmp(jmp11, label56);
endJmp(jmp13, label56);
endJmp(jmp15, label56);
endJmp(jmp17, label56);
endJmp(jmp18, label4);
endJmp(jmp19, label56);
auto label57 = genLabel();
//genJump(label2;
auto jmp20 = beginJmp();
endJmp(jmp20, label2);
auto label58 = genLabel();
endCndJmp(cndJmp1, label58);
incSp();
//currSp();//SP[280]
Cat(tmp3, BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)), tmp3, 4);
Ret(BCValue(StackAddr(12), BCType(BCTypeEnum.Slice, 1)));
auto label59 = genLabel();
Set(p1, BCValue(Imm32(30)));
endJmp(jmp1, label59);
//genJump(label1;
auto jmp21 = beginJmp();
endJmp(jmp21, label1);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment