<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="34">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"Gallery Unlock"</Description>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

//aobscan(INJECT_GalleryUnlock,0F 85 27 00 00 00 48 8B CE 48) // should be unique
define(INJECT_GalleryUnlock,GalleryGirlUnlock:Awake+9e)
alloc(newmem,$1000,INJECT_GalleryUnlock)

label(code)
label(return)

newmem:

code:
//  jne GalleryGirlUnlock:Awake+cb
  jmp return

INJECT_GalleryUnlock:
  jmp newmem
  nop
return:
registersymbol(INJECT_GalleryUnlock)

[DISABLE]

INJECT_GalleryUnlock:
  db 0F 85 27 00 00 00

unregistersymbol(INJECT_GalleryUnlock)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GalleryGirlUnlock:Awake+9e

GalleryGirlUnlock:Awake+66: 49 BB 40 33 B5 3C 5D 02 00 00  - mov r11,System:String:Concat
GalleryGirlUnlock:Awake+70: 41 FF D3                       - call r11
GalleryGirlUnlock:Awake+73: 48 8B C8                       - mov rcx,rax
GalleryGirlUnlock:Awake+76: 49 BB B0 34 B5 3C 5D 02 00 00  - mov r11,UnityEngine:Debug:Log
GalleryGirlUnlock:Awake+80: 41 FF D3                       - call r11
GalleryGirlUnlock:Awake+83: 48 8B 4E 18                    - mov rcx,[rsi+18]
GalleryGirlUnlock:Awake+87: 48 8D AD 00 00 00 00           - lea rbp,[rbp+00000000]
GalleryGirlUnlock:Awake+8e: 49 BB 50 89 0F 36 5D 02 00 00  - mov r11,UnityEngine:PlayerPrefs:GetInt
GalleryGirlUnlock:Awake+98: 41 FF D3                       - call r11
GalleryGirlUnlock:Awake+9b: 83 F8 01                       - cmp eax,01
// ---------- INJECTING HERE ----------
GalleryGirlUnlock:Awake+9e: 0F 85 27 00 00 00              - jne GalleryGirlUnlock:Awake+cb
// ---------- DONE INJECTING  ----------
GalleryGirlUnlock:Awake+a4: 48 8B CE                       - mov rcx,rsi
GalleryGirlUnlock:Awake+a7: 48 8D AD 00 00 00 00           - lea rbp,[rbp+00000000]
GalleryGirlUnlock:Awake+ae: 49 BB D0 CA A5 2E 5D 02 00 00  - mov r11,UnityEngine:Component:get_gameObject
GalleryGirlUnlock:Awake+b8: 41 FF D3                       - call r11
GalleryGirlUnlock:Awake+bb: 48 8B C8                       - mov rcx,rax
GalleryGirlUnlock:Awake+be: 49 BB F0 D5 57 3A 5D 02 00 00  - mov r11,UnityEngine:Object:Destroy
GalleryGirlUnlock:Awake+c8: 41 FF D3                       - call r11
GalleryGirlUnlock:Awake+cb: 48 8B 75 F8                    - mov rsi,[rbp-08]
GalleryGirlUnlock:Awake+cf: 48 8D 65 00                    - lea rsp,[rbp+00]
GalleryGirlUnlock:Awake+d3: 5D                             - pop rbp
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"No Timer"</Description>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if (LaunchMonoDataCollector()==0) then
  error('Failed to Activate Mono Features')
end
{$asm}
//aobscan(INJECT_NoTimer,55 48 8B EC 48 81 EC B0 00 00 00 48 89 75 F8 48 8B F1 66) // should be unique
define(INJECT_NoTimer,Timer_ws3:Update)
alloc(newmem,$1000,INJECT_NoTimer)

label(code)
label(return)

newmem:

code:
ret
 //  push rbp
 // mov rbp,rsp
 // sub rsp,000000B0
 // jmp return

INJECT_NoTimer:
  jmp newmem
  nop 6
return:
registersymbol(INJECT_NoTimer)

[DISABLE]

INJECT_NoTimer:
  db 55 48 8B EC 48 81 EC B0 00 00 00

unregistersymbol(INJECT_NoTimer)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Timer_ws3:Update

1C1500CEEFB: 08 68 29              - or [rax+29],ch
1C1500CEEFE: B4 4B                 - mov ah,4B
1C1500CEF00: C1 01 00              - rol [rcx],00
1C1500CEF03: 00 00                 - add [rax],al
1C1500CEF05: 00 00                 - add [rax],al
1C1500CEF07: 00 00                 - add [rax],al
1C1500CEF09: 00 00                 - add [rax],al
1C1500CEF0B: 00 00                 - add [rax],al
1C1500CEF0D: 00 00                 - add [rax],al
1C1500CEF0F: 00                    - db 00 
// ---------- INJECTING HERE ----------
Timer_ws3:Update: 55                    - push rbp
// ---------- DONE INJECTING  ----------
Timer_ws3:Update+1: 48 8B EC              - mov rbp,rsp
Timer_ws3:Update+4: 48 81 EC B0 00 00 00  - sub rsp,000000B0
Timer_ws3:Update+b: 48 89 75 F8           - mov [rbp-08],rsi
Timer_ws3:Update+f: 48 8B F1              - mov rsi,rcx
Timer_ws3:Update+12: 66 0F 57 C0           - xorpd xmm0,xmm0
Timer_ws3:Update+16: F2 0F 5A E8           - cvtsd2ss xmm5,xmm0
Timer_ws3:Update+1a: F3 0F 11 6D B0        - movss [rbp-50],xmm5
Timer_ws3:Update+1f: 0F B6 86 81 00 00 00  - movzx eax,byte ptr [rsi+00000081]
Timer_ws3:Update+26: 85 C0                 - test eax,eax
Timer_ws3:Update+28: 0F 85 1D 02 00 00     - jne Timer_ws3:Update+24b
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry Color="20000000">
      <Description>Change of jne GalleryGirlUnlock:Awake+cb</Description>
      <AddressString>25D360D661E</AddressString>
      <Before>
        <Byte>FF</Byte>
        <Byte>D3</Byte>
        <Byte>83</Byte>
        <Byte>F8</Byte>
        <Byte>01</Byte>
      </Before>
      <Actual>
        <Byte>0F</Byte>
        <Byte>85</Byte>
        <Byte>27</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>48</Byte>
        <Byte>8B</Byte>
        <Byte>CE</Byte>
        <Byte>48</Byte>
        <Byte>8D</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
  <Structures StructVersion="2">
    <Structure Name="String" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="Length" DisplayMethod="Unsigned Integer"/>
        <Element Offset="20" Vartype="Unicode String" Bytesize="128" OffsetHex="00000014" Description="Value" DisplayMethod="Unsigned Integer"/>
      </Elements>
    </Structure>
    <Structure Name="Timer_ws3" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="Unsigned Integer"/>
        <Element Offset="24" Vartype="Pointer" Bytesize="8" OffsetHex="00000018" Description="Girls" DisplayMethod="Unsigned Integer">
          <Structure Name="RuntimeType" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
            <Elements>
              <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="_impl" DisplayMethod="Unsigned Integer"/>
              <Element Offset="24" Vartype="Pointer" Bytesize="8" OffsetHex="00000018" Description="type_info" DisplayMethod="Unsigned Integer"/>
              <Element Offset="32" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000020" Description="GenericCache" DisplayMethod="Unsigned Integer"/>
              <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" Description="m_serializationCtor" DisplayMethod="Unsigned Integer"/>
            </Elements>
          </Structure>
        </Element>
        <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="timeText" DisplayMethod="Unsigned Integer"/>
        <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" ChildStruct="String" Description="minutes" DisplayMethod="Unsigned Integer"/>
        <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" ChildStruct="String" Description="seconds" DisplayMethod="Unsigned Integer"/>
        <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="textScore" DisplayMethod="Unsigned Integer"/>
        <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="Timevalue" DisplayMethod="Unsigned Integer"/>
        <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" ChildStruct="String" Description="lvl" DisplayMethod="Unsigned Integer"/>
        <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="slowDownFillImg" DisplayMethod="Unsigned Integer"/>
        <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="Star1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="Star2" DisplayMethod="Unsigned Integer"/>
        <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="Star3" DisplayMethod="Unsigned Integer"/>
        <Element Offset="112" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000070" Description="n" DisplayMethod="Unsigned Integer"/>
        <Element Offset="116" Vartype="Float" Bytesize="4" OffsetHex="00000074" Description="timer" DisplayMethod="Unsigned Integer"/>
        <Element Offset="120" Vartype="Float" Bytesize="4" OffsetHex="00000078" Description="MaxTime" DisplayMethod="Unsigned Integer"/>
        <Element Offset="124" Vartype="Float" Bytesize="4" OffsetHex="0000007C" Description="ActiveTime" DisplayMethod="Unsigned Integer"/>
        <Element Offset="128" Vartype="Byte" Bytesize="1" OffsetHex="00000080" Description="countPoints" DisplayMethod="Unsigned Integer"/>
        <Element Offset="129" Vartype="Byte" Bytesize="1" OffsetHex="00000081" Description="paused" DisplayMethod="Unsigned Integer"/>
        <Element Offset="132" Vartype="Float" Bytesize="4" OffsetHex="00000084" Description="score" DisplayMethod="Unsigned Integer"/>
        <Element Offset="136" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000088" Description="mission" DisplayMethod="Unsigned Integer"/>
        <Element Offset="140" Vartype="Byte" Bytesize="1" OffsetHex="0000008C" Description="giveStars" DisplayMethod="Unsigned Integer"/>
        <Element Offset="141" Vartype="Byte" Bytesize="1" OffsetHex="0000008D" Description="deadline1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="142" Vartype="Byte" Bytesize="1" OffsetHex="0000008E" Description="deadline2" DisplayMethod="Unsigned Integer"/>
        <Element Offset="143" Vartype="Byte" Bytesize="1" OffsetHex="0000008F" Description="deadline3" DisplayMethod="Unsigned Integer"/>
        <Element Offset="144" Vartype="Float" Bytesize="4" OffsetHex="00000090" Description="winPercent" DisplayMethod="Unsigned Integer"/>
      </Elements>
    </Structure>
  </Structures>
</CheatTable>
