diff --git a/src/h1/xsk/disassembler.cpp b/src/h1/xsk/disassembler.cpp index 7081d7ba..953854a2 100644 --- a/src/h1/xsk/disassembler.cpp +++ b/src/h1/xsk/disassembler.cpp @@ -365,15 +365,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x40000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else { diff --git a/src/h2/xsk/disassembler.cpp b/src/h2/xsk/disassembler.cpp index b54b5ab0..7303105d 100644 --- a/src/h2/xsk/disassembler.cpp +++ b/src/h2/xsk/disassembler.cpp @@ -365,15 +365,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x40000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else { diff --git a/src/iw5/xsk/disassembler.cpp b/src/iw5/xsk/disassembler.cpp index 1a9623c8..64f987c2 100644 --- a/src/iw5/xsk/disassembler.cpp +++ b/src/iw5/xsk/disassembler.cpp @@ -364,15 +364,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x40000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else { diff --git a/src/iw6/xsk/disassembler.cpp b/src/iw6/xsk/disassembler.cpp index 0811a049..5d9f2e68 100644 --- a/src/iw6/xsk/disassembler.cpp +++ b/src/iw6/xsk/disassembler.cpp @@ -364,15 +364,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x40000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else { diff --git a/src/iw7/xsk/disassembler.cpp b/src/iw7/xsk/disassembler.cpp index 447537c9..59a8b963 100644 --- a/src/iw7/xsk/disassembler.cpp +++ b/src/iw7/xsk/disassembler.cpp @@ -364,15 +364,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x40000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else { diff --git a/src/s1/xsk/disassembler.cpp b/src/s1/xsk/disassembler.cpp index bc8afe31..72845aac 100644 --- a/src/s1/xsk/disassembler.cpp +++ b/src/s1/xsk/disassembler.cpp @@ -365,15 +365,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x40000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else { diff --git a/src/s2/xsk/disassembler.cpp b/src/s2/xsk/disassembler.cpp index dc4dff1e..c33c5245 100644 --- a/src/s2/xsk/disassembler.cpp +++ b/src/s2/xsk/disassembler.cpp @@ -366,15 +366,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x40000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else { diff --git a/src/s4/xsk/disassembler.cpp b/src/s4/xsk/disassembler.cpp index 22dcc655..804609cf 100644 --- a/src/s4/xsk/disassembler.cpp +++ b/src/s4/xsk/disassembler.cpp @@ -417,15 +417,17 @@ void disassembler::disassemble_end_switch(const instruction::ptr& inst) { const auto value = script_->read(); - if (value < 0x40000 && value > 0) + if (value < 0x80000) { - inst->data.push_back("case"); - inst->data.push_back(utils::string::quote(stack_->read_c_string(), false)); - } - else if (value == 0) - { - inst->data.push_back("default"); - stack_->read_c_string(); + const auto data = stack_->read_c_string(); + + if (data.data()[0] != 0x01) + { + inst->data.push_back("case"); + inst->data.push_back(utils::string::quote(data, false)); + } + else + inst->data.push_back("default"); } else {