<?xml version='1.0' encoding='utf-8'?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>3000</ID>
      <Description>"Activate Fast Native v4 (SIX TEST)"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1" />
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Victor Vran 2.07
  Cautious fast-native port of the six functional v4 cheats.
  Uses the same hook and name-pointer path already proven by the Gold v3 test.
  Hot path is pure x86.
}

[ENABLE]

aobscanmodule(VV_FAST_HOOK,$process,00 8B 01 89 07 8A 41 04)
alloc(VV_FAST_MEM,$1000,VV_FAST_HOOK)
alloc(VV_FLAGS,8)

label(VV_ORIGINAL)
label(VV_FAST_RETURN)
label(VV_DONE)
label(VV_CHECK_OVERDRIVE)
label(VV_CHECK_COOLDOWN)
label(VV_CHECK_GOLD)
label(VV_CHECK_STACK)
label(VV_CHECK_DAMAGE)

registersymbol(VV_FAST_HOOK)
registersymbol(VV_FLAGS)

VV_FLAGS:
db 00 00 00 00 00 00 00 00

VV_FAST_MEM:
  pushfd
  push eax

  // Original v4 structural guards.
  cmp byte ptr [ecx+04],13
  jne VV_DONE
  cmp byte ptr [ecx+09],44
  jne VV_DONE

  // Same path proven by Gold v3:
  // readPointer(ecx+05) + 0x10
  mov eax,[ecx+05]
  test eax,eax
  je VV_DONE
  add eax,10

  // Unlimited Health: exact "InitialHealth"
  cmp byte ptr [VV_FLAGS+00],01
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+00],49
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+01],6E
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+02],69
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+03],74
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+04],69
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+05],61
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+06],6C
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+07],48
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+08],65
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+09],61
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+0A],6C
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+0B],74
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+0C],68
  jne VV_CHECK_OVERDRIVE
  cmp byte ptr [eax+0D],00
  jne VV_CHECK_OVERDRIVE
  mov dword ptr [ecx],0098967F
  jmp VV_DONE

VV_CHECK_OVERDRIVE:
  // Unlimited Overdrive: exact "overdrive"
  cmp byte ptr [VV_FLAGS+06],01
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+00],6F
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+01],76
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+02],65
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+03],72
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+04],64
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+05],72
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+06],69
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+07],76
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+08],65
  jne VV_CHECK_COOLDOWN
  cmp byte ptr [eax+09],00
  jne VV_CHECK_COOLDOWN
  mov dword ptr [ecx],000F423F
  jmp VV_DONE

VV_CHECK_COOLDOWN:
  // Special Attack No Cooldown: exact "cooldown"
  cmp byte ptr [VV_FLAGS+02],01
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+00],63
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+01],6F
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+02],6F
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+03],6C
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+04],64
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+05],6F
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+06],77
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+07],6E
  jne VV_CHECK_GOLD
  cmp byte ptr [eax+08],00
  jne VV_CHECK_GOLD
  mov dword ptr [ecx],00000000
  jmp VV_DONE

VV_CHECK_GOLD:
  // Unlimited Gold: exact "Gold"
  cmp byte ptr [VV_FLAGS+03],01
  jne VV_CHECK_STACK
  cmp byte ptr [eax+00],47
  jne VV_CHECK_STACK
  cmp byte ptr [eax+01],6F
  jne VV_CHECK_STACK
  cmp byte ptr [eax+02],6C
  jne VV_CHECK_STACK
  cmp byte ptr [eax+03],64
  jne VV_CHECK_STACK
  cmp byte ptr [eax+04],00
  jne VV_CHECK_STACK
  mov dword ptr [ecx],000F423F
  jmp VV_DONE

VV_CHECK_STACK:
  // Unlimited Item Use: exact "stack"
  cmp byte ptr [VV_FLAGS+04],01
  jne VV_CHECK_DAMAGE
  cmp byte ptr [eax+00],73
  jne VV_CHECK_DAMAGE
  cmp byte ptr [eax+01],74
  jne VV_CHECK_DAMAGE
  cmp byte ptr [eax+02],61
  jne VV_CHECK_DAMAGE
  cmp byte ptr [eax+03],63
  jne VV_CHECK_DAMAGE
  cmp byte ptr [eax+04],6B
  jne VV_CHECK_DAMAGE
  cmp byte ptr [eax+05],00
  jne VV_CHECK_DAMAGE
  mov dword ptr [ecx],000000C8
  jmp VV_DONE

VV_CHECK_DAMAGE:
  // Heavy Base Damage: exact "base_damage"
  cmp byte ptr [VV_FLAGS+05],01
  jne VV_DONE
  cmp byte ptr [eax+00],62
  jne VV_DONE
  cmp byte ptr [eax+01],61
  jne VV_DONE
  cmp byte ptr [eax+02],73
  jne VV_DONE
  cmp byte ptr [eax+03],65
  jne VV_DONE
  cmp byte ptr [eax+04],5F
  jne VV_DONE
  cmp byte ptr [eax+05],64
  jne VV_DONE
  cmp byte ptr [eax+06],61
  jne VV_DONE
  cmp byte ptr [eax+07],6D
  jne VV_DONE
  cmp byte ptr [eax+08],61
  jne VV_DONE
  cmp byte ptr [eax+09],67
  jne VV_DONE
  cmp byte ptr [eax+0A],65
  jne VV_DONE
  cmp byte ptr [eax+0B],00
  jne VV_DONE
  mov dword ptr [ecx],0000270F

VV_DONE:
  pop eax
  popfd

VV_ORIGINAL:
  mov eax,[ecx]
  mov [edi],eax
  mov al,[ecx+04]
  jmp VV_FAST_RETURN

VV_FAST_HOOK+01:
  jmp VV_FAST_MEM
  nop 2
VV_FAST_RETURN:

[DISABLE]

VV_FAST_HOOK+01:
  db 8B 01 89 07 8A 41 04

unregistersymbol(VV_FAST_HOOK)
unregistersymbol(VV_FLAGS)
dealloc(VV_FAST_MEM)
dealloc(VV_FLAGS)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>3001</ID>
          <Description>"Unlimited Health (NATIVE TEST)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
VV_FLAGS+00:
db 01

[DISABLE]
VV_FLAGS+00:
db 00
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3002</ID>
          <Description>"Unlimited Overdrive (NATIVE TEST)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
VV_FLAGS+06:
db 01

[DISABLE]
VV_FLAGS+06:
db 00
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3003</ID>
          <Description>"Special Attack No Cooldown (NATIVE TEST)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
VV_FLAGS+02:
db 01

[DISABLE]
VV_FLAGS+02:
db 00
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3004</ID>
          <Description>"Unlimited Gold (NATIVE TEST)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
VV_FLAGS+03:
db 01

[DISABLE]
VV_FLAGS+03:
db 00
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3005</ID>
          <Description>"Unlimited Item Use (NATIVE TEST)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
VV_FLAGS+04:
db 01

[DISABLE]
VV_FLAGS+04:
db 00
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3006</ID>
          <Description>"Heavy Base Damage 9999 (NATIVE TEST)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
VV_FLAGS+05:
db 01

[DISABLE]
VV_FLAGS+05:
db 00
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>