<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="18">
  <CheatEntries>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Peggle Multi Hack"</Description>
      <Options moHideChildren="1"/>
      <LastState Activated="1"/>
      <Color>80000008</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[enable]

//========================= LABELS, SYMBOLS, AOBSCANS, ETC'

alloc(allocMem,1024)

label(code_balls)
label(exit_balls)
label(done_balls)
label(code_score)
label(exit_score)
label(done_score)
label(i_balls)
label(i_score)

registersymbol(allocMem)
registersymbol(i_balls)
registersymbol(i_score)

aobscan(aob_balls,01 8c 86 7c 01 00 00)
registersymbol(aob_balls)

aobscan(aob_score,01 84 91 74 01 00 00)
registersymbol(aob_score)

//========================= ALLOC ADDRESS

allocMem:

//========================= BALLS HACK

code_balls:

pushfd
cmp [i_balls],0
je done_balls

push ecx
mov ecx,#99

cmp [esi+eax*4+17C],ecx
ja done_balls

mov [esi+eax*4+17C],ecx
jmp done_balls

done_balls:
pop ecx
popfd
jmp exit_balls

//========================= SCORE HACK

code_score:

pushfd
cmp [i_score],0
je done_score

push eax
mov eax,#9999999

cmp [ecx+edx*4+174],eax
ja done_score

mov [ecx+edx*4+174],eax
jmp done_score

done_score:
pop eax
popfd
jmp exit_score

//========================= DECLARING DEFAULT VARIABLES

i_balls:
dd 0

i_score:
dd 0

//========================= INJECTION POINTS

aob_balls:
jmp code_balls

exit_balls:

aob_score:
jmp code_score

exit_score:

[disable]

//========================= GIVE BACK THE ORIGINAL INSTRUCTIONS

aob_score:
add [ecx+edx*4+174],eax

aob_balls:
add [esi+eax*4+17C],ecx

//========================= UN-SYMBOL, DEALLOC, ETC'

unregistersymbol(allocMem)
unregistersymbol(aob_balls)
unregistersymbol(aob_score)
unregistersymbol(i_balls)
unregistersymbol(i_score)

dealloc(allocMem)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>2</ID>
          <Description>"allocMem"</Description>
          <LastState Value="??" Activated="0" RealAddress="02390000"/>
          <ShowAsHex>1</ShowAsHex>
          <Color>80000008</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>allocMem</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Balls hack"</Description>
          <LastState Value="??" Activated="0" RealAddress="02390068"/>
          <Color>80000008</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_balls</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"Score hack"</Description>
          <LastState Value="??" Activated="0" RealAddress="0239006C"/>
          <Color>80000008</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_score</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Code :add [esi+eax*4+0000017C],ecx</Description>
      <Address>0045D88F</Address>
      <ModuleName>Peggle.exe</ModuleName>
      <ModuleNameOffset>5D88F</ModuleNameOffset>
      <Before>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>8B</Byte>
        <Byte>4D</Byte>
        <Byte>08</Byte>
      </Before>
      <Actual>
        <Byte>01</Byte>
        <Byte>8C</Byte>
        <Byte>86</Byte>
        <Byte>7C</Byte>
        <Byte>01</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>85</Byte>
        <Byte>C9</Byte>
        <Byte>8D</Byte>
        <Byte>84</Byte>
        <Byte>86</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Code :add [ecx+edx*4+00000174],eax</Description>
      <Address>0044832A</Address>
      <ModuleName>Peggle.exe</ModuleName>
      <ModuleNameOffset>4832A</ModuleNameOffset>
      <Before>
        <Byte>91</Byte>
        <Byte>28</Byte>
        <Byte>01</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>01</Byte>
        <Byte>84</Byte>
        <Byte>91</Byte>
        <Byte>74</Byte>
        <Byte>01</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>83</Byte>
        <Byte>B9</Byte>
        <Byte>28</Byte>
        <Byte>01</Byte>
        <Byte>00</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>i_balls</Name>
      <Address>02390068</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>i_score</Name>
      <Address>0239006C</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>aob_balls</Name>
      <Address> 0045D88F</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>aob_score</Name>
      <Address> 0044832A</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
</CheatTable>
