<?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>22</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>2</ID>
      <Description>"Enable (enable twice: 1st: waiting for IL2CPP to complete, then enable again)"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="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;TimerTien=createTimer()TimerTien.Interval=60000;TimerTien.OnTimer=function(u)thetick=thetick+1;if thetick==90 then addOCTFooter(true)end end
{$asm}
// https:// opencheattables.org/
define(MoreMountainsCorgiEngineHealthset_CurrentHealthProc,"MoreMountains.CorgiEngine.Health.set_CurrentHealth")
define(ZebraCharacterUseItemHandleInputProc,"Zebra.CharacterUseItem.HandleInput")
define(ZebraCharacterUseItemHandleAnimEventProc,"Zebra.CharacterUseItem.HandleAnimEvent")
define(ZebraStaminaset_ValueProc,"Zebra.Stamina.set_Value")
define(MoreMountainsCorgiEngineCharacterget_IsDeadProc,"MoreMountains.CorgiEngine.Character.get_IsDead")
define(ZebraStaminaget_CurrentValueproc,"Zebra.Stamina.get_CurrentValue")
define(ZebraPlayerDataAddCoinProc,"Zebra.PlayerData.AddCoin")
define(ZebraUI_StateShowProc,"Zebra.UI_State.Show")
define(ZebraWeaponDamageUpdaterUpdateMainWeaponDamageProc,"Zebra.WeaponDamageUpdater.UpdateMainWeaponDamage")
define(ZebraCharacterUseStolenWeaponDecreaseUsageCountProc,"Zebra.CharacterUseStolenWeapon.DecreaseUsageCount")
define(ZebraWeaponDamageUpdaterUpdateShadowBulletDamageProc,"Zebra.WeaponDamageUpdater.UpdateShadowBulletDamage")
define(MoreMountainsCorgiEngineCharacterget_IsInvincibleProc,"MoreMountains.CorgiEngine.Character.get_IsInvincible")
define(ZebraPlayerUnitset_IsInvincibleProc,"Zebra.PlayerUnit.set_IsInvincible")


registersymbol(MoreMountainsCorgiEngineHealthset_CurrentHealthProc)
registersymbol(ZebraCharacterUseItemHandleInputProc)
registersymbol(ZebraCharacterUseItemHandleAnimEventProc)
registersymbol(ZebraStaminaset_ValueProc)
registersymbol(MoreMountainsCorgiEngineCharacterget_IsDeadProc)
registersymbol(ZebraStaminaget_CurrentValueproc)
registersymbol(ZebraPlayerDataAddCoinProc)
registersymbol(ZebraUI_StateShowProc)
registersymbol(ZebraWeaponDamageUpdaterUpdateMainWeaponDamageProc)
registersymbol(ZebraCharacterUseStolenWeaponDecreaseUsageCountProc)
registersymbol(ZebraWeaponDamageUpdaterUpdateShadowBulletDamageProc)
registersymbol(MoreMountainsCorgiEngineCharacterget_IsInvincibleProc)
registersymbol(ZebraPlayerUnitset_IsInvincibleProc)

[DISABLE]
{$lua}
if syntaxcheck then return end
if not syntaxcheck and monopipe then monopipe = nil,monopipe.Destroy()end
TimerTien.Destroy()
{$asm}
unregistersymbol(*)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>68</ID>
          <Description>"+Steam version"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>18</ID>
              <Description>"Inf. HP / HP無限"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_PLAYER_HP,GameAssembly.dll,83 78 30 00 0F 9E C0 48 8B) // should be unique
aobscanregion(INJECT_PLAYER_HP,MoreMountainsCorgiEngineCharacterget_IsDeadProc+50,MoreMountainsCorgiEngineCharacterget_IsDeadProc+100,83 78 38 00 0F 9E C0 48 8B) // should be unique


alloc(newmem,$1000,INJECT_PLAYER_HP)

label(code)
label(return)

newmem:
  push rbx
  mov ebx, [rax+28]
  test ebx, ebx
  pop rbx
  je code

  push rbx
  mov ebx, [rax+38]
  cmp dword ptr [i_prev_val], ebx
  pop rbx
  je code

set_full_hp:
  push rbx
  mov ebx,[rax+40]
  mov [rax+38], ebx
  pop rbx
  jmp code
  db EB 3B 54
  db 68 69 73 20 74 61
  db 62 6C 65 20 63 6F 6D
  db 65 73 20
  db 66 72 6F 6D 20 68 74 74 70
  db 73 3A 2F 2F 6F 70 65 6E 63 68 65 61 74 74 61 62
  db 6C 65 73 2E 63 6F 6D 20 2F 20 43 45 20 37 2E 34 2B


code:
  cmp dword ptr [rax+38],00
  setle al
  jmp return

align 10 cc
  vf_2:
  dd (float)2
  i_prev_val:
  dd 0

INJECT_PLAYER_HP:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_PLAYER_HP)

[DISABLE]

INJECT_PLAYER_HP:
  db 83 78 38 00 0F 9E C0

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+3BEC5B

GameAssembly.dll+3BEC39: E8 92 D9 E2 FF        - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+3BEC3E: 45 33 C0              - xor r8d,r8d
GameAssembly.dll+3BEC41: 33 D2                 - xor edx,edx
GameAssembly.dll+3BEC43: 48 8B CF              - mov rcx,rdi
GameAssembly.dll+3BEC46: E8 65 2A F2 01        - call UnityEngine.Object.op_Equality
GameAssembly.dll+3BEC4B: 84 C0                 - test al,al
GameAssembly.dll+3BEC4D: 75 1E                 - jne GameAssembly.dll+3BEC6D
GameAssembly.dll+3BEC4F: 48 8B 83 F8 00 00 00  - mov rax,[rbx+000000F8]
GameAssembly.dll+3BEC56: 48 85 C0              - test rax,rax
GameAssembly.dll+3BEC59: 74 1F                 - je GameAssembly.dll+3BEC7A
// ---------- INJECTING HERE ----------
GameAssembly.dll+3BEC5B: 83 78 38 00           - cmp dword ptr [rax+38],00
// ---------- DONE INJECTING  ----------
GameAssembly.dll+3BEC5F: 0F 9E C0              - setle al
GameAssembly.dll+3BEC62: 48 8B 5C 24 30        - mov rbx,[rsp+30]
GameAssembly.dll+3BEC67: 48 83 C4 20           - add rsp,20
GameAssembly.dll+3BEC6B: 5F                    - pop rdi
GameAssembly.dll+3BEC6C: C3                    - ret
GameAssembly.dll+3BEC6D: 48 8B 5C 24 30        - mov rbx,[rsp+30]
GameAssembly.dll+3BEC72: B0 01                 - mov al,01
GameAssembly.dll+3BEC74: 48 83 C4 20           - add rsp,20
GameAssembly.dll+3BEC78: 5F                    - pop rdi
GameAssembly.dll+3BEC79: C3                    - ret
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>13</ID>
              <Description>"Inf. Stamina / 體力無限"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_INF_STAMINA,GameAssembly.dll,96 04 FE C6 05 * * * * 01 80 7B 4C 00 89 7B 44 74 19) // should be unique
aobscanregion(INJECT_INF_STAMINA,ZebraStaminaset_ValueProc+20,ZebraStaminaset_ValueProc+80,89 7B 44 74 19) // should be unique


alloc(newmem,$1000,INJECT_INF_STAMINA)

label(code)
label(return)
label(i_sta_base_addr)

newmem:
  mov [i_sta_base_addr], rbx
  mov edi,[rbx+40]
  cvtsi2ss xmm15, edi
  vmovss [rbx+48], xmm15

code:
  mov [rbx+44],edi
  je GameAssembly.dll+22F9D6D
  jmp return

align 10 cc
  i_sta_base_addr:
  dq 0

INJECT_INF_STAMINA:
  jmp newmem
return:
registersymbol(i_sta_base_addr)
registersymbol(INJECT_INF_STAMINA)

[DISABLE]

INJECT_INF_STAMINA:
  db 89 7B 44 74 19

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+22F9D4F

GameAssembly.dll+22F9D25: 57                    - push rdi
GameAssembly.dll+22F9D26: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+22F9D2A: 80 3D 7F 43 BD 00 00  - cmp byte ptr [GameAssembly.dll+2ECE0B0],00
GameAssembly.dll+22F9D31: 8B FA                 - mov edi,edx
GameAssembly.dll+22F9D33: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+22F9D36: 75 13                 - jne GameAssembly.dll+22F9D4B
GameAssembly.dll+22F9D38: 48 8D 0D 99 ED B3 00  - lea rcx,[GameAssembly.dll+2E38AD8]
GameAssembly.dll+22F9D3F: E8 2C 96 04 FE        - call GameAssembly.dll+343370
GameAssembly.dll+22F9D44: C6 05 65 43 BD 00 01  - mov byte ptr [GameAssembly.dll+2ECE0B0],01
GameAssembly.dll+22F9D4B: 80 7B 4C 00           - cmp byte ptr [rbx+4C],00
// ---------- INJECTING HERE ----------
GameAssembly.dll+22F9D4F: 89 7B 44              - mov [rbx+44],edi
// ---------- DONE INJECTING  ----------
GameAssembly.dll+22F9D52: 74 19                 - je GameAssembly.dll+22F9D6D
GameAssembly.dll+22F9D54: 83 FF 19              - cmp edi,19
GameAssembly.dll+22F9D57: 7C 14                 - jl GameAssembly.dll+22F9D6D
GameAssembly.dll+22F9D59: 48 8B 4B 58           - mov rcx,[rbx+58]
GameAssembly.dll+22F9D5D: C6 43 4C 00           - mov byte ptr [rbx+4C],00
GameAssembly.dll+22F9D61: 48 85 C9              - test rcx,rcx
GameAssembly.dll+22F9D64: 74 37                 - je GameAssembly.dll+22F9D9D
GameAssembly.dll+22F9D66: 33 D2                 - xor edx,edx
GameAssembly.dll+22F9D68: E8 63 87 46 FE        - call Zebra.PlayerUnit.StopFlashOutline
GameAssembly.dll+22F9D6D: 48 8B 4B 18           - mov rcx,[rbx+18]
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>16</ID>
                  <Description>"Sta. base addr."</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>808080</Color>
                  <VariableType>8 Bytes</VariableType>
                  <Address>i_sta_base_addr</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>8</ID>
              <Description>"Unlimited any item  / 道具使用次數無限 (untested)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_UNLIMIT_ITEM,GameAssembly.dll,83 BB A0 00 00 00 00 0F 8E) // should be unique
aobscanregion(INJECT_UNLIMIT_ITEM,ZebraCharacterUseItemHandleInputProc+50,ZebraCharacterUseItemHandleInputProc+120,83 BB A0 00 00 00 00 0F 8E) // should be unique
alloc(newmem,$1000,INJECT_UNLIMIT_ITEM)

label(code)
label(return)

newmem:
  cmp dword ptr [rbx+000000A0],00
  jg code
  mov dword ptr [rbx+000000A0],1

code:
  cmp dword ptr [rbx+000000A0],00
  jmp return

INJECT_UNLIMIT_ITEM:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_UNLIMIT_ITEM)

[DISABLE]

INJECT_UNLIMIT_ITEM:
  db 83 BB A0 00 00 00 00

unregistersymbol(INJECT_UNLIMIT_ITEM)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+41FD64

GameAssembly.dll+41FD37: C6 05 4F 7F A9 02 01  - mov byte ptr [GameAssembly.dll+2EB7C8D],01
GameAssembly.dll+41FD3E: 80 7B 18 00           - cmp byte ptr [rbx+18],00
GameAssembly.dll+41FD42: 0F 84 56 01 00 00     - je GameAssembly.dll+41FE9E
GameAssembly.dll+41FD48: 48 8B 4B 20           - mov rcx,[rbx+20]
GameAssembly.dll+41FD4C: 48 85 C9              - test rcx,rcx
GameAssembly.dll+41FD4F: 0F 84 7F 01 00 00     - je GameAssembly.dll+41FED4
GameAssembly.dll+41FD55: 33 D2                 - xor edx,edx
GameAssembly.dll+41FD57: E8 E4 DB 20 00        - call MoreMountains.CorgiEngine.Character.get_IsDead
GameAssembly.dll+41FD5C: 84 C0                 - test al,al
GameAssembly.dll+41FD5E: 0F 85 3A 01 00 00     - jne GameAssembly.dll+41FE9E
// ---------- INJECTING HERE ----------
GameAssembly.dll+41FD64: 83 BB A0 00 00 00 00  - cmp dword ptr [rbx+000000A0],00
// ---------- DONE INJECTING  ----------
GameAssembly.dll+41FD6B: 0F 8E 2D 01 00 00     - jng GameAssembly.dll+41FE9E
GameAssembly.dll+41FD71: 48 8B 43 50           - mov rax,[rbx+50]
GameAssembly.dll+41FD75: 48 85 C0              - test rax,rax
GameAssembly.dll+41FD78: 0F 84 50 01 00 00     - je GameAssembly.dll+41FECE
GameAssembly.dll+41FD7E: 48 8B 48 20           - mov rcx,[rax+20]
GameAssembly.dll+41FD82: 48 85 C9              - test rcx,rcx
GameAssembly.dll+41FD85: 0F 84 3D 01 00 00     - je GameAssembly.dll+41FEC8
GameAssembly.dll+41FD8B: 33 D2                 - xor edx,edx
GameAssembly.dll+41FD8D: E8 1E 06 49 00        - call MoreMountains.CorgiEngine.CorgiControllerState.get_IsCollidingBelow
GameAssembly.dll+41FD92: 84 C0                 - test al,al
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>10</ID>
              <Description>"Unlimited steamed stuffed bun / 割包無限"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_UNLIMIT_STEAMED_STUFFED_BUN,ZebraCharacterUseItemHandleAnimEventProc+e0,ZebraCharacterUseItemHandleAnimEventProc+140,FF 8B A0 00 00 00 48 8B CB) // should be unique


alloc(newmem,$1000,INJECT_UNLIMIT_STEAMED_STUFFED_BUN)

label(code)
label(return)

newmem:
  cmp byte ptr [rbx+000000A0], 2
  jg code
  mov byte ptr [rbx+000000A0], 2

code:
  dec [rbx+000000A0]
  jmp return

INJECT_UNLIMIT_STEAMED_STUFFED_BUN:
  jmp newmem
  nop
return:
registersymbol(INJECT_UNLIMIT_STEAMED_STUFFED_BUN)

[DISABLE]

INJECT_UNLIMIT_STEAMED_STUFFED_BUN:
  db FF 8B A0 00 00 00

unregistersymbol(INJECT_UNLIMIT_STEAMED_STUFFED_BUN)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+A1EB86

GameAssembly.dll+A1EB62: 75 05                    - jne GameAssembly.dll+A1EB69
GameAssembly.dll+A1EB64: E8 67 DA 7C FF           - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+A1EB69: 33 C9                    - xor ecx,ecx
GameAssembly.dll+A1EB6B: E8 60 89 A4 FF           - call Zebra.Game.get_IsBossRushMode
GameAssembly.dll+A1EB70: 84 C0                    - test al,al
GameAssembly.dll+A1EB72: 74 07                    - je GameAssembly.dll+A1EB7B
GameAssembly.dll+A1EB74: 33 C9                    - xor ecx,ecx
GameAssembly.dll+A1EB76: E8 C5 4E E7 FF           - call Zebra.BossRush.BossRushOmamori.AddBaoCount
GameAssembly.dll+A1EB7B: F3 0F 10 0D 11 45 9C 01  - movss xmm1,[GameAssembly.dll+23E3094]
GameAssembly.dll+A1EB83: 45 33 C0                 - xor r8d,r8d
// ---------- INJECTING HERE ----------
GameAssembly.dll+A1EB86: FF 8B A0 00 00 00        - dec [rbx+000000A0]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+A1EB8C: 48 8B CB                 - mov rcx,rbx
GameAssembly.dll+A1EB8F: E8 EC 04 00 00           - call Zebra.CharacterUseItem.SelfHealing
GameAssembly.dll+A1EB94: 48 8B 8B 90 00 00 00     - mov rcx,[rbx+00000090]
GameAssembly.dll+A1EB9B: 48 85 C9                 - test rcx,rcx
GameAssembly.dll+A1EB9E: 74 12                    - je GameAssembly.dll+A1EBB2
GameAssembly.dll+A1EBA0: 4C 8B 05 D1 F8 36 02     - mov r8,[GameAssembly.dll+2D8E478]
GameAssembly.dll+A1EBA7: 8B 93 A0 00 00 00        - mov edx,[rbx+000000A0]
GameAssembly.dll+A1EBAD: E8 BE 34 2E 00           - call FbrrTpLCzHupGwBMtwoWJwxGkfn.Invoke
GameAssembly.dll+A1EBB2: 48 8B 05 37 04 3A 02     - mov rax,[GameAssembly.dll+2DBEFF0]
GameAssembly.dll+A1EBB9: 48 8B 88 B8 00 00 00     - mov rcx,[rax+000000B8]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>61</ID>
              <Description>"Unlimited weapon usage / 武器使用次數無限"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author :
}

[ENABLE]

//aobscanmodule(INJECT_DECREASE_WEAPON_USAGE,GameAssembly.dll,F2 FF CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 48 89 5C 24 10) // should be unique
aobscanregion(INJECT_DECREASE_WEAPON_USAGE,ZebraCharacterUseStolenWeaponDecreaseUsageCountProc,ZebraCharacterUseStolenWeaponDecreaseUsageCountProc+a,48 89 5C 24 10) // should be unique
alloc(newmem,$1000,INJECT_DECREASE_WEAPON_USAGE)

label(code)
label(return)

newmem:
  ret
code:
  mov [rsp+10],rbx
  jmp return

INJECT_DECREASE_WEAPON_USAGE:
  jmp newmem
return:
registersymbol(INJECT_DECREASE_WEAPON_USAGE)

[DISABLE]

INJECT_DECREASE_WEAPON_USAGE:
  db 48 89 5C 24 10

unregistersymbol(INJECT_DECREASE_WEAPON_USAGE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.CharacterUseStolenWeapon.DecreaseUsageCount

GameAssembly.dll+421206: CC                    - int 3 
GameAssembly.dll+421207: CC                    - int 3 
GameAssembly.dll+421208: CC                    - int 3 
GameAssembly.dll+421209: CC                    - int 3 
GameAssembly.dll+42120A: CC                    - int 3 
GameAssembly.dll+42120B: CC                    - int 3 
GameAssembly.dll+42120C: CC                    - int 3 
GameAssembly.dll+42120D: CC                    - int 3 
GameAssembly.dll+42120E: CC                    - int 3 
GameAssembly.dll+42120F: CC                    - int 3 
// ---------- INJECTING HERE ----------
Zebra.CharacterUseStolenWeapon.DecreaseUsageCount: 48 89 5C 24 10        - mov [rsp+10],rbx
// ---------- DONE INJECTING  ----------
GameAssembly.dll+421215: 57                    - push rdi
GameAssembly.dll+421216: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+42121A: 80 3D 95 6A A9 02 00  - cmp byte ptr [GameAssembly.dll+2EB7CB6],00
GameAssembly.dll+421221: 8B FA                 - mov edi,edx
GameAssembly.dll+421223: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+421226: 75 1F                 - jne GameAssembly.dll+421247
GameAssembly.dll+421228: 48 8D 0D E9 D9 A0 02  - lea rcx,[GameAssembly.dll+2E2EC18]
GameAssembly.dll+42122F: E8 3C 21 F2 FF        - call GameAssembly.dll+343370
GameAssembly.dll+421234: 48 8D 0D 2D BC A1 02  - lea rcx,[GameAssembly.dll+2E3CE68]
GameAssembly.dll+42123B: E8 30 21 F2 FF        - call GameAssembly.dll+343370
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>66</ID>
              <Description>"Invisible as possible (to traps) / 儘可能隱形"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author :
}

[ENABLE]

//aobscanmodule(INJECT_SET_INVISIBLE_1,GameAssembly.dll,0F B6 83 E2 00 00 00) // should be unique
aobscanregion(INJECT_SET_INVISIBLE_1,MoreMountainsCorgiEngineCharacterget_IsInvincibleProc+10,MoreMountainsCorgiEngineCharacterget_IsInvincibleProc+40,0F B6 83 DA 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_SET_INVISIBLE_1)

//aobscanmodule(INJECT_SET_INVISIBLE_2,GameAssembly.dll,40 88 BB E2 00 00 00) // should be unique
aobscanregion(INJECT_SET_INVISIBLE_2,ZebraPlayerUnitset_IsInvincibleProc+9f,ZebraPlayerUnitset_IsInvincibleProc+10f,40 88 BB DA 00 00 00) // should be unique
alloc(newmem2,$1000,INJECT_SET_INVISIBLE_2)

label(code)
label(return)

newmem:
  mov byte ptr [rbx+000000DA], 1

code:
  movzx eax,byte ptr [rbx+000000DA]
  jmp return

INJECT_SET_INVISIBLE_1:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SET_INVISIBLE_1)


label(code2)
label(return2)

newmem2:
  mov dil, 1

code2:
  mov [rbx+000000DA],dil
  jmp return2

INJECT_SET_INVISIBLE_2:
  jmp newmem2
  nop 2
return2:
registersymbol(INJECT_SET_INVISIBLE_2)



[DISABLE]

INJECT_SET_INVISIBLE_1:
  db 0F B6 83 DA 00 00 00

unregistersymbol(INJECT_SET_INVISIBLE_1)
dealloc(newmem)

INJECT_SET_INVISIBLE_2:
  db 40 88 BB DA 00 00 00

unregistersymbol(INJECT_SET_INVISIBLE_2)
dealloc(newmem2)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+3BED36

GameAssembly.dll+3BED1E: CC                    - int 3
GameAssembly.dll+3BED1F: CC                    - int 3
MoreMountainsCorgiEngineCharacterget_IsInvincibleProc: 40 53                 - push rbx
GameAssembly.dll+3BED22: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+3BED26: 33 D2                 - xor edx,edx
GameAssembly.dll+3BED28: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+3BED2B: E8 C0 FE FF FF        - call MoreMountainsCorgiEngineCharacterget_IsDeadProc
GameAssembly.dll+3BED30: 84 C0                 - test al,al
GameAssembly.dll+3BED32: B0 01                 - mov al,01
GameAssembly.dll+3BED34: 75 07                 - jne GameAssembly.dll+3BED3D
// ---------- INJECTING HERE ----------
GameAssembly.dll+3BED36: 0F B6 83 DA 00 00 00  - movzx eax,byte ptr [rbx+000000DA]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+3BED3D: 48 83 C4 20           - add rsp,20
GameAssembly.dll+3BED41: 5B                    - pop rbx
GameAssembly.dll+3BED42: C3                    - ret
GameAssembly.dll+3BED43: CC                    - int 3
GameAssembly.dll+3BED44: CC                    - int 3
GameAssembly.dll+3BED45: CC                    - int 3
GameAssembly.dll+3BED46: CC                    - int 3
GameAssembly.dll+3BED47: CC                    - int 3
GameAssembly.dll+3BED48: CC                    - int 3
GameAssembly.dll+3BED49: CC                    - int 3
}

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+78FE2F

GameAssembly.dll+78FDFD: 74 0E                             - je GameAssembly.dll+78FE0D
GameAssembly.dll+78FDFF: 48 8B 15 B2 43 5E 02              - mov rdx,[GameAssembly.dll+2D741B8]
GameAssembly.dll+78FE06: 33 C9                             - xor ecx,ecx
GameAssembly.dll+78FE08: E8 93 62 89 FF                    - call GameAssembly.dll+260A0
GameAssembly.dll+78FE0D: 48 8B 8B 80 00 00 00              - mov rcx,[rbx+00000080]
GameAssembly.dll+78FE14: 48 C7 83 80 03 00 00 00 00 00 00  - mov qword ptr [rbx+00000380],00000000
GameAssembly.dll+78FE1F: 48 85 C9                          - test rcx,rcx
GameAssembly.dll+78FE22: 0F 84 A3 00 00 00                 - je GameAssembly.dll+78FECB
GameAssembly.dll+78FE28: 33 D2                             - xor edx,edx
GameAssembly.dll+78FE2A: E8 61 9B 20 00                    - call Zebra.CharacterRenderer.StopInvincibleFlashLoop
// ---------- INJECTING HERE ----------
GameAssembly.dll+78FE2F: 40 88 BB DA 00 00 00              - mov [rbx+000000DA],dil
// ---------- DONE INJECTING  ----------
GameAssembly.dll+78FE36: 48 8D 54 24 30                    - lea rdx,[rsp+30]
GameAssembly.dll+78FE3B: 48 8B 0D D6 89 62 02              - mov rcx,[GameAssembly.dll+2DB8818]
GameAssembly.dll+78FE42: 40 88 7C 24 30                    - mov [rsp+30],dil
GameAssembly.dll+78FE47: E8 F4 CE A5 FF                    - call GameAssembly.il2cpp_value_box
GameAssembly.dll+78FE4C: 48 8B 0D AD AD 60 02              - mov rcx,[GameAssembly.dll+2D9AC00]
GameAssembly.dll+78FE53: 45 33 C0                          - xor r8d,r8d
GameAssembly.dll+78FE56: 48 8B D0                          - mov rdx,rax
GameAssembly.dll+78FE59: E8 32 7A CF 00                    - call System.String.Format
GameAssembly.dll+78FE5E: 48 8B 0D C3 E6 63 02              - mov rcx,[GameAssembly.dll+2DCE528]
GameAssembly.dll+78FE65: 48 8B D8                          - mov rbx,rax
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>57</ID>
              <Description>"Damage multiplier (main weapon) / 傷害加成倍率 - 主武器"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]

//aobscanmodule(INJECT_DAMAGE_MULTI,GameAssembly.dll,89 45 78 48 8B 05 15 F6 8D 02) // should be unique
aobscanregion(INJECT_DAMAGE_MULTI,ZebraWeaponDamageUpdaterUpdateMainWeaponDamageProc+b0,ZebraWeaponDamageUpdaterUpdateMainWeaponDamageProc+1b0,89 45 78 48 8B 05 C0 D4 7F 02) // should be unique
alloc(newmem,$1000,INJECT_DAMAGE_MULTI)

label(code)
label(return)
label(vf_main_weapon_multi)

newmem:
  vmovss xmm14, [vf_main_weapon_multi]
  cvtsi2ss xmm15, eax
  vmulss xmm15, xmm15, xmm14
  cvtss2si eax, xmm15

code:
  mov [rbp+78],eax
  mov rax,[GameAssembly.dll+2DA0FB0]
  jmp return

align 10 cc
  vf_main_weapon_multi:
  dd (float)1.2

INJECT_DAMAGE_MULTI:
  jmp newmem
  nop 5
return:
registersymbol(vf_main_weapon_multi)
registersymbol(INJECT_DAMAGE_MULTI)

[DISABLE]

INJECT_DAMAGE_MULTI:
  db 89 45 78 48 8B 05 C0 D4 7F 02

unregistersymbol(INJECT_DAMAGE_MULTI)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+5A3AE6

GameAssembly.dll+5A3AB8: 4C 89 74 24 68              - mov [rsp+68],r14
GameAssembly.dll+5A3ABD: 44 8B 75 78                 - mov r14d,[rbp+78]
GameAssembly.dll+5A3AC1: 48 85 C9                    - test rcx,rcx
GameAssembly.dll+5A3AC4: 0F 84 6A 01 00 00           - je GameAssembly.dll+5A3C34
GameAssembly.dll+5A3ACA: 8B 57 18                    - mov edx,[rdi+18]
GameAssembly.dll+5A3ACD: 45 8B CE                    - mov r9d,r14d
GameAssembly.dll+5A3AD0: 48 C7 44 24 28 00 00 00 00  - mov qword ptr [rsp+28],00000000
GameAssembly.dll+5A3AD9: 44 8B C6                    - mov r8d,esi
GameAssembly.dll+5A3ADC: 48 89 44 24 20              - mov [rsp+20],rax
GameAssembly.dll+5A3AE1: E8 CA 0D F7 FF              - call Zebra.MainWeaponEnhanceConfig.GetEnhancedDamage
// ---------- INJECTING HERE ----------
GameAssembly.dll+5A3AE6: 89 45 78                    - mov [rbp+78],eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5A3AE9: 48 8B 05 C0 D4 7F 02        - mov rax,[GameAssembly.dll+2DA0FB0]
GameAssembly.dll+5A3AF0: F6 80 33 01 00 00 04        - test byte ptr [rax+00000133],04
GameAssembly.dll+5A3AF7: 74 18                       - je GameAssembly.dll+5A3B11
GameAssembly.dll+5A3AF9: 83 B8 E0 00 00 00 00        - cmp dword ptr [rax+000000E0],00
GameAssembly.dll+5A3B00: 75 0F                       - jne GameAssembly.dll+5A3B11
GameAssembly.dll+5A3B02: 48 8B C8                    - mov rcx,rax
GameAssembly.dll+5A3B05: E8 C6 8A C4 FF              - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+5A3B0A: 48 8B 05 9F D4 7F 02        - mov rax,[GameAssembly.dll+2DA0FB0]
GameAssembly.dll+5A3B11: 80 3D 2A D4 97 02 00        - cmp byte ptr [GameAssembly.dll+2F20F42],00
GameAssembly.dll+5A3B18: 75 1A                       - jne GameAssembly.dll+5A3B34
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>58</ID>
                  <Description>"multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>vf_main_weapon_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>62</ID>
              <Description>"Damage multiplier (bullet) / 傷害加成倍率 - 子彈類"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_BULLET_DAMAGE_MULTI,GameAssembly.dll,89 43 78 48 83 C4 20 5B C3 E8 FB) // should be unique
aobscanregion(INJECT_BULLET_DAMAGE_MULTI,ZebraWeaponDamageUpdaterUpdateShadowBulletDamageProc+20,ZebraWeaponDamageUpdaterUpdateShadowBulletDamageProc+80,89 43 78 48 83 C4 20) // should be unique
alloc(newmem,$1000,INJECT_BULLET_DAMAGE_MULTI)

label(code)
label(return)
label(vf_bullet_weapon_multi)

newmem:
  vmovss xmm14, [vf_bullet_weapon_multi]
  cvtsi2ss xmm15, eax
  vmulss xmm15, xmm15, xmm14
  cvtss2si eax, xmm15
code:
  mov [rbx+78],eax
  add rsp,20
  jmp return

align 10 cc
  vf_bullet_weapon_multi:
  dd (float)1.2

INJECT_BULLET_DAMAGE_MULTI:
  jmp newmem
  nop 2
return:
registersymbol(vf_bullet_weapon_multi)
registersymbol(INJECT_BULLET_DAMAGE_MULTI)

[DISABLE]

INJECT_BULLET_DAMAGE_MULTI:
  db 89 43 78 48 83 C4 20

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+5A3D67

GameAssembly.dll+5A3D49: 48 85 C0        - test rax,rax
GameAssembly.dll+5A3D4C: 74 34           - je GameAssembly.dll+5A3D82
GameAssembly.dll+5A3D4E: 48 8B 49 18     - mov rcx,[rcx+18]
GameAssembly.dll+5A3D52: 48 85 C9        - test rcx,rcx
GameAssembly.dll+5A3D55: 74 25           - je GameAssembly.dll+5A3D7C
GameAssembly.dll+5A3D57: 8B 50 18        - mov edx,[rax+18]
GameAssembly.dll+5A3D5A: 45 33 C0        - xor r8d,r8d
GameAssembly.dll+5A3D5D: E8 CE 0E F7 FF  - call Zebra.MainWeaponEnhanceConfig.GetEnhancedShadowBulletDamage
GameAssembly.dll+5A3D62: 48 85 DB        - test rbx,rbx
GameAssembly.dll+5A3D65: 74 0F           - je GameAssembly.dll+5A3D76
// ---------- INJECTING HERE ----------
GameAssembly.dll+5A3D67: 89 43 78        - mov [rbx+78],eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5A3D6A: 48 83 C4 20     - add rsp,20
GameAssembly.dll+5A3D6E: 5B              - pop rbx
GameAssembly.dll+5A3D6F: C3              - ret
GameAssembly.dll+5A3D70: E8 6B 9F CC FF  - call GameAssembly.dll+26DCE0
GameAssembly.dll+5A3D75: CC              - int 3
GameAssembly.dll+5A3D76: E8 65 9F CC FF  - call GameAssembly.dll+26DCE0
GameAssembly.dll+5A3D7B: CC              - int 3
GameAssembly.dll+5A3D7C: E8 5F 9F CC FF  - call GameAssembly.dll+26DCE0
GameAssembly.dll+5A3D81: CC              - int 3
GameAssembly.dll+5A3D82: E8 59 9F CC FF  - call GameAssembly.dll+26DCE0
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>63</ID>
                  <Description>"multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>vf_bullet_weapon_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>54</ID>
              <Description>"Coin multiplier / 金錢加成倍率"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_COIN_MULTIPLIER,GameAssembly.dll,01 73 1C 8B 43 1C) // should be unique
aobscanregion(INJECT_COIN_MULTIPLIER,ZebraPlayerDataAddCoinProc+15f,ZebraPlayerDataAddCoinProc+1af,01 73 1C 8B 43 1C) // should be unique

alloc(newmem,$1000,INJECT_COIN_MULTIPLIER)
label(code)
label(return)
label(vf_coin_multi)
newmem:
  vmovss xmm14, [vf_coin_multi]
  cvtsi2ss xmm15, esi
  vmulss xmm15, xmm15, xmm14
  cvtss2si esi, xmm15

code:
  add [rbx+1C],esi
  mov eax,[rbx+1C]
  jmp return

align 10 cc
  vf_coin_multi:
  dd (float)1.1

INJECT_COIN_MULTIPLIER:
  jmp newmem
  nop
return:
registersymbol(vf_coin_multi)
registersymbol(INJECT_COIN_MULTIPLIER)

[DISABLE]

INJECT_COIN_MULTIPLIER:
  db 01 73 1C 8B 43 1C

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+68BDDF

GameAssembly.dll+68BDB3: 48 8B C8              - mov rcx,rax
GameAssembly.dll+68BDB6: E8 25 65 C3 FF        - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+68BDBB: 48 8B 05 76 FB 7D 02  - mov rax,[GameAssembly.dll+2E6B938]
GameAssembly.dll+68BDC2: 48 8B 80 B8 00 00 00  - mov rax,[rax+000000B8]
GameAssembly.dll+68BDC9: 48 8B 88 80 00 00 00  - mov rcx,[rax+00000080]
GameAssembly.dll+68BDD0: 48 85 C9              - test rcx,rcx
GameAssembly.dll+68BDD3: 74 20                 - je GameAssembly.dll+68BDF5
GameAssembly.dll+68BDD5: 45 33 C0              - xor r8d,r8d
GameAssembly.dll+68BDD8: 8B D6                 - mov edx,esi
GameAssembly.dll+68BDDA: E8 11 DB 1B 00        - call Zebra.UI_MoneyCounter.Add
// ---------- INJECTING HERE ----------
GameAssembly.dll+68BDDF: 01 73 1C              - add [rbx+1C],esi
// ---------- DONE INJECTING  ----------
GameAssembly.dll+68BDE2: 8B 43 1C              - mov eax,[rbx+1C]
GameAssembly.dll+68BDE5: 48 8B 5C 24 30        - mov rbx,[rsp+30]
GameAssembly.dll+68BDEA: 48 8B 74 24 38        - mov rsi,[rsp+38]
GameAssembly.dll+68BDEF: 48 83 C4 20           - add rsp,20
GameAssembly.dll+68BDF3: 5F                    - pop rdi
GameAssembly.dll+68BDF4: C3                    - ret 
GameAssembly.dll+68BDF5: E8 D6 76 CB FF        - call GameAssembly.dll+3434D0
GameAssembly.dll+68BDFA: CC                    - int 3 
GameAssembly.dll+68BDFB: CC                    - int 3 
GameAssembly.dll+68BDFC: CC                    - int 3 
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>55</ID>
                  <Description>"multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>vf_coin_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>65</ID>
              <Description>"Long perfect dodge duration (0.15 sec -&gt; 0.6 sec)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author :
}

[ENABLE]

aobscanmodule(INJECT_PERFECT_DODGE,GameAssembly.dll,F3 0F 10 B6 B8 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_PERFECT_DODGE)

label(code)
label(return)

newmem:

code:
  movss xmm6,[rsi+000000B8]

  vmovss xmm6, [vf_0_6]

  jmp return

align 10 cc
  vf_0_6:
  dd (float)0.6

INJECT_PERFECT_DODGE:
  jmp newmem
  nop 3
return:
registersymbol(INJECT_PERFECT_DODGE)

[DISABLE]

INJECT_PERFECT_DODGE:
  db F3 0F 10 B6 B8 00 00 00

unregistersymbol(INJECT_PERFECT_DODGE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+2307435

GameAssembly.dll+2307407: 4C 8B 0D BA 78 B2 00     - mov r9,[GameAssembly.dll+2E2ECC8]
GameAssembly.dll+230740E: 48 8B D6                 - mov rdx,rsi
GameAssembly.dll+2307411: 4C 8B 05 58 9E B2 00     - mov r8,[GameAssembly.dll+2E31270]
GameAssembly.dll+2307418: 48 8B C8                 - mov rcx,rax
GameAssembly.dll+230741B: 48 8B D8                 - mov rbx,rax
GameAssembly.dll+230741E: E8 0D 38 10 FE           - call fnOnTranslated..ctor
GameAssembly.dll+2307423: 4C 8B 05 C6 DB B6 00     - mov r8,[GameAssembly.dll+2E74FF0]
GameAssembly.dll+230742A: 48 8B D3                 - mov rdx,rbx
GameAssembly.dll+230742D: 48 8B CF                 - mov rcx,rdi
GameAssembly.dll+2307430: E8 7B AA 51 FE           - call GameAssembly.dll+821EB0
// ---------- INJECTING HERE ----------
GameAssembly.dll+2307435: F3 0F 10 B6 B8 00 00 00  - movss xmm6,[rsi+000000B8]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+230743D: 48 89 86 C0 00 00 00     - mov [rsi+000000C0],rax
GameAssembly.dll+2307444: 48 8B 0D 6D 6F B3 00     - mov rcx,[GameAssembly.dll+2E3E3B8]
GameAssembly.dll+230744B: F6 81 33 01 00 00 04     - test byte ptr [rcx+00000133],04
GameAssembly.dll+2307452: 74 0E                    - je GameAssembly.dll+2307462
GameAssembly.dll+2307454: 83 B9 E0 00 00 00 00     - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+230745B: 75 05                    - jne GameAssembly.dll+2307462
GameAssembly.dll+230745D: E8 7E AE FB FD           - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+2307462: 33 D2                    - xor edx,edx
GameAssembly.dll+2307464: 8D 4A 1A                 - lea ecx,[rdx+1A]
GameAssembly.dll+2307467: E8 54 AF 7B FE           - call Zebra.OmamoriSystem.IsEquip
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>20</ID>
              <Description>"Get attr. (usage: open menu) / 取得基礎數值如HP"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_GET_STAT,GameAssembly.dll,66 0F 6E 41 44) // should be unique
aobscanregion(INJECT_GET_STAT,ZebraStaminaget_CurrentValueproc,ZebraStaminaget_CurrentValueproc+a,66 0F 6E 41 44) // should be unique
alloc(newmem,$1000,INJECT_GET_STAT)

label(code)
label(return)
label(i_base_addr)

newmem:
  mov [i_base_addr], rcx
code:
  movd xmm0,[rcx+44]
  jmp return

align 10 cc
  i_base_addr:
  dq 0

INJECT_GET_STAT:
  jmp newmem
return:
registersymbol(i_base_addr)
registersymbol(INJECT_GET_STAT)

[DISABLE]

INJECT_GET_STAT:
  db 66 0F 6E 41 44

unregistersymbol(INJECT_GET_STAT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.Stamina.get_CurrentValue

GameAssembly.dll+22F9BB3: 48 8B 6C 24 38  - mov rbp,[rsp+38]
GameAssembly.dll+22F9BB8: 48 8B 74 24 40  - mov rsi,[rsp+40]
GameAssembly.dll+22F9BBD: 48 83 C4 20     - add rsp,20
GameAssembly.dll+22F9BC1: 5F              - pop rdi
GameAssembly.dll+22F9BC2: C3              - ret 
GameAssembly.dll+22F9BC3: 48 8B D1        - mov rdx,rcx
GameAssembly.dll+22F9BC6: 48 8B C8        - mov rcx,rax
GameAssembly.dll+22F9BC9: E8 52 93 04 FE  - call GameAssembly.dll+342F20
GameAssembly.dll+22F9BCE: CC              - int 3 
GameAssembly.dll+22F9BCF: CC              - int 3 
// ---------- INJECTING HERE ----------
Zebra.Stamina.get_CurrentValue: 66 0F 6E 41 44  - movd xmm0,[rcx+44]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+22F9BD5: 0F 5B C0        - cvtdq2ps xmm0,xmm0
GameAssembly.dll+22F9BD8: C3              - ret 
GameAssembly.dll+22F9BD9: CC              - int 3 
GameAssembly.dll+22F9BDA: CC              - int 3 
GameAssembly.dll+22F9BDB: CC              - int 3 
GameAssembly.dll+22F9BDC: CC              - int 3 
GameAssembly.dll+22F9BDD: CC              - int 3 
GameAssembly.dll+22F9BDE: CC              - int 3 
GameAssembly.dll+22F9BDF: CC              - int 3 
Zebra.Stamina.remove_OnShowAnimation: 48 89 5C 24 08  - mov [rsp+08],rbx
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>21</ID>
                  <Description>"Base addr."</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>808080</Color>
                  <VariableType>8 Bytes</VariableType>
                  <Address>i_base_addr</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>25</ID>
                  <Description>"_invincible"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Byte</VariableType>
                  <Address>[i_base_addr]+58</Address>
                  <Offsets>
                    <Offset>DA</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>56</ID>
                  <Description>"_currentHealth"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[i_base_addr]+58</Address>
                  <Offsets>
                    <Offset>38</Offset>
                    <Offset>30</Offset>
                    <Offset>100</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>37</ID>
                  <Description>"HP+"</Description>
                  <Options moHideChildren="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>27</ID>
                      <Description>"_currentHealth"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>38</Offset>
                        <Offset>30</Offset>
                        <Offset>100</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>28</ID>
                      <Description>"MaximumHealth"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>40</Offset>
                        <Offset>30</Offset>
                        <Offset>100</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>29</ID>
                      <Description>"_tieablePercent"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>44</Offset>
                        <Offset>30</Offset>
                        <Offset>100</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>30</ID>
                      <Description>"_tieableHealth"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>48</Offset>
                        <Offset>30</Offset>
                        <Offset>100</Offset>
                      </Offsets>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>38</ID>
                  <Description>"Stamina+"</Description>
                  <Options moHideChildren="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>31</ID>
                      <Description>"Stamina.MaxValue"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_addr]+40</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>32</ID>
                      <Description>"Stamina._value"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_base_addr]+44</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>33</ID>
                      <Description>"Stamina._fValue"</Description>
                      <VariableType>Float</VariableType>
                      <Address>[i_base_addr]+48</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>39</ID>
                  <Description>"General"</Description>
                  <Options moHideChildren="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>23</ID>
                      <Description>"_canFlip"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>D8</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>24</ID>
                      <Description>"_isPaused"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>DB</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>26</ID>
                      <Description>"_isLock"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>DC</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>34</ID>
                      <Description>"_isDrinking"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_addr]+58</Address>
                      <Offsets>
                        <Offset>458</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>35</ID>
                      <Description>"_isReducingRegenRate"</Description>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_addr]+68</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>36</ID>
                      <Description>"_isFlash"</Description>
                      <VariableType>Byte</VariableType>
                      <Address>[i_base_addr]+78</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>41</ID>
              <Description>"Get base data (usage: open menu)  / 取得基礎數值如金錢數量"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_PLAYER_DATA,GameAssembly.dll,44 8B 47 1C 48 8D 4C 24 60) // should be unique
aobscanregion(INJECT_PLAYER_DATA,ZebraUI_StateShowProc+140,ZebraUI_StateShowProc+2a0,44 8B 47 1C 48 8D 4C 24 60) // should be unique


alloc(newmem,$1000,INJECT_PLAYER_DATA)

label(code)
label(return)
label(i_player_base)

newmem:
  mov [i_player_base], rdi

code:
  mov r8d,[rdi+1C]
  lea rcx,[rsp+60]
  jmp return

align 10 cc
  i_player_base:
  dq 0

INJECT_PLAYER_DATA:
  jmp newmem
  nop 4
return:
registersymbol(i_player_base)
registersymbol(INJECT_PLAYER_DATA)

[DISABLE]

INJECT_PLAYER_DATA:
  db 44 8B 47 1C 48 8D 4C 24 60

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+43D799

GameAssembly.dll+43D76E: E8 8D 4A E8 FF        - call GameAssembly.il2cpp_object_unbox
GameAssembly.dll+43D773: 8B 10                 - mov edx,[rax]
GameAssembly.dll+43D775: 89 54 24 68           - mov [rsp+68],edx
GameAssembly.dll+43D779: 4D 85 F6              - test r14,r14
GameAssembly.dll+43D77C: 0F 84 BA 03 00 00     - je GameAssembly.dll+43DB3C
GameAssembly.dll+43D782: 4D 8B 0E              - mov r9,[r14]
GameAssembly.dll+43D785: 48 8B D5              - mov rdx,rbp
GameAssembly.dll+43D788: 49 8B CE              - mov rcx,r14
GameAssembly.dll+43D78B: 4D 8B 81 60 05 00 00  - mov r8,[r9+00000560]
GameAssembly.dll+43D792: 41 FF 91 58 05 00 00  - call qword ptr [r9+00000558]
// ---------- INJECTING HERE ----------
GameAssembly.dll+43D799: 44 8B 47 1C           - mov r8d,[rdi+1C]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+43D79D: 48 8D 4C 24 60        - lea rcx,[rsp+60]
GameAssembly.dll+43D7A2: 48 8B B3 98 00 00 00  - mov rsi,[rbx+00000098]
GameAssembly.dll+43D7A9: B8 1F 85 EB 51        - mov eax,51EB851F
GameAssembly.dll+43D7AE: 41 F7 E8              - imul r8d
GameAssembly.dll+43D7B1: 8B EA                 - mov ebp,edx
GameAssembly.dll+43D7B3: 33 D2                 - xor edx,edx
GameAssembly.dll+43D7B5: C1 FD 05              - sar ebp,05
GameAssembly.dll+43D7B8: 8B C5                 - mov eax,ebp
GameAssembly.dll+43D7BA: C1 E8 1F              - shr eax,1F
GameAssembly.dll+43D7BD: 03 E8                 - add ebp,eax
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>42</ID>
                  <Description>"Base addr."</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>808080</Color>
                  <VariableType>8 Bytes</VariableType>
                  <Address>i_player_base</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>51</ID>
                  <Description>"General"</Description>
                  <Options moHideChildren="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>46</ID>
                      <Description>"_coin"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+1C</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>43</ID>
                      <Description>"_healthLevel"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+10</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>44</ID>
                      <Description>"_staminaLevel"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+14</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>45</ID>
                      <Description>"_weaponLevel"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>47</ID>
                      <Description>"_coinOnBeggarTotal"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+20</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>48</ID>
                      <Description>"_guabaoLevel"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+24</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>49</ID>
                      <Description>"_shadowStatus"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+28</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>50</ID>
                      <Description>"_maxOmamorisWeight"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+38</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>69</ID>
          <Description>"+Xbox Games version (may not update)"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>70</ID>
              <Description>"Inf. HP / HP無限"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_PLAYER_HP,MoreMountainsCorgiEngineCharacterget_IsDeadProc+30,MoreMountainsCorgiEngineCharacterget_IsDeadProc+E0,48 63 40 34 85 C0 40) // should be unique


alloc(newmem,$1000,INJECT_PLAYER_HP)

label(code)
label(return)

newmem:

  push rbx
  mov ebx, [rax+20]
  test ebx, ebx
  pop rbx
  je code

  push rbx
  mov ebx, [rax+34]
  cmp dword ptr [i_prev_val], ebx
  pop rbx
  je code

set_full_hp:
  push rbx
  mov ebx,[rax+3C]
  mov [rax+34], ebx
  pop rbx
  jmp code



code:
  movsxd  rax,dword ptr [rax+34]
  test eax,eax
  jmp return

align 10 cc
  vf_2:
  dd (float)2
  i_prev_val:
  dd 0

INJECT_PLAYER_HP:
  jmp newmem
  nop
return:
registersymbol(INJECT_PLAYER_HP)

[DISABLE]

INJECT_PLAYER_HP:
 db 48 63 40 34 85 C0

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: MoreMountains.CorgiEngine.Character:get_IsDead+43

MoreMountains.CorgiEngine.Character:get_IsDead+1d: 90                             - nop
MoreMountains.CorgiEngine.Character:get_IsDead+1e: 49 BB 30 06 D9 F2 A3 02 00 00  - mov r11,UnityEngine.Object:op_Equality
MoreMountains.CorgiEngine.Character:get_IsDead+28: 41 FF D3                       - call r11
MoreMountains.CorgiEngine.Character:get_IsDead+2b: 85 C0                          - test eax,eax
MoreMountains.CorgiEngine.Character:get_IsDead+2d: 74 07                          - je MoreMountains.CorgiEngine.Character:get_IsDead+36
MoreMountains.CorgiEngine.Character:get_IsDead+2f: B8 01 00 00 00                 - mov eax,00000001
MoreMountains.CorgiEngine.Character:get_IsDead+34: EB 25                          - jmp MoreMountains.CorgiEngine.Character:get_IsDead+5b
MoreMountains.CorgiEngine.Character:get_IsDead+36: 48 8B 86 E0 00 00 00           - mov rax,[rsi+000000E0]
MoreMountains.CorgiEngine.Character:get_IsDead+3d: 48 8B C8                       - mov rcx,rax
MoreMountains.CorgiEngine.Character:get_IsDead+40: 83 39 00                       - cmp dword ptr [rcx],00
// ---------- INJECTING HERE ----------
MoreMountains.CorgiEngine.Character:get_IsDead+43: 48 63 40 34                    - movsxd  rax,dword ptr [rax+34]
// ---------- DONE INJECTING  ----------
MoreMountains.CorgiEngine.Character:get_IsDead+47: 85 C0                          - test eax,eax
MoreMountains.CorgiEngine.Character:get_IsDead+49: 40 0F 9F C0                    - setg al
MoreMountains.CorgiEngine.Character:get_IsDead+4d: 48 0F B6 C0                    - movzx rax,al
MoreMountains.CorgiEngine.Character:get_IsDead+51: 85 C0                          - test eax,eax
MoreMountains.CorgiEngine.Character:get_IsDead+53: 40 0F 94 C0                    - sete al
MoreMountains.CorgiEngine.Character:get_IsDead+57: 48 0F B6 C0                    - movzx rax,al
MoreMountains.CorgiEngine.Character:get_IsDead+5b: 48 8B 75 F8                    - mov rsi,[rbp-08]
MoreMountains.CorgiEngine.Character:get_IsDead+5f: 48 8D 65 00                    - lea rsp,[rbp+00]
MoreMountains.CorgiEngine.Character:get_IsDead+63: 5D                             - pop rbp
MoreMountains.CorgiEngine.Character:get_IsDead+64: C3                             - ret
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>71</ID>
              <Description>"Inf. Stamina / 體力無限"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_INF_STAMINA,ZebraStaminaset_ValueProc+20,ZebraStaminaset_ValueProc+80,48 8B 47 18 48 8B C8 48 8B F1) // should be unique


alloc(newmem,$1000,INJECT_INF_STAMINA)

label(code)
label(return)
label(i_sta_base_addr)

newmem:
  mov [i_sta_base_addr], rdi
  mov eax, [rdi+64]
  mov [rdi+68], eax

code:
  mov rax,[rdi+18]
  mov rcx,rax
  jmp return

align 10 cc
  i_sta_base_addr:
  dq 0

INJECT_INF_STAMINA:
  jmp newmem
  nop 2
return:
registersymbol(i_sta_base_addr)
registersymbol(INJECT_INF_STAMINA)

[DISABLE]

INJECT_INF_STAMINA:
  db 48 8B 47 18 48 8B C8

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.Stamina:set_Value+33

Zebra.Stamina:set_Value+8: 48 89 75 F0                    - mov [rbp-10],rsi
Zebra.Stamina:set_Value+c: 48 89 7D F8                    - mov [rbp-08],rdi
Zebra.Stamina:set_Value+10: 48 8B F9                       - mov rdi,rcx
Zebra.Stamina:set_Value+13: 48 8B F2                       - mov rsi,rdx
Zebra.Stamina:set_Value+16: 89 77 68                       - mov [rdi+68],esi
Zebra.Stamina:set_Value+19: 48 8B D6                       - mov rdx,rsi
Zebra.Stamina:set_Value+1c: 48 8B CF                       - mov rcx,rdi
Zebra.Stamina:set_Value+1f: 48 8D AD 00 00 00 00           - lea rbp,[rbp+00000000]
Zebra.Stamina:set_Value+26: 49 BB 80 47 32 44 A4 02 00 00  - mov r11,Zebra.Stamina:OnStaminaUpdate
Zebra.Stamina:set_Value+30: 41 FF D3                       - call r11
// ---------- INJECTING HERE ----------
Zebra.Stamina:set_Value+33: 48 8B 47 18                    - mov rax,[rdi+18]
// ---------- DONE INJECTING  ----------
Zebra.Stamina:set_Value+37: 48 8B C8                       - mov rcx,rax
Zebra.Stamina:set_Value+3a: 48 8B F1                       - mov rsi,rcx
Zebra.Stamina:set_Value+3d: 48 85 C0                       - test rax,rax
Zebra.Stamina:set_Value+40: 75 05                          - jne Zebra.Stamina:set_Value+47
Zebra.Stamina:set_Value+42: E9 2E 00 00 00                 - jmp Zebra.Stamina:set_Value+75
Zebra.Stamina:set_Value+47: 48 63 47 68                    - movsxd  rax,dword ptr [rdi+68]
Zebra.Stamina:set_Value+4b: F3 0F 2A C0                    - cvtsi2ss xmm0,eax
Zebra.Stamina:set_Value+4f: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
Zebra.Stamina:set_Value+53: 48 63 47 64                    - movsxd  rax,dword ptr [rdi+64]
Zebra.Stamina:set_Value+57: F3 0F 2A C8                    - cvtsi2ss xmm1,eax
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>72</ID>
                  <Description>"Sta. base addr."</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>808080</Color>
                  <VariableType>8 Bytes</VariableType>
                  <Address>i_sta_base_addr</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>74</ID>
              <Description>"Unlimited steamed stuffed bun / 割包無限"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_UNLIMIT_STEAMED_STUFFED_BUN,ZebraCharacterUseItemHandleAnimEventProc+60,ZebraCharacterUseItemHandleAnimEventProc+100,48 8B 97 A8 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_UNLIMIT_STEAMED_STUFFED_BUN)

label(code)
label(return)

newmem:
  cmp byte ptr [rdi+000000B0], 3
  jg code
  mov byte ptr [rdi+000000B0], 3

code:
  mov rdx,[rdi+000000A8]
  jmp return

INJECT_UNLIMIT_STEAMED_STUFFED_BUN:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_UNLIMIT_STEAMED_STUFFED_BUN)

[DISABLE]

INJECT_UNLIMIT_STEAMED_STUFFED_BUN:
  db 48 8B 97 A8 00 00 00

unregistersymbol(INJECT_UNLIMIT_STEAMED_STUFFED_BUN)
dealloc(newmem)


{
// ORIGINAL CODE - INJECTION POINT: Zebra.CharacterUseItem:HandleAnimEvent+68

2A4445AB9FD: 75 25                          - jne 2A4445ABA24
2A4445AB9FF: 48 8B CE                       - mov rcx,rsi
2A4445ABA02: 48 BA F0 A0 03 42 A4 02 00 00  - mov rdx,000002A44203A0F0
2A4445ABA0C: 66 90                          - nop 2
2A4445ABA0E: 49 BB B0 70 6A 46 A2 02 00 00  - mov r11,000002A2466A70B0
2A4445ABA18: 41 FF D3                       - call r11
2A4445ABA1B: 85 C0                          - test eax,eax
2A4445ABA1D: 75 26                          - jne 2A4445ABA45
2A4445ABA1F: E9 37 00 00 00                 - jmp 2A4445ABA5B
2A4445ABA24: 48 8B 47 18                    - mov rax,[rdi+18]
// ---------- INJECTING HERE ----------
2A4445ABA28: 48 8B 97 A8 00 00 00           - mov rdx,[rdi+000000A8]
// ---------- DONE INJECTING  ----------
2A4445ABA2F: 48 8B C8                       - mov rcx,rax
2A4445ABA32: 83 38 00                       - cmp dword ptr [rax],00
2A4445ABA35: 90                             - nop
2A4445ABA36: 49 BB 10 5D 0E 48 A4 02 00 00  - mov r11,000002A4480E5D10
2A4445ABA40: 41 FF D3                       - call r11
2A4445ABA43: EB 16                          - jmp 2A4445ABA5B
2A4445ABA45: 48 8B CF                       - mov rcx,rdi
2A4445ABA48: 48 8D 64 24 00                 - lea rsp,[rsp+00]
2A4445ABA4D: 90                             - nop
2A4445ABA4E: 49 BB C0 5E 0E 48 A4 02 00 00  - mov r11,000002A4480E5EC0
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>75</ID>
              <Description>"Unlimited weapon usage / 武器使用次數無限"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_DECREASE_WEAPON_USAGE,ZebraCharacterUseStolenWeaponDecreaseUsageCountProc+10,ZebraCharacterUseStolenWeaponDecreaseUsageCountProc+30,0F B6 87 89 01 00 00 85) // should be unique
alloc(newmem,$1000,INJECT_DECREASE_WEAPON_USAGE)

label(code)
label(return)

newmem:
  mov eax, [rdi+0000018C]
  cmp eax, 3
  jae code
  mov eax, 3
  mov [rdi+0000018C], eax
code:
  movzx eax,byte ptr [rdi+00000189]
  jmp return

INJECT_DECREASE_WEAPON_USAGE:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_DECREASE_WEAPON_USAGE)

[DISABLE]

INJECT_DECREASE_WEAPON_USAGE:
  db 0F B6 87 89 01 00 00

unregistersymbol(INJECT_DECREASE_WEAPON_USAGE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+1a

230C52B510D: 00 00                          - add [rax],al
230C52B510F: 00 55 48                       - add [rbp+48],dl
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+2: 8B EC                          - mov ebp,esp
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+4: 48 83 EC 40                    - sub rsp,40
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+8: 48 89 75 E8                    - mov [rbp-18],rsi
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+c: 48 89 7D F0                    - mov [rbp-10],rdi
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+10: 4C 89 7D F8                    - mov [rbp-08],r15
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+14: 48 8B F9                       - mov rdi,rcx
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+17: 48 8B F2                       - mov rsi,rdx
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+1a: 0F B6 87 89 01 00 00           - movzx eax,byte ptr [rdi+00000189]
// ---------- INJECTING HERE ----------
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+21: 85 C0                          - test eax,eax
// ---------- DONE INJECTING  ----------
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+23: 0F 85 E2 00 00 00              - jne Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+10b
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+29: 48 8B 8F 08 01 00 00           - mov rcx,[rdi+00000108]
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+30: 33 D2                          - xor edx,edx
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+32: 48 8D 6D 00                    - lea rbp,[rbp+00]
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+36: 49 BB 30 06 8E 7C 30 02 00 00  - mov r11,UnityEngine.Object:op_Equality
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+40: 41 FF D3                       - call r11
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+43: 85 C0                          - test eax,eax
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+45: 0F 85 C0 00 00 00              - jne Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+10b
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+4b: 48 B8 A0 4D 43 EE 2F 02 00 00  - mov rax,0000022FEE434DA0
Zebra.CharacterUseStolenWeapon:DecreaseUsageCount+55: 48 63 00                       - movsxd  rax,dword ptr [rax]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>126</ID>
              <Description>"Invisible as possible / 儘可能隱形"</Description>
              <Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>124</ID>
                  <Description>"Step 1"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : The Legend of Tianding.exe
  Version: 
  Date   : 2022-11-12
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_SET_INVISIBLE_2,0F B6 87 1D 04 00 00) // should be unique
aobscanregion(INJECT_SET_INVISIBLE_2,ZebraPlayerUnitset_IsInvincibleProc+10,ZebraPlayerUnitset_IsInvincibleProc+40,0F B6 87 1D 04 00 00) // should be unique

alloc(newmem,$1000,INJECT_SET_INVISIBLE_2)

label(code)
label(return)

newmem:
  mov byte ptr [rdi+000001A6], 1
code:
  movzx eax,byte ptr [rdi+0000041D]
  jmp return

INJECT_SET_INVISIBLE_2:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SET_INVISIBLE_2)

[DISABLE]

INJECT_SET_INVISIBLE_2:
  db 0F B6 87 1D 04 00 00

unregistersymbol(INJECT_SET_INVISIBLE_2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.PlayerUnit:set_IsInvincible+1a

230C508413D: 00 00                          - add [rax],al
230C508413F: 00 55 48                       - add [rbp+48],dl
Zebra.PlayerUnit:set_IsInvincible+2: 8B EC                          - mov ebp,esp
Zebra.PlayerUnit:set_IsInvincible+4: 48 83 EC 60                    - sub rsp,60
Zebra.PlayerUnit:set_IsInvincible+8: 48 89 75 E8                    - mov [rbp-18],rsi
Zebra.PlayerUnit:set_IsInvincible+c: 48 89 7D F0                    - mov [rbp-10],rdi
Zebra.PlayerUnit:set_IsInvincible+10: 4C 89 7D F8                    - mov [rbp-08],r15
Zebra.PlayerUnit:set_IsInvincible+14: 48 8B F9                       - mov rdi,rcx
Zebra.PlayerUnit:set_IsInvincible+17: 48 8B F2                       - mov rsi,rdx
Zebra.PlayerUnit:set_IsInvincible+1a: 0F B6 87 1D 04 00 00           - movzx eax,byte ptr [rdi+0000041D]
// ---------- INJECTING HERE ----------
Zebra.PlayerUnit:set_IsInvincible+21: 85 C0                          - test eax,eax
// ---------- DONE INJECTING  ----------
Zebra.PlayerUnit:set_IsInvincible+23: 74 23                          - je Zebra.PlayerUnit:set_IsInvincible+48
Zebra.PlayerUnit:set_IsInvincible+25: 48 B9 80 6D 35 A6 2E 02 00 00  - mov rcx,0000022EA6356D80
Zebra.PlayerUnit:set_IsInvincible+2f: 48 8D AD 00 00 00 00           - lea rbp,[rbp+00000000]
Zebra.PlayerUnit:set_IsInvincible+36: 49 BB C3 1A AB BC 30 02 00 00  - mov r11,00000230BCAB1AC3
Zebra.PlayerUnit:set_IsInvincible+40: 41 FF D3                       - call r11
Zebra.PlayerUnit:set_IsInvincible+43: E9 C3 00 00 00                 - jmp Zebra.PlayerUnit:set_IsInvincible+10b
Zebra.PlayerUnit:set_IsInvincible+48: 85 F6                          - test esi,esi
Zebra.PlayerUnit:set_IsInvincible+4a: 0F 84 4D 00 00 00              - je Zebra.PlayerUnit:set_IsInvincible+9d
Zebra.PlayerUnit:set_IsInvincible+50: 48 8B 87 40 03 00 00           - mov rax,[rdi+00000340]
Zebra.PlayerUnit:set_IsInvincible+57: 48 8B C8                       - mov rcx,rax
}
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>125</ID>
                  <Description>"Step 2"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : The Legend of Tianding.exe
  Version: 
  Date   : 2022-11-12
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

//aobscan(INJECT_SET_INVISIBLE_3,40 88 B7 A6 01 00 00) // should be unique
aobscanregion(INJECT_SET_INVISIBLE_3,ZebraPlayerUnitset_IsInvincibleProc+90,ZebraPlayerUnitset_IsInvincibleProc+f0,40 88 B7 A6 01 00 00) // should be unique

alloc(newmem,$1000,INJECT_SET_INVISIBLE_3)

label(code)
label(return)
newmem:
  mov sil, 1
code:
  mov [rdi+000001A6],sil
  jmp return

INJECT_SET_INVISIBLE_3:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SET_INVISIBLE_3)

[DISABLE]

INJECT_SET_INVISIBLE_3:
  db 40 88 B7 A6 01 00 00

unregistersymbol(INJECT_SET_INVISIBLE_3)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.PlayerUnit:set_IsInvincible+ad

Zebra.PlayerUnit:set_IsInvincible+82: 48 8B 47 78                    - mov rax,[rdi+78]
Zebra.PlayerUnit:set_IsInvincible+86: 48 8B C8                       - mov rcx,rax
Zebra.PlayerUnit:set_IsInvincible+89: 83 38 00                       - cmp dword ptr [rax],00
Zebra.PlayerUnit:set_IsInvincible+8c: 66 90                          - nop 2
Zebra.PlayerUnit:set_IsInvincible+8e: 49 BB C0 10 1B C5 30 02 00 00  - mov r11,Zebra.CharacterRenderer:StopInvincibleFlashLoop
Zebra.PlayerUnit:set_IsInvincible+98: 41 FF D3                       - call r11
Zebra.PlayerUnit:set_IsInvincible+9b: EB 10                          - jmp Zebra.PlayerUnit:set_IsInvincible+ad
Zebra.PlayerUnit:set_IsInvincible+9d: 48 8B 87 40 03 00 00           - mov rax,[rdi+00000340]
Zebra.PlayerUnit:set_IsInvincible+a4: 48 85 C0                       - test rax,rax
Zebra.PlayerUnit:set_IsInvincible+a7: 0F 85 5E 00 00 00              - jne Zebra.PlayerUnit:set_IsInvincible+10b
// ---------- INJECTING HERE ----------
Zebra.PlayerUnit:set_IsInvincible+ad: 40 88 B7 A6 01 00 00           - mov [rdi+000001A6],sil
// ---------- DONE INJECTING  ----------
Zebra.PlayerUnit:set_IsInvincible+b4: 48 0F B6 C6                    - movzx rax,sil
Zebra.PlayerUnit:set_IsInvincible+b8: 48 89 45 C0                    - mov [rbp-40],rax
Zebra.PlayerUnit:set_IsInvincible+bc: 48 B9 F8 E3 22 7A 30 02 00 00  - mov rcx,000002307A22E3F8
Zebra.PlayerUnit:set_IsInvincible+c6: 49 BB A0 0F 01 AE 2E 02 00 00  - mov r11,System.Object:__icall_wrapper_ves_icall_object_new_specific
Zebra.PlayerUnit:set_IsInvincible+d0: 41 FF D3                       - call r11
Zebra.PlayerUnit:set_IsInvincible+d3: 48 8B D0                       - mov rdx,rax
Zebra.PlayerUnit:set_IsInvincible+d6: 48 8B 45 C0                    - mov rax,[rbp-40]
Zebra.PlayerUnit:set_IsInvincible+da: 40 88 42 10                    - mov [rdx+10],al
Zebra.PlayerUnit:set_IsInvincible+de: 48 B9 00 0E 35 A6 2E 02 00 00  - mov rcx,0000022EA6350E00
Zebra.PlayerUnit:set_IsInvincible+e8: 48 8D 64 24 00                 - lea rsp,[rsp+00]
}
</AssemblerScript>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>77</ID>
              <Description>"Damage multiplier (main weapon - dagger) / 傷害加成倍率 - 主武器"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_DAMAGE_MULTI,ZebraWeaponDamageUpdaterUpdateMainWeaponDamageProc+50,ZebraWeaponDamageUpdaterUpdateMainWeaponDamageProc+c0,89 87 E0 00 00 00 48 B8) // should be unique
alloc(newmem,$1000,INJECT_DAMAGE_MULTI)

label(code)
label(return)
label(vf_main_weapon_multi)

newmem:
  vmovss xmm14, [vf_main_weapon_multi]
  cvtsi2ss xmm15, eax
  vmulss xmm15, xmm15, xmm14
  cvtss2si eax, xmm15

code:
  mov [rdi+000000E0],eax
  jmp return

align 10 cc
  vf_main_weapon_multi:
  dd (float)1.2

INJECT_DAMAGE_MULTI:
  jmp newmem
  nop
return:
registersymbol(vf_main_weapon_multi)
registersymbol(INJECT_DAMAGE_MULTI)

[DISABLE]

INJECT_DAMAGE_MULTI:
  db 89 87 E0 00 00 00

unregistersymbol(INJECT_DAMAGE_MULTI)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+5646E1

GameAssembly.dll+5646B4: 48 8B 4B 18                 - mov rcx,[rbx+18]
GameAssembly.dll+5646B8: 4C 89 74 24 68              - mov [rsp+68],r14
GameAssembly.dll+5646BD: 44 8B 75 78                 - mov r14d,[rbp+78]
GameAssembly.dll+5646C1: 48 85 C9                    - test rcx,rcx
GameAssembly.dll+5646C4: 0F 84 65 01 00 00           - je GameAssembly.dll+56482F
GameAssembly.dll+5646CA: 8B 57 18                    - mov edx,[rdi+18]
GameAssembly.dll+5646CD: 45 8B CE                    - mov r9d,r14d
GameAssembly.dll+5646D0: 44 8B C6                    - mov r8d,esi
GameAssembly.dll+5646D3: 48 C7 44 24 20 00 00 00 00  - mov qword ptr [rsp+20],00000000
GameAssembly.dll+5646DC: E8 2F 10 28 00              - call Zebra.MainWeaponEnhanceConfig.GetEnhancedDamage
// ---------- INJECTING HERE ----------
GameAssembly.dll+5646E1: 89 45 78                    - mov [rbp+78],eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5646E4: 48 8B 05 15 F6 8D 02        - mov rax,[GameAssembly.dll+2E43D00]
GameAssembly.dll+5646EB: F6 80 33 01 00 00 04        - test byte ptr [rax+00000133],04
GameAssembly.dll+5646F2: 74 18                       - je GameAssembly.dll+56470C
GameAssembly.dll+5646F4: 83 B8 E0 00 00 00 00        - cmp dword ptr [rax+000000E0],00
GameAssembly.dll+5646FB: 75 0F                       - jne GameAssembly.dll+56470C
GameAssembly.dll+5646FD: 48 8B C8                    - mov rcx,rax
GameAssembly.dll+564700: E8 DB DB D5 FF              - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+564705: 48 8B 05 F4 F5 8D 02        - mov rax,[GameAssembly.dll+2E43D00]
GameAssembly.dll+56470C: 80 3D 24 36 95 02 00        - cmp byte ptr [GameAssembly.dll+2EB7D37],00
GameAssembly.dll+564713: 75 1A                       - jne GameAssembly.dll+56472F
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>78</ID>
                  <Description>"multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>vf_main_weapon_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>81</ID>
              <Description>"Coin multiplier / 金錢加成倍率"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_COIN_MULTIPLIER,ZebraPlayerDataAddCoinProc+5b,ZebraPlayerDataAddCoinProc+7b,03 C6 89 47 44) // should be unique

alloc(newmem,$1000,INJECT_COIN_MULTIPLIER)
label(code)
label(return)
label(vf_coin_multi)
newmem:
  vmovss xmm14, [vf_coin_multi]
  cvtsi2ss xmm15, esi
  vmulss xmm15, xmm15, xmm14
  cvtss2si esi, xmm15

code:
  add eax,esi
  mov [rdi+44],eax
  jmp return

align 10 cc
  vf_coin_multi:
  dd (float)1.1

INJECT_COIN_MULTIPLIER:
  jmp newmem
return:
registersymbol(vf_coin_multi)
registersymbol(INJECT_COIN_MULTIPLIER)

[DISABLE]

INJECT_COIN_MULTIPLIER:
  db 03 C6 89 47 44

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.PlayerData:AddCoin+5f

Zebra.PlayerData:AddCoin+35: 74 24                          - je Zebra.PlayerData:AddCoin+5b
Zebra.PlayerData:AddCoin+37: 48 B8 70 2E 0A C0 30 02 00 00  - mov rax,00000230C00A2E70
Zebra.PlayerData:AddCoin+41: 48 8B 00                       - mov rax,[rax]
Zebra.PlayerData:AddCoin+44: 48 8B C8                       - mov rcx,rax
Zebra.PlayerData:AddCoin+47: 48 8B D6                       - mov rdx,rsi
Zebra.PlayerData:AddCoin+4a: 83 38 00                       - cmp dword ptr [rax],00
Zebra.PlayerData:AddCoin+4d: 90                             - nop
Zebra.PlayerData:AddCoin+4e: 49 BB 40 35 AE BC 30 02 00 00  - mov r11,Zebra.UI_MoneyCounter:Add
Zebra.PlayerData:AddCoin+58: 41 FF D3                       - call r11
Zebra.PlayerData:AddCoin+5b: 48 63 47 44                    - movsxd  rax,dword ptr [rdi+44]
// ---------- INJECTING HERE ----------
Zebra.PlayerData:AddCoin+5f: 03 C6                          - add eax,esi
// ---------- DONE INJECTING  ----------
Zebra.PlayerData:AddCoin+61: 89 47 44                       - mov [rdi+44],eax
Zebra.PlayerData:AddCoin+64: 48 8B 75 F0                    - mov rsi,[rbp-10]
Zebra.PlayerData:AddCoin+68: 48 8B 7D F8                    - mov rdi,[rbp-08]
Zebra.PlayerData:AddCoin+6c: 48 8D 65 00                    - lea rsp,[rbp+00]
Zebra.PlayerData:AddCoin+70: 5D                             - pop rbp
Zebra.PlayerData:AddCoin+71: C3                             - ret
230C52B4722: 00 00                          - add [rax],al
230C52B4724: 00 00                          - add [rax],al
230C52B4726: 00 00                          - add [rax],al
230C52B4728: 01 04 02                       - add [rdx+rax],eax
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>82</ID>
                  <Description>"multiplier"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>vf_coin_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>104</ID>
              <Description>"Get base data (usage: open menu -&gt; Status)  / 取得基礎數值如金錢數量 (選單-&gt;狀態)"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-11-11
  Author : bbfox@ https://opencheattables.com
}

[ENABLE]
aobscanregion(INJECT_PLAYER_DATA,ZebraUI_StateShowProc+68,ZebraUI_StateShowProc+a8,83 39 00 48 63 40 30) // should be unique


alloc(newmem,$1000,INJECT_PLAYER_DATA)

label(code)
label(return)
label(i_player_base)

newmem:
  mov [i_player_base], rcx

code:
  cmp dword ptr [rcx],00
  movsxd  rax,dword ptr [rax+30]
  jmp return

align 10 cc
  i_player_base:
  dq 0

INJECT_PLAYER_DATA:
  jmp newmem
  nop 2
return:
registersymbol(i_player_base)
registersymbol(INJECT_PLAYER_DATA)

[DISABLE]

INJECT_PLAYER_DATA:
  db 83 39 00 48 63 40 30

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Zebra.UI_State:Show+6b

Zebra.UI_State:Show+3b: 48 8B CE                       - mov rcx,rsi
Zebra.UI_State:Show+3e: 49 BB 90 64 0F 48 A4 02 00 00  - mov r11,Zebra.UI_SubGameplayBase:Show
Zebra.UI_State:Show+48: 41 FF D3                       - call r11
Zebra.UI_State:Show+4b: 66 66 90                       - nop 3
Zebra.UI_State:Show+4e: 49 BB F0 AE 27 44 A4 02 00 00  - mov r11,Zebra.Level:get_Player
Zebra.UI_State:Show+58: 41 FF D3                       - call r11
Zebra.UI_State:Show+5b: 48 8B C8                       - mov rcx,rax
Zebra.UI_State:Show+5e: 83 39 00                       - cmp dword ptr [rcx],00
Zebra.UI_State:Show+61: 48 8B 80 28 03 00 00           - mov rax,[rax+00000328]
Zebra.UI_State:Show+68: 48 8B C8                       - mov rcx,rax
// ---------- INJECTING HERE ----------
Zebra.UI_State:Show+6b: 83 39 00                       - cmp dword ptr [rcx],00
// ---------- DONE INJECTING  ----------
Zebra.UI_State:Show+6e: 48 63 40 30                    - movsxd  rax,dword ptr [rax+30]
Zebra.UI_State:Show+72: 85 C0                          - test eax,eax
Zebra.UI_State:Show+74: 40 0F 94 C0                    - sete al
Zebra.UI_State:Show+78: 48 0F B6 C0                    - movzx rax,al
Zebra.UI_State:Show+7c: 48 0F B6 D0                    - movzx rdx,al
Zebra.UI_State:Show+80: 48 8B 86 D8 00 00 00           - mov rax,[rsi+000000D8]
Zebra.UI_State:Show+87: 48 8B C8                       - mov rcx,rax
Zebra.UI_State:Show+8a: 48 89 55 80                    - mov [rbp-80],rdx
Zebra.UI_State:Show+8e: 83 38 00                       - cmp dword ptr [rax],00
Zebra.UI_State:Show+91: 48 8D 64 24 00                 - lea rsp,[rsp+00]
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>105</ID>
                  <Description>"Base addr."</Description>
                  <ShowAsHex>1</ShowAsHex>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>808080</Color>
                  <VariableType>8 Bytes</VariableType>
                  <Address>i_player_base</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>106</ID>
                  <Description>"General"</Description>
                  <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>115</ID>
                      <Description>"_healthLevel"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>38</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>116</ID>
                      <Description>"_staminaLevel"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>3C</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>117</ID>
                      <Description>"_weaponLevel"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>40</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>118</ID>
                      <Description>"_coin"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>44</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>119</ID>
                      <Description>"_coinOnBeggarTotal"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>48</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>120</ID>
                      <Description>"_guabaoLevel"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>4C</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>121</ID>
                      <Description>"_shadowStatus"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>50</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>122</ID>
                      <Description>"_maxOmamorisWeight"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>[i_player_base]+18</Address>
                      <Offsets>
                        <Offset>54</Offset>
                        <Offset>288</Offset>
                      </Offsets>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>127</ID>
              <Description>"_WIP"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>73</ID>
                  <Description>"xUnlimited any item  / 道具使用次數無限 (untested)"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_UNLIMIT_ITEM,GameAssembly.dll,83 BB A0 00 00 00 00 0F 8E) // should be unique
aobscanregion(INJECT_UNLIMIT_ITEM,ZebraCharacterUseItemHandleInputProc+50,ZebraCharacterUseItemHandleInputProc+120,83 BB A0 00 00 00 00 0F 8E) // should be unique
alloc(newmem,$1000,INJECT_UNLIMIT_ITEM)

label(code)
label(return)

newmem:
  cmp dword ptr [rbx+000000A0],00
  jg code
  mov dword ptr [rbx+000000A0],1

code:
  cmp dword ptr [rbx+000000A0],00
  jmp return

INJECT_UNLIMIT_ITEM:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_UNLIMIT_ITEM)

[DISABLE]

INJECT_UNLIMIT_ITEM:
  db 83 BB A0 00 00 00 00

unregistersymbol(INJECT_UNLIMIT_ITEM)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+41FD64

GameAssembly.dll+41FD37: C6 05 4F 7F A9 02 01  - mov byte ptr [GameAssembly.dll+2EB7C8D],01
GameAssembly.dll+41FD3E: 80 7B 18 00           - cmp byte ptr [rbx+18],00
GameAssembly.dll+41FD42: 0F 84 56 01 00 00     - je GameAssembly.dll+41FE9E
GameAssembly.dll+41FD48: 48 8B 4B 20           - mov rcx,[rbx+20]
GameAssembly.dll+41FD4C: 48 85 C9              - test rcx,rcx
GameAssembly.dll+41FD4F: 0F 84 7F 01 00 00     - je GameAssembly.dll+41FED4
GameAssembly.dll+41FD55: 33 D2                 - xor edx,edx
GameAssembly.dll+41FD57: E8 E4 DB 20 00        - call MoreMountains.CorgiEngine.Character.get_IsDead
GameAssembly.dll+41FD5C: 84 C0                 - test al,al
GameAssembly.dll+41FD5E: 0F 85 3A 01 00 00     - jne GameAssembly.dll+41FE9E
// ---------- INJECTING HERE ----------
GameAssembly.dll+41FD64: 83 BB A0 00 00 00 00  - cmp dword ptr [rbx+000000A0],00
// ---------- DONE INJECTING  ----------
GameAssembly.dll+41FD6B: 0F 8E 2D 01 00 00     - jng GameAssembly.dll+41FE9E
GameAssembly.dll+41FD71: 48 8B 43 50           - mov rax,[rbx+50]
GameAssembly.dll+41FD75: 48 85 C0              - test rax,rax
GameAssembly.dll+41FD78: 0F 84 50 01 00 00     - je GameAssembly.dll+41FECE
GameAssembly.dll+41FD7E: 48 8B 48 20           - mov rcx,[rax+20]
GameAssembly.dll+41FD82: 48 85 C9              - test rcx,rcx
GameAssembly.dll+41FD85: 0F 84 3D 01 00 00     - je GameAssembly.dll+41FEC8
GameAssembly.dll+41FD8B: 33 D2                 - xor edx,edx
GameAssembly.dll+41FD8D: E8 1E 06 49 00        - call MoreMountains.CorgiEngine.CorgiControllerState.get_IsCollidingBelow
GameAssembly.dll+41FD92: 84 C0                 - test al,al
}
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>79</ID>
                  <Description>"xDamage multiplier (bullet) / 傷害加成倍率 - 子彈類"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : Zebra.exe
  Version: 
  Date   : 2022-04-08
  Author : bbfox@ https://opencheattables.org
}

[ENABLE]

//aobscanmodule(INJECT_BULLET_DAMAGE_MULTI,GameAssembly.dll,89 43 78 48 83 C4 20 5B C3 E8 FB) // should be unique
aobscanregion(INJECT_BULLET_DAMAGE_MULTI,ZebraWeaponDamageUpdaterUpdateShadowBulletDamageProc+20,ZebraWeaponDamageUpdaterUpdateShadowBulletDamageProc+80,89 43 78 48 83 C4 20 5B C3 E8 FB) // should be unique
alloc(newmem,$1000,INJECT_BULLET_DAMAGE_MULTI)

label(code)
label(return)
label(vf_bullet_weapon_multi)

newmem:
  vmovss xmm14, [vf_bullet_weapon_multi]
  cvtsi2ss xmm15, eax
  vmulss xmm15, xmm15, xmm14
  cvtss2si eax, xmm15
code:
  mov [rbx+78],eax
  add rsp,20
  jmp return

align 10 cc
  vf_bullet_weapon_multi:
  dd (float)1.2

INJECT_BULLET_DAMAGE_MULTI:
  jmp newmem
  nop 2
return:
registersymbol(vf_bullet_weapon_multi)
registersymbol(INJECT_BULLET_DAMAGE_MULTI)

[DISABLE]

INJECT_BULLET_DAMAGE_MULTI:
  db 89 43 78 48 83 C4 20

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+5648C7

GameAssembly.dll+5648A9: 48 85 C0        - test rax,rax
GameAssembly.dll+5648AC: 74 34           - je GameAssembly.dll+5648E2
GameAssembly.dll+5648AE: 48 8B 49 18     - mov rcx,[rcx+18]
GameAssembly.dll+5648B2: 48 85 C9        - test rcx,rcx
GameAssembly.dll+5648B5: 74 25           - je GameAssembly.dll+5648DC
GameAssembly.dll+5648B7: 8B 50 18        - mov edx,[rax+18]
GameAssembly.dll+5648BA: 45 33 C0        - xor r8d,r8d
GameAssembly.dll+5648BD: E8 3E 10 28 00  - call Zebra.MainWeaponEnhanceConfig.GetEnhancedShadowBulletDamage
GameAssembly.dll+5648C2: 48 85 DB        - test rbx,rbx
GameAssembly.dll+5648C5: 74 0F           - je GameAssembly.dll+5648D6
// ---------- INJECTING HERE ----------
GameAssembly.dll+5648C7: 89 43 78        - mov [rbx+78],eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+5648CA: 48 83 C4 20     - add rsp,20
GameAssembly.dll+5648CE: 5B              - pop rbx
GameAssembly.dll+5648CF: C3              - ret 
GameAssembly.dll+5648D0: E8 FB EB DD FF  - call GameAssembly.dll+3434D0
GameAssembly.dll+5648D5: CC              - int 3 
GameAssembly.dll+5648D6: E8 F5 EB DD FF  - call GameAssembly.dll+3434D0
GameAssembly.dll+5648DB: CC              - int 3 
GameAssembly.dll+5648DC: E8 EF EB DD FF  - call GameAssembly.dll+3434D0
GameAssembly.dll+5648E1: CC              - int 3 
GameAssembly.dll+5648E2: E8 E9 EB DD FF  - call GameAssembly.dll+3434D0
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>80</ID>
                      <Description>"multiplier"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Float</VariableType>
                      <Address>vf_bullet_weapon_multi</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>67</ID>
      <Description>"The Legend of Tianding  /  https://opencheattables.com  /  CE 7.4+"</Description>
      <Color>400080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
