Well... I'm thinking by to much time.. if I must release this source or not, I mean.. this is more than only: "Demon Pet Show Life" xD, this is a part from my work with: Pets, but since.. I release this function now, because actually... I have this function (decompiled) then.. this is ugly and not util code for me... now, Enjoy it!
Code:
void __declspec(naked) RudolfPetHPBar1()
{
_asm
{
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,67) // Rudolf
JNZ Unicorn_Pet_Label
// ---------------------------------------
Unicorn_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,106) // Unicorn
JE AddPetUnicorn_Text
JNZ Skeleton_Pet_Label
// ---------------------------------------
Skeleton_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,123) // Skeleton
JE AddPetSkeleton_Text
JNZ BlueDragon_Pet_Label
// ---------------------------------------
BlueDragon_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,110) // Blue Dragon
JE AddPetDragon_Text
JNZ DarkWolf_Pet_Label
// ---------------------------------------
DarkWolf_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,97) // Dark Wolf
JE AddPetDarkWolf_Text
JNZ FangSable_Pet_Label
// ---------------------------------------
FangSable_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,98) // Fang Sable
JE AddPetFangSable_Text
JNZ HairTiger_Pet_Label
// ---------------------------------------
HairTiger_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,99) // Hair Tiger
JE AddPetHairTiger_Text
JNZ Fenrir_Pet_Label
// ---------------------------------------
Fenrir_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,37) // Fenrir
JE AddPetFenrir_Text
JNZ Angel_Pet_Label
// ---------------------------------------
Angel_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,0) // Angel
JE AddPetAngel_Text
JNZ Satan_Pet_Label
// ---------------------------------------
Satan_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,1) // Satan
JE AddPetSatan_Text
JNZ Uniria_Pet_Label
// ---------------------------------------
Uniria_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,2) // Uniria
JE AddPetUniria_Text
JNZ Dinorant_Pet_Label
// ---------------------------------------
Dinorant_Pet_Label:
// ---------------------------------------
MOV EAX, DWORD PTR DS:[0x7A723B8]
MOVSX ECX, WORD PTR DS:[EAX+0x1E8]
CMP ECX, ObjectId(13,3) // Dinorant
JE AddPetDinorant_Text
JNZ Continue_Load
// ---------------------------------------
Continue_Load:
// ---------------------------------------
JNZ PetLifeBarFinalCheck
// ---------------------------------------
MOV BYTE PTR SS:[EBP-0x100],0
MOV ECX, 0x3F
XOR EAX, EAX
LEA EDI, [EBP-0xFF] // 0xFF = 255 (Max Pet Life)
REP STOS DWORD PTR ES:[EDI] // fucking REP STOS instruction set: EDI register
STOS WORD PTR ES:[EDI] // I don't know that is this
STOS BYTE PTR ES:[EDI] // I don't know that is this too, yet ! ;)
MOV EDX, DWORD PTR DS:[0x7A723B8] // Some STRUCT -> maybe is related to: PreviewStruct
MOVSX EAX, WORD PTR DS:[EDX+0x1E8] // 0x1E8 = Pet Slot from Inventory Character on: 1.03K JPN main.exe
MOV DWORD PTR SS:[EBP-0x110],EAX
MOV ECX, DWORD PTR SS:[EBP-0x110]
SUB ECX, ObjectId(13, 0) // 0x1D42 => Guardian Angel ObjectId(13, 0) = 0x1D42
MOV DWORD PTR SS:[EBP-0x110],ECX
CMP DWORD PTR SS:[EBP-0x110],0x7F // 0x50 => Panda Pet ObjectId(13, 80) = 0x1A50.. I have added pets, then I must modify this (7F)
JNZ PetLifeBarSomeCheck // Here original instruction is: JA, but C++ Variant not admit this yet, then I change by: JNZ
MOV EAX, DWORD PTR SS:[EBP-0x110]
XOR EDX, EDX
MOV DL, BYTE PTR DS:[EAX+0x73687D]
JMP DWORD PTR DS:[EDX*0x4+0x736851]
// -----------------------------------------
AddPetUnicorn_Text:
// -----------------------------------------
PUSH 0xB54 // Set Name Text: "Unicorn Pet" -> 2900
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetSkeleton_Text:
// ----------------------------------------
PUSH 0xB55 // Set Name Text: "Skeleton Pet" -> 2901
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetDragon_Text:
// ----------------------------------------
PUSH 0xB56 // Set Name Text: "Dragon Pet" -> 2902
MOV ECX, 0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetDarkWolf_Text:
// ----------------------------------------
PUSH 0xB57 // Set Name Text: "Wolf Pet" -> 2903
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetFangSable_Text:
// ----------------------------------------
PUSH 0xB58 // Set Name Text: "Fang Pet" -> 2904
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetHairTiger_Text:
// ----------------------------------------
PUSH 0xB59 // Set Name Text: "Tiger Pet" -> 2905
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetFenrir_Text:
// ----------------------------------------
PUSH 0x77C // Set Name Text: "Fenrir Pet" -> 1916 (Original Number Line)
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetAngel_Text:
// ----------------------------------------
PUSH 0x161 // Set Name Text: "Angel Pet" -> 353 (Original Number Line)
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetSatan_Text:
// ----------------------------------------
PUSH 0x162 // Set Name Text: "Satan Pet" -> 354 (Original Number Line)
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetUniria_Text:
// ----------------------------------------
PUSH 0x163 // Set Name Text: "Uniria Pet" -> 355 (Original Number Line)
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
AddPetDinorant_Text:
// ----------------------------------------
PUSH 0xB5A // Set Name Text: "Dinorant Pet" -> 2906 (Original Number Line)
MOV ECX,0x07AAD828 // Maybe this is a cool Pets Struct or Class :D method
CALL PetCall1 // This is a class sure (exists a MOV ECX up).
PUSH EAX
LEA ECX,[EBP-0x100]
PUSH ECX
CALL PetCall2
ADD ESP,0x8
JMP Pet_ExtrangeJump // Here I must jump again to extrange instruction
// ----------------------------------------
PetLifeBarSomeCheck: // My cool defined LABEL, to make a extrange JUMP.
// ----------------------------------------
JMP Pet_ExtrangeJump
// ----------------------------------------
PetLifeBarFinalCheck:
// ----------------------------------------
JMP Pet_FinalJump
}
}
PetHPBarHook()
{
Utils.SetRange((LPVOID)0x0073662D, 156, ASM::NOP);
Utils.SetJmp((LPVOID)0x0073662D, RudolfPetHPBar1);
}