rendered paste bodychar *op_unknown = "unknown";
char *optypenames[] =
{
op_unknown,
op_unknown,
"jump",
op_unknown,
op_unknown,
"local",
"global",
"constant",
"pop",
op_unknown,
op_unknown, // 10
op_unknown,
"eval",
"retval",
"getvar",
op_unknown,
"getvar[]",
"setvar",
"setvar[]",
"push",
"setarg2?",
"callnative",
"callfunc",
"typecast",
op_unknown,
op_unknown,
op_unknown,
op_unknown,
op_unknown,
op_unknown,
op_unknown,
op_unknown,
"add\t",
"subtract",
"multiply",
"divide",
op_unknown,
"negate",
"bnot",
"return",
"jmptruebooleannor",
"jmpfalsebooleanand",
op_unknown,
op_unknown,
op_unknown
};
void __stdcall JassVMSwitchTableHook(JassInstance *inst)
{
if (true)
{
JassOpcode *op = inst->op;
CompilerInstance *comp = inst->comp;
char *symname;
char msg[200];
switch (op->type)
{
case 0x05:
case 0x06:
case 0x07:
case 0x08:
//case 0x0c: // symbolid for eval is actually the value we are evaluating
case 0x0e:
case 0x0f:
case 0x10:
case 0x11:
//case 0x13: // always displays a null string for push opcode??
case 0x15:
case 0x16:
case 0x28:
case 0x29:
case 0x2a:
case 0x2b:
__asm
{
mov ecx, comp
mov eax, op
mov eax, dword ptr ds:[eax + 4]
push eax
mov eax, 0x6f69dfe0
call eax
mov symname, eax
}
fprintf(f, "%.2x %.2x %.2x %2x:%-20s %s\n", op->UnknownArrayThing, op->UnknownParam1, op->UnknownParam2, op->type, optypenames[op->type], symname);
break;
default:
fprintf(f, "%.2x %.2x %.2x %2x:%-20s %.8x\n", op->UnknownArrayThing, op->UnknownParam1, op->UnknownParam2, op->type, optypenames[op->type], op->symbolid);
break;
}
//if (show_em)
// GamePrintUIMessage(msg, 10.0f, 0xFFFFFFFF);
//std::cout << msg;
}
}