<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="15">
  <CheatEntries>
    <CheatEntry>
      <ID>301</ID>
      <Description>"Disable Hashing (This has to stay active all the time)"</Description>
      <Color>80000008</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)
label(next1)
label(next2)
label(continue)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:

// Here we mess with the return value...
cmp [esp+8],4D40 // compare the size of the checked region
jne next1// if its not the first one, jump to the next check
mov eax,F25EAAFA // overwrite the result with the spoofed result
jmp continue // continue execution like nothing happend :P

next1:
cmp [esp+8],1894f18
jne next2
mov eax,50667EAF
jmp continue

next2:
cmp [esp+8],FC51A0
jne next2
mov eax,C4E14798
jmp continue
// ... and that's it!
continue:
// original overwritten code? no!
ret
// The following two lines are never hit. We just return our fake result...
exit:
jmp returnhere

"Crysis3.exe"+242ADB7:
jmp newmem
nop
nop
returnhere:

[DISABLE]
"Crysis3.exe"+242ADB7:
cmp byte ptr [3BE3FF1C],00
mov eax,[esp+C]

dealloc(newmem)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>304</ID>
      <Description>"Prevent Nade/Arrow Decrease"</Description>
      <Color>80000008</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
call 3729D840

cmp [eax],esi // If [eax] &gt; esi : goto exit
ja exit

mov [eax],esi
exit:
jmp returnhere


"Crysis3.exe"+299191:
jmp newmem
nop
nop
returnhere:


[DISABLE]
dealloc(newmem)
"Crysis3.exe"+299191:
call 3729D840
mov [eax],esi
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>306</ID>
      <Description>"Always full energy"</Description>
      <Color>80000008</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
alloc(newmem,500) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
fstp dword ptr [esi]

mov [esi],(float)100

pop esi
add esp,10

exit:
jmp returnhere

"Crysis3.exe"+476171:
jmp newmem
nop
returnhere:


[DISABLE]
dealloc(newmem)
"Crysis3.exe"+476171:
fstp dword ptr [esi]
pop esi
add esp,10
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Read ammo for display</Description>
      <Address>376C8B1A</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>6C8B1A</ModuleNameOffset>
      <Before>
        <Byte>CF</Byte>
        <Byte>85</Byte>
        <Byte>C0</Byte>
        <Byte>74</Byte>
        <Byte>F2</Byte>
      </Before>
      <Actual>
        <Byte>8B</Byte>
        <Byte>40</Byte>
        <Byte>04</Byte>
      </Actual>
      <After>
        <Byte>5F</Byte>
        <Byte>5E</Byte>
        <Byte>C2</Byte>
        <Byte>04</Byte>
        <Byte>00</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Write ammo for shooting/reloading</Description>
      <Address>373EFEE7</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>3EFEE7</ModuleNameOffset>
      <Before>
        <Byte>24</Byte>
        <Byte>24</Byte>
        <Byte>5F</Byte>
        <Byte>5E</Byte>
        <Byte>5D</Byte>
      </Before>
      <Actual>
        <Byte>89</Byte>
        <Byte>42</Byte>
        <Byte>04</Byte>
      </Actual>
      <After>
        <Byte>B0</Byte>
        <Byte>01</Byte>
        <Byte>5B</Byte>
        <Byte>83</Byte>
        <Byte>C4</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>acces playerX on keypress</Description>
      <Address>384D339B</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>14D339B</ModuleNameOffset>
      <Before>
        <Byte>24</Byte>
        <Byte>F4</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>58</Byte>
        <Byte>0F</Byte>
      </Actual>
      <After>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>58</Byte>
        <Byte>C4</Byte>
        <Byte>F3</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Integrity Check1</Description>
      <Address>3942ADFF</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>242ADFF</ModuleNameOffset>
      <Before>
        <Byte>8B</Byte>
        <Byte>4C</Byte>
        <Byte>24</Byte>
        <Byte>08</Byte>
        <Byte>57</Byte>
      </Before>
      <Actual>
        <Byte>0F</Byte>
        <Byte>B6</Byte>
        <Byte>39</Byte>
      </Actual>
      <After>
        <Byte>8B</Byte>
        <Byte>F0</Byte>
        <Byte>C1</Byte>
        <Byte>EE</Byte>
        <Byte>18</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Integrity Check2 (very rar)</Description>
      <Address>62F58588</Address>
      <ModuleName>nvwgf2um.dll</ModuleName>
      <ModuleNameOffset>608588</ModuleNameOffset>
      <Before>
        <Byte>66</Byte>
        <Byte>0F</Byte>
        <Byte>6F</Byte>
        <Byte>4E</Byte>
        <Byte>10</Byte>
      </Before>
      <Actual>
        <Byte>66</Byte>
        <Byte>0F</Byte>
        <Byte>6F</Byte>
        <Byte>56</Byte>
        <Byte>20</Byte>
      </Actual>
      <After>
        <Byte>66</Byte>
        <Byte>0F</Byte>
        <Byte>6F</Byte>
        <Byte>5E</Byte>
        <Byte>30</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Change ImpactArrow / Nades</Description>
      <Address>37299196</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>299196</ModuleNameOffset>
      <Before>
        <Byte>E8</Byte>
        <Byte>AA</Byte>
        <Byte>46</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>89</Byte>
        <Byte>30</Byte>
      </Actual>
      <After>
        <Byte>EB</Byte>
        <Byte>0F</Byte>
        <Byte>8D</Byte>
        <Byte>4C</Byte>
        <Byte>24</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Change Energy</Description>
      <Address>37476171</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>476171</ModuleNameOffset>
      <Before>
        <Byte>C1</Byte>
        <Byte>DE</Byte>
        <Byte>C1</Byte>
        <Byte>DE</Byte>
        <Byte>C9</Byte>
      </Before>
      <Actual>
        <Byte>D9</Byte>
        <Byte>1E</Byte>
      </Actual>
      <After>
        <Byte>5E</Byte>
        <Byte>83</Byte>
        <Byte>C4</Byte>
        <Byte>10</Byte>
        <Byte>C2</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Increase Kit Count</Description>
      <Address>377BACB8</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>7BACB8</ModuleNameOffset>
      <Before>
        <Byte>04</Byte>
        <Byte>8B</Byte>
        <Byte>54</Byte>
        <Byte>24</Byte>
        <Byte>08</Byte>
      </Before>
      <Actual>
        <Byte>01</Byte>
        <Byte>94</Byte>
        <Byte>81</Byte>
        <Byte>28</Byte>
        <Byte>02</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>C2</Byte>
        <Byte>08</Byte>
        <Byte>00</Byte>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Change KitCount</Description>
      <Address>381AB0FD</Address>
      <ModuleName>Crysis3.exe</ModuleName>
      <ModuleNameOffset>11AB0FD</ModuleNameOffset>
      <Before>
        <Byte>00</Byte>
        <Byte>74</Byte>
        <Byte>0D</Byte>
        <Byte>8B</Byte>
        <Byte>CE</Byte>
      </Before>
      <Actual>
        <Byte>89</Byte>
        <Byte>86</Byte>
        <Byte>D8</Byte>
        <Byte>0E</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>E8</Byte>
        <Byte>58</Byte>
        <Byte>FD</Byte>
        <Byte>FF</Byte>
        <Byte>FF</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
  <Structures StructVersion="2">
    <Structure Name="Player" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="1" AutoCreateStructsize="1024">
      <Elements>
        <Element Offset="0" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="4" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="8" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="9" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="10" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="11" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="12" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="16" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="20" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="24" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="28" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="32" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="36" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Hexadecimal"/>
        <Element Offset="40" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Hexadecimal"/>
        <Element Offset="44" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Hexadecimal"/>
        <Element Offset="48" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="52" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="56" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Hexadecimal"/>
        <Element Offset="60" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="64" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="68" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="72" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Hexadecimal"/>
        <Element Offset="76" Vartype="String" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="80" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="81" Vartype="String" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="85" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="86" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="87" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="88" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="92" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="96" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="100" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="104" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="108" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="112" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="116" Vartype="Float" Bytesize="4" Description="X" DisplayMethod="Unsigned Integer"/>
        <Element Offset="120" Vartype="Float" Bytesize="4" Description="Y" DisplayMethod="Unsigned Integer"/>
        <Element Offset="124" Vartype="Float" Bytesize="4" Description="Z" DisplayMethod="Unsigned Integer"/>
        <Element Offset="128" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="132" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="136" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="140" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="144" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="145" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="146" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="147" Vartype="Byte" Bytesize="1" DisplayMethod="Unsigned Integer"/>
        <Element Offset="148" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="152" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="156" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="160" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="164" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="168" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="172" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="176" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="180" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="184" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="188" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="192" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="196" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="200" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="204" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="208" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="212" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="216" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="220" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="224" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="228" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="232" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="236" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="236" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="240" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="244" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="248" Vartype="Float" Bytesize="4" Description="vx" DisplayMethod="Unsigned Integer"/>
        <Element Offset="252" Vartype="Float" Bytesize="4" Description="vy" DisplayMethod="Unsigned Integer"/>
        <Element Offset="256" Vartype="Float" Bytesize="4" Description="vz" DisplayMethod="Unsigned Integer"/>
        <Element Offset="260" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="264" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="268" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="272" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="276" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="280" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="284" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="288" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="292" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="296" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="300" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="304" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="308" Vartype="String" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="312" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="316" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="320" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="324" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="328" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="332" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="336" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="340" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="344" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="348" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="352" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="356" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="360" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="364" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="368" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="372" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="376" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="380" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="384" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="388" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="392" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="396" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="400" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="404" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="408" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="412" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="416" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="420" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="424" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="428" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="432" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="436" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="440" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="444" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="448" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="452" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="456" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="460" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="464" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="468" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="472" Vartype="Float" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="476" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="480" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="484" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="488" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
      </Elements>
    </Structure>
    <Structure Name="Weapon" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" AutoCreateStructsize="4096">
      <Elements>
        <Element Offset="0" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="4" Vartype="4 Bytes" Bytesize="4" Description="Current Ammo" DisplayMethod="Unsigned Integer"/>
        <Element Offset="8" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="12" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="16" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="20" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="24" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="28" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="32" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="36" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="40" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Hexadecimal"/>
        <Element Offset="44" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Hexadecimal"/>
        <Element Offset="48" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="52" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="56" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="60" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="64" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="68" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="72" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="76" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="80" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="84" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="88" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="92" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="96" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="100" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="104" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="108" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="112" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="116" Vartype="4 Bytes" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="120" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
        <Element Offset="124" Vartype="Pointer" Bytesize="4" DisplayMethod="Unsigned Integer"/>
      </Elements>
    </Structure>
  </Structures>
  <Comments>
</Comments>
  <DisassemblerComments>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+22B3C41</Address>
      <Comment>EAX is the hash, calculated from the scanned memory region</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+22B3C44</Address>
      <Comment>It gets overwritten here, so the result is only stored in [ebp-8]</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADAC</Address>
      <Comment>This is a hidden RET 4</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADB5</Address>
      <Comment>Jump to RET 4</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADB7</Address>
      <Comment>Check if the hashtable is populated</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADBE</Address>
      <Comment>Load Initial HashValue </Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADC3</Address>
      <Comment>Populate the hash table if needed</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADC5</Address>
      <Comment>EDX = 0</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADCF</Address>
      <Comment>If this is the first iteration?</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADD1</Address>
      <Comment>jns = jump on positive numbers</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADDD</Address>
      <Comment>This is done on the first iteration</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADF2</Address>
      <Comment>load scan size into edx (the parameter stack is skewed because of the 3rd instruction in this function)</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADFA</Address>
      <Comment>load scanstart</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242ADFF</Address>
      <Comment>load the target byte</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE02</Address>
      <Comment>eax is the accumulator, esi is used to calculate</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE04</Address>
      <Comment>esi / eax - gets shifted right, so only one byte is left</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE07</Address>
      <Comment>now the old byte is combined with the new one</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE09</Address>
      <Comment>the old accumulator value gets shifted left, to make space for the new bytes?</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE0C</Address>
      <Comment>esi (the index) is only one byte. This is a dictionary lookup, maybe a mutation table?</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE13</Address>
      <Comment>advance the target address by one</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE19</Address>
      <Comment>end of integrity check &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Crysis3.exe"+242AE2F</Address>
      <Comment>Call to integrity check above</Comment>
    </DisassemblerComment>
  </DisassemblerComments>
</CheatTable>
