<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <Files>
    <License.txt Encoding="Ascii85">#eLmw8%dJxUJo$uP/Jf;Wo@5Are_k+Z}$7O,r-F^R,8K6%Ooo*+1A}5tslu.-}jU:dtPpy/ir.d]Bzo6XLb+8u56K2nURt4A73Wd_NEc+;Cca5UD,G6xBn}4E{O%#EuVIMc6NE5^rPB3OP}I@rf.*mo0+}CHS}$.v*hBMFL(1T^CaoMv]?eN(2N8m+IKiu5AgrToy}r@]H:l$YulPCyBpS3xyi1{jjcPIm0f1CZEJ0wZD]ucZu[j#?3u^wb/MVaF_Ex@U1Uwavu+adtcwnWyfp3S=!rx=Z+}0IzUlh8cMq-E@yP-:.FmLeTiC9As%==:P1c+w@!ST8X2*h_nXsbS/C_^hM%wI5^bVy5PbtXW9Ete4Z%x/d^Q1]xT-Lp/3z[g}Fs-4#=YAd1Rh2#4wkw.Omv3k[%}NakuU@sPdr.mD@h)*ht:+fFp2Bc{4PXogDf:!PIvVLB]*GyWw_MZuJ?}d6;caFiQH{=^wIt7QA[_Le6aEZR%.8X#v?53S8Z67yN8JlBk0]CI;A.H{aR!WEADKXrG9vL*Gh]c6@Fa6tgD_gj@(PFCX.:)C=rfdC)25V%d/Hei]g44R/,XNe,qSHqFqCpU(,4Y9A!$h$+*5Gezt+Y51itq;)g;m},nHzKS,tu*,4XI=9)oHo2Sdi;WoNqA=US(SM%ZWNmWO.PyWM#nrfBWPmd_+3Xg3)LAk{P^PfxZ7m*wgaT:Zx3DxQf%+iTQdW3P#{jZlX^;a4aeLT6w%::8(VuA3J;ZqZ.(mKb8M;Slvid%Njn,t^+nycx9;9v*izY;7@m3rH;Ttg!VFTZExyOnDJ;n)njzssZy]:o52HpSsA%B,x!L+ml1s8^77z7sS2pKuT1u%c_[L7s^.JO@TV6V_IOb-xTE+0^N%uctjOG!/u6]fPU}2nK5r@Ec=am4.793H43[6vkTfzoZDGeAo^B;nIWv%,1Bb{[X8;8!F2Rp%}lP3v73=xtcioXA^cX{tDDGGA!@6tj0BusKC.H.UI-);6J}jtyvP/LE1sloN3z0Vtx^rJn!IBIk0MF+ztYJFbLomiqiPP23!Xo+M_anAvPIg]?3Q]dM5DKd=oZj-;vNJBvUoi@8S!mkO_rER;$4xuiQ^A+RPKnq(dNQN(rawn]$U$3Xxf)?%rSV3f%AC)Xt.l7!;D57[Z,hpepTP]ylU.fbIW1V%gdxCZpcKoWc%!wL(av?ZA8oNq.5#dTX;P9,KqB#]7bieyC(HayFZ$/qa6.jwe}-Tvb8!3lV6gWde5]ABoggs]p9%?NQzuGQK%{{G=V,@V/+Vpz[QX=rdQS!8JXXvw$0Gds@AlZ639ACK{lcu]Iv1F(7OHyZe{bnEQPEqGaGt/*sNWJ!]IQe,o7IW#z=dALRqkAk%pOy2pXPt^K)$a!/NDZQi0Z4xvqhQfiEXk!((Z0vuHlr:z7!a52TpH02M=U!/2hjo$M}jk#0ofB4((-o3X4rk^s]8$PFoVPfAk/tFVSXG?H%PBCe3RDEiXLieb{BKtwSU$!^?]8@(Dp7VJn#L)mEiFb/t1;R(^tdVI/+eW:0HLy!0[F^*(}+]_h[06Ubuj:PX2w)rf3jH8$b4Z*m]YdY(Gy}tL(E-yf*CBo;lHEn0zm(#(_Ac%3$2POvJ7bLu/V3D$45Mv2ZG{v=L@i+clH!.,9z_KwtgGkRI.qXz.ONpf!S#+h^Sh;p?@yL^TcYAd98m#PhL;Li715u#JOQ_@0?#1(D+WkcIPyg#,Du:3I*uA!TFzN(9T1b/K615[bJ:SQJg;B@0VU#)Hd36{t0}QY9Bo%ClX^3rGGEJwpy:a)}2sT)PpPRA{c[ddxyw3[qXe$ppf,WCW4w*oUpt-OF[8,wOmdq,]^4;Oio{f[6[NG0OP:x;h,Z8Mkne4$EA}zi:pxTq6lUXC?=]E!;]V}m:$$=6@dK=b48q$cKcN}HU@G#_QS#Zb.9u)8D.c%E9#b)H]%lr2a,2ZCZyS%-+T0O3AZytX8o9^2OE4wXg8JZvb,h70dF;*k-]_JOa2$c8IDa=.v=oP)pZZMyoVI(T#[twxdylZ/@mBjMOyeR7:a.C{V?}2!435lHDm+5I%BK#HwSrPp//2+0pL?!,eB6;f!VY7$GUh@?MO5L8of^ScvXij{XlE9+%t=tCD)2V3{X[gE8S6^Lnua_a(J]2$dKHMX1u!*VM6.Lv2;heEL+a=y{dRII$4/=if][zX@@oe,=Fb7sX^BbaC=^/jaA.lqSH^A{KCoU6KJ%kq[I;=ppv:[BH6b?gJ!qtcXHxibJu[rDJ6=,Jo2NGXZ.ESg^?=%)ql7$$dbZHgGgZw^wY0U_iJUo7q]Le*Mn{*]u:kO@rmAPU_rJeMx[OnN[5KZOg.iscVBHlys%?e8e9QzBFB}Bg0bF#-Ul*T]tW:NU)60D0v(Lk7Cswf(+$T7JN]m-vTO7VePY=5VrDN?PCYr^^3ts}7L8}z1ukN(Znfw!aNkkNPxn*%:k-y%FOpN,*rw3T/dP;2VG1l2%)?]RB(/F)RgZk4gcp]:g6#XOs]VoEilKd@O;xRu1QLySZwx2BPiH{Jl{*jms3LVERLt18,IV$!pnDgyKwHbP=vzYMk_w(qHYE2ofJXuiW6foMyU0!d#kviBTN*Wk5uVXf={VYdmt$YEB+*!O!.MfM!AZBLPHhlrd?9uj7A*C.Y[0+E.x#dVnH+}$d]0R=XsET]!C$i]*H5C==qy5=B@ra=%.#zeWx0ffk)WWu[KMrN%]:X7bPeOX*f:m.{d,DP[(#*Ry^(n_?wKYI_mnkfibNKbnushV:=;mk3Ir85:VnMLRerAE+k6j5a3stV2,cWh0Cvtit,4Hrr_p)8I:,85m%F-NhjUx_GRTS3malhA:=m9i19kz^}k=Lv)Afz5XCPKKnj9(+Wph2gX;sE}-g.gR.%a)*Y_,0wTyjlr[/ngT0HOD}a?y0Cy]A/9./]]cj7*GkT%fQk[rH}M.=[yMkciGs#zD;,Ed^[A%A?0Lxx%n,0eQHoCQ#x+0O^D7#_v[-aZ,;3^Zcq,.%#:7M1D2++SXzSb/1p+UV1jU@OdfGgZd!*bJ1C-k{#St{+,.MedB(75cbrK7+7Z6@t4cH8o?fEo{xKUB4IG87tOll/$1wInF;L^U]++ElD$b?/6Y-!cjxFO;0df.4$glpXz+g188;[{m$L.Rr^;s]vk4f9hhSueY$vZ?DX:3HvD^C43OQPTzyFWo+J%.vLs62t%A^5vt=k[:b[sg%Il:T:-,@w9%NFnOFcetk_{t9@!LttD6!OY35KPq3zxa_6K.kkp{_Bq;2Q6)8O-ArA86o;fQHo$?l]U[z{Ce7MM1L]P*MhN$#F2@+UC3z4Q0OR9p05$JI.$7Y^j%g#PiUTZ7Z^kkBlB1x{sheBNPgg#^#0o-Je8pFO;9=s56NW$=Pj#{0zMlcnOc7R:B+}Ro[Wm{)1NG2MJ]_:zqQ[x{21u[YJ@d4#qTH.Yby:,:33l//yjL+oxl/BxETgoVkI!C3nC:r#Mu1D2SsvIgqTcLHd-g71nqs5bP4YzUCsjys.d+(%w([l0rF$EP)rKw[wDK4@i%=py/94?kGtcbhQJU8lhT^c!+:Ib}(=VCm-cm0C(Ac$j9gLV=!Y8DuUro;bd3-FQ*^3D7Z-NehOatgIlEc1ogxqS?LKonp2tS^S@6}_j$vw?Q?L{#6*:PzTY=F#C4tYOjuD#+1d+Z9HWSerdsSRCBeD8zNc,H:MQ3O.;s;cTI=bu%sW1s99X3#sKEfk_O^R+)HqyWE$vWD$fdDiUjo*U0(^gqVh=-$u.s67D)]ndK]t1Y!}L]GBkawp.-q,MN:hc-U{pj29?],jQ:@;Ap?(s.Fb+CsiGyi3^m_Wj_bGZ%jwF;CR@:l6o#kqqREy#0_f;yqIOueeFa9B?3*#Qn]+YED/3tW70}V8[8%}h$phuvnWPo4=MoNy%sVZ2]DmC,//7-Py}T.376J}x,=c2hDht*(bZ8HhmzA$QbWPL;/v9%i^FeBPR=]n?AWZd3OmG7woyjPQH-{W[X+j;!25Awt=Y,hgY,:=Xocju;+j?0;L:SJZ3A?VOet,JgrF:%P=Bd.iKp%YPuIsZW8[]trU]{5d#/R1HJTwv)wk5fbzLa(4e3nCcB8![4[F}uGD?+*ku!{isBF2GFDjZ1ggbM?Xe;XPyYbyNm9wsa$fzkMR[x5PC=45uPVUn9mJ+F;:%k#7A(4wC;dGMPT9Vx);+)5ITdBs@!7@)JDw0(!r6kXcdbBH]OW_(mTVSz12V_!S,trp5sHvS#8O-L)ZyY2.s-HvW%Q7+I/1N#bN.]{D00_;VC3t)+c4w,;t{4zSNqxc/6[t^lb)xnYMb4.Dz88IQ+{oLov=ItP]c;E;tefP/@*b+#vz2Vut};{Y:{nf?OV2hfg!s1nrffIE9ytM]eU#6k=;%OLh#-3R[10KI#lEa9;Z92MM}$;c9M5.5j%_ydQJ!H(y#AgAt3(WW97o?_Lq!/$^m3O0+DU!U%?WDg==qeRf.$WHSFbLaVib?u;b2[PO[N#{a.798Yj_o3c=/9N5iz.aH0^M@S2tDj#266?#/:krSQOQZNawTdP=0}cSZrv*PpTXGJn_xX?bzowgg(nBZX;JFqbWdR7L?Et.p}U,vnyi5eoe2x^@K8iVvXv@=jpP5g07PgC#l+B.M!xt2G:3dHFN/WA=n38A,=jaA[l,,ELPi]v{v4JknFF@Vmi$%($;_wf?w*#C9x33i#4UNwcV5}Flvuy93.!IZ;:^I4HZYIo%BtGwi^N$h=]zL7W+-mJV.!V*cE6UOA8N1]a-sbY2^p!;@Xw)IL77ZBp2P3Hf(qC3fXtcOkLSO%uU_C-)6%uZGW{xn(^mFtySs,Ba8p,9!bFrk$e8GO9C75F1}}Z+a,({#6VJ+a?fxs;bg5n^x8j34nsnH3#{elf@G-twkY}?jp!Ryu%ENf*+i5HsEr$GA#=8,R;p@eY3PKRwW#7ElxN?YDKwQgn?!WYfLzVcA3{pf#HsiS0m=)OrVMr=a5$RO72_$pGM-q05by:e#e8v$o?!jNd#-5iH(jqTn2I4vkgvMY_HCH++2Wvd)S%b7j3dy7Za5qo7^4{D5d-cZfJvBy-@W7t-i3G=BmWvV:__G^ji!K/D_U8THgh=6sS*GkMJ;s:T1,g#!8Q4S!EN+J:A;8KXI2_MTLq;BzxF4r%$#!:D@*;w^tdD17!?LC#nXd=I4#vekD@En1K+wj(Z0}UoL;L8:8#Uk2hq*=6si_-.LqA1(w3?$AX$=[t^+A!o#KbW7s!VkSFvM%]_E$5(:;UZe+2rvd4LnS$d!EqS-sXL!BHh^W+yRKL?kk=L3k,HH.GHrb,(V.1LIq1iPw.NieMK,-Sb%YMy??w423X[Ofd@o=yLk88oLTj!4zJ{xhD])Po@y?U^VlK3%:/n@;=ly0%]R*LK$%tWt3(bT:V[MfTT1;ZRaOd7*o18NS8t=!hi{kWBf+EiB;Vy4+VsRtm52N=s;wU;Auolp_!FJlDJr!9ofk=%g/ni*^Q1UX*.q)dsdVJukV_*s4HgbePMw!8IG/6#e,J#Q}_y7A7!S{ont.bUTMp%um=a7NFg,hNefGy$07:@r5VJLP:Ya.MlR[HMA)]u[O2W1Dm4.6=9o7hV]u_5u.h4#8/o#ZH7H]6j7HOvwBfs=[vrk3*Ml:s(gSU{vMYVs)oq{O#0::Ws9PO.xTD[HMkU@2uPN^;A_i:}n#uSsnxb%;R32;6qE:_{YeFW.$wjuRISZTJLDrSbFDa/V#t52lWM/-MV5XGh2V$?HQ_upaDELs/[=GtPgkKyJHz?,2[F@3wT:4$*C!JZ.x!aRQlK8v:D2g;{w$3#)S:#3Vg_!XNk+tk)i/e:xv[#JCoe}+xAsl(e/8F8CII2}:S9TVv(C$0r0)zcv/hDPUx@xwyQ*RpIi@LlyD}49.U}Xg=EZdNgYW4yTU=EKo8nC$$ES_XK_8Hv}ci1BFt_e}EGdAcFpOGUam*_q8%w^.EA!XO-kuEM7xzO)+zNZx,wQwQ_38fe$l=W!EVgNK^(}=zX)79msyBZ$EoY6KUqi(/H[iJ?l-_z67.P6}bg:-)4C:urWkM:uvElrNAYqUqCiLYfHQlze[6*hr-Yd04%ow*5F%]Y[zK1gMWL3cj?RW*co#T+2^#)@TFMaa8fH/{bkc%=ELna4Eei=;Gs81cp:a.7o)vzC$OOXm]]m/niABW{8L6(_VBHk+y/ICRpykTNqg6p-Z$Op?CKTHKAn:kpYc?AJAaPUeQSi]sr#OZ0L:Z]Yazu_}:@D3[%/!euOqEQtGOV{!l1^9H,AW],82w5cceQ^]Hk2IlAiF#bcCST:Y(v^I3ijpi8I2QnIuC%FD@Nz+9XjJV:a8Zv*8QeyMEi7?7.r(Cy-:w:CSaV1D)[*H2gqRecdz}E3cIi72OMJ!VnGg?({QE54Hhmz_e6,v_v)D[h%1*TSbFC4]y;kN-5[-BMyrS_0JrT.z(;@VHqb=wM7bSK{.RnS48D.Y_ZM0U)0h9s,tdY]E_51rr,.wk.xE:kc4dDxRGFmRRaU}T*VZ)iYFL0NfhUBb,:mP{hBA/IY(Vbe?cc}%gTiW/GRwqg}xY_M2xwCU;r2eFNFxoV^21xM{?kh9Gv8HtK[5m@Y!xj]9}2{/o;V2Po_Fsm_/[?sMHhRZAA,9p7eVDTpwEJ5_4oQ=7{d;aSYUFtIho7W9^iR_=.mtO/]QBO^b?n)R{aFU8t$ddBJ[!9tEV$bIuCU0l/WyOFW5=lJ7a?xYRfV$wTTo2YakJ*]zg?P*^2ov]m*RAG{1)1fo/xyNtuOYB3Yt:8oC3?FhDx?x1ZB8-zu/o{+#R#M;6z@$:n)A5Dy+1BGE3Hw_JOG8bbw7qA?igAIa9kBVfIK4y#{h]45YAbDJa9zO2uh7s;Tx,FsGG]kU3BDPocO!];*])y5s:9]SV.@Ya0u^}?uN72.@;r3vR[aRXE)*yeUO@EJLVAuQh?AymGL9O-FC(X7{E3TJVq9LI-GJbAg}oqp%m+U5Nd}-hh_?nPiQ[x1B%KZ8i0@-MNmpmR]G$Jb-EOVrmqA7BjUGWQ@o%eSesbeBIViB)wag%$Ho=?vgdjdNkQY.XL{S5i_s4J:,4#[?mV9-KLOv@]2$DO*Q]m^Ay8wH?%wThvpX4#+?QYdZ8rb]XvfY*]+xJH4:?Nr%?$R_*KHLxnx}#0hd}:b1nPMWF$Geek!1/cg{a1nE9rI8TY;Pb0UFsGg/-C=Nkgihn9aBt:+,,7UYJf:WHH8Nt0!3^A(Z$CkTy_lE?!7q7aD?%42[#A)nZBzY}!M1bnpg]B%2A4h^Bg6Pv:861uGqFKa}A3I;@a6ECWBzW:n]Eg=tPT*iMfd_5FjYC*{B:JFOHurn1ni=OdjPO35y:H-q,J.]+;Ju.]iXEqP4wZ]kU)kzQ(P;)Sf2o?[+K1wq_0*}s2P*Sg1ZaK@xS;^e2_WU/o$#edx2zCZUEpqTzB0XntvDca49hj2/359ji11d9y!b]2O7/Ka.7.jajK#3}!K#]B=#mZF;F#VU7[G=hmu%.mQRB}RhAnGo]8L_/4Ij,dRSCoLRUDO,tlBEdBU3m7shs3P]OZ0_!8R/y?WM5H^IO}u@cwGEZR-[WRPHUJ84*foqbn%T5X+Tn-V+5NCfAU5ITHoHi8l5ozdj,[eOmwnAb.#pwtn$55mtI0=Gwev6r.r.@%TunrIc9##5iFT+.a02]V1QVmkm5E]j)Rkn%Hp,quBhZA3x%CIy]q1?ww62Vaa{)k7(]pqIS+=w6ED(:AA*f}Ctd9:dB8L^[EFR/cYAap(*.hlz,E*pA5gB@cP5V3A$#EbAX+9*M1_Lx{3PaAFg,sp-K,Cz67zG^_oMsMK[_{fp.3fx+01]u+ZRW]rTj_i;F*B4[e)GV!ws+=NaedUqah9DA*]sz:L3Dx^4m_dR?T8u;.5kT_cq6y@]IVeRnn:BA4s)K}7)K%.CqF/@qd1fk4AaET@m-?:MvsFhbjg*^Xbqg5kQe2jt9:DTthQ}M7o}#ULvp8:M?T}Q.=[4pP,y#T,=_$k/_l^IPz#xBLssh]Y.aQ,rC;I0,qpXzxF_adr3kYr9ID4A?;vfDD06q;xZ{}2)!ZQ.QD[.r7;Z)!K)}hsz{FBuIHo]o5:]56K5:qmpZ_RpLkusza^Y%ZMfq?U;97pwFQMne$52WaPWTFxLkZ9KS6:@}ZR,cv#/TxS/8nXX-k/j5*TMp*9xNP/i7Lg=;hk!JRvF}4L+Q9mDiCmdt+aHD;}Fdbs4!aEVTd]5q{pXK6mQPq^yk]nWWwiMiR-03dn*V6+5m;,b4xyPDTGIxIr[sb5q#f?:f);kg6pDspx,B2!1zm!g#6.1Hb6I1Ps2$SgS^d***g#31n#Kf_474{FO[KH]z53:CPc}v[8geIN_:T_2ZU$?L2D@n!Eyxjr{,g{[4ii3m6]MKs3eXW:P?rjnQt3Q5SqyQI;DX:%A-p/CfmYwj2I6AE88W?%g#KqZM0Qoe:fQtw@ngMflu4-*eAEjQ5-%BFSi:ON6*AO6zt6GnErq,#XAf!b_)jB7knX+d9hF/OxGBc!A:+21]5/+lPFSgrE]yu*HnsJR:q,cz%@$*Al28wWAB+4.snd190-0Uce:,Va?No{sLn_b8;3Mq@;YEF$!1m*Y[2+:+#V1VS%?)[V#GzAF=loNadaTfbjA}T?UEQtNU+{GkMRC](NT#KOc$P5[.C8vQ#*;NGu}@4YM,I511Z_GLS0VL9}T@$T!}nlIl#b*P)Qw43I5%q)LA0jKIfA(@nzHxJK+pGWARNdX%MB++EtbXX,m;vBLX#TQ@YZ@57]$J@irfn%}-E.7ZE9xdjzvHaggbPrph.9TlbpjqImvi(FCSaaeG3St5pGV3QX[6TyVZo*;2%E!4q.jn;$Al=o{G=oF0E;8sOwQxokuvY3=G51;#Fu3R$V;Fok67lgUJdaVv[Vb${}N(mZ,lzfDe-%.4E#TmTyqP9+##hT{s+Hk3.YeRtR.cI(m(G2TU{DvrH?3Y2;TIhme}?p[G9!:Vx[K{Ln:aReuzLoOCbI)r[XNa@irp[hwely6kCfnajjh?RZa1v-I:;1mg6R2D+O/jj2?.7Oywx0FY-c0,%+,GLbx13UN+p1qAj6e$r=#3koxfBHTvIB41S=$iU$DR;EePg!ciT;qajF/R5fCGkp1,x:r{$z^h(2?keq3+1P#w.]MGu1!r14SiB#,(R.uo-R$)u$bI^J;Cr3E*1i3^^EQoS8+0Z(cPc?AxbKB!94hLFjF0Kdf}l8)8?l)DU:U#%MBI=qEc2k0EM4]7mC%*+@yOB3:hTCH9vKsAc#KM:@y{kd^XH?D0/=wvhiqqT+R2%aq2Mx-p8hpUW#VGvOh^G?4yFokUMDjsolVLa=ERViojv].x;m_1U5N/MQ(0sBhht$eDW:Y^:^bj7xjiLrxAFwzh7k9AmQ3P$I04LFs@4sWI6o)H:5ZoWl9pRM]APY/-.ZZ#xp89,Ds2^]!l(dAcpM1REtWcpxs%2RUap36RjRmmPAnQsEL%xT?5LcF_!NFy:/te]CDn@Jf3iPa@@DE=mkBq;aPL:CTcGi@mKC5Dk9}DbA0-U2Gdu}3rRF=0470m+c5):FMaZc:fn{Dv[X/OSKY?h3U8.]qfaMtJ*W8e-p6M#/x(*$vm2zXz_mLC+Hjhsl1}L;[]@VQR/UHJt(i!spD2KgZ{D0%$QFe-/W8ZNqhNrv1LZqNGM5{-l!I(W6.}32B@Tv!Q=l!/U^?)ubk8tKOhS,87/:13iSWetXTidKU0VeU=9fzoHeH@A#HHoayBi}.rNRnFo18$?7)4:mtA7Bn8;nb7iw;MGofGMuAHU-Z4hueBC{kDySW+@2X1b6B0ar/JEp3SIlGB=geaJ:Ob2Wf2J-#/SdvLPrmRuO*1oi_=KAwrcXGnZMy5U#P!g+hBw[5/ECSkMY,ps*yX_e00;G=ZP=dY@Rd[JECKM[bLmnIx%rVlEMYiir)Xew:cH4)}9R4XFon{[Dp6Hd}RqpSxi4s4i.YXZaNHqk3N9w@)-7+PJ3TR1psIiN}^Uf7dQ.iEuZ9{Wh*2;py*d:l9eLBZq!aLCA0qo/$1nbsG!#(?b:t@jJ%%SB$lzR2$Ms;tZ)wpvPwP3sNFBy?yo]O,-I;+unPske@qcS},ni65Z;[=Xv4IKspys^Iv!.dp@VA1J-wb*yAD7u*FqCr@jlW8%H:Z73MM/O;w=Z4q5xQN@WcKX_xT+.I0ksM%:n0{UkQlnB++nmZ2y,rhoRNDw#/ry#FJ01+yQPjSoJvCMGMP;vM4;kUS%kxq[:1Frk5OFcyrx0U9iCub4nPQcF0EqWeTTzNg:?^]:{XH(5-x_;o0e8SgQb)cDKR-8_C?g,gvn@g2Ve#ApolN!SKrZFF5#DquDnc.$mKd,A}1ly^;l}mpyy@=EYl4LwR=.gqG2_;*:b$GepudtnJ0wVnv/qub-$R!S6iB[z.;Y_H!qLcmM3YRO}0FEu?MOLMLjLTBEj4?fJGadEO*lM;c,-m7cTJ2;o#W[8]1t379+@OMF(sZbAe{Z#g9^/c:.a2.R$APk53GCnD]JQcU/lv*R@R9)_c[O}d?tiM[r4^jJV/GO!@mHS,)kIb{zjRWsHy3RAi3OirT6[we$DM.TjRIU.K0/[ZI9o{SUQb93NTqKE6z,C}6fG;R0e;$!i#3pv=jUjT=Q:ijaz,nf2$PIXBzP}+paML{:#et1LAZ]7il-6Y*t$mRu}u3GYLZQuJRnoi?OzTf#Nz%/$zm9PqAXh5nru?aaF;Zd]0LW6GL66X;,DBAL.gQ9OnGu4wVjd5BIHZ}()D[!^$)sJ.r;5gz0qciztu*BO?*[mb%L;U:;.M(TzOIf+ULmDMssx.p-s-]%@hPLy)zB9C$%xKqr{Nc?.L)E+4v$3A5.ez^icQlyCM-*X]gL=Td3mY?J-!d1c4:yH7(EY$:##yv^eeCgU-lai-n6%([]J]XLtaN4lWy]Cp2BoC#uc_zS-5ynIeu6VmvUzVUgR,Zix%t^G}h(-_K1fuEX}^uvT_lUYtx#Qto/AFu=.MzwAbtxJa_sh0;c2:7fTa/:mk5+8yliyBJSea+T*DJKB/6OVb_p5bE3:b5TRDqZLMYA%TSF^;GGUoaN+SnD*?3a8H562[Xp=0g_Hh$b+g(2/qu/C0xrCZhV?wpR[}OTJNs-@m^C!zEc;1C_$!*]LRYsskqT[-jIuF=k6vVz5p#?XLvA22VqS54m3k?nS*{VTp3m]++gj#KejAE8RGfIV?sfx]]-vk6$9yu7!y}[n,Tb!(+psGD3,hGjPV[xQ@SxRnM:m?xLF11oC#;I/m,,@Uxtz![VMw#xDfOzhz;b;D2{/9o7!us_Ir2sK-[]o(Y49y*-:@(=YDq7%aw#e(SI#1MwYEf=)g=Jc]-i8(O;qjhkwc5o0fL#hws1tgToQ,^3WeX:IHTsd:FbY[*ef@-7zSKujJXw(j$FL%v:OPxr8s}BsX;_^@1zK%Rno}aLG]ekNTl+p=WXW;mM$%n/jhkzZyjQealy(eaAn8RWy4S#f;h?lS*RRw_r%1E==xU.0C?;MY/kw6zPdQ4[nw$jI]..H*zdu:8i7UBSsEtl6=i}@t-Mf.eIV*-p)MV;f(Q$UAZ5s-nd[85jfuDUaQ(bMcnBy*H8VH.Wc$IlkD=2HH7%RFup%zR8Mji5sYQK6#C{w5S[!$ZIIvN5*zlvvD+2gl-?8!8cT1HdD,K7]wZ,-Pp9Z[!*eXXagKjmM?RENF[B]_TvE;ch.0is79@([qoqc3d::2@A1^FA4iP7QC{M%6viaKYMf_s5e=H)EUqVuUR:b32DJH!P:ac4s^$ciaF1_^;J4;d*TDS]%T$!5Oc98yXf_R08!3e7:LFXqoJ{^*mAD@3AS[h,bDC:qD_931d4[($,89B7Et*TXzoAN@f:CUmT9Hh5Zfh}$0mxEOzF2BPeRoY.p]]6@BZAJx=$FKbQpTJo40/Ts[*8Dm1J96?yIbZpWKvp.Oen2=:i#q}_#mO,dJS2O1.}gOHhq5hwEaJ_JC6zD]DR4r)P}ap/#k)p$DZ+3u-xHG17}GC{QcgI5(+F/kIe;sH4YYD;i,iFTa5vv9O3Z.jT{/c!!{3mgl/OPZq6pYQ=9khdf9:Elo,95bpQpb!sL+MY@]hF)iC=_Z4BR2Grc{1;cC(.ACl8@9dP.g]xfB3f%r5w)l)+mJPG}P_c8%,7xIwrq[4kvgj^ci[N%HgMC[ny1-yrW]199rNqfYNEhEULc=r,-o!aXW@FoBDu=byJo7)oyf@[;e8w)#ig4Oa+lyOnF,TNi{,g?C)HT2F{qYkYr?L,-_y_F}VAyby(CqZo;z^ep#VX3#MlFNjeOSDs;J=uR;B#JO1$iKiI9-)PrSxJcAT#fFQ=d$,t[W},zn/}IAdxW8ZAJbudF-ri@QMRxgaxp;ST7jLeYdG;hApDq9Gae4EY-7W9muO1)lSJ_6S,2Zc+dUc7%vg@gi3wq^qdH0xoe7C(GZZX5h*x$D-cwFH5*lK(Ce*YJz]9/cqz58@)]sLkY[U]ujYI*B.BlXWj0Kb@sE$$yz%ZKdl^]S_@*pAT0_ANT[)GPR+arOA[[QPXX$L)7h;^Ira*y-9(Emu6=@55=6mk$p[2,gs2PlPY(%hk;0@?l5;DbL:{2sgKn,4YJRNRK[//}+xD;qZArH2)YL^pCCQbMa/%y]m{c8)42wk2f=0vvDCSxcqRvpv8Q,zq??^UI-(.3{XHL;ftXLEkW7*uOAkE9O5wz?qTf0xx]fCrPHQi#o4FZ59B}-/:0n{XTY^*cC}!FynI}!O1nr8)]+kP-YY9[A0C-a+Voz2?^+]t,/)d+miND_E{0wm%e%$u9:y7_y{!pOw;KhJKV1kI-M2{u9RgY]$qhtm]74Cw![77Lalic6547YNk-[,jU,$O8=pQ*Tu81)}.aE(@eucgWV*BUu=lyaWd$oFt%}3JByuJB#]RQT88De;m.l-O/Fy^;sv+K?w3UCTLc)r*H[,_MJ$q3K.%kpM/zqrn]hr8wF3jd,,NkT}!u7zDU542wFGJT,fWDDAEi}up!E(V^M0a3hhB1CiJvoXPEVg9LzX4kh5ERR:/$3?0e*4y,*c:};MLkwfhTU:g#xF.;d6L@CtdiX$kxw=@E!J1k3SNB)5@.nAEE;[nc=q{tYX1@s=Vpx^Puq*A159c]xL$-QLQ)nH*ZOjry_CGI;ZF#e##{-$:u2?NBK2n;9mGb9SM@K*MH2(d2e%AxPMd2m#VRDcqc5,2x75#{BJXj?y9iaUlJ{W5R?cVlbDpd^cMUX:-a-FYYr]1f$St@AeBZjmuQaK%Psf$z%B%.-k%!?l?f:e*}Mh:bQ5X:_.X#*8TrFGX-IA[nd6-%UopuT*AtBCfQO3Ng)b4b/X^7@W!kTN5jjqXkZ,}mj$MF#O+s^a:</License.txt>
    <OCTLogoFooter.lua Encoding="Ascii85">l},w}/2Df8YXYRdfu}wVVns/dyTt-Q5j(fvfU[{R7d-=%(:O?4p-F,H=YQUu?D4vj$,DcbIoRgRo8fTYaEAH(r%#^m+SZk$2VN0$hZ,kZQEyg_-3T-GOlEX-b/.aLo#6!_6QT4Uk@z2i2@O!fh1R9_c6ljE!qb9atqnxQLM_@ilx)#qX(RSB]D:c6o(2otzJ9rx()BUDh0sKf#Zo+^MtnFOLKD]?XqH/I15I4:B=NY#Wn-EWuE-cKh;5K(0m}dSMb1vW+l+HY8SlSM#*F$U:;:RPpti*_y*4%68f=x@@EFR36((F#gGk+OqEs-3OGP0W^j/^)nxmkDKuLylK^%2]uO(x;XMkZM#SGc{nGIq4obqf_t*s+2c,a)oaSF1N0sNV7:d#4yW,.]w51E*%1VKom*R-#WZy.${/7f*Ok.tkIiA;/@QHs?6gMJl-U1KL]xLHuW!X/bzW:o:ncI]avho)wKHJr+w.3SQ#g_nPgm:M_23l0tupz%GUOAZE?4TaWXwXc05bXjOn-_owwDWB56Oy,MBG#Dt2d4@=XL_dv0@o%Kg6mk[.5nNR!rVvirhk97B5u?pwVbWD%b2Gu8#Rduil*i!?1%+JQI_=L95sf)6dj1L+G-N3gYm:bV]py_%q5;/#g,?EDAnzrWZZDJ4gJ42lt:jqy3Asa8t{q7!bD^mth8QLk$-LRgzLBTfuRVsqdBKadtKAr/N8Mairo2K729o5!aN#_aLQ#9wtaqx;V!c#ItTh6n5H3rCC0d(ta.TF6EiCtFfu)oocAN:Qn,fv5z:*SSF^ucv0S!L2TvuAhdFFM$a^z8_echmwLZy06Puj4!fxk[XW2hHy-85/iMSWz[V]{8E9(m2%%buKiUsduyEYhwRGNQB.yKt01Q{x4t]!9dZUB/UG13G{;q=YMA,fKkpu3MPy5/{/cy2f-{b,3VmB%{ge=-jo{=Yvj)M{i6ICP(pqOt%[_RVg@)I!gKu/Idyn$@:W$4RQLmlmd#aQ4J0-6cQ=Ms({?BFVvLsC2Q*+hOn2l;u8J357:vO1FNrMOWBaYR/-rC5Zfmp@I%(q;@)GD+TUX8@a39vGoEK+JU0;^c)V$,x^*dfW8dFN3SmbdPyPA4-zWojJ21R6syXehg/VB/dkYT.e,#eog)F/rs*zI06F?7?2paCbp/W!/ub6$KN5OUMCwXtWQ/_*L9f(H]$$OFvZ$ICBzU:@2boO3zH54qHw;*+wQY$}C#-]4,Hr.YLT1)_;Kt4f#n,Wi-kNBUwHD7Os9Dy6[*sN!#b1ICD3U]#sfM]-#3u]JHFR@^dG2(VXKdXP}P/3-!gF5J^mB.8Z=@%.36Lc$^V[emUf9I-t0OkiTzt%IfABH/%8^@!,KJ07E94t58;.Y;WdbW8FICaC!,vVULUUFavfDC;=,Zr29/V?lfSqZtj?E(3X,3$x?4rm;D7yofWRJ}[^UA^Y$.$llN:NoJ}xzpJ.jg2U3!u$krwHW[tht4IshDnJcKS64tweybSOyX@1%r8*K.irv5*VFQyyxUFA)N_a2)6u3^.ZB6Kg1qM5Tee*CHv{%Mb9D8kvaWL0;HWa/^[zIE#0mP}+?WFarU)AUhj)[@rsKKP@.l{TYW/?VZkUDHkADC</OCTLogoFooter.lua>
    <OCTfooterlogo.png Encoding="Ascii85">Em^R!8[m-WQYgg:w79#wJH?3*AvhGLw73:xZpGbcaVhR?#U.4AOMv1U?{:,pyWC})H,PxYeRg*^ncSt*0^^]}s]8j]h}EGJ08B+%nNI*!LLB@D@fe0nTLB,)3U5%%l.vdruz#PQ9mR:o37VsVo)lkgj]#0C0Ayql!iA]:iXUZB[mRjE2;^R%-8Q)0%tlMsRocPM(eGl$?NbiLwlsCMw4n5]as5ImulP}jg544o0H6dY%1CK[Up}$D%,l)gyXz^p:cwc48LQ?N@Ovj)r#4(7/LvvA6u^5EI_YfDQZU5j8#Y)DytMEgW2TQ4wdb1p!@kMi,9QabpNIQy2ZdJz5eW(22V-n}=XDf/iha##0Pf8LLw(]Oe9tQk,;U2Uh22!w%8.-}1sylLr3fgC%S;]5^z^wB^/NEHXk$%-nHNX:yS8}9eDW@ES74IFP8JjnAVnd4wcQ/ngc@fr6Ofct=-!Nf!]DbA=lnV5u)I*4[2!otlj[w!ojphBF3fLk9,0E}I$sAQd!rj/KHSK_.BA4]J%BY:f@+%58ug$3cM76K2:sg_Z[C^4P_Nr]xKX8D$#%K[XTMv6a^OI+S?c5Y^IT=CcJMNezj8Lc@JaHIklIhgiw7iM-/R)EY#)]l@tl+H=Gt6rl*c]0(Td)8P]4^L;.c^!?Kzwf4P[O+p;2%OKv}[rLT$W%4tU9CoH?Uwr7;GpNl40i#fe.vTfi]SfNhI;22g?4RVel)]v)B.CrWXUq{ho1kLAWWheKM3!k2f_D,k!mi},3lfP@KOiv9+7Vr0S+$)qbY67rWv[Ub[[ftVu!3+53sgg_kSiN*Bq*8.=W#G,KOE8zmhYK;Ec%fAsiaT))Np^;k}plZa1KL2*16%O:$9g4ekf]Ie/TV$Z,=C#R^gy_JlhFRUwl!hNTIB*Tg^S5HOK#+q94oNh{0Lm/]Bc,5-,?/B;-M4o-lmonocq4%i23bY!^}+#Vk?R]#er:My=0*)8La5-HTwz8_k[,E+W!{+d;:m^520.MnTR:-UX1t?h,+dD/mnCMt(UpZBp?o{z;!.6{iXVYQ@33iUn!wP#OD!ZYA[#c@DRw2@?zZ;F(Aps4K*(k][c#V)J:mIx!-d)s*Lm3-)kcA$=B8%1@a9^G[jGHE.NIqNT^wT?[95.1VfaVgyCBPmB,?Js:}V,w!JSypOCSA=s+=22^@GV%%]b0%+8Ix2%s(4F=8M}4^}4{{aihk-+SA2ehV$!IL1.zdJDT{#(P[N{4sIE%a64FDDB5^w-ZwWJn7bC3q^^Q%PEK^ueeIx=#1CD,5:,X)!{l(ZeYUNKNI8kkTOukwUFTnicbe/jPd^NW%m^:(9wRj.(Ir0V1DY5L$3={}dDSypY4%X!j+(:o1pj_9ONbGAROQt113%:m,}{BWpdy@4tjN^+PeS[Ly5w(s6]Eb{6%joJes#76,MToYH.X!=zPc)F9zXqW;cb{dLik2(MQ[;y;8AQmZy[im)+ppGS/;bH^e.{:orc[6(/Tson#R/#?JJK1J)DFpyN5bz6c5Ep[}U.niYNc_K%n$E_HwC#%VMlByOvxgc#_Zy,CvkE+g#@b!yB8x+a;_-iIo]JPOd%ue!x(l;CwMZM,w8bv2*?VbOk5A4elLX9vRF3U^kGl@,Asl#*aeAc--wCqXkj(Q5Rq+KKV{{AYNfMkdWKrZ9eMkU*8A}$m%l,g;Q4#SS!e@rQMa!Q1Nt(n_ZX6l3JN.Z_gsVP[%W7kLMP0Im_je3e1YjVbw0n4IlpKLe^j#9)yUK7CJJiq^9,YQU*(fMwhBhkxu3-Xb3Uji(.u8hE(nZOIS!}$;-[Yk{eQtwlQ)1FhLj}!jvt8zZtz{deU].gY${BhhmY=J!9#:StmDIFFd[Mbq,{FU]me=d{6LP)4pQM(_m-TE(;cI(*mQct1(-sHk^)A$=-lD,8.{oc5}z7:z8W{Fm%C.j;dd8e^ep7LX_?AIT%*T7mBEH%oi[ulxKky$gh*LU8M=sg#2$^YeFhqh;=Sth;eXlzL0xIq0bK@3.LoiEr#Dk$wkSr2MD9MY{ea}^4,9$D[i!70ixs[I-px)=hg*iEq_ZdJGP7Mj;Q[?HwiQ-[6TO8^1.e_@F)max*^v3Tn,i%3*nc}YoCG(pPg?hx$]hHGMX$?8m,p3#Q;tP:c{:7ktV$iiggbPPft%$A*hooozFqvcI^,)G1+2*xZR0Kv=ZdKx4iue#fE:FAR$3An*dIdD?)E;zMwDznQh/KQ_2^bzb61MT]9heVqw:!BU1g=DXS%p6op5HSD-ZIThh*ZW6aE$166qzX%QODWI7GZOQ#rh8H%Zr(pTA_Z5ydmds9XBOi{,YqL:]mBE@FSn)^=WU?;z)j_of#1,,+SO;.b8)HRvdm2BbU%S-3Z,lH#G8!rS#R#w^-HBQ1m2S0Kqb5e39KIeQ-YBGM2F1K8ce,v!G3R#X/hDY3z91@XRRa:E6tEgx7I5nzk1ShI%96@d+ap^r9*hs#z({s.@fcKJHd^Pn[%9S!si.B!,P.*=Mpvv2:)eRtQSUae5%D3lS9t:T8M]yM.haXN.4*.P_3T}i.;{t%J8)yLEu!GdWvlc[hVom.%aV)W_sN,tw0C}rHlLN*hK:ikih1C]p(#e%G7-MV-?xVTBi9gN@cxZDCjBV#{5u{X16e74SsLc(,DjD$_+Z7;U6]97ePHOl237VT_5;3qxzn%/@p,f5IS0]KWF28#;=zg,c[+O[r]M[V4WiYB$;{@Y1/.9RPyH3f3-5pUG^tV{SdG4)0*Uxe+]h_$(r1:_{b44*m?[w%nBk*N8w]^%dK;V*7O0Dx?,].,0/Bq)8T,GY0=m*!j%:Ti!9_37-Xh[h?NKX%KODT%0zNm9HCN9SfCHbkzXXXHV;}w-Ea.8X3g3#h,sy,GCw9Va0aX2euvBIND6jtTARliQ+j{cqMg;7ZcVR-B0Vr{F,,{nxb]K*WyAlK]q+Hd1%qsFt2]^X?#Bo5ElZwfU3J_J}9oxUc5%8^;Od;3UM9i4B2jU=,Bxy]c81wULJ2)%fuI9t{8h/V=;eT@Jr%%NNDA4cv}qL.Dpyf5%Q.nOnfXW.OmK.VdPrsVH1[{sG?0jb$^)n%UvWA=:+R6POJX5$1gyH+[DZ=}EN*Y{aT;FCeZr$i6}dh5p*4]Qw,W)*#TfxqATe?%a]GV*gD:]uMhR0eCMuExaCa2f)d5iNg}(o*x9vZh0.Vywp.)pMo(P31$UB@c7K3=oP)^hqLyB;Le+QGx:UnTGJ@n$5X)d)sdIHDTsD5w_QZ-y?wrX$.#+ZJ7FO*xfR7$ARUI3Vpr/NdwU%#gn_c]uf2-nY{zQ+NEJi6f5(_hd_Z$fBOf+kQh)i8dLRd2PU,.Wp63F-zL.WrHQDws035{%(R8Zdr#u,:X3$V7XBKmULZPbdDB6$Cl}j-cRQWkpGlM4-O;u96Mc);QCiBqOpcsc_6$@JHLJAIoGa(h8h=@Z0,?pE?CsFY=,Vra?(O6mOam1-[tMCPUwUMh8#1R0N^bYu.Pk$Q.Dhnm@k+UZGHG1qC=x#0^^o8W^bta3j;N-mqJ?/e-03?gMY][$IjT:N.rTz4x1a#Kn-CrNMB*z+tBnuO0rK#+J{wU0]}atGLkHNj9z#?IJlh/0knQ/_5FmQyib:vsrvap0g4i5N9=zxmiY^N$FMi4UZ^qk2,XJHggQU#aTMI-54jj=feQ#TE%saSfydSWIN!4qMC+.R]q$b_:.6XpX5W4C0mqk9P*CtQ[bGXVk/1+D5xV[]4Xkj(#p)TqSrgnCy6{VX(m4I%=B}B-Lg^Q!ghl(b:!T-X-56ej8N]hUCING-a.n=w^ak)bLVcB0^?Jj_{@KYCJU+]u^#1+8G]mEvB?yGK=r[P.(16P?-p*xV2Mxzk1T[(6siIiNO.Hd%KuH1Ovb(Bj=)05F4.fxsRC,T9*?mJuJ#%AV#bL=f(brEdRg.2:G3ZihM=Tst4=u+as=7AgF4i/l6O_j(w!.g%NB$V)I=F,;.pDP2{Zgi6Q!=RVj+Ui[!p3SLi9b-;AzpmU*-$(Q#2w5U0cXFiAkMvA+c.,qgl$V(mCsVBrfKmVy4+S8Wb-wk$XMWzp,xY}#IW4_64kc9dd+^-RJ89Kxf:bEQu{+6CL(JK]n3Ad!30K^ZF7-S=c}zm+TRa};e#Af297JLE%So*]owVl+W?6rwD!T;oJFvB_oH=uT6o!+QVjSr^S:{9%5b?uV?!!xG/y5Sz7Yr1SsBPn7G;TQi2qe)$=C6)WyDARQ/^LHZUFF%ArBfeD:Y0qDF1n):SOE4-nBymfOg0Mts]ieUd%eh)%=B/H5_mt.j)SBH%/0EvL$@c7u6usS[N8i+E{z/e(0U39E{%Wj8*n=[N1NLc5Bgh)NI#Xjm_}*O)cK+5iHUc;7!7l?X0ZfBx}tjl./?mjB:nIaWo2c59N@KbY+sX[Z$Dpw8A$DI.syBmxt%Sp9QWbDyYKw2(il@ZzIh9U,.bPl?3HPluLZagFVvryBsc%[!UB@xmJofk]E{UW)#5W58dP[69p9e;oOx=!ti0%%f=p.-e:_[lNv$oMAD^h;nJ}qEa605GOP9Mw;PE*ef.}DSF)TbykAjarf46OI+tp!3oP@vsV2E[5Yvy}Q;vTy++:6TeCc)})0qNKd42fMVErpTEAExc_4#wu5YkMdM)5hQ]9P8=4-7W1zt[t]*[vT]fr#/d8d$3Cok)Ca9QIup}PF]TY*a,pxd^mV,buw-bxip4wT$l(@X+Hm:4[ub)kl^;eJwvFpGl,w/eKscge%g#@_8./WisIdS+)*(I8FEd.(N0r59WgCtm,E59;b_sW/cVbt2tQiR*;?9/AL_)S^pRt!v/U2;Ok[}oABv_zvn0VlY1s?!Z,@ZUWny9J*BQlZ;R+FvFrXpwVKK(E+8-Dp-2a#LRnNCrkLMg]-QeHm-+]VO1jw=X%/nGqX!hES7i_DfWAH-fF1jlA@ShG^L59Sj72Ff)YSx}eO^;d[-C?SE2Y?)Xo,3ua6*{DM3.rXi=.xM{d%.!9Ev27hXR{-*PyOi8%=EitZwOiQh8/U)Ci0Nf/m8W.@l^@V,]d.;xMw/iqCDtd9ns?*PGQr?@avgjx%m}kfNRhdkt@yLL2Jm-)rlFTx}ks!seOk(%7GsmBXj((K*Z}mHTMmHw#Tpdw;i6qyWSVu^lE3/irilDeSH@)O/^GpI{9i(EHqVF+?ZV3]/V^TYi/i/F45UhmR#^xKZcB{;c7@@7F$ILPWaB*U-#A4K90:$4X(S(J$0$_T71y:2E$sspj7=_37*6fL0zRwKtUTr58YJVbfa:{*rn}#lso1Cj(M%;.3Rw][py*8d9nozHi_0j%clWG,t$eYfhqkhW0l-.evAVRg2RdW^50N6*5]36ivkz,F1FLjk^z_nqvg%[+[Ybyw9XqZ*l{KbT_.j+Z3A5O0!qgJ+xXgq!_Va/t%ua{6$XQgHRc8%VG_/f*h0cNIp4R?j6qPhP*rgzJw2?$]B=I3?PYaD.S@ivIxd%P3c:h@#9rKTNVpK{FbXRjtNz}k4.@;D:fP}=Z7rGT.,!_sYXrfkvtVqeb;mmsjV9Fxn7I.?Xh{6@b/=-@:=hyrUm}FiChSo:7jxZRtrP9YBM;vP:n;IvL*xz:r;0[m4[{}6x0=Z[)F_[+@Fj5r*C3HHx(8f}4tx9JLP}ud*?Eb/dD{W$*B+J,$_^!$Vob3JIt:[,yv6xJUO-pv7-Xy-u5UstKQJ{^l1AAaGj;};J6^3-1r{JAe_BNv;4]W4u?qo9WnQp*G.ruh=t)$j4METw$XZ*!Z7p_Mc^v)NQ2XO=x#-LN(h[zJdEx79WOQ0v0r7$_Os9.KnAKGV(FvYL%tlUN$jZ+xQK**;sZ/+oE2L#{5nv)iwyMy^e_r+b#n)6vWSCv7^eUi6zEiN%xT;6+.}A+8,90fS*lfdtR}Va]/Wp$s2m.=DqX?KlK8;HOJI-M0w:xolfz@Kg,+ED_VX?_5W+vEQm%11OGu}KJ2%O{SgVxSs^Nfkzs!{]GL)/m[E[4)tlgtxES(q!Czex1shZCazsmFP0?6!^Z0YgdQ/WODXk-X8*1$wiPn47zCT-?:Iy{}-zH-+FZNLlp3V);F-V/RB/dze7D.?CYiQ%fVSfcKFRWlaY/x6/iv%b8+hXyb8Dw7u68+BPomPt5q@t[U67LW.Y_Hca$xx^#z-dlA16yq(vbCPC}H1l6AG:JE)^0S#O}N4Cnn$vflaS.j45,P=}s/pG}ma:v=KsF^:50ih3G@yHaFZ%Tp[xHf}2r+H1I/S;h]$(2zdx%NrmH?B@6v;D1/lJrg=w0fNP/c@OU8UAcMSs*u^$$O$AoOL{-VOrv;.;7t.iaAp.TJI^$u8J)-QkU8lAoKDY+RP;fxSi%++{K1fkAll1cvaz01FcH=y!.BUQnMd(ek+z?D]pa3tHtpImL49ik2sKxa8jlAiUr%mRnuQl0{M7i18VJH,v+S6$KRNxkW*p3wgLoj=Kgiz(UbFfUB+!n5nir}B@n-L7Ebm8P_1J7x4vhOGv?w1RV7Is-R4!ra4z0ia/}TmTRVfk^RS_dcr]xQ;vcodoJGWI=lsFXZ}OAkVku8X!8SD$li_x7%+,]rKX/so792Cj+;^%Sa5J5}/mKh+fsx,5-;dj:!$0Zx,ww8oiA]0{nM?IW*ck2j,V{V^[?g^xf$v.Tt4e3CsQ.:bT$Cn5_Gny^XcQeqB$wK2!($sNw}m.^w+5d;P}YvDyqnHo],^{G9paU/^e*KA$$@/$c1q/=KiXEYBb6?p4:.g(!lHT08{d*z.:2A_Uzgps%baNF3ZC5TyAJ8GofMkBw]b8M]ksH}%.R0t%QKjinYF^6Q[)zbHK}+J3p(db2Ld=E(uKY,+_55]+BigZ*[!XU/=Z1ES$kBcm0j9{yV}CTu.kjR70FzCdR+vQ-;({i-NMqcp}V/C7F*npx{hUIYwK?7;;].?Nc6WH%f3vI]N_W[/UB;7bhW9J$!dsr]QiHJI}^H#iCpP(m+fo[umXTt^#6$8m]eYS7@p6K?,),a[hO_fz(DjSGe0uSuIv^34pQ.)e6c4tE3T6*ufA5GWcOS1Omj_0;ohmi=g@6fE.4Yt^XpvjjU=#jVR?N87V!t6?MABnTp1dHYeUcMDs!oe--C0FU6IGAl4OVSWx@b]Ri{;T87pn4#:z_2!]8#LwW2P#KLXjkGIDXERX+*8OdYg-P7W^QXKa/.B8u_0F{.9vxi:a]1cNo[2Bn$.:Y![,ZIOHf74F,+:nd=CT}3}H$lVbhX#/JhuOZ$V.T-$98%_44sDlDm+H6W,ACRQO^qP0R)lG7:OjAaKV44E-+Pc}-s^4K0pX)e{%B:3-RDQJOAZH}sRzH*hd678bNo6.$8*Uk(#XoXW;oi[h1JHsX?+}1f*:]aF)Dy.E,)f6O0_)tb!%^!YEhhte@V(zrCay*7Z^)9-U3nm;4ZdU}jcibFg[4_n!]i.RJzh,HU*Bd2HoSEJ/=9].FliQ5oA#kR],-;IrJu{C%BxZ*L4S(=Pt]MptA90=DSEQ9qwjw^.cY-d(1L.pw_xXs@yFE9b6RVud[_FLQ+Vf)9*MR..TwXh!k,BEV.rlN]R9?(D0o;0%+/^+3_1*w;]4m=3$y7;+4uNrZ]*6n]F=*II,e.7IRHU.;*=82U:fDY1ENe^-Lc5imP@R++tzznilWQPmVY+];,2?m*%N_KkqJnGk0]RnSgaoOP2_9o3;El?A(%NqtW(OJ0Vn08.#rHK2g(]fY%8vD$_P1{42hWU=4,V?(TCCxgp1S31n,mHXyVb.y%EYt!Yjo;?:sjbOTWTC6q+]tjkLqu1l/tbzUvsni=09$,UxDb)uEyo1[tdoLM4IswMWtOJFIIU7{V$7d+g(NclbcH?UEb3g;Ee-813c6CTj1,M}?R]@Uuz_KbNZ_(2,8w(PI%SlF/yP%J]Awjqr:rgVFHlIYBQzT6_P^P8,@:8eWWO:AO$yEs,HRQ(tbL;LHu$SO)QQ$2wI)!!QY}+6(G+dYls5SE%IWRYKQm$0K3_Ru}G4Z*_!WZ%z!1BqfR+lbSaCGD_h^!}Pn1pEj?;x2L(OJrcRo(hC4:(7qc+3x$V@8sm;*-^@*7]ErLS=0/_jq#2Tt.mOODul+;aV/Q7w*^o0k8!-XE=m9[DjE,wyw;I$#CCwJ.5tA*R6vzJ{kg4)WrqGLtWpkMixc..aj:+E!c0E+AQdTz4y)RX-CXHQFr7Vr=Aj!Dhv[G$jaXFginM/+x:DyVh#}0/VgAs){S=!UmVc+nxhzhc9T@t_tmDyQyB[:6!O]/YQcU+8kkyD3u800gsgC1vc=eBKi:xG?k;b?.h:4%i6Yot/:MNLT$s)y2Jg3;p{7Otd)wOXcAnro}TG)zcYFfiHH40h0Dzk1/JMevWwx.4/K^)A)$8W+Esu_g%6lf6)W!bI+*D,7GM0/d;ByT}([kJLbB,kYY}u)D*mr)d;..uXT/6D!STmJhfFZr-?QBdSJ^.da1^uPL!t+YuV$-O9=)1yy]jd#y_GWDr+{ys-;jJyLeTabY.53.)XZ-XIIo)n]^qU2c0H:3Z:ZLw=NyOh:k7W;R(96KqnIIfZ:,$x1xh.J;/3QwDeZ,34?j2V-DlYEMxRy3YWY#BQNT,8;APK;V:NzhGshN[%[*x}ck#OGc;-grbk56nnM5H{WmeKUE#Nm.qNq*^5!liJYl##D#kf^Zl3]8F36f[kwcN]?,vD[faBb6SNj-4;y$V:EbZ1pjqmvyVXb!$1!c=Jf^o9MJk=xLOkY@9pPhAmW+F=/M;R#9E;;*5Uoo)^9LF)xDO7nE1VE$6m,?Lo9wBqmPG0UVf_M*@8mfga.5Mt:!,TdQ]C)bP^YYP#BHVvRFggT*2+k:b+h4Y.^#F!lKrIVe_=RGM=GxUFezqdHh)r?4r9-2ALX:E94qPs1X;!yFDCs[HV,j!F3HJU[e]8k5el(T+RI+*?-%uN9Inql2F^DH_3Zmoz*#v^GT:mbeF=(:$-#^ueLMWN2Z;urrt[rMunL?3!]X3VBl0B=;r3ZuLWr-=fY--3J=ezWNqHH2s*QRYH35Uc:aUvM3e6bMZ78ukes}%TUywurB[Y3SPbUba:-K7?K4dL2Xu8NJ](}^$%vcl@y3ANCG7-xMB=y!#T,fU7f!pu-gNN05(#3G!LI4wW!W-HjLzZS1!x0HVvDyEgSkVMLiLM+pPY70xS2wcFhH+hwUijUc5pYc5d[0=a]s5{dDM@MFSIIVBD+2?k,*sjO;sAb:NLzHXu^Lux#HtYWOPM{%n$KpFyAi4)DGsLIQ#5UJO6o/Yv{auqv%5#.m/+rzU4dQP4@C;011ls=;itqEX:09+ak$u/w@_);#LVUL9a,F;)U?BMD!*I:H,x,!ST91C[v=qcuW{q)Ua7;P=K1N7uhZ!*$VX@rIEI#MSfpw;TxIEDy$tmu-KX:3$!WYB?lM.,qboZp[E%U-jeeLjlN9j%zO^?T-^NsIfNA4werPh%$Bo0vXIu2!6CWZMRoBYwtVN5cLC4{RwO[6GT9:k[9D7)(=5GuTry[-1yu9z2*FQteQUiT!2KQj+kY46$8miEkQG0h+#S/TX]5E3;t.t38kJ6[B,(CAQWWx0]!CoE4z0nO@+#tHzpmL.IGSkIoQvQyP+XAuSG;o(1b^X=L9j(C=Nk.3Ce$RzLBm2;DBOmm{ySftNRWE376F}}^%hZ{rxXeC(iXoIr)+3p/R.$pVM@(Q]Oi!GuzZII7T)@TQ.[dQyP4Lo3ms3$?i1ch-Jnep^ZJTQ*YmF9IvTm%-TYh9QuVbb1+{aW0/?!sX,n:tS-+,16NhJB*CZOUkd%q/Hy{jWi[RWxa,3M?)*:_6,^?s(.zrRmCO/P]fNY(CXG1/67iCDbve80{,$@NJmEA,v6p!Ub}c;f,8Dd7zJxLL:bge9+1:Fb847=PaT/3K]EMg$pJ6WwYs?wX,_l+l!aXnfK(0%YU/P0C)rxp=)a=m!xccgMOaUPe.VpLisZ;Q(;f+ylUlXV]{l+QBe89m]s?X9c^ESUC!@O9N8kAQLHghMJ!sp;(p@/Pj386Q}KdwtIAM3%8ls+Go{)hza+0w{@VpH28sBv3x[pzzvg5EM6?w)j)K4fS[t4Gm_Gd4J^]ebk2(5aj9=M*FgWyrCNLnAe.W36)DJ{vjrUY*NUJ5JzdgWBAc0Zxryl]@nX-et4#@S)GNV8l@Jj@Hm)=6P}6eW,%9U$6J=_3d6gcad(SJs+-q!Nd^D+0+z)w,+]Hd{fNxIx84{-lspx77Co%@J6u]3.nf^!c?mp6=7oeV2vV-.2azCkfbE4fj])C}qho+1IyG/hzLxIK9vkY]?CZ-6Q/hF,_YooRg9@zrxet-5sU6TEsA1h_4L#3bioqoEKbsKLQ7%{U+iAg4}l#+O/;=@jzT0](!4xr0}SKn{i7;L!^)qGLUR{O/Jb2OLm9,HxL:+_?OCSGabD+nkQj7C}duP6H?!h6RnoL9)jvgTXQ5k?w:Fubj2z^otpQudo!Oqxa+Z,]@25()F0^?:R+0LxfP;oO/Umg}Xj5glsrL/rvq.X/X?$}:Zl?EC%++$HJJ8CuO%P-.n4spKCm1c4tleuhSR!c?e5@N)VGS).YXwrtuesKms]*[jBEjDXPG4$,U,=8RfFkuN:LBoHIlQ5JG#@a]hJr0G-Z9%j@?Fd(K+eSgKsG[I[Zk)$6/=:G66%Te{OhZJoSFzK.eUx$+Mr2fW4(zHU[.cQd]Pqz!;mu38rH!#J]J,#NAI(t=[OPnnmHC!c:AI!^?P7u-7ffav6U3Ne}aL[R*g($FT$^tMCy:bBKNY[2JRFa,G.{kpF:AxGs=(W_.?7ckmgD}Ffv23cA!{YU[q;VDHSZuzsqcG.nSRQCBEgr[Au_OX4YEYQYM]JFU,Bqh44PmoJlO0xEju;$(Nnsz:.0vCg3)@=6j@0z*V_TCMkYgnX7X^+v!9GEfL+UMh](YtyL89sP[to0gTPb-jFX64p6z5cd)-EWd7fU/CmstK.vIj56n.C8kLw,LPP_XGqdZB@wAmIXn$#+??uFi6d%ULZkQq;dROv)f7,rrN6E4Bwk@PTuP8ynPbeSFp!pHk84cVNp:lM9yZ5+b_PTX)cs,+,{r17Z^BsDyitLzQJXLf+_9cU6ZzqO(:{#f1,;0h5EZ@x*:}#{jmXHhl{E#Sv,[]$Rg^bS}ecSlYah[k7-Wg?vAW?nc(9x}W9TRrv3}=Ik:mZ5.Eh7#6=H$lFCly2[@PzYm)XA1tS#7NQ:n5y4=CKc1oHR+XY,c21d@RDZ)ur{c2oA$%}h9e8pr-uufdZ,}0,zT{0yz_A4{gRzF25u3)BtWdHK(i6NhsOEkGG}Vd}wgT/1/+^[NbBFUTp{pJf.2gsT2{}nhCnZ^B41s{$D%-(oTjM9uHi6Da-OAUT^HmV3g]h6hG=;j#=6]R#dVx-raq!nsfqtggqUSDzC^A^??8Eslzu$N[LeaS?nN8H.(@C%-:-2F^%Ts;@f0^FTO]va9p;TU!i6Id4wcE}*ARbjx]s,zWg}GgfjT01qYL:PxL0!uL5:Suip6k]$z=Ea2b9kMqbRdxpDfQ7mmNFuGkH4TC#?vZ)qkqMupMHltLLup6HkRL9ajMr5HY,#kZpS-BGo?adt-NBiSk^HehG!Zac;-*o+00$10#4qU@S$vXUeE4^DDhYnzxQXZLbD+:/rrR^y_i%n;d6{Z$sq_h*q3T5Vr0t)J05H?Hfqn)AWS#x[NQCACRE;t]Qekk[7kes59Dc=-B@1Tn/jWC9XK5#hvtmpgBm+[5D0WeHGo%-T1May7%Y7QU[nsR.^/7X3.z?eE-EOfx8dr}L-z]J(+fDXz}gny]g=nOi6Z#*uO7VK*$la^VwX;sjJN{R7wLI[HJIn4N3MGzHdE}V=8VW[#aL:!6W6Jyb8RbwHhoDm#0n7CSa_zjR+X79K2j^)IlCTld^x8QIZnfZ4^q/1vo1Myk!1Svx/u18yX,-K.V]SR.MB[dv/b}9veqzJA6TKjhhxxtH$bYHyjJ01Jvnp3(h)%py}qxZ4sr37AZAVxp1cFzJh7k8vuOWr(abI,^?zNHw^:t@9[!3G(:vhtqOyd!._QMip@rkprfZj3;^edvHCxK]gFfXoPKYmE!fFD+6o-3PsO$:y4_M+wCktwAfd:,1vH?ghle{^W+abV=Jx+y^zDss3LZf@F-VaJ*Bv[:b6l,2%?wFy=d}t[F;Op_sEyoXB.8:M%ITT4bMBa]*-tr)gG30m=zp-4jCHA,dOy84HB37UBvAvH96-%]S?rYIqftR1)^b/h+]iSs7i^2(ftqfu$3nlS.rwC_%@=Y^yDNdNwKU4d)DQ?/Oh+Rv%iKy7+7]z*Ro83_daMC67P,WEfEW}jwFMA.[9gevR5]kBFI_14L#OC!yMMX2.C__vLr9@!(0GD=M1SJN-u(L807Sr#$dH%g0rYNf[Q}ALp?c#e</OCTfooterlogo.png>
  </Files>
  <CheatEntries>
    <CheatEntry>
      <ID>112</ID>
      <Description>"Tower of Time 1.4.5.11880  /  https://opencheattables.com  /  CE 7.4+"</Description>
      <Color>400080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>113</ID>
      <Description>"Compact mode"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
--https://forum.cheatengine.org/viewtopic.php?t=570055
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>11</ID>
      <Description>"Enable (enable twice)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end;if process==nil then ShowMessage('Process is not selected.')elseif readInteger(process)==0 then ShowMessage('Process cannot be opened.')else if monopipe~=nil and monopipe.ProcessID~=getOpenedProcessID()then monopipe.destroy()monopipe=nil end;if monopipe==nil then LaunchMonoDataCollector()end end;AuthorName='fd01071ec5'TablePostUrl='13431d5d64d03c52b75e48ec4034045a0fcfe966f4e79c54ac9a35e00b5c01aa8fdc2f1dcc8a1fb8ae58ecd967a1'FooterLogoFileName='62ba7dcf16c1b33ce6d141df48a0f09698'AddLicenseLabel=true;LicenseName='9abf9508b3c9ba'LicenseFileName='57f0f0c2aa4b945f19129c'Key53=9875711438865098;Key14=1380;function deco(a)local b,c=Key53,16384+Key14;return a:gsub('%x%x',function(d)local e=b%8589934592;local f=(b-e)/8589934592;local g=f%128;d=tonumber(d,16)local h=(d+(f-g)/128)*(2*g+1)%256;b=e*c+f+d+h;return string.char(h)end)end;AuthorName=deco(AuthorName)FooterLogoFileName=deco(FooterLogoFileName)LicenseName=deco(LicenseName)LicenseFileName=deco(LicenseFileName)TablePostUrl=deco(TablePostUrl)function tableFilePackageLoader(i,j)local k=findTableFile(j)if k then local l=k.getData()if l then local m=readStringLocal(l.memory,l.size)if m then local n,o=pcall(load,m,j)if not n then error(o,2)end;return o(i,j)end end end;error(string.format('Error loading table module: %s : %s',i,j),2)end;function tableFilePackageSearcher(i)local p=''local q={i..'.lua',i..'.init.lua'}local k,j;for r,s in ipairs(q)do k=findTableFile(s)if k then j=s;break else p=p..string.format("\n\tno table file '%s'",s)end end;if k and j then return tableFilePackageLoader,j end;return p end;if not TABLE_LUA_PACKAGE_SEARCHER_LOADED then if RELEASE_MODE then table.insert(package.searchers,2,tableFilePackageSearcher)else table.insert(package.searchers,tableFilePackageSearcher)end;TABLE_LUA_PACKAGE_SEARCHER_LOADED=true end;if not REQUIRE_BYPASS_LOADED then local t=require;function require(i)if REREQUIRE or RerequireList and RerequireList[i]then package.loaded[i]=false end;local n,o=pcall(t,i)if n then return o else local p=o:gsub('\n','\r\n'):gsub('.dllC:\\',".dll'\r\n\tno file 'C:\\")error(p,2)end end;REQUIRE_BYPASS_LOADED=true end;require('OCTLogoFooter')thetick=0;Timertot1=createTimer()Timertot1.Interval=60000;Timertot1.OnTimer=function(u)thetick=thetick+1;if thetick==120 then addOCTFooter(true)end end
{$asm}
define(EventHorizonGameServicesInventoryset_GoldProc,"EventHorizon.GameServices.Inventory:set_Gold")
define(EventHorizonBattleUnitStatsModifyHealthPointsProc,"EventHorizon.Battle.UnitStats:ModifyHealthPoints")
define(EventHorizonGameServicesInventoryChangeResourceProc,"EventHorizon.GameServices.Inventory:ChangeResource")
define(EventHorizonBattleUnitStatsset_HealthPointsProc,"EventHorizon.Battle.UnitStats:set_HealthPoints")
define(EventHorizonGameServicesInventoryset_GreenCrystalsProc,"EventHorizon.GameServices.Inventory:set_GreenCrystals")
define(EventHorizonGameServicesInventoryset_BlueCrystalsProc,"EventHorizon.GameServices.Inventory:set_BlueCrystals")
define(EventHorizonGameServicesInventoryset_PurpleCrystalsProc,"EventHorizon.GameServices.Inventory:set_PurpleCrystals")
define(EventHorizonGameServicesInventoryEquipItemProc,"EventHorizon.GameServices.Inventory:EquipItem")
define(EventHorizonGameServicesPartyManagerUseAttributePointProc,"EventHorizon.GameServices.PartyManager:UseAttributePoint")
define(EventHorizonGameServicesPartyManagerResetSkillProc,"EventHorizon.GameServices.PartyManager:ResetSkill")
define(EventHorizonGameServicesPartyManagerGetCurrentHeroIntroductionProc,"EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction")


registersymbol(EventHorizonGameServicesInventoryset_GoldProc)
registersymbol(EventHorizonBattleUnitStatsModifyHealthPointsProc)
registersymbol(EventHorizonGameServicesInventoryChangeResourceProc)
registersymbol(EventHorizonBattleUnitStatsset_HealthPointsProc)
registersymbol(EventHorizonGameServicesInventoryset_GreenCrystalsProc)
registersymbol(EventHorizonGameServicesInventoryset_BlueCrystalsProc)
registersymbol(EventHorizonGameServicesInventoryset_PurpleCrystalsProc)
registersymbol(EventHorizonGameServicesInventoryEquipItemProc)
registersymbol(EventHorizonGameServicesPartyManagerUseAttributePointProc)
registersymbol(EventHorizonGameServicesPartyManagerResetSkillProc)
registersymbol(EventHorizonGameServicesPartyManagerGetCurrentHeroIntroductionProc)
[DISABLE]
{$lua}
if syntaxcheck then return end;if not syntaxcheck and monopipe then monopipe=nil,monopipe.Destroy()end;Timertot1.Destroy()

{$asm}
unregistersymbol(*)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>40</ID>
          <Description>"Resource scripts"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>42</ID>
              <Description>"Set min. amount"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>2</ID>
                  <Description>"Min. gold"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript Async="1">{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

//aobscan(INJECT_GOLD,48 8B C8 48 8B 45 E8 89 88) // should be unique
aobscanregion(INJECT_GOLD,EventHorizonGameServicesInventoryset_GoldProc+2d,EventHorizonGameServicesInventoryset_GoldProc+5d,48 8B C8 48 8B 45 E8 89 88) // should be unique
alloc(newmem,$1000,INJECT_GOLD)

label(code)
label(return)
label(i_gold_min)

newmem:
  push rcx
  mov ecx, [i_gold_min]
  cmp eax, ecx
  cmovl eax, ecx
  pop rcx

code:
  mov rcx,rax
  mov rax,[rbp-18]
  jmp return

align 10 cc
  i_gold_min:
  dd #2000

INJECT_GOLD:
  jmp newmem
  nop 2
return:
registersymbol(i_gold_min)
registersymbol(INJECT_GOLD)

[DISABLE]

INJECT_GOLD:
  db 48 8B C8 48 8B 45 E8

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.Inventory:set_Gold+4d

EventHorizon.GameServices.Inventory:set_Gold+24: 48 8B C8                       - mov rcx,rax
EventHorizon.GameServices.Inventory:set_Gold+27: 83 39 00                       - cmp dword ptr [rcx],00
EventHorizon.GameServices.Inventory:set_Gold+2a: 48 8B 40 58                    - mov rax,[rax+58]
EventHorizon.GameServices.Inventory:set_Gold+2e: 48 89 45 E8                    - mov [rbp-18],rax
EventHorizon.GameServices.Inventory:set_Gold+32: 33 C9                          - xor ecx,ecx
EventHorizon.GameServices.Inventory:set_Gold+34: 48 63 55 F0                    - movsxd  rdx,dword ptr [rbp-10]
EventHorizon.GameServices.Inventory:set_Gold+38: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:set_Gold+3c: 49 BB D0 00 14 21 00 00 00 00  - mov r11,UnityEngine.Mathf:Max
EventHorizon.GameServices.Inventory:set_Gold+46: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:set_Gold+49: 48 83 C4 20                    - add rsp,20
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.Inventory:set_Gold+4d: 48 8B C8                       - mov rcx,rax
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.Inventory:set_Gold+50: 48 8B 45 E8                    - mov rax,[rbp-18]
EventHorizon.GameServices.Inventory:set_Gold+54: 89 88 A0 00 00 00              - mov [rax+000000A0],ecx
EventHorizon.GameServices.Inventory:set_Gold+5a: C9                             - leave 
EventHorizon.GameServices.Inventory:set_Gold+5b: C3                             - ret 
20210AFC: 00 00                          - add [rax],al
20210AFE: 00 00                          - add [rax],al
20210B00: 00 00                          - add [rax],al
20210B02: 00 00                          - add [rax],al
20210B04: 5C                             - pop rsp
20210B05: 00 00                          - add [rax],al
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>9</ID>
                      <Description>"Value"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_gold_min</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>34</ID>
                  <Description>"Min. Green Crystal"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

//aobscan(INJECT_MIN_GREEN_CRYSTAL,48 8B C8 48 8B 45 E8 89 88) // should be unique
aobscanregion(INJECT_MIN_GREEN_CRYSTAL,EventHorizonGameServicesInventoryset_GreenCrystalsProc+2c,EventHorizonGameServicesInventoryset_GreenCrystalsProc+6c,48 8B C8 48 8B 45 E8 89 88) // should be unique


alloc(newmem,$1000,INJECT_MIN_GREEN_CRYSTAL)

label(code)
label(return)
label(i_gc_min)
newmem:
  push rcx
  mov ecx, [i_gc_min]
  cmp eax, ecx
  cmovl eax, ecx
  pop rcx

code:
  mov rcx,rax
  mov rax,[rbp-18]
  jmp return

align 10 cc
  i_gc_min:
  dd #40

INJECT_MIN_GREEN_CRYSTAL:
  jmp newmem
  nop 2
return:
registersymbol(i_gc_min)
registersymbol(INJECT_MIN_GREEN_CRYSTAL)

[DISABLE]

INJECT_MIN_GREEN_CRYSTAL:
  db 48 8B C8 48 8B 45 E8

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.Inventory:set_GreenCrystals+4d

EventHorizon.GameServices.Inventory:set_GreenCrystals+24: 48 8B C8                       - mov rcx,rax
EventHorizon.GameServices.Inventory:set_GreenCrystals+27: 83 39 00                       - cmp dword ptr [rcx],00
EventHorizon.GameServices.Inventory:set_GreenCrystals+2a: 48 8B 40 58                    - mov rax,[rax+58]
EventHorizon.GameServices.Inventory:set_GreenCrystals+2e: 48 89 45 E8                    - mov [rbp-18],rax
EventHorizon.GameServices.Inventory:set_GreenCrystals+32: 33 C9                          - xor ecx,ecx
EventHorizon.GameServices.Inventory:set_GreenCrystals+34: 48 63 55 F0                    - movsxd  rdx,dword ptr [rbp-10]
EventHorizon.GameServices.Inventory:set_GreenCrystals+38: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:set_GreenCrystals+3c: 49 BB 00 9B F1 66 00 00 00 00  - mov r11,UnityEngine.Mathf:Max
EventHorizon.GameServices.Inventory:set_GreenCrystals+46: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:set_GreenCrystals+49: 48 83 C4 20                    - add rsp,20
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.Inventory:set_GreenCrystals+4d: 48 8B C8                       - mov rcx,rax
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.Inventory:set_GreenCrystals+50: 48 8B 45 E8                    - mov rax,[rbp-18]
EventHorizon.GameServices.Inventory:set_GreenCrystals+54: 89 88 A8 00 00 00              - mov [rax+000000A8],ecx
EventHorizon.GameServices.Inventory:set_GreenCrystals+5a: C9                             - leave 
EventHorizon.GameServices.Inventory:set_GreenCrystals+5b: C3                             - ret 
0C4AE3AC: 00 00                          - add [rax],al
0C4AE3AE: 00 00                          - add [rax],al
0C4AE3B0: 00 00                          - add [rax],al
0C4AE3B2: 00 00                          - add [rax],al
0C4AE3B4: 5C                             - pop rsp
0C4AE3B5: 00 00                          - add [rax],al
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>35</ID>
                      <Description>"Value"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_gc_min</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>36</ID>
                  <Description>"Min. Blue Crystal"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

aobscanregion(INJECT_MIN_GREEN_CRYSTAL,EventHorizonGameServicesInventoryset_BlueCrystalsProc+2c,EventHorizonGameServicesInventoryset_BlueCrystalsProc+6c,48 8B C8 48 8B 45 E8 89 88) // should be unique
alloc(newmem,$1000,INJECT_MIN_GREEN_CRYSTAL)

label(code)
label(return)
label(i_bc_min)
newmem:
  push rcx
  mov ecx, [i_bc_min]
  cmp eax, ecx
  cmovl eax, ecx
  pop rcx

code:
  mov rcx,rax
  mov rax,[rbp-18]
  jmp return

align 10 cc
  i_bc_min:
  dd #40

INJECT_MIN_GREEN_CRYSTAL:
  jmp newmem
  nop 2
return:
registersymbol(i_bc_min)
registersymbol(INJECT_MIN_GREEN_CRYSTAL)

[DISABLE]

INJECT_MIN_GREEN_CRYSTAL:
  db 48 8B C8 48 8B 45 E8

unregistersymbol(*)
dealloc(newmem)

</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>37</ID>
                      <Description>"Value"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_bc_min</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>38</ID>
                  <Description>"Min. Purple Crystal"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

aobscanregion(INJECT_MIN_GREEN_CRYSTAL,EventHorizonGameServicesInventoryset_PurpleCrystalsProc+2c,EventHorizonGameServicesInventoryset_PurpleCrystalsProc+6c,48 8B C8 48 8B 45 E8 89 88) // should be unique
alloc(newmem,$1000,INJECT_MIN_GREEN_CRYSTAL)

label(code)
label(return)
label(i_pc_min)
newmem:
  push rcx
  mov ecx, [i_pc_min]
  cmp eax, ecx
  cmovl eax, ecx
  pop rcx

code:
  mov rcx,rax
  mov rax,[rbp-18]
  jmp return

align 10 cc
  i_pc_min:
  dd #40

INJECT_MIN_GREEN_CRYSTAL:
  jmp newmem
  nop 2
return:
registersymbol(i_pc_min)
registersymbol(INJECT_MIN_GREEN_CRYSTAL)

[DISABLE]

INJECT_MIN_GREEN_CRYSTAL:
  db 48 8B C8 48 8B 45 E8

unregistersymbol(*)
dealloc(newmem)

</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>39</ID>
                      <Description>"Value"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>i_pc_min</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>41</ID>
              <Description>"(in tower) Multiplier (must enabled by order, disable by reverse)"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>12</ID>
                  <Description>"1. Gold multiplier"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript Async="1">{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

aobscan(INJECT_GOLD_MULTI,03 D0 48 8B CE 48 83 EC 20 49 BB) // should be unique
//aobscanregion(INJECT_GOLD_MULTI,EventHorizonGameServicesInventoryChangeResourceProc+4c,EventHorizonGameServicesInventoryChangeResourceProc+6c,03 D0 48 8B CE) // should be unique
alloc(newmem,$1000,INJECT_GOLD_MULTI)

label(code)
label(return)
label(vf_gold_multi)

newmem:
  vmovss xmm15, [vf_gold_multi]
  cvtsi2ss xmm14, eax
  vmulss xmm14, xmm15, xmm14
  cvtss2si eax, xmm14

code:
  add edx,eax
  mov rcx,rsi
  jmp return

align 10 cc
  vf_gold_multi:
  dd (float)2.5

INJECT_GOLD_MULTI:
  jmp newmem
return:
registersymbol(vf_gold_multi)
registersymbol(INJECT_GOLD_MULTI)

[DISABLE]

INJECT_GOLD_MULTI:
  db 03 D0 48 8B CE

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.Inventory:ChangeResource+53

EventHorizon.GameServices.Inventory:ChangeResource+2c: 48 03 C1                       - add rax,rcx
EventHorizon.GameServices.Inventory:ChangeResource+2f: 48 8B 00                       - mov rax,[rax]
EventHorizon.GameServices.Inventory:ChangeResource+32: FF E0                          - jmp rax
EventHorizon.GameServices.Inventory:ChangeResource+34: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+37: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+3b: 49 BB 20 EC 9E 59 00 00 00 00  - mov r11,EventHorizon.GameServices.Inventory:get_Gold
EventHorizon.GameServices.Inventory:ChangeResource+45: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:ChangeResource+48: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+4c: 48 8B D0                       - mov rdx,rax
EventHorizon.GameServices.Inventory:ChangeResource+4f: 48 63 45 34                    - movsxd  rax,dword ptr [rbp+34]
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.Inventory:ChangeResource+53: 03 D0                          - add edx,eax
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.Inventory:ChangeResource+55: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+58: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+5c: 49 BB 40 7A A5 59 00 00 00 00  - mov r11,EventHorizonGameServicesInventoryset_GoldProc
EventHorizon.GameServices.Inventory:ChangeResource+66: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:ChangeResource+69: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+6d: E9 1D 01 00 00                 - jmp EventHorizon.GameServices.Inventory:ChangeResource+18f
EventHorizon.GameServices.Inventory:ChangeResource+72: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+75: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+79: 49 BB E4 EB 9E 59 00 00 00 00  - mov r11,00000000599EEBE4
EventHorizon.GameServices.Inventory:ChangeResource+83: 41 FF D3                       - call r11
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>13</ID>
                      <Description>"Multiplier"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Float</VariableType>
                      <Address>vf_gold_multi</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>28</ID>
                  <Description>"2. Green crystal multiplier"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript Async="1">{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

aobscan(INJECT_GOLD_MULTI,03 D0 48 8B CE 48 83 EC 20 49 BB) // should be unique
//aobscanregion(INJECT_GOLD_MULTI,EventHorizonGameServicesInventoryChangeResourceProc+4c,EventHorizonGameServicesInventoryChangeResourceProc+6c,03 D0 48 8B CE) // should be unique
alloc(newmem,$1000,INJECT_GOLD_MULTI)

label(code)
label(return)
label(vf_gc_multi)

newmem:
  vmovss xmm15, [vf_gc_multi]
  cvtsi2ss xmm14, eax
  vmulss xmm14, xmm15, xmm14
  cvtss2si eax, xmm14

code:
  add edx,eax
  mov rcx,rsi
  jmp return

align 10 cc
  vf_gc_multi:
  dd (float)2.5

INJECT_GOLD_MULTI:
  jmp newmem
return:
registersymbol(vf_gc_multi)
registersymbol(INJECT_GOLD_MULTI)

[DISABLE]

INJECT_GOLD_MULTI:
  db 03 D0 48 8B CE

unregistersymbol(*)
dealloc(newmem)

</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>29</ID>
                      <Description>"Multiplier"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Float</VariableType>
                      <Address>vf_gc_multi</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>30</ID>
                  <Description>"3. Blue crystal multiplier"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript Async="1">{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

aobscan(INJECT_GOLD_MULTI,03 D0 48 8B CE 48 83 EC 20 49 BB) // should be unique
//aobscanregion(INJECT_GOLD_MULTI,EventHorizonGameServicesInventoryChangeResourceProc+4c,EventHorizonGameServicesInventoryChangeResourceProc+6c,03 D0 48 8B CE) // should be unique
alloc(newmem,$1000,INJECT_GOLD_MULTI)

label(code)
label(return)
label(vf_bc_multi)

newmem:
  vmovss xmm15, [vf_bc_multi]
  cvtsi2ss xmm14, eax
  vmulss xmm14, xmm15, xmm14
  cvtss2si eax, xmm14

code:
  add edx,eax
  mov rcx,rsi
  jmp return

align 10 cc
  vf_bc_multi:
  dd (float)2.5

INJECT_GOLD_MULTI:
  jmp newmem
return:
registersymbol(vf_bc_multi)
registersymbol(INJECT_GOLD_MULTI)

[DISABLE]

INJECT_GOLD_MULTI:
  db 03 D0 48 8B CE

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.Inventory:ChangeResource+53

EventHorizon.GameServices.Inventory:ChangeResource+2c: 48 03 C1                       - add rax,rcx
EventHorizon.GameServices.Inventory:ChangeResource+2f: 48 8B 00                       - mov rax,[rax]
EventHorizon.GameServices.Inventory:ChangeResource+32: FF E0                          - jmp rax
EventHorizon.GameServices.Inventory:ChangeResource+34: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+37: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+3b: 49 BB 20 EC 9E 59 00 00 00 00  - mov r11,EventHorizon.GameServices.Inventory:get_Gold
EventHorizon.GameServices.Inventory:ChangeResource+45: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:ChangeResource+48: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+4c: 48 8B D0                       - mov rdx,rax
EventHorizon.GameServices.Inventory:ChangeResource+4f: 48 63 45 34                    - movsxd  rax,dword ptr [rbp+34]
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.Inventory:ChangeResource+53: 03 D0                          - add edx,eax
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.Inventory:ChangeResource+55: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+58: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+5c: 49 BB 40 7A A5 59 00 00 00 00  - mov r11,EventHorizonGameServicesInventoryset_GoldProc
EventHorizon.GameServices.Inventory:ChangeResource+66: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:ChangeResource+69: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+6d: E9 1D 01 00 00                 - jmp EventHorizon.GameServices.Inventory:ChangeResource+18f
EventHorizon.GameServices.Inventory:ChangeResource+72: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+75: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+79: 49 BB E4 EB 9E 59 00 00 00 00  - mov r11,00000000599EEBE4
EventHorizon.GameServices.Inventory:ChangeResource+83: 41 FF D3                       - call r11
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>31</ID>
                      <Description>"Multiplier"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Float</VariableType>
                      <Address>vf_bc_multi</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>32</ID>
                  <Description>"4. Purple crystal multiplier"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript Async="1">{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

aobscan(INJECT_GOLD_MULTI,03 D0 48 8B CE 48 83 EC 20 49 BB) // should be unique
//aobscanregion(INJECT_GOLD_MULTI,EventHorizonGameServicesInventoryChangeResourceProc+4c,EventHorizonGameServicesInventoryChangeResourceProc+6c,03 D0 48 8B CE) // should be unique
alloc(newmem,$1000,INJECT_GOLD_MULTI)

label(code)
label(return)
label(vf_pc_multi)

newmem:
  vmovss xmm15, [vf_pc_multi]
  cvtsi2ss xmm14, eax
  vmulss xmm14, xmm15, xmm14
  cvtss2si eax, xmm14

code:
  add edx,eax
  mov rcx,rsi
  jmp return

align 10 cc
  vf_pc_multi:
  dd (float)2.5

INJECT_GOLD_MULTI:
  jmp newmem
return:
registersymbol(vf_pc_multi)
registersymbol(INJECT_GOLD_MULTI)

[DISABLE]

INJECT_GOLD_MULTI:
  db 03 D0 48 8B CE

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.Inventory:ChangeResource+53

EventHorizon.GameServices.Inventory:ChangeResource+2c: 48 03 C1                       - add rax,rcx
EventHorizon.GameServices.Inventory:ChangeResource+2f: 48 8B 00                       - mov rax,[rax]
EventHorizon.GameServices.Inventory:ChangeResource+32: FF E0                          - jmp rax
EventHorizon.GameServices.Inventory:ChangeResource+34: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+37: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+3b: 49 BB 20 EC 9E 59 00 00 00 00  - mov r11,EventHorizon.GameServices.Inventory:get_Gold
EventHorizon.GameServices.Inventory:ChangeResource+45: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:ChangeResource+48: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+4c: 48 8B D0                       - mov rdx,rax
EventHorizon.GameServices.Inventory:ChangeResource+4f: 48 63 45 34                    - movsxd  rax,dword ptr [rbp+34]
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.Inventory:ChangeResource+53: 03 D0                          - add edx,eax
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.Inventory:ChangeResource+55: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+58: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+5c: 49 BB 40 7A A5 59 00 00 00 00  - mov r11,EventHorizonGameServicesInventoryset_GoldProc
EventHorizon.GameServices.Inventory:ChangeResource+66: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:ChangeResource+69: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+6d: E9 1D 01 00 00                 - jmp EventHorizon.GameServices.Inventory:ChangeResource+18f
EventHorizon.GameServices.Inventory:ChangeResource+72: 48 8B CE                       - mov rcx,rsi
EventHorizon.GameServices.Inventory:ChangeResource+75: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:ChangeResource+79: 49 BB E4 EB 9E 59 00 00 00 00  - mov r11,00000000599EEBE4
EventHorizon.GameServices.Inventory:ChangeResource+83: 41 FF D3                       - call r11
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>33</ID>
                      <Description>"Multiplier"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Float</VariableType>
                      <Address>vf_pc_multi</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>4</ID>
          <Description>"Battle: When take damage (enable after 1st time after START battle)"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript Async="1">{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

aobscan(INJECT_BATTLE_HPMP,F3 41 0F 11 AF A0 00 00 00) // should be unique
//aobscanregion(INJECT_BATTLE_HPMP,EventHorizonBattleUnitStatsModifyHealthPointsProc+80,EventHorizonBattleUnitStatsModifyHealthPointsProc+1b0,F3 41 0F 11 AF A0 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_BATTLE_HPMP)

label(code)
label(return)
label(i_team_id)
label(is_player_hp_set_min)
label(is_player_mp_set_min)
label(vf_hpmp_min)
label(vf_hpmp_gen_value)
label(is_fast_skill_cooldown)
label(i_last_char_addr)
label(vf_hpmp_gen_damage_value)
label(is_set_monster_hp)

newmem:
  mov [i_last_char_addr], r15
  push rbx
  push rax
  mov dword ptr [i_team_id], 0
  mov rbx, [r15+18]
  test rbx, rbx
  je end_team_query
  mov eax, [rbx+40]
  test eax, eax
  je end_team_query
  mov dword ptr [i_team_id], eax

end_team_query:
  cmp dword ptr [i_team_id], 1
  jne to_monster

check_hp:
  vmovss xmm15, [vf_hpmp_min]
  cmp dword ptr [is_player_hp_set_min], 1
  jne check_mp
  cvtsi2ss xmm14, [r15+AC]
  vmulss xmm14, xmm15, xmm14
  movss xmm13, xmm5
  vcomiss xmm13, xmm14
  jae check_mp
  movss xmm5, xmm14

check_mp:
  cvtsi2ss xmm14, [r15+B0]
  vmulss xmm14, xmm15, xmm14
  vmovss xmm13, [r15+A4]
  vcomiss xmm13, xmm14
  jae check_fast_skill_cooldown
  vmovss [r15+A4], xmm14

check_fast_skill_cooldown:
  cmp dword ptr [is_fast_skill_cooldown], 1
  jne check_hpmp_gen
  mov rbx, [r15+38]
  test rbx, rbx
  je check_hpmp_gen
  vmovss xmm15, [vf_90]
  vmovss [rbx+10], xmm15

check_hpmp_gen:
  vmovss xmm15, [vf_hpmp_gen_value]
  vmovss xmm14, [r15+150]
  comiss xmm14, xmm15
  jae check_hpmp_gen_mp
  vmovss [r15+150], xmm15

check_hpmp_gen_mp:
  vmovss xmm14, [r15+154]
  comiss xmm14, xmm15
  jae check_hpmp_drain
  vmovss [r15+154], xmm15

check_hpmp_drain:
  vmovss xmm15, [vf_hpmp_gen_damage_value]
  vmovss xmm14, [r15+160]
  comiss xmm14, xmm15
  jae check_hpmp_drain_mp
  vmovss [r15+160], xmm15

check_hpmp_drain_mp:
  vmovss xmm14, [r15+164]
  comiss xmm14, xmm15
  jae endp
  vmovss [r15+164], xmm15
  jmp endp

to_monster:
  cmp dword ptr [is_set_monster_hp], 1
  jne endp
  //vmovss xmm14, [r15+A0]
  vmovss xmm15, [vf_0]
  movss xmm5, xmm15
  vmovss [r15+A0], xmm15
  //vcomiss xmm14, xmm15
  //jbe endp
  //movss xmm5, xmm15

endp:
  pop rax
  pop rbx

code:
  movss [r15+000000A0],xmm5
  jmp return

align 10 cc
  is_player_hp_set_min:
  dd 1
  is_player_mp_set_min:
  dd 1
  is_fast_skill_cooldown:
  dd 1
  vf_hpmp_min:
  dd (float)0.5
  vf_hpmp_gen_value:
  dd (float)10
  vf_hpmp_gen_damage_value:
  dd (float)0.4
  i_team_id:
  dd 0
  vf_0_9:
  dd (float)0.9
  vf_1:
  dd (float)1
  vf_0:
  dd 0
  vf_90:
  dd (float)90
  i_last_char_addr:
  dq 0
  is_set_monster_hp:
  dd 0


INJECT_BATTLE_HPMP:
  jmp newmem
  nop 4
return:
registersymbol(i_last_char_addr)
registersymbol(is_fast_skill_cooldown)
registersymbol(is_player_hp_set_min)
registersymbol(is_player_mp_set_min)
registersymbol(vf_hpmp_min)
registersymbol(vf_hpmp_gen_value)
registersymbol(vf_hpmp_gen_damage_value)
registersymbol(is_set_monster_hp)
registersymbol(INJECT_BATTLE_HPMP)

[DISABLE]

INJECT_BATTLE_HPMP:
  db F3 41 0F 11 AF A0 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.Battle.UnitStats:ModifyHealthPoints+b8

EventHorizon.Battle.UnitStats:ModifyHealthPoints+89: 48 83 EC 20                    - sub rsp,20
EventHorizon.Battle.UnitStats:ModifyHealthPoints+8d: 49 BB 10 46 F0 05 00 00 00 00  - mov r11,UnityEngine.Mathf:Clamp
EventHorizon.Battle.UnitStats:ModifyHealthPoints+97: 41 FF D3                       - call r11
EventHorizon.Battle.UnitStats:ModifyHealthPoints+9a: 48 83 C4 20                    - add rsp,20
EventHorizon.Battle.UnitStats:ModifyHealthPoints+9e: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
EventHorizon.Battle.UnitStats:ModifyHealthPoints+a2: F2 0F 5A E8                    - cvtsd2ss xmm5,xmm0
EventHorizon.Battle.UnitStats:ModifyHealthPoints+a6: F3 0F 11 6D E8                 - movss [rbp-18],xmm5
EventHorizon.Battle.UnitStats:ModifyHealthPoints+ab: F3 0F 10 45 E8                 - movss xmm0,[rbp-18]
EventHorizon.Battle.UnitStats:ModifyHealthPoints+b0: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
EventHorizon.Battle.UnitStats:ModifyHealthPoints+b4: F2 0F 5A E8                    - cvtsd2ss xmm5,xmm0
// ---------- INJECTING HERE ----------
EventHorizon.Battle.UnitStats:ModifyHealthPoints+b8: F3 41 0F 11 AF A0 00 00 00     - movss [r15+000000A0],xmm5
// ---------- DONE INJECTING  ----------
EventHorizon.Battle.UnitStats:ModifyHealthPoints+c1: F3 41 0F 10 87 A0 00 00 00     - movss xmm0,[r15+000000A0]
EventHorizon.Battle.UnitStats:ModifyHealthPoints+ca: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
EventHorizon.Battle.UnitStats:ModifyHealthPoints+ce: F2 0F 5A E8                    - cvtsd2ss xmm5,xmm0
EventHorizon.Battle.UnitStats:ModifyHealthPoints+d2: F3 0F 11 6D E8                 - movss [rbp-18],xmm5
EventHorizon.Battle.UnitStats:ModifyHealthPoints+d7: F3 0F 10 45 E8                 - movss xmm0,[rbp-18]
EventHorizon.Battle.UnitStats:ModifyHealthPoints+dc: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
EventHorizon.Battle.UnitStats:ModifyHealthPoints+e0: F3 0F 10 4D EC                 - movss xmm1,[rbp-14]
EventHorizon.Battle.UnitStats:ModifyHealthPoints+e5: F3 0F 5A C9                    - cvtss2sd xmm1,xmm1
EventHorizon.Battle.UnitStats:ModifyHealthPoints+e9: F2 0F 5C C1                    - subsd xmm0,xmm1
EventHorizon.Battle.UnitStats:ModifyHealthPoints+ed: F2 0F 5A E8                    - cvtsd2ss xmm5,xmm0
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>5</ID>
              <Description>"Set min HP?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_player_hp_set_min</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>6</ID>
              <Description>"Set min MP?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_player_mp_set_min</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>7</ID>
              <Description>"Min HP/MP value (1=100%)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>vf_hpmp_min</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>8</ID>
              <Description>"HP/MP regen. per sec"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>vf_hpmp_gen_value</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>26</ID>
              <Description>"HP/MP gain from damage"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>vf_hpmp_gen_damage_value</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>27</ID>
              <Description>"1 hit kill?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_set_monster_hp</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>10</ID>
              <Description>"Last. addr."</Description>
              <ShowAsHex>1</ShowAsHex>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>8 Bytes</VariableType>
              <Address>i_last_char_addr</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>46</ID>
          <Description>"Min. attr. pt after use (at least have 1pt before use)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : TowerOfTime.exe
  Version:
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

//aobscan(INJECT_USE_ATTRIBUTE_POINT,2B C7 41 89 86 88 00 00 00) // should be unique
aobscanregion(INJECT_USE_ATTRIBUTE_POINT,EventHorizonGameServicesPartyManagerUseAttributePointProc+90,EventHorizonGameServicesPartyManagerUseAttributePointProc+110,2B C7 41 89 86 88 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_USE_ATTRIBUTE_POINT)

label(code)
label(return)

newmem:
  mov eax, [r14+00000088]
  cmp eax, 5
  jae @F
  mov eax, 5
  mov [r14+00000088], eax

@@:
  mov edi, 0

code:
  sub eax,edi
  mov [r14+00000088],eax
  jmp return

INJECT_USE_ATTRIBUTE_POINT:
  jmp newmem
  nop 4
return:
registersymbol(INJECT_USE_ATTRIBUTE_POINT)

[DISABLE]

INJECT_USE_ATTRIBUTE_POINT:
  db 2B C7 41 89 86 88 00 00 00

unregistersymbol(INJECT_USE_ATTRIBUTE_POINT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.PartyManager:UseAttributePoint+9a

EventHorizon.GameServices.PartyManager:UseAttributePoint+6c: 6A 00                          - push 00
EventHorizon.GameServices.PartyManager:UseAttributePoint+6e: F2 0F 10 D8                    - movsd xmm3,xmm0
EventHorizon.GameServices.PartyManager:UseAttributePoint+72: F2 0F 5A DB                    - cvtsd2ss xmm3,xmm3
EventHorizon.GameServices.PartyManager:UseAttributePoint+76: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.PartyManager:UseAttributePoint+7a: 49 BB F0 8F 8E 00 00 00 00 00  - mov r11,EventHorizon.GameServices.PartyManager:ChangeUnitStat
EventHorizon.GameServices.PartyManager:UseAttributePoint+84: 41 FF D3                       - call r11
EventHorizon.GameServices.PartyManager:UseAttributePoint+87: 48 83 C4 30                    - add rsp,30
EventHorizon.GameServices.PartyManager:UseAttributePoint+8b: 85 C0                          - test eax,eax
EventHorizon.GameServices.PartyManager:UseAttributePoint+8d: 0F 84 47 00 00 00              - je EventHorizon.GameServices.PartyManager:UseAttributePoint+da
EventHorizon.GameServices.PartyManager:UseAttributePoint+93: 49 63 86 88 00 00 00           - movsxd  rax,dword ptr [r14+00000088]
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.PartyManager:UseAttributePoint+9a: 2B C7                          - sub eax,edi
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.PartyManager:UseAttributePoint+9c: 41 89 86 88 00 00 00           - mov [r14+00000088],eax
EventHorizon.GameServices.PartyManager:UseAttributePoint+a3: 85 F6                          - test esi,esi
EventHorizon.GameServices.PartyManager:UseAttributePoint+a5: 75 33                          - jne EventHorizon.GameServices.PartyManager:UseAttributePoint+da
EventHorizon.GameServices.PartyManager:UseAttributePoint+a7: 49 8B 45 38                    - mov rax,[r13+38]
EventHorizon.GameServices.PartyManager:UseAttributePoint+ab: 49 8B F5                       - mov rsi,r13
EventHorizon.GameServices.PartyManager:UseAttributePoint+ae: 48 85 C0                       - test rax,rax
EventHorizon.GameServices.PartyManager:UseAttributePoint+b1: 74 06                          - je EventHorizon.GameServices.PartyManager:UseAttributePoint+b9
EventHorizon.GameServices.PartyManager:UseAttributePoint+b3: 4D 8B 75 30                    - mov r14,[r13+30]
EventHorizon.GameServices.PartyManager:UseAttributePoint+b7: EB 00                          - jmp EventHorizon.GameServices.PartyManager:UseAttributePoint+b9
EventHorizon.GameServices.PartyManager:UseAttributePoint+b9: 48 8B CE                       - mov rcx,rsi
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>47</ID>
          <Description>"Min. skill pt after reset (at least have 1pt)"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

//aobscan(INJECT_MIN_SKILL_PT,41 89 86 84 00 00 00 83) // should be unique
aobscanregion(INJECT_MIN_SKILL_PT,EventHorizonGameServicesPartyManagerResetSkillProc+7a,EventHorizonGameServicesPartyManagerResetSkillProc+ea,41 89 86 84 00 00 00 83) // should be unique
alloc(newmem,$1000,INJECT_MIN_SKILL_PT)

label(code)
label(return)
label(i_min_skill_pt)

newmem:
  push rbx
  mov ebx, [i_min_skill_pt]
  cmp eax, ebx
  cmovl eax, ebx
  pop rbx

code:
  mov [r14+00000084],eax
  jmp return

align 10 cc
  i_min_skill_pt:
  dd 10

INJECT_MIN_SKILL_PT:
  jmp newmem
  nop 2
return:
registersymbol(i_min_skill_pt)
registersymbol(INJECT_MIN_SKILL_PT)

[DISABLE]

INJECT_MIN_SKILL_PT:
  db 41 89 86 84 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.PartyManager:ResetSkill+a2

EventHorizon.GameServices.PartyManager:ResetSkill+76: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.PartyManager:ResetSkill+7a: 49 BB 00 9B 01 65 00 00 00 00  - mov r11,UnityEngine.Mathf:Max
EventHorizon.GameServices.PartyManager:ResetSkill+84: 41 FF D3                       - call r11
EventHorizon.GameServices.PartyManager:ResetSkill+87: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.PartyManager:ResetSkill+8b: 48 8B D0                       - mov rdx,rax
EventHorizon.GameServices.PartyManager:ResetSkill+8e: 48 8B 45 C0                    - mov rax,[rbp-40]
EventHorizon.GameServices.PartyManager:ResetSkill+92: 48 8B 4D B8                    - mov rcx,[rbp-48]
EventHorizon.GameServices.PartyManager:ResetSkill+96: 89 50 18                       - mov [rax+18],edx
EventHorizon.GameServices.PartyManager:ResetSkill+99: 49 63 86 84 00 00 00           - movsxd  rax,dword ptr [r14+00000084]
EventHorizon.GameServices.PartyManager:ResetSkill+a0: 03 C1                          - add eax,ecx
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.PartyManager:ResetSkill+a2: 41 89 86 84 00 00 00           - mov [r14+00000084],eax
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.PartyManager:ResetSkill+a9: 83 3F 00                       - cmp dword ptr [rdi],00
EventHorizon.GameServices.PartyManager:ResetSkill+ac: 48 63 47 44                    - movsxd  rax,dword ptr [rdi+44]
EventHorizon.GameServices.PartyManager:ResetSkill+b0: 83 F8 01                       - cmp eax,01
EventHorizon.GameServices.PartyManager:ResetSkill+b3: 40 0F 94 C0                    - sete al
EventHorizon.GameServices.PartyManager:ResetSkill+b7: 48 0F B6 C0                    - movzx rax,al
EventHorizon.GameServices.PartyManager:ResetSkill+bb: 85 C0                          - test eax,eax
EventHorizon.GameServices.PartyManager:ResetSkill+bd: 0F 84 D8 00 00 00              - je EventHorizon.GameServices.PartyManager:ResetSkill+19b
EventHorizon.GameServices.PartyManager:ResetSkill+c3: 48 8B 46 10                    - mov rax,[rsi+10]
EventHorizon.GameServices.PartyManager:ResetSkill+c7: 48 85 C0                       - test rax,rax
EventHorizon.GameServices.PartyManager:ResetSkill+ca: 0F 84 EA 01 00 00              - je EventHorizon.GameServices.PartyManager:ResetSkill+2ba
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>48</ID>
              <Description>"Value"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>i_min_skill_pt</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>43</ID>
          <Description>"Last equipped weapon"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

//aobscan(INJECT_EQUIP_WEAPON,00 00 00 49 8B 45 10 48 8B C8 83 39 00 48 8B 40 20 48 8B C8) // should be unique
aobscanregion(INJECT_EQUIP_WEAPON,EventHorizonGameServicesInventoryEquipItemProc+88,EventHorizonGameServicesInventoryEquipItemProc+218,48 8B 40 20 48 8B C8) // should be unique
alloc(newmem,$1000,INJECT_EQUIP_WEAPON)

label(code)
label(return)
label(is_fast_attack_per_sec)
label(is_set_req_hero_level)
label(is_try_max_upgrade_count)

newmem:
  push rax
  push rbx
  push rcx

  mov rbx, [rax+20]
  mov ecx, [rbx+88]
  cmp ecx, 1  //&lt;Subtype&gt;k__BackingField
  jne check_RequiredHeroLevel

  mov rbx, [rax+20]
  test rbx, rbx
  je endp
  mov rbx, [rbx+28]
  test rbx, rbx
  je endp
  mov rbx, [rbx+38]
  test rbx, rbx
  je endp

  mov ecx, [rbx+18]
  test ecx, ecx
  je endp

  mov rbx, [rbx+10]
  test rbx, rbx
  je endp
  mov rbx, [rbx+20]
  test rbx, rbx
  je endp

  vmovss xmm15, [rbx+2C]
  vmovss xmm14, [vf_1]
  vcomiss xmm15, xmm14
  jbe check_RequiredHeroLevel
  vmovss [rbx+2C], xmm14

check_RequiredHeroLevel:
  mov ecx, [rbx+40]
  test ecx, ecx
  je check_UpgradeSlotsCount
  mov ecx, 0
  mov [rbx+40], ecx

check_UpgradeSlotsCount:
  cmp dword ptr [is_try_max_upgrade_count], 1
  jne endp
  mov ecx, [rax+90]
  cmp ecx, 5
  jae endp
  mov ecx, 5
  mov [rax+90], ecx

endp:
  pop rcx
  pop rbx
  pop rax


code:
  mov rax,[rax+20]
  mov rcx,rax
  jmp return

align 10 cc
  is_fast_attack_per_sec:
  dd 1
  is_set_req_hero_level:
  dd 1
  is_try_max_upgrade_count:
  dd 0
  vf_1:
  dd (float)1

INJECT_EQUIP_WEAPON:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_EQUIP_WEAPON)
registersymbol(is_fast_attack_per_sec)
registersymbol(is_set_req_hero_level)
registersymbol(is_try_max_upgrade_count)

[DISABLE]

INJECT_EQUIP_WEAPON:
  db 48 8B 40 20 48 8B C8

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.Inventory:EquipItem+11e

EventHorizon.GameServices.Inventory:EquipItem+f4: 49 8B CE                       - mov rcx,r14
EventHorizon.GameServices.Inventory:EquipItem+f7: 48 8B D7                       - mov rdx,rdi
EventHorizon.GameServices.Inventory:EquipItem+fa: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.Inventory:EquipItem+fe: 49 BB 6D 4B 9C 07 00 00 00 00  - mov r11,00000000079C4B6D
EventHorizon.GameServices.Inventory:EquipItem+108: 41 FF D3                       - call r11
EventHorizon.GameServices.Inventory:EquipItem+10b: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.Inventory:EquipItem+10f: E9 B6 00 00 00                 - jmp EventHorizon.GameServices.Inventory:EquipItem+1ca
EventHorizon.GameServices.Inventory:EquipItem+114: 49 8B 45 10                    - mov rax,[r13+10]
EventHorizon.GameServices.Inventory:EquipItem+118: 48 8B C8                       - mov rcx,rax
EventHorizon.GameServices.Inventory:EquipItem+11b: 83 39 00                       - cmp dword ptr [rcx],00
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.Inventory:EquipItem+11e: 48 8B 40 20                    - mov rax,[rax+20]
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.Inventory:EquipItem+122: 48 8B C8                       - mov rcx,rax
EventHorizon.GameServices.Inventory:EquipItem+125: 83 39 00                       - cmp dword ptr [rcx],00
EventHorizon.GameServices.Inventory:EquipItem+128: 48 63 80 94 00 00 00           - movsxd  rax,dword ptr [rax+00000094]
EventHorizon.GameServices.Inventory:EquipItem+12f: 83 F8 01                       - cmp eax,01
EventHorizon.GameServices.Inventory:EquipItem+132: 40 0F 94 C0                    - sete al
EventHorizon.GameServices.Inventory:EquipItem+136: 48 0F B6 C0                    - movzx rax,al
EventHorizon.GameServices.Inventory:EquipItem+13a: 85 C0                          - test eax,eax
EventHorizon.GameServices.Inventory:EquipItem+13c: 74 15                          - je EventHorizon.GameServices.Inventory:EquipItem+153
EventHorizon.GameServices.Inventory:EquipItem+13e: 49 8B 45 10                    - mov rax,[r13+10]
EventHorizon.GameServices.Inventory:EquipItem+142: 44 89 B8 80 00 00 00           - mov [rax+00000080],r15d
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>44</ID>
              <Description>"Faster attack per second? (Weapon only)"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_fast_attack_per_sec</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>45</ID>
              <Description>"Max. upgrade slots? (Warning: not full tested)"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_try_max_upgrade_count</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>49</ID>
          <Description>"Get current hero stat"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : TowerOfTime.exe
  Version: 
  Date   : 2022-04-03
  Author : bbfox@https://opencheattables.org
}

[ENABLE]

//aobscan(INJECT_CURRENT_HERO,48 8B 40 30 48 8B CD 48 83 C1 C8) // should be unique
aobscanregion(INJECT_CURRENT_HERO,EventHorizonGameServicesPartyManagerGetCurrentHeroIntroductionProc+12,EventHorizonGameServicesPartyManagerGetCurrentHeroIntroductionProc+42,48 8B 40 30 48 8B CD 48 83 C1 C8) // should be unique
alloc(newmem,$1000,INJECT_CURRENT_HERO)

label(code)
label(return)
label(i_base_hero_addr)
label(is_min_cooldown)

newmem:
  mov [i_base_hero_addr], rax
  cmp dword ptr [is_min_cooldown], 1
  jne code
  push rbx
  push rcx
  push r15
  push r14
  push r13
  push rax
  push rdx

  mov rbx, [rax+30]
  mov rbx, [rbx+38] 
  test rbx, rbx
  je endp

  mov ecx, [rbx+18]
  test ecx, ecx
  je endp
  mov r15d, ecx 

  mov rbx, [rbx+10] 
  test rbx, rbx
  je endp

loop_lv0:
  cmp ecx, 1
  jle endp
  xor rdx, rdx
  xor r13, r13
  mov eax, 8
  mul ecx
  mov r13d, 18
  add r13d, eax
  // inner loop
  mov r13, [rbx+r13] 
  test r13, r13
  je loop_lv0_end
loop_lv1:
  mov r13, [r13+10]
  test r13, r13
  je loop_lv0_end
  mov r13, [r13+38] 
  test r13, r13
  je loop_lv0_end

  push rcx
  mov ecx, [r13+18] 
  test ecx, ecx
  je loop_lv1_1_end
  mov r13, [r13+10] 
  mov ecx, [r13+18] 
loop_lv1_1:
  xor rdx, rdx
  mov eax, 8
  mul ecx
  mov edx, 18
  add edx, eax
  mov rax, [r13+rdx] //_abilities-&gt;_items-&gt;Item[ecx-1]-&gt;&lt;Template&gt;k__BackingField-&gt;_levels-&gt;_items-&gt;Item[ecx (inner loop)]
  test rax, rax
  je loop_lv1_1_end_inner

  push r15
  mov r15d, 1
  mov [rax+28], r15d
  vmovss xmm15, [vf_1]
  vmovss [rax+2C], xmm15
  pop r15
loop_lv1_1_end_inner:
  loop loop_lv1_1

loop_lv1_1_end:
  pop rcx

loop_lv0_end:
  dec ecx
  jmp loop_lv0

endp:
  pop rdx
  pop rax
  pop r13
  pop r14
  pop r15
  pop rcx
  pop rbx

code:
  mov rax,[rax+30]
  mov rcx,rbp
  jmp return

align 10 cc
  i_base_hero_addr:
  dq 0
  is_min_cooldown:
  dd 1
  vf_1:
  dd (float)1


INJECT_CURRENT_HERO:
  jmp newmem
  nop 2
return:
registersymbol(is_min_cooldown)
registersymbol(i_base_hero_addr)
registersymbol(INJECT_CURRENT_HERO)

[DISABLE]

INJECT_CURRENT_HERO:
  db 48 8B 40 30 48 8B CD

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+1e

1C4EA36F: 00 55 48                       - add [rbp+48],dl
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+2: 8B EC                          - mov ebp,esp
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+4: 48 83 EC 50                    - sub rsp,50
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+8: 48 89 4D F8                    - mov [rbp-08],rcx
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+c: 48 89 55 C0                    - mov [rbp-40],rdx
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+10: 33 C0                          - xor eax,eax
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+12: 48 89 45 C8                    - mov [rbp-38],rax
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+16: 48 89 45 D0                    - mov [rbp-30],rax
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+1a: 48 8B 45 C0                    - mov rax,[rbp-40]
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+1e: 48 8B 40 30                    - mov rax,[rax+30]
// ---------- INJECTING HERE ----------
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+22: 48 8B CD                       - mov rcx,rbp
// ---------- DONE INJECTING  ----------
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+25: 48 83 C1 C8                    - add rcx,-38
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+29: 48 8B D0                       - mov rdx,rax
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+2c: 48 83 EC 20                    - sub rsp,20
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+30: 83 38 00                       - cmp dword ptr [rax],00
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+33: 49 BB 40 A4 4E 1C 00 00 00 00  - mov r11,EventHorizon.Data.UnitData:get_TKIntroduction
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+3d: 41 FF D3                       - call r11
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+40: 48 83 C4 20                    - add rsp,20
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+44: 48 8B 45 C8                    - mov rax,[rbp-38]
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+48: 48 89 45 B8                    - mov [rbp-48],rax
EventHorizon.GameServices.PartyManager:GetCurrentHeroIntroduction+4c: B9 F8 35 76 18                 - mov ecx,187635F8
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>51</ID>
              <Description>"***Usage: press "I" to open inventory menu, then switch tabs / heros"</Description>
              <Color>400080</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>50</ID>
              <Description>"Base addr."</Description>
              <ShowAsHex>1</ShowAsHex>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>808080</Color>
              <VariableType>8 Bytes</VariableType>
              <Address>i_base_hero_addr</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>114</ID>
              <Description>"Min. cooldown?"</Description>
              <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>is_min_cooldown</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>85</ID>
              <Description>"Current Hero+"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>111</ID>
                  <Description>"&lt;Template&gt;k__BackingField+"</Description>
                  <Options moHideChildren="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>86</ID>
                      <Description>"&lt;FamilyTier&gt;k__BackingField"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>88</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>87</ID>
                      <Description>"&lt;SpecialType&gt;k__BackingField"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>8C</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>88</ID>
                      <Description>"&lt;Size&gt;k__BackingField"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>90</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>89</ID>
                      <Description>"MaxHP"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>94</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>90</ID>
                      <Description>"MaxMana"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>98</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>91</ID>
                      <Description>"StartManaPercent"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>9C</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>92</ID>
                      <Description>"Weight"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>A0</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>93</ID>
                      <Description>"OffhandItemDamageMultiplier"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>A4</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>94</ID>
                      <Description>"ManaUsage"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>A8</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>95</ID>
                      <Description>"HealthRegenPerSecond"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>AC</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>96</ID>
                      <Description>"ManaRegenPerSecond"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>B0</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>97</ID>
                      <Description>"HealthRegenPerHit"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>B4</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>98</ID>
                      <Description>"ManaRegenPerHit"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>B8</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>99</ID>
                      <Description>"Speed"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>BC</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>100</ID>
                      <Description>"ThreatLevelBonusFactor"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>C0</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>101</ID>
                      <Description>"TargetSelectionStrategyType"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>C4</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>102</ID>
                      <Description>"IsInvincible"</Description>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>C8</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>103</ID>
                      <Description>"IsTargetable"</Description>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>C9</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>104</ID>
                      <Description>"IsImmovable"</Description>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>CA</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>105</ID>
                      <Description>"CanBeRotated"</Description>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>CB</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>106</ID>
                      <Description>"MaxAbilitiesUsedBeforeSelfDestroy"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>CC</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>107</ID>
                      <Description>"BuildingToLevel"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>D4</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>108</ID>
                      <Description>"PartyAlignmentBaseValue"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>DC</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>109</ID>
                      <Description>"BoostThreatRange"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>E0</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>110</ID>
                      <Description>"BoostThreatDurationForNearestUnit"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_hero_addr]+30</Address>
                      <Offsets>
                        <Offset>E8</Offset>
                        <Offset>20</Offset>
                      </Offsets>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>52</ID>
                  <Description>"&lt;TypeFlags&gt;k__BackingField"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>44</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>53</ID>
                  <Description>"TowerLevel"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>48</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>54</ID>
                  <Description>"ArmorPenetration"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>50</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>55</ID>
                  <Description>"MagicPenetration"</Description>
                  <VariableType>Float</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>54</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>56</ID>
                  <Description>"Level"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>58</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>57</ID>
                  <Description>"LevelUpgradesOnStart"</Description>
                  <ShowAsSigned>1</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>5C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>58</ID>
                  <Description>"Life"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>60</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>59</ID>
                  <Description>"Dexterity"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>64</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>60</ID>
                  <Description>"Mastery"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>68</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>61</ID>
                  <Description>"Might"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>6C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>62</ID>
                  <Description>"PermanentMight"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>70</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>63</ID>
                  <Description>"PermanentDexterity"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>74</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>64</ID>
                  <Description>"PermanentMastery"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>78</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>65</ID>
                  <Description>"PermanentLife"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>7C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>66</ID>
                  <Description>"TotalSkillPoints"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>80</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>67</ID>
                  <Description>"SpareSkillPoints"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>84</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>68</ID>
                  <Description>"SpareAttributePoints"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>88</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>69</ID>
                  <Description>"IsSelected"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>8C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>70</ID>
                  <Description>"PartyPositionIndex"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>90</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>71</ID>
                  <Description>"MaxHpChangeUnscalable"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>94</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>72</ID>
                  <Description>"HpPunishment"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>98</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>73</ID>
                  <Description>"BaseMaxHpChange"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>9C</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>74</ID>
                  <Description>"MaxManaChangeUnscalable"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>A0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>75</ID>
                  <Description>"BaseMaxManaChange"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>A4</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>76</ID>
                  <Description>"HealthRegenPerSecondChange"</Description>
                  <VariableType>Float</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>A8</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>77</ID>
                  <Description>"ManaRegenPerSecondChange"</Description>
                  <VariableType>Float</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>AC</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>78</ID>
                  <Description>"CriticalChance"</Description>
                  <VariableType>Float</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>B0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>79</ID>
                  <Description>"StartingThreatPoints"</Description>
                  <VariableType>Float</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>B4</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>80</ID>
                  <Description>"ElementalResistance"</Description>
                  <VariableType>Float</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>B8</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>81</ID>
                  <Description>"IsSleeping"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>BC</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>82</ID>
                  <Description>"Stance"</Description>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>C0</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>83</ID>
                  <Description>"IsAlive"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>C4</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>84</ID>
                  <Description>"_isLocked"</Description>
                  <VariableType>Byte</VariableType>
                  <Address>[i_base_hero_addr]+30</Address>
                  <Offsets>
                    <Offset>C5</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
