From b94bbda18bf0a9290f01881c7a3e32a5a05c696e Mon Sep 17 00:00:00 2001 From: Adrian Chiris Date: Mon, 23 Feb 2015 18:03:46 +0200 Subject: [PATCH] porting of MFT-4.0.0 changes to mstflint pt1 --- configure.ac | 6 +- debian/changelog | 7 + flint/Makefile.am | 2 +- flint/subcommands.cpp | 179 +- flint/subcommands.h | 9 +- include/mtcr_ul/mtcr.h | 49 +- mflash/mflash.c | 97 +- mlxfwops/lib/flint_base.h | 4 +- mlxfwops/lib/flint_io.cpp | 2 +- mlxfwops/lib/fs2_ops.cpp | 3 +- mlxfwops/lib/fs2_ops.h | 2 +- mlxfwops/lib/fs3_ops.cpp | 330 +- mlxfwops/lib/fs3_ops.h | 12 +- mlxfwops/lib/fw_ops.cpp | 89 +- mlxfwops/lib/fw_ops.h | 14 +- mlxfwops/lib/mlxfwops.cpp | 16 +- mlxfwops/lib/mlxfwops.h | 4 +- mlxfwops/lib/mlxfwops_com.h | 45 +- mstdump/mstdump_dbs/ConnectX3Pro.csv | 2 + mstdump/mstdump_dbs/ConnectX4.csv | 73 +- mstdump/mstdump_dbs/SwitchEN.csv | 12380 +++++++++++------- mstflint.spec.in | 5 +- mtcr_ul/mtcr_int_defs.h | 21 +- mtcr_ul/mtcr_tools_cif.c | 6 +- mtcr_ul/mtcr_ul.c | 170 +- mtcr_ul/mtcr_ul_icmd_cif.c | 122 +- tools_layouts/Makefile.am | 10 +- tools_layouts/cibfw_layouts.c | 58 +- tools_layouts/cibfw_layouts.h | 48 +- tools_layouts/cx4fw_layouts.c | 535 + tools_layouts/cx4fw_layouts.h | 233 + tools_layouts/register_access_sib_layouts.c | 214 +- tools_layouts/register_access_sib_layouts.h | 117 +- tools_layouts/tools_open_layouts.c | 421 +- tools_layouts/tools_open_layouts.h | 202 +- 35 files changed, 10043 insertions(+), 5444 deletions(-) create mode 100644 tools_layouts/cx4fw_layouts.c create mode 100644 tools_layouts/cx4fw_layouts.h diff --git a/configure.ac b/configure.ac index ffd596a..59611e1 100644 --- a/configure.ac +++ b/configure.ac @@ -1,16 +1,16 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(mstflint, 3.8.0, orenk@mellanox.co.il) +AC_INIT(mstflint, 4.0.0, orenk@mellanox.co.il) AC_DEFINE_UNQUOTED([PROJECT], ["mstflint"], [Define the project name.]) AC_SUBST([PROJECT]) -AC_DEFINE_UNQUOTED([VERSION], ["3.8.0"], [Define the project version.]) +AC_DEFINE_UNQUOTED([VERSION], ["4.0.0"], [Define the project version.]) AC_SUBST([VERSION]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_SRCDIR([README]) -AM_INIT_AUTOMAKE(mstflint, 3.8.0) +AM_INIT_AUTOMAKE(mstflint, 4.0.0) dnl Checks for programs AC_PROG_CC diff --git a/debian/changelog b/debian/changelog index 20ba672..827f064 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +mstflint (4.0.0) unstable; urgency=low + + * Updated from MFT-4.0.0 initial release + + -- Adrian Chiris Thu, 5 Feb 2015 10:20:33 +0200 + + mstflint (3.8.0) unstable; urgency=low * Updated from MFT-3.8.0 diff --git a/flint/Makefile.am b/flint/Makefile.am index 0e793c6..e1f5b71 100755 --- a/flint/Makefile.am +++ b/flint/Makefile.am @@ -66,5 +66,5 @@ endif #get mst device examples and tool name from makefile mstflint_CXXFLAGS+= -DFLINT_NAME=\"mstflint\" -DFLINT_DISPLAY_NAME=\"MstFlint\" -mstflint_CXXFLAGS += -DMST_DEV_EXAMPLE1=\"03:00.0\" -DMST_DEV_EXAMPLE2=\"mlx4_0\" -DMST_DEV_EXAMPLE3=\"03:00.0\" +mstflint_CXXFLAGS += -DMST_DEV_EXAMPLE1=\"03:00.0\" -DMST_DEV_EXAMPLE2=\"mlx4_0\" -DMST_DEV_EXAMPLE3=\"03:00.0\" -DMST_DEV_EXAMPLE4=\"04:00.0\" diff --git a/flint/subcommands.cpp b/flint/subcommands.cpp index 3495b5b..c757e30 100644 --- a/flint/subcommands.cpp +++ b/flint/subcommands.cpp @@ -940,19 +940,6 @@ bool SubCommand::reportGuidChanges(guid_t* new_guids, guid_t* new_macs,\ return true; } -bool SubCommand::fwVerLessThan(const u_int16_t r1[3], const u_int16_t r2[3]) -{ - for (int i = 0; i < 3 ; i++) { - if (r1[i] < r2[i]) { - return true; - } - else if (r1[i] > r2[i]) { - return false; - } - } - return false; // equal versions -} - //used for dc and dh subcommands bool SubCommand::unzipDataFile (std::vector data, std::vector &newData, const char *sectionName) @@ -1027,8 +1014,8 @@ bool SubCommand::dumpFile(const char* confFile, std::vector& data, con } bool SubCommand::checkGuidsFlags (chip_type_t ct, u_int16_t devType, u_int8_t fwType, - bool guidsSpecified, bool macsSpecified, bool uidsSpecified) { - + bool guidsSpecified, bool macsSpecified, bool uidsSpecified, bool ibDev, bool ethDev) { + (void)ibDev; if (guidsSpecified || macsSpecified || uidsSpecified) { if (ct == CT_BRIDGEX) { if (macsSpecified || guidsSpecified) { @@ -1036,16 +1023,13 @@ bool SubCommand::checkGuidsFlags (chip_type_t ct, u_int16_t devType, u_int8_t fw return false; } } else { - if (uidsSpecified) { + if (uidsSpecified && fwType != FIT_FS3) { reportErr(true, "-uid(s) flag is applicable only for BridgeX and FS3 FW.\n"); return false; - } else if (fwType != FIT_FS2 && macsSpecified ) { + } else if (fwType != FIT_FS2 && !ethDev && macsSpecified ) { reportErr(true, "-mac(s) flag is not applicable for IB MT%d device.\n", devType); return false; - }// else if (!_fwOps->CntxEthOnly() && guids_specified) { - // return errmsg("-guid(s) flag is not applicable for IB MT%d device.\n", - // devType); - //} + } } } return true; @@ -1240,13 +1224,14 @@ void BurnSubCommand::updateBurnParams() _burnParams.userUids.resize(MAX_GUIDS, (guid_t){0xffffffff,0xffffffff}); } +#define VERSION_FORMAT(isFs2) isFs2 ? "%d.%d.%d" : "%d.%04d.%04d" bool BurnSubCommand::checkFwVersion() { char curr_ver[124], new_ver[124]; printf("\n"); printf(" Current FW version on flash: "); if (_devInfo.fw_info.fw_ver[0] != 0) { // i.e if we have a fw_version we assume this is != 0 - snprintf(curr_ver, 124, "%d.%d.%d", _devInfo.fw_info.fw_ver[0], _devInfo.fw_info.fw_ver[1], _devInfo.fw_info.fw_ver[2]); + snprintf(curr_ver, 124, VERSION_FORMAT(_devInfo.fw_type == FIT_FS2), _devInfo.fw_info.fw_ver[0], _devInfo.fw_info.fw_ver[1], _devInfo.fw_info.fw_ver[2]); } else { snprintf(curr_ver, 124, "N/A"); } @@ -1254,7 +1239,7 @@ bool BurnSubCommand::checkFwVersion() printf(" New FW version: "); if (_imgInfo.fw_info.fw_ver[0] != 0) { - snprintf(new_ver, 124, "%d.%d.%d", _imgInfo.fw_info.fw_ver[0], _imgInfo.fw_info.fw_ver[1], _imgInfo.fw_info.fw_ver[2]); + snprintf(new_ver, 124, VERSION_FORMAT(_devInfo.fw_type == FIT_FS2), _imgInfo.fw_info.fw_ver[0], _imgInfo.fw_info.fw_ver[1], _imgInfo.fw_info.fw_ver[2]); } else { snprintf(new_ver, 124, "N/A"); } @@ -1263,14 +1248,19 @@ bool BurnSubCommand::checkFwVersion() if (_flintParams.log_specified) { print_line_to_log("Current FW version on flash: %s, New FW version: %s\n", curr_ver, new_ver); } - bool updateRequired = true; + int verStatus = FVI_UNKNOWN; if (_devInfo.fw_info.fw_ver[0] != 0 && _imgInfo.fw_info.fw_ver[0] != 0) { - updateRequired = fwVerLessThan(_devInfo.fw_info.fw_ver,_imgInfo.fw_info.fw_ver); + verStatus = FwOperations::FwVerLessThan(_devInfo.fw_info.fw_ver,_imgInfo.fw_info.fw_ver, _devInfo.fw_type); } - if (!updateRequired) { + if (verStatus == FVI_UNKNOWN) { + printf("\n Warning: Cannot compare between FW versions(different branches).\n"); + if (!askUser()) { + return false; + } + } else if (verStatus == FVI_EQUAL || verStatus == FVI_GREATER) { printf("\n Note: The new FW version is not newer than the current FW version on flash.\n"); if (!askUser()) { return false; @@ -1532,7 +1522,7 @@ bool BurnSubCommand::dealWithGuids() || _burnParams.userUidsSpecified; if (is_guids_specified) { if (!checkGuidsFlags((chip_type_t)_imgInfo.fw_info.chip_type, _imgInfo.fw_info.dev_type, _fwType,\ - _burnParams.userGuidsSpecified, _burnParams.userMacsSpecified, _burnParams.userUidsSpecified)) { + _burnParams.userGuidsSpecified, _burnParams.userMacsSpecified, _burnParams.userUidsSpecified, ib_dev, eth_dev)) { return false; } } @@ -1829,21 +1819,33 @@ bool QuerySubCommand::displayFs2Uids(const fw_info_t& fwInfo) } #define BASE_STR "Base" -#define PRINT_FS3_UID(uid1, str) printf("%-16s %016"U64H_FMT_GEN" %d %d\n", str, uid1.uid, uid1.num_allocated, uid1.step); -#define PRINT_FS3_UIDS(uid1, uid2, str) {\ - PRINT_FS3_UID(uid1, BASE_STR" "str":");\ +#define PRINT_FS3_UID(uid1, str, printStep) \ + printf("%-16s %016"U64H_FMT_GEN" %d", str, uid1.uid, uid1.num_allocated);\ + if (printStep) {\ + printf(" %d", uid1.step);\ + }\ + printf("\n"); +#define PRINT_FS3_UIDS(uid1, uid2, str, printStep) {\ + PRINT_FS3_UID(uid1, BASE_STR" "str":", printStep);\ if (uid1.uid != uid2.uid || uid1.num_allocated != uid2.num_allocated || uid1.step != uid2.step) {\ - PRINT_FS3_UID(uid2, "Orig " BASE_STR " "str":");\ + PRINT_FS3_UID(uid2, "Orig " BASE_STR " "str":", printStep);\ } \ } bool QuerySubCommand::displayFs3Uids(const fw_info_t& fwInfo) { - printf("Description: UID GuidsNumber Step\n"); - PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.guids[0], fwInfo.fs3_info.orig_fs3_uids_info.guids[0], "GUID1"); - PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.guids[1], fwInfo.fs3_info.orig_fs3_uids_info.guids[1], "GUID2"); - PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.macs[0], fwInfo.fs3_info.orig_fs3_uids_info.macs[0], "MAC1"); - PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.macs[1], fwInfo.fs3_info.orig_fs3_uids_info.macs[1], "MAC2"); + if (fwInfo.fs3_info.fs3_uids_info.valid_field) { + // new GUIDs format + printf("Description: UID GuidsNumber\n"); + PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.cx4_uids.base_guid, fwInfo.fs3_info.orig_fs3_uids_info.cx4_uids.base_guid, "GUID", 0); + PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.cx4_uids.base_mac, fwInfo.fs3_info.orig_fs3_uids_info.cx4_uids.base_mac, "MAC", 0); + } else { + printf("Description: UID GuidsNumber Step\n"); + PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.cib_uids.guids[0], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.guids[0], "GUID1", 1); + PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.cib_uids.guids[1], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.guids[1], "GUID2", 1); + PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.cib_uids.macs[0], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.macs[0], "MAC1", 1); + PRINT_FS3_UIDS(fwInfo.fs3_info.fs3_uids_info.cib_uids.macs[1], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.macs[1], "MAC2", 1); + } return true; } @@ -1855,8 +1857,13 @@ FlintStatus QuerySubCommand::printInfo(const fw_info_t& fwInfo, bool fullQuery) printf("Image type: %s\n",(isFs2)? "FS2" : "FS3"); if (fwInfo.fw_info.fw_ver[0] || fwInfo.fw_info.fw_ver[1] || fwInfo.fw_info.fw_ver[2]) { + if (isFs2) { printf("FW Version: %d.%d.%d\n", fwInfo.fw_info.fw_ver[0], fwInfo.fw_info.fw_ver[1],\ fwInfo.fw_info.fw_ver[2]); + } else { + printf("FW Version: %d.%04d.%04d\n", fwInfo.fw_info.fw_ver[0], fwInfo.fw_info.fw_ver[1],\ + fwInfo.fw_info.fw_ver[2]); + } } if (fwInfo.fw_info.fw_rel_date[0] || fwInfo.fw_info.fw_rel_date[1] || fwInfo.fw_info.fw_rel_date[2]) { @@ -2417,7 +2424,8 @@ SgSubCommand:: SgSubCommand() INDENTEX"the full image crc after changing the guids\n" INDENTEX"num_of_guids: number of GUIDs to be allocated per physical port (FS3 Only)\n" INDENTEX"step_size: step size between GUIDs (FS3 Only)"; - _example = FLINT_NAME" -d "MST_DEV_EXAMPLE1" -guid 0x0002c9000100d050 sg"; + _example = FLINT_NAME" -d "MST_DEV_EXAMPLE1" -guid 0x0002c9000100d050 sg" + "\n"INDENTEX FLINT_NAME" -d "MST_DEV_EXAMPLE4" -guid 0x0002c9000100d050 -mac 0x0002c900d050 sg"; _v = Wtv_Dev_Or_Img; _maxCmdParamNum = 2; _cmdType = SC_Sg; @@ -2514,7 +2522,7 @@ bool SgSubCommand::CheckSetGuidsFlags() if (_sgParams.macsSpecified || _sgParams.guidsSpecified || _sgParams.uidsSpecified) { if (!checkGuidsFlags((chip_type_t)_info.fw_info.chip_type, _info.fw_info.dev_type,_info.fw_type,\ - _sgParams.guidsSpecified, _sgParams.macsSpecified, _sgParams.uidsSpecified)) { + _sgParams.guidsSpecified, _sgParams.macsSpecified, _sgParams.uidsSpecified, ibDev, ethDev)) { return false; } } else { @@ -2570,18 +2578,38 @@ FlintStatus SgSubCommand::sgFs2() FlintStatus SgSubCommand::sgFs3() { - if ( _flintParams.uid_specified) { - // for connectib we just need the base guid so we put it in the first location. - _sgParams.userGuids.resize(1); - _sgParams.userGuids[0]= _flintParams.baseUid; - if (!_ops->FwSetGuids(_sgParams, &verifyCbFunc)) { - reportErr(true, FLINT_SG_UID_ERROR, _ops->err()); + if (!CheckSetGuidsFlags()){ + return FLINT_FAILED; + } + // TODO: create method that checks the flags for FS3/FS2 + if (_info.fw_info.chip_type == CT_CONNECTX) { + if (!_flintParams.uid_specified && !_flintParams.guid_specified && !_flintParams.mac_specified) { + reportErr(true, "Can not set GUIDs/MACs: please run with -uid/-guid/-mac flag.\n"); return FLINT_FAILED; } + if (_flintParams.uid_specified) { + _sgParams.userGuids.resize(1); + _sgParams.userGuids[0]= _flintParams.baseUid; + } else { + // guids and/or macs were specified + _sgParams.userGuids.resize(2); + _sgParams.userGuids[0]= _sgParams.guidsSpecified ? _flintParams.user_guids[0] : (guid_t){0, 0}; + _sgParams.userGuids[1]= _sgParams.macsSpecified ? _flintParams.user_macs[0] : (guid_t){0, 0}; + } } else { - reportErr(true, "Can not set GUIDs/MACs: uid is not specified, please run with -uid flag.\n"); + if (!_flintParams.uid_specified) { + reportErr(true, "Can not set GUIDs/MACs: uid is not specified, please run with -uid flag.\n"); + return FLINT_FAILED; + } + // for connectib we just need the base guid so we put it in the first location. + _sgParams.userGuids.resize(1); + _sgParams.userGuids[0]= _flintParams.baseUid; + } + + if (!_ops->FwSetGuids(_sgParams, &verifyCbFunc)) { + reportErr(true, FLINT_SG_UID_ERROR, _ops->err()); return FLINT_FAILED; - } + } return FLINT_SUCCESS; } @@ -2622,7 +2650,7 @@ SmgSubCommand:: SmgSubCommand() #ifndef __WIN__ "\n"INDENTEX FLINT_NAME" -d "MST_DEV_EXAMPLE3" -uid 0x0002c9000100d050 smg (should be used when device is idle)" #endif - ; + "\n"INDENTEX FLINT_NAME" -d "MST_DEV_EXAMPLE4" -guid 0x0002c9000100d050 -mac 0x0002c900d050 smg (should be used when device is idle)"; _v = Wtv_Dev_Or_Img; _maxCmdParamNum = 2; _cmdType = SC_Smg; @@ -2636,14 +2664,26 @@ SmgSubCommand:: ~SmgSubCommand() bool SmgSubCommand::verifyParams() { - if (!_flintParams.uid_specified) { - reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "\"-uid\" flag"); + if (!_flintParams.uid_specified && !_flintParams.guid_specified && !_flintParams.mac_specified) { + reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "\"-uid or -guid/-mac\" flags"); return false; } if (_flintParams.uids_specified) { reportErr(true, FLINT_INVALID_OPTION_ERROR, "\"-uids\"", _name.c_str(), "\"-uid\""); return false; } + if (_flintParams.guids_specified) { + reportErr(true, FLINT_INVALID_OPTION_ERROR, "\"-guids\"", _name.c_str(), "\"-guid\""); + return false; + } + if (_flintParams.macs_specified) { + reportErr(true, FLINT_INVALID_OPTION_ERROR, "\"-macs\"", _name.c_str(), "\"-mac\""); + return false; + } + if (_flintParams.uid_specified && (_flintParams.guid_specified || _flintParams.mac_specified)) { + reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "\"-uid\"", "\"-guid\"/-mac\""); + return false; + } if (_flintParams.cmd_params.size() != 0 && _flintParams.cmd_params.size() != 2) { reportErr(true, FLINT_CMD_ARGS_ERROR4, _name.c_str(), 0, 2, _flintParams.cmd_params.size()); @@ -2654,7 +2694,20 @@ bool SmgSubCommand::verifyParams() !extractUIDArgs(_flintParams.cmd_params, _baseGuid.num_of_guids, _baseGuid.step_size)) { return false; } - _baseGuid.uid = _flintParams.baseUid; + + if (_flintParams.uid_specified) { + _baseGuid.set_mac_from_guid = true; + } + + _baseGuid.base_guid_specified = _flintParams.uid_specified || _flintParams.guid_specified; + if (_baseGuid.base_guid_specified) { + _baseGuid.base_guid = _flintParams.uid_specified ? _flintParams.baseUid : _flintParams.user_guids[0]; + } + + _baseGuid.base_mac_specified = _flintParams.mac_specified; + if (_baseGuid.base_mac_specified) { + _baseGuid.base_mac = _flintParams.user_macs[0]; + } //printf("-D-"GUID_FORMAT"\n", _baseGuid.h, _baseGuid.l); return true; } @@ -2664,16 +2717,28 @@ FlintStatus SmgSubCommand::executeCommand() if (preFwOps()) { return FLINT_FAILED; } - FwOperations *ops = _flintParams.device_specified ? _fwOps : _imgOps; + _ops = _flintParams.device_specified ? _fwOps : _imgOps; //TODO: dispaly MFG guid changes + bool stripedImage = _flintParams.striped_image && _flintParams.image_specified; + if (!_ops->FwQuery(&_info, true, stripedImage)) { + reportErr(true, FLINT_MFG_ERROR, _ops->err()); + return FLINT_FAILED; + } + if (_info.fw_info.chip_type == CT_CONNECTX) { + if (!_flintParams.uid_specified && !_flintParams.guid_specified && !_flintParams.mac_specified ) { + reportErr(true, "Can not set GUIDs/MACs: GUIDs/MACs are not specified, please run with -uid/-guid/-mac flags.\n"); + return FLINT_FAILED; + } + } else { + if (!_flintParams.uid_specified) { + reportErr(true, "Can not set GUIDs/MACs: uid is not specified, please run with -uid flag.\n"); + return FLINT_FAILED; + } + } bool ret; - if (_flintParams.cmd_params.size() == 2) { - ret = ops->FwSetMFG(_baseGuid, &verifyCbFunc); - } else { - ret = ops->FwSetMFG(_baseGuid.uid, &verifyCbFunc); - } + ret = _ops->FwSetMFG(_baseGuid, &verifyCbFunc); if (!ret) { - reportErr(true, FLINT_MFG_ERROR, ops->err()); + reportErr(true, FLINT_MFG_ERROR, _ops->err()); return FLINT_FAILED; } return FLINT_SUCCESS; diff --git a/flint/subcommands.h b/flint/subcommands.h index d646879..1630b4b 100644 --- a/flint/subcommands.h +++ b/flint/subcommands.h @@ -125,7 +125,7 @@ protected: guid_t* old_guids, guid_t* old_macs, bool printGuids,\ bool printMacs, bool printUids, int guidNum); bool checkGuidsFlags(chip_type_t ct, u_int16_t devType, u_int8_t fwType, - bool guidsSpecified, bool macsSpecified, bool uidsSpecified); + bool guidsSpecified, bool macsSpecified, bool uidsSpecified, bool ibDev, bool ethDev); void printMissingGuidErr(bool ibDev, bool ethDev, bool bxDev); bool extractUIDArgs(std::vector& cmdArgs, u_int8_t& numOfGuids, u_int8_t& stepSize); @@ -139,9 +139,6 @@ protected: //print errors to an err buff, log if needed and stdout void reportErr(bool shouldPrint, const char *format, ...); - - bool fwVerLessThan(const u_int16_t r1[3], const u_int16_t r2[3]); - bool writeToFile(string filePath, const std::vector& buff); bool dumpFile(const char* confFile, std::vector& data, const char *sectionName); @@ -298,7 +295,9 @@ public: class SmgSubCommand : public SubCommand { private: - fs3_guid_t _baseGuid; + fs3_uid_t _baseGuid; + fw_info_t _info; + FwOperations* _ops; public: SmgSubCommand(); ~SmgSubCommand(); diff --git a/include/mtcr_ul/mtcr.h b/include/mtcr_ul/mtcr.h index f09f0f6..054116f 100644 --- a/include/mtcr_ul/mtcr.h +++ b/include/mtcr_ul/mtcr.h @@ -1,33 +1,13 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. +/* - Mellanox Confidential and Proprietary - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Copyright (C) Jan 2013, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * */ @@ -49,16 +29,17 @@ typedef enum MError { ME_NOT_IMPLEMENTED, ME_SEM_LOCKED, ME_MEM_ERROR, - ME_PCI_READ_ERROR, - ME_PCI_WRITE_ERROR, - ME_PCI_SPACE_NOT_SUPPORTED, - ME_PCI_IFC_TOUT, ME_MAD_SEND_FAILED, ME_UNKOWN_ACCESS_TYPE, ME_UNSUPPORTED_DEVICE, ME_REG_NOT_SUPPORTED, + ME_PCI_READ_ERROR, + ME_PCI_WRITE_ERROR, + ME_PCI_SPACE_NOT_SUPPORTED, + ME_PCI_IFC_TOUT, + // errors regarding REG_ACCESS ME_REG_ACCESS_OK = 0, ME_REG_ACCESS_BAD_STATUS_ERR = 0x100, @@ -194,7 +175,7 @@ typedef enum mtcr_access_method { MTCR_ACCESS_ERROR = 0x0, MTCR_ACCESS_MEMORY = 0x1, MTCR_ACCESS_CONFIG = 0x2, - MTCR_ACCESS_INBAND = 0x3, + MTCR_ACCESS_INBAND = 0x3 } mtcr_access_method_t; /* * Read 4 bytes, return number of succ. read bytes or -1 on failure @@ -291,8 +272,6 @@ const char* m_err2str(MError status); int mread_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len); int mwrite_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len); -int msupp_fw_ifc_cap(mfile* mf); - #ifdef __cplusplus } #endif diff --git a/mflash/mflash.c b/mflash/mflash.c index e50f6d9..648861f 100644 --- a/mflash/mflash.c +++ b/mflash/mflash.c @@ -218,7 +218,7 @@ int release_semaphore(mflash* mfl, int ignore_writer_lock); #define ADDR_MSK 0x7ffffUL #define CMD_MASK 0xe0000000UL -#define SST_STATUS_REG_VAL 0x80000000 +#define SST_STATUS_REG_VAL 0x80 #define ATMEL_STATUS_REG_VAL 0x0 #define CPUMODE_MSK 0xc0000000UL @@ -361,7 +361,7 @@ int cntx_st_spi_block_read_ex (mflash* mfl, int cntx_spi_get_type(mflash* mfl, u_int8_t op_type, u_int8_t *vendor, u_int8_t *type, u_int8_t *capacity); -int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_cmd, u_int8_t status_is_double); +int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_cmd, u_int8_t bytes_num); int spi_get_num_of_flashes(int prev_num_of_flashes); @@ -823,9 +823,9 @@ int get_flash_params(mflash* mfl, flash_params_t *flash_params, unsigned *type_i // Init SST flash. if (mfl->access_type == MFAT_MFILE) { if (flash_info->vendor == FV_SST && flash_info->type == FMT_SST_25) { - rc = cntx_spi_write_status_reg(mfl, SST_STATUS_REG_VAL, SFC_WRSR, 0); CHECK_RC(rc); + rc = cntx_spi_write_status_reg(mfl, SST_STATUS_REG_VAL, SFC_WRSR, 1); CHECK_RC(rc); } else if (flash_info->vendor == FV_ATMEL && flash_info->type == FMT_ATMEL) { - rc = cntx_spi_write_status_reg(mfl, ATMEL_STATUS_REG_VAL, SFC_WRSR, 0); CHECK_RC(rc); + rc = cntx_spi_write_status_reg(mfl, ATMEL_STATUS_REG_VAL, SFC_WRSR, 1); CHECK_RC(rc); } } @@ -1209,27 +1209,29 @@ int cntx_exec_cmd_set(mflash* mfl, u_int32_t gw_cmd, u_int32_t* buff,int buff_dw return MFE_OK; } -int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* status, u_int8_t data_num) +int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* status, u_int8_t bytes_num) { int rc; u_int32_t gw_cmd = 0; u_int32_t flash_data = 0; - + //TODO: adrianc: update msize from log2(bytes_num) gw_cmd = MERGE(gw_cmd, 1, HBO_READ_OP, 1); gw_cmd = MERGE(gw_cmd, 1, HBO_CMD_PHASE, 1); - gw_cmd = MERGE(gw_cmd, 1, HBO_DATA_PHASE, data_num); + gw_cmd = MERGE(gw_cmd, 1, HBO_DATA_PHASE, 1); gw_cmd = MERGE(gw_cmd, 2, HBO_MSIZE, HBS_MSIZE); gw_cmd = MERGE(gw_cmd, op_type, HBO_CMD, HBS_CMD); - + if (bytes_num > 8) { + // self check + printf("-E- attempting to read %d bytes from register but only 8 bytes are read!\n", bytes_num); + return MFE_UNKNOWN_REG; + } rc = cntx_exec_cmd_get(mfl, gw_cmd, &flash_data, 1, NULL, "Read id"); CHECK_RC(rc); // printf("-D- cntx_int_spi_get_status_data: op=%02x status=%08x\n", op_type, flash_data); - // Return status reg byte is at offset 3 in word - *status = flash_data; - + *status = (flash_data >> 8*(4 - bytes_num)); return MFE_OK; } @@ -1315,27 +1317,35 @@ int cntx_spi_get_type(mflash* mfl, u_int8_t op_type, u_int8_t *vendor, u_int8_t* u_int32_t flash_data = 0; int rc; - rc = cntx_int_spi_get_status_data(mfl, op_type, &flash_data, 3); CHECK_RC(rc); + rc = cntx_int_spi_get_status_data(mfl, op_type, &flash_data, 4); CHECK_RC(rc); //printf("-D- jedec_info = %#x\n", flash_data); // Get type and some other info from jededc_id get_info_from_jededc_id(flash_data, vendor, type, capacity); // printf("-D- cntx_spi_get_type: vendor = %#x, type = %#x, capacity = %#x\n", *vendor, *type, *capacity); return MFE_OK; } -int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_cmd, u_int8_t status_is_double) +int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_cmd, u_int8_t bytes_num) { int rc; u_int32_t gw_cmd = 0; - + // TODO: adrianc: add support for dynamic writes of power of 2 bytes_num not just 1,2 bytes rc = cntx_st_spi_write_enable(mfl); CHECK_RC(rc); gw_cmd = MERGE(gw_cmd, 1, HBO_CMD_PHASE, 1); gw_cmd = MERGE(gw_cmd, 1, HBO_DATA_PHASE, 1); gw_cmd = MERGE(gw_cmd, write_cmd, HBO_CMD, HBS_CMD); - if (status_is_double) { - gw_cmd = MERGE(gw_cmd, 1, HBO_MSIZE, HBS_MSIZE); + if (bytes_num != 1 && bytes_num != 2) { + // self check + printf("-E- can only write status register of length 1 or 2 not %d\n", bytes_num); + return MFE_NOT_SUPPORTED_OPERATION; } + // push status reg to upper bytes + status_reg = status_reg << ((bytes_num==2) ? 16 : 24); + if (bytes_num == 2) { + gw_cmd = MERGE(gw_cmd, 1, HBO_MSIZE, 1); + } + return cntx_exec_cmd_set(mfl, gw_cmd, &status_reg, 1, NULL, "Write-Status-Register"); } @@ -2307,22 +2317,21 @@ int get_dev_info(mflash* mfl) mfl->attr.rev_id = (dev_id & 0xff0000) >> 16; mfl->attr.hw_dev_id = dev_id & 0xffff; } + if (dev_flags & MDEVS_MLNX_OS) { mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_MLNXOS_CMDIF; } else if (dev_flags & MDEVS_IB){ mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_INBAND; - } else if (HAS_ICMD_IF(mfl->attr.hw_dev_id)){ - if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) { - if (msupp_fw_ifc_cap(mfl->mf)) { + } else { // not mlnxOS or IB device - check HW ID to determine Access type + if (HAS_ICMD_IF(mfl->attr.hw_dev_id)){ + if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) { mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_ICMD; - } else { - mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_INBAND; } } } return MFE_OK; -} +} //Caller must zero the mflash struct before calling this func. int mf_open_fw(mflash* mfl, flash_params_t* flash_params, int num_of_banks) { @@ -2651,14 +2660,19 @@ int mf_update_boot_addr(mflash* mfl, u_int32_t boot_addr) return mf_update_boot_addr_by_type(mfl, boot_addr); } -int mf_read_modify_status_winbond (mflash *mfl, u_int8_t bank_num, u_int8_t first_byte, u_int8_t param, u_int8_t offset, u_int8_t size) +int mf_read_modify_status_winbond (mflash *mfl, u_int8_t bank_num, u_int8_t is_first_status_reg, u_int8_t param, u_int8_t offset, u_int8_t size) { - u_int8_t status1 = 0, status2 = 0, use_rdsr2 = 0, is_double = 0; + u_int8_t status1 = 0, status2 = 0, use_rdsr2 = 0; u_int32_t status = 0; + u_int8_t bytes_to_write = 1; int rc; rc = set_bank_int(mfl, bank_num); CHECK_RC(rc); if ( mfl->attr.vendor == FV_WINBOND && mfl->attr.type == FMT_WINBOND) { + /* + * if we have 2 status registers, winbond are allowing us to write both of them + * in a single command WRSR status_reg1 located in MSB, status_reg2 after status_reg1 + */ use_rdsr2 = 1; } @@ -2666,15 +2680,19 @@ int mf_read_modify_status_winbond (mflash *mfl, u_int8_t bank_num, u_int8_t rc = mfl->f_spi_status(mfl, SFC_RDSR, &status1); CHECK_RC(rc); if (use_rdsr2) { rc = mfl->f_spi_status(mfl, SFC_RDSR2, &status2); CHECK_RC(rc); - status = MERGE(0, status2, 16, 8); - is_double = 1; + status = MERGE(0, status2, 0, 8); + bytes_to_write = 2; } // Prepare the read status word - status = MERGE(status, status1, 24, 8); + status = MERGE(status, status1, 8, 8); // Modify the status according to the function arguments - status = MERGE(status, param, 16 + offset + first_byte * 8 , size); + status = MERGE(status, param, offset + is_first_status_reg * 8 , size); + // fix status register in case we dont need to write status register 2 + if (bytes_to_write == 1) { + status = status >> 8; + } // Write register status - rc = cntx_spi_write_status_reg(mfl, status, SFC_WRSR, is_double); CHECK_RC(rc); + rc = cntx_spi_write_status_reg(mfl, status, SFC_WRSR, bytes_to_write); CHECK_RC(rc); return MFE_OK; } #define QUAD_EN_OFFSET 1 @@ -2682,19 +2700,15 @@ int mf_read_modify_status_winbond (mflash *mfl, u_int8_t bank_num, u_int8_t #define DUMMY_CYCLES_OFFSET_ST 12 int mf_read_modify_status_new(mflash *mfl, u_int8_t bank_num, u_int8_t read_cmd, u_int8_t write_cmd, u_int8_t val, - u_int8_t offset, u_int8_t size, u_int8_t is_double) + u_int8_t offset, u_int8_t size, u_int8_t bytes_num) { int rc; u_int32_t status = 0; rc = set_bank_int(mfl, bank_num); CHECK_RC(rc); - rc = cntx_int_spi_get_status_data(mfl, read_cmd, &status, is_double); CHECK_RC(rc); - // status comes in be32 format (byte0 = MSB) so we switch - status = __be32_to_cpu(status); + rc = cntx_int_spi_get_status_data(mfl, read_cmd, &status, bytes_num); CHECK_RC(rc); status = MERGE(status, val, offset, size); - // and switch back - status = __be32_to_cpu(status); - rc = cntx_spi_write_status_reg(mfl, status, write_cmd, is_double); CHECK_RC(rc); + rc = cntx_spi_write_status_reg(mfl, status, write_cmd, bytes_num); CHECK_RC(rc); return MFE_OK; } @@ -2703,16 +2717,11 @@ int mf_get_param_int(mflash* mfl, u_int8_t *param_p, u_int8_t cmd, u_int8_t offs { u_int32_t status = 0, is_first = 1, bank; int rc; - for (bank = 0; bank < mfl->attr.banks_num; bank++ ) { u_int8_t curr_val; rc = set_bank_int(mfl, bank); CHECK_RC(rc); - rc = cntx_int_spi_get_status_data(mfl, cmd, &status, bytes_num); CHECK_RC(rc); - //if (mfl->attr.vendor == FV_ST) { - //value is a word located in the higher bytes and is in be_32 format so we "fix" the bytes - status = __be32_to_cpu(status); - //} + curr_val = EXTRACT(status, offset, bit_size); if (bit_size == 1) { curr_val = (curr_val == enabled_val); @@ -2740,7 +2749,7 @@ int mf_set_dummy_cycles (mflash *mfl, u_int8_t num_of_cycles) return MFE_NOT_SUPPORTED_OPERATION; } for (bank = 0; bank < mfl->attr.banks_num; bank++) { - rc = mf_read_modify_status_new(mfl, bank, SFC_RDNVR, SFC_WRNVR, num_of_cycles, DUMMY_CYCLES_OFFSET_ST, 4, 1); CHECK_RC(rc); + rc = mf_read_modify_status_new(mfl, bank, SFC_RDNVR, SFC_WRNVR, num_of_cycles, DUMMY_CYCLES_OFFSET_ST, 4, 2); CHECK_RC(rc); } return MFE_OK; } @@ -2772,7 +2781,7 @@ int mf_set_quad_en (mflash *mfl, u_int8_t quad_en) if (mfl->attr.vendor == FV_WINBOND) { rc = mf_read_modify_status_winbond(mfl, bank, 0, quad_en, QUAD_EN_OFFSET, 1); CHECK_RC(rc); } else if (mfl->attr.vendor == FV_ST) { - rc = mf_read_modify_status_new(mfl, bank, SFC_RDNVR, SFC_WRNVR, !quad_en, QUAD_EN_OFFSET_ST, 1, 1); CHECK_RC(rc); + rc = mf_read_modify_status_new(mfl, bank, SFC_RDNVR, SFC_WRNVR, !quad_en, QUAD_EN_OFFSET_ST, 1, 2); CHECK_RC(rc); } } return MFE_OK; diff --git a/mlxfwops/lib/flint_base.h b/mlxfwops/lib/flint_base.h index 8a5f82e..27fba5a 100755 --- a/mlxfwops/lib/flint_base.h +++ b/mlxfwops/lib/flint_base.h @@ -321,8 +321,10 @@ typedef enum fs3_section { FS3_FW_ADB = 0x33, FS3_MFG_INFO = 0xe0, FS3_DEV_INFO = 0xe1, - FS3_NV_DATA = 0xe2, + FS3_NV_DATA1 = 0xe2, FS3_VPD_R0 = 0xe3, + FS3_NV_DATA2 = 0xe4, + FS3_FW_NV_LOG = 0xe5, FS3_ITOC = 0xfd, FS3_END = 0xff, } fs3_section_t; diff --git a/mlxfwops/lib/flint_io.cpp b/mlxfwops/lib/flint_io.cpp index db94a9b..1bc43d8 100755 --- a/mlxfwops/lib/flint_io.cpp +++ b/mlxfwops/lib/flint_io.cpp @@ -580,7 +580,7 @@ bool Flash::erase_sector (u_int32_t addr) { rc = mf_erase_sector(_mfl, phys_addr); deal_with_signal(); if (rc != MFE_OK) { - if (rc == MFE_REG_ACCESS_RES_NOT_AVLBL) { + if (rc == MFE_REG_ACCESS_RES_NOT_AVLBL || rc == MFE_REG_ACCESS_BAD_PARAM) { return errmsg("Flash erase of address 0x%x failed: %s\n" " This may indicate that a FW image was already updated on flash, but not loaded by the device.\n" " Please load FW on the device (reset device or restart driver) before burning a new FW.", diff --git a/mlxfwops/lib/fs2_ops.cpp b/mlxfwops/lib/fs2_ops.cpp index 87021d9..ae6637c 100644 --- a/mlxfwops/lib/fs2_ops.cpp +++ b/mlxfwops/lib/fs2_ops.cpp @@ -45,6 +45,7 @@ bool Fs2Operations::FwInit() { FwInitCom(); memset(&_fs2ImgInfo, 0, sizeof(_fs2ImgInfo)); + _fwImgInfo.fwType = FIT_FS2; return true; } @@ -1487,7 +1488,7 @@ bool Fs2Operations::FwReadRom(std::vector& romSect) return true; } -bool Fs2Operations::FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc) +bool Fs2Operations::FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc) { // avoid compiler warrnings (void)baseGuid; diff --git a/mlxfwops/lib/fs2_ops.h b/mlxfwops/lib/fs2_ops.h index a17dde7..99ed490 100644 --- a/mlxfwops/lib/fs2_ops.h +++ b/mlxfwops/lib/fs2_ops.h @@ -59,7 +59,7 @@ public: // virtual bool FwSetGuids(std::vector& userGuids, std::vector& userMacs, bool updateCrc=true, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, ProgressCallBack progressFunc); - virtual bool FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); + virtual bool FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL); virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL); diff --git a/mlxfwops/lib/fs3_ops.cpp b/mlxfwops/lib/fs3_ops.cpp index c5c03f9..3c1c41e 100644 --- a/mlxfwops/lib/fs3_ops.cpp +++ b/mlxfwops/lib/fs3_ops.cpp @@ -43,6 +43,8 @@ #define FS3_FLASH_SIZE 0x400000 #define FS3_LOG_CHUNK_SIZE 21 +#define CX4_FLASH_SIZE 22 +#define CX4_LOG_CHUNK_SIZE 22 #define FS3_DFLT_GUID_NUM_TO_ALLOCATE 8 #define FS3_DFLT_GUID_STEP 1 @@ -80,8 +82,10 @@ const Fs3Operations::SectionInfo Fs3Operations::_fs3SectionsInfoArr[] = { {FS3_MFG_INFO, MFG_INFO}, {FS3_DEV_INFO, "DEV_INFO"}, - {FS3_NV_DATA, "NV_DATA"}, + {FS3_NV_DATA1, "NV_DATA"}, {FS3_VPD_R0, "VPD_R0"}, + {FS3_NV_DATA2, "NV_DATA"}, + {FS3_FW_NV_LOG, "FW_NV_LOG"}, }; bool Fs3Operations::Fs3UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size) @@ -146,17 +150,35 @@ bool Fs3Operations::CheckTocSignature(struct cibfw_itoc_header *itoc_header, u_i (int)sizeof(uids_context), (int)sizeof(cibfw_guids_context));\ }\ } + +#define CHECK_MFG_NEW_FORMAT(mfg_st)\ + ((mfg_st.major_version == 1) && (mfg_st.minor_version == 0)) +#define CHECK_MFG_OLD_FORMAT(mfg_st)\ + ((mfg_st.major_version == 0) && (mfg_st.minor_version == 0)) bool Fs3Operations::GetMfgInfo(u_int8_t *buff) { - struct cibfw_mfg_info mfg_info; - cibfw_mfg_info_unpack(&mfg_info, buff); - // cibfw_mfg_info_dump(&mfg_info, stdout); - - CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.orig_fs3_uids_info, mfg_info.guids); - memcpy(&_fs3ImgInfo.ext_info.orig_fs3_uids_info, &mfg_info.guids, sizeof(mfg_info.guids)); - strcpy(_fs3ImgInfo.ext_info.orig_psid, mfg_info.psid); + // structs of the same size we can unpack either way + struct cibfw_mfg_info cib_mfg_info; + struct cx4fw_mfg_info cx4_mfg_info; - _fs3ImgInfo.ext_info.guids_override_en = mfg_info.guids_override_en; + cibfw_mfg_info_unpack(&cib_mfg_info, buff); + // cibfw_mfg_info_dump(&mfg_info, stdout); + if (CHECK_MFG_NEW_FORMAT(cib_mfg_info)) { + cx4fw_mfg_info_unpack(&cx4_mfg_info, buff); + CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.orig_fs3_uids_info.cx4_uids, cx4_mfg_info.guids); + memcpy(&_fs3ImgInfo.ext_info.orig_fs3_uids_info.cx4_uids, &cx4_mfg_info.guids, sizeof(cx4_mfg_info.guids)); + strcpy(_fs3ImgInfo.ext_info.orig_psid, cx4_mfg_info.psid); + _fs3ImgInfo.ext_info.guids_override_en = cx4_mfg_info.guids_override_en; + _fs3ImgInfo.ext_info.orig_fs3_uids_info.valid_field = 1; + } else if (CHECK_MFG_OLD_FORMAT(cib_mfg_info)){ + CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.orig_fs3_uids_info.cib_uids, cib_mfg_info.guids); + memcpy(&_fs3ImgInfo.ext_info.orig_fs3_uids_info.cib_uids, &cib_mfg_info.guids, sizeof(cib_mfg_info.guids)); + strcpy(_fs3ImgInfo.ext_info.orig_psid, cib_mfg_info.psid); + _fs3ImgInfo.ext_info.guids_override_en = cib_mfg_info.guids_override_en; + _fs3ImgInfo.ext_info.orig_fs3_uids_info.valid_field = 0; + } else { + return errmsg("Unknown MFG_INFO format version (%d.%d).", cib_mfg_info.major_version, cib_mfg_info.minor_version); + } return true; } @@ -190,16 +212,34 @@ bool Fs3Operations::GetImageInfo(u_int8_t *buff) return true; } +#define CHECK_DEV_INFO_NEW_FORMAT(info_st)\ + ((info_st.major_version == 2) && (info_st.minor_version == 0)) +#define CHECK_DEV_INFO_OLD_FORMAT(info_st)\ + ((info_st.major_version == 1) && (info_st.minor_version == 0)) bool Fs3Operations::GetDevInfo(u_int8_t *buff) { - struct cibfw_device_info dev_info; - cibfw_device_info_unpack(&dev_info, buff); + struct cibfw_device_info cib_dev_info; + struct cx4fw_device_info cx4_dev_info; + // same size, we can unpack to check version + cibfw_device_info_unpack(&cib_dev_info, buff); // cibfw_device_info_dump(&dev_info, stdout); - CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.fs3_uids_info, dev_info.guids); - memcpy(&_fs3ImgInfo.ext_info.fs3_uids_info, &dev_info.guids, sizeof(dev_info.guids)); - strcpy(_fwImgInfo.ext_info.vsd, dev_info.vsd); - _fwImgInfo.ext_info.vsd_sect_found = true; + if (CHECK_DEV_INFO_NEW_FORMAT(cib_dev_info)) { + cx4fw_device_info_unpack(&cx4_dev_info, buff); + CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.fs3_uids_info.cx4_uids, cx4_dev_info.guids); + memcpy(&_fs3ImgInfo.ext_info.fs3_uids_info.cx4_uids, &cx4_dev_info.guids, sizeof(cx4_dev_info.guids)); + strcpy(_fwImgInfo.ext_info.vsd, cx4_dev_info.vsd); + _fs3ImgInfo.ext_info.fs3_uids_info.valid_field = 1; + _fwImgInfo.ext_info.vsd_sect_found = true; + } else if (CHECK_DEV_INFO_OLD_FORMAT(cib_dev_info)){ + CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.fs3_uids_info.cib_uids, cib_dev_info.guids); + memcpy(&_fs3ImgInfo.ext_info.fs3_uids_info.cib_uids, &cib_dev_info.guids, sizeof(cib_dev_info.guids)); + strcpy(_fwImgInfo.ext_info.vsd, cib_dev_info.vsd); + _fs3ImgInfo.ext_info.fs3_uids_info.valid_field = 0; + _fwImgInfo.ext_info.vsd_sect_found = true; + } else { + return errmsg("Unknown DEV_INFO format version (%d.%d).", cib_dev_info.major_version, cib_dev_info.minor_version); + } return true; } @@ -215,9 +255,6 @@ bool Fs3Operations::GetRomInfo(u_int8_t *buff, u_int32_t size) return true; } - - - bool Fs3Operations::GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, u_int32_t sect_size, u_int8_t check_support_only) { #define EXEC_GET_INFO_OR_GET_SUPPORT(get_info_func, buff, check_support_only) (check_support_only) ? true : get_info_func(buff); @@ -349,9 +386,9 @@ bool Fs3Operations::VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCa Fs3UpdateImgCache(buff, flash_addr, entry_size_in_bytes); u_int32_t sect_crc = CalcImageCRC((u_int32_t*)buff, toc_entry.size); - //printf("-D- flash_addr: %#x, toc_entry_size = %#x, actual sect = %#x, from itoc: %#x\n", flash_addr, toc_entry.size, sect_crc, - // toc_entry.section_crc); - if (!DumpFs3CRCCheck(toc_entry.type, phys_addr, entry_size_in_bytes, sect_crc, toc_entry.section_crc, false, verifyCallBackFunc)) { + // printf("-D- flash_addr: %#x, toc_entry_size = %#x, actual sect = %#x, from itoc: %#x np_crc = %s\n", flash_addr, toc_entry.size, sect_crc, + // toc_entry.section_crc, toc_entry.no_crc ? "yes" : "no"); + if (!DumpFs3CRCCheck(toc_entry.type, phys_addr, entry_size_in_bytes, sect_crc, toc_entry.section_crc, toc_entry.no_crc, verifyCallBackFunc)) { if (toc_entry.device_data) { _badDevDataSections = true; } @@ -405,6 +442,46 @@ bool Fs3Operations::FwVerify(VerifyCallBack verifyCallBackFunc, bool isStripedIm return Fs3Verify(verifyCallBackFunc, showItoc, queryOptions); } +#define BOOT_RECORD_SIZE 0x10 +bool Fs3Operations::checkPreboot(u_int32_t* prebootBuff, u_int32_t size, VerifyCallBack verifyCallBackFunc) +{ + u_int32_t expectedCRC; + char outputLine[512] = {0}; + u_int32_t startAddr = (_ioAccess->is_flash()) ? \ + _ioAccess->get_phys_from_cont(0x0, _fwImgInfo.cntxLog2ChunkSize, (_fwImgInfo.imgStart != 0)) : 0x0; + + sprintf(outputLine,"%s /0x%08x-0x%08x (0x%06x)/ (PREBOOT)", PRE_CRC_OUTPUT, startAddr, 0x34, size << 2); + expectedCRC = prebootBuff[size-1]; + // calc CRC + Crc16 crc1, crc2; + CRC1n(crc1, prebootBuff, size); + crc1.finish(); + // HACK: due to a bug in imgen this crc might not be calculated correctly(calculate in the "wrong way" for backward compat) + // crc1 represents the proper way to calculate the crc , crc2 represents the "wrong" way + + // signature + CRCn(crc2, prebootBuff, 4); + // boot record + u_int8_t bootRecordBE[BOOT_RECORD_SIZE]; + memcpy(bootRecordBE, &prebootBuff[4], BOOT_RECORD_SIZE); + TOCPUn(bootRecordBE, (BOOT_RECORD_SIZE >> 2)); + for (int i = 0; i < BOOT_RECORD_SIZE; i++) { + crc2 << bootRecordBE[i]; + } + // the rest of the section (leave last dword out of the crc calc as its the expected crc) + CRC1n(crc2, &prebootBuff[8], size - 8); + crc2.finish(); + + // print results + if (expectedCRC != crc1.get() && expectedCRC != crc2.get()) { + report_callback(verifyCallBackFunc, "%s /0x%08x/ - wrong CRC (exp:0x%x, act:0x%x)\n", + outputLine, startAddr, expectedCRC, crc1.get()); + return errmsg("Bad CRC"); + } + report_callback(verifyCallBackFunc, "%s - OK\n", outputLine); + return true; +} + bool Fs3Operations::Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, struct QueryOptions queryOptions) { u_int32_t cntx_image_start[CNTX_START_POS_SIZE]; @@ -436,21 +513,19 @@ bool Fs3Operations::Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, Fs3UpdateImgCache((u_int8_t*)buff, 0, FS3_BOOT_START); TOCPUn(buff, FS3_BOOT_START_IN_DW); + report_callback(verifyCallBackFunc, "\nFS3 failsafe image\n\n"); + // adrianc: we dont check Preboot section (or boot start) because of a variance in the calculation of the CRC + // Get BOOT2 -Get Only bootSize if quickQuery == true else read and check CRC of boot2 section as well + offset += FS3_BOOT_START; + FS3_CHECKB2(0, offset, !queryOptions.quickQuery, PRE_CRC_OUTPUT, verifyCallBackFunc); - report_callback(verifyCallBackFunc, "\nFS3 failsafe image\n\n"); - // Get BOOT2 - Only if quickQuery == false - offset += FS2_BOOT_START; - if (queryOptions.quickQuery == false) { - FS3_CHECKB2(0, offset, true, PRE_CRC_OUTPUT, verifyCallBackFunc); - } - offset += _fs3ImgInfo.bootSize; + offset += _fwImgInfo.bootSize;; _fs3ImgInfo.firstItocIsEmpty = false; // printf("-D- image_start = %#x\n", image_start); // Go over the ITOC entries u_int32_t sector_size = (_ioAccess->is_flash()) ? _ioAccess->get_sector_size() : FS3_DEFAULT_SECTOR_SIZE; offset = (offset % sector_size == 0) ? offset : (offset + sector_size - offset % 0x1000); - while (offset < _ioAccess->get_size()) { if (VerifyTOC(offset, bad_signature, verifyCallBackFunc, show_itoc, queryOptions)) { @@ -474,12 +549,13 @@ bool Fs3Operations::Fs3IntQuery(bool readRom, bool quickQuery) struct QueryOptions queryOptions; queryOptions.readRom = readRom; queryOptions.quickQuery = quickQuery; + if (!Fs3Verify((VerifyCallBack)NULL, 0, queryOptions)) { return false; } - // get chip type and device sw id, works only on device + // get chip type and device sw id, from device/image + const u_int32_t* swId = NULL; if (_ioAccess->is_flash()) { - const u_int32_t* swId; if (!getInfoFromHwDevid(_ioAccess->get_dev_id(), _fwImgInfo.ext_info.chip_type, &swId)) { return false; } @@ -496,6 +572,15 @@ bool Fs3Operations::FwQuery(fw_info_t *fwInfo, bool readRom, bool isStripedImage if (!Fs3IntQuery(readRom)) { return false; } + //adrianc: best effort to get chip_type for image on image since it can "theoretically" be used on more than one device , take the first one. + if (!_ioAccess->is_flash()) { + const u_int32_t* swId = NULL; + if (!getInfoFromHwDevid(_fwImgInfo.supportedHwId[0], _fwImgInfo.ext_info.chip_type, &swId)) { + return false; + } + _fwImgInfo.ext_info.dev_type = swId[0]; + } + memcpy(&(fwInfo->fw_info), &(_fwImgInfo.ext_info), sizeof(fw_info_com_t)); memcpy(&(fwInfo->fs3_info), &(_fs3ImgInfo.ext_info), sizeof(fs3_info_t)); fwInfo->fw_type = FIT_FS3; @@ -512,6 +597,7 @@ bool Fs3Operations::FwInit() { FwInitCom(); memset(&_fs3ImgInfo, 0, sizeof(_fs3ImgInfo)); + _fwImgInfo.fwType = FIT_FS3; return true; } @@ -563,6 +649,10 @@ bool Fs3Operations::GetMaxImageSize(u_int32_t flash_size, bool image_is_fs, u_in return true; } + +#define SUPPORTS_ISFU(chip_type) \ + (chip_type == CT_CONNECT_IB || chip_type == CT_CONNECTX) + bool Fs3Operations::BurnFs3Image(Fs3Operations &imageOps, ExtBurnParams& burnParams) { @@ -658,8 +748,8 @@ bool Fs3Operations::BurnFs3Image(Fs3Operations &imageOps, // if we access without cache replacement or the burn was non failsafe, update YU bootloaders. // if we access with cache replacement notify currently running fw of new image start address to crspace (for SW reset) - //TODO: add SwitchIB, SwitchEN and ConnectX4 when we have support for ISFU - if (_fwImgInfo.ext_info.chip_type != CT_CONNECT_IB || !burnParams.burnFailsafe || f->get_ignore_cache_replacment()) { + //TODO: add SwitchIB, SwitchEN when we have support for ISFU + if (!SUPPORTS_ISFU(_fwImgInfo.ext_info.chip_type) || !burnParams.burnFailsafe || f->get_ignore_cache_replacment()) { boot_address_was_updated = f->update_boot_addr(new_image_start); } else { _isfuSupported = Fs3IsfuActivateImage(new_image_start); @@ -917,11 +1007,12 @@ bool Fs3Operations::FwGetSection (u_int32_t sectType, std::vector& sec return true; } -bool Fs3Operations::FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc) +bool Fs3Operations::FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc) { - if (!baseGuid.num_of_guids || !baseGuid.step_size) { - return errmsg("invalid values for number_of_Guids(%d)/step_size(%d) should be: [1..255]", baseGuid.num_of_guids, baseGuid.step_size); + if (!baseGuid.base_guid_specified && !baseGuid.base_mac_specified) { + return errmsg("base GUID/MAC were not specified."); } + if (!Fs3UpdateSection(&baseGuid, FS3_MFG_INFO, false, CMD_SET_MFG_GUIDS, callBackFunc)) { return false; } @@ -931,13 +1022,13 @@ bool Fs3Operations::FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc) bool Fs3Operations::FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc) { // in FS3 default behavior when setting GUIDs / MFG is to assign 8 guids per port with step size of 1 between them. - fs3_guid_t bGuid = {baseGuid, FS3_DFLT_GUID_NUM_TO_ALLOCATE, FS3_DFLT_GUID_STEP}; + fs3_uid_t bGuid = {baseGuid, 1, {0, 0}, 0, 0, 0, 1}; return FwSetMFG(bGuid, callBackFunc); } bool Fs3Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, ProgressCallBack progressFunc) { - fs3_guid_t usrGuid; + fs3_uid_t usrGuid; // Avoid Warning because there is no need for progressFunc (void)progressFunc; if (sgParam.userGuids.empty()) { @@ -952,17 +1043,26 @@ bool Fs3Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, return errmsg("guids override is not set, cannot set device guids"); } - if (sgParam.numOfGUIDs && sgParam.stepSize) { - // user requested to specify the step and num of guids to be allocated per port - usrGuid.num_of_guids = sgParam.numOfGUIDs; - usrGuid.step_size = sgParam.stepSize; - } else { - // default behavior num_of_guids=8 step_size=1 - usrGuid.num_of_guids = FS3_DFLT_GUID_NUM_TO_ALLOCATE; - usrGuid.step_size = FS3_DFLT_GUID_STEP; + usrGuid.num_of_guids = sgParam.numOfGUIDs ? sgParam.numOfGUIDs : 0; + usrGuid.step_size = usrGuid.step_size ? sgParam.stepSize : 0; + + usrGuid.base_guid_specified = false; + usrGuid.base_mac_specified = false; + usrGuid.set_mac_from_guid = false; + + if (sgParam.guidsSpecified || sgParam.uidsSpecified) { + usrGuid.base_guid_specified = true; + usrGuid.base_guid = sgParam.userGuids[0]; + usrGuid.set_mac_from_guid = sgParam.uidsSpecified ? true : false; + } + if (sgParam.macsSpecified) { + usrGuid.base_mac_specified = true; + usrGuid.base_mac = sgParam.userGuids[1]; } - usrGuid.uid = sgParam.userGuids[0]; + if (!usrGuid.base_guid_specified && !usrGuid.base_mac_specified) { + return errmsg("base GUID/MAC were not specified."); + } if (!Fs3UpdateSection(&usrGuid, FS3_DEV_INFO, true, CMD_SET_GUIDS, callBackFunc)) { return false; } @@ -1244,49 +1344,118 @@ bool Fs3Operations::Fs3GetItocInfo(struct toc_info *tocArr, int num_of_itocs, fs return errmsg("ITOC entry type: %s (%d) not found", GetSectionNameByType(sect_type), sect_type); } -bool Fs3Operations::Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, +bool Fs3Operations::Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_uid_t base_uid, std::vector &newSectionData) { - struct cibfw_mfg_info mfg_info; - cibfw_mfg_info_unpack(&mfg_info, (u_int8_t*)§ion_data[0]); + struct cibfw_mfg_info cib_mfg_info; + struct cx4fw_mfg_info cx4_mfg_info; + cibfw_mfg_info_unpack(&cib_mfg_info, (u_int8_t*)§ion_data[0]); - Fs3ChangeUidsFromBase(base_uid, &mfg_info.guids); + if (CHECK_MFG_OLD_FORMAT(cib_mfg_info)) { + if (!Fs3ChangeUidsFromBase(base_uid, cib_mfg_info.guids)) { + return false; + } + } else if (CHECK_MFG_NEW_FORMAT(cib_mfg_info)) { + cx4fw_mfg_info_unpack(&cx4_mfg_info, (u_int8_t*)§ion_data[0]); + if (!Fs3ChangeUidsFromBase(base_uid, cx4_mfg_info.guids)) { + return false; + } + } else { + return errmsg("Unknown MFG_INFO format version (%d.%d).", cib_mfg_info.major_version, cib_mfg_info.minor_version); + } newSectionData = section_data; memset((u_int8_t*)&newSectionData[0], 0, curr_toc->toc_entry.size * 4); - cibfw_mfg_info_pack(&mfg_info, (u_int8_t*)&newSectionData[0]); + + if (CHECK_MFG_NEW_FORMAT(cib_mfg_info)) { + cx4fw_mfg_info_pack(&cx4_mfg_info, (u_int8_t*)&newSectionData[0]); + } else { + cibfw_mfg_info_pack(&cib_mfg_info, (u_int8_t*)&newSectionData[0]); + } return true; } -bool Fs3Operations::Fs3ChangeUidsFromBase(fs3_guid_t base_uid, struct cibfw_guids *guids) -{ - u_int64_t base_uid_64 = base_uid.uid.l | (u_int64_t)base_uid.uid.h << 32; - // Should be put somewhere in common place - u_int64_t base_mac_64 = ((u_int64_t)base_uid.uid.l & 0xffffff) | (((u_int64_t)base_uid.uid.h & 0xffffff00) << 16); - - guids->guids[0].uid = base_uid_64; - guids->guids[0].num_allocated = base_uid.num_of_guids; - guids->guids[0].step = base_uid.step_size; - guids->guids[1].uid = base_uid_64 + (base_uid.num_of_guids * base_uid.step_size); - guids->guids[1].num_allocated = base_uid.num_of_guids; - guids->guids[1].step = base_uid.step_size; - guids->macs[0].uid = base_mac_64; - guids->macs[0].num_allocated = base_uid.num_of_guids; - guids->macs[0].step = base_uid.step_size; - guids->macs[1].uid = base_mac_64 + (base_uid.num_of_guids * base_uid.step_size); - guids->macs[1].num_allocated = base_uid.num_of_guids; - guids->macs[1].step = base_uid.step_size; +#define GUID_TO_64(guid_st) \ + (guid_st.l | (u_int64_t)guid_st.h << 32) + +bool Fs3Operations::Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cibfw_guids& guids) +{ + /* + * On ConnectIB and SwitchIB we derrive macs and guids from a single base_guid + */ + u_int64_t base_guid_64; + u_int64_t base_mac_64; + base_guid_64 = GUID_TO_64(base_uid.base_guid); + base_mac_64 = (((u_int64_t)base_uid.base_guid.l & 0xffffff) | (((u_int64_t)base_uid.base_guid.h & 0xffffff00) << 16)); + guids.guids[0].uid = base_guid_64; + guids.guids[0].num_allocated = base_uid.num_of_guids ? base_uid.num_of_guids : guids.guids[0].num_allocated; + guids.guids[0].step = base_uid.step_size ? base_uid.step_size : guids.guids[0].step; + + guids.guids[1].uid = base_guid_64 + (guids.guids[0].num_allocated * guids.guids[0].step); + guids.guids[1].num_allocated = base_uid.num_of_guids ? base_uid.num_of_guids : guids.guids[1].num_allocated; + guids.guids[1].step = base_uid.step_size ? base_uid.step_size : guids.guids[1].step; + + guids.macs[0].uid = base_mac_64; + guids.macs[0].num_allocated = base_uid.num_of_guids ? base_uid.num_of_guids : guids.macs[0].num_allocated; + guids.macs[0].step = base_uid.step_size ? base_uid.step_size : guids.macs[0].step; + + guids.macs[1].uid = base_mac_64 + (guids.macs[0].num_allocated * guids.macs[0].step); + guids.macs[1].num_allocated = base_uid.num_of_guids ? base_uid.num_of_guids : guids.macs[1].num_allocated; + guids.macs[1].step = base_uid.step_size ? base_uid.step_size : guids.macs[1].step; return true; } -bool Fs3Operations::Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, +bool Fs3Operations::Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cx4fw_guids& guids) +{ + /* + * on ConnectX4 we derrive guids from base_guid and macs from base_mac + */ + u_int64_t base_guid_64; + u_int64_t base_mac_64; + + base_guid_64 = base_uid.base_guid_specified ? GUID_TO_64(base_uid.base_guid) : guids.guids.uid; + base_mac_64 = base_uid.base_mac_specified ? GUID_TO_64(base_uid.base_mac) : guids.macs.uid; + if (base_uid.set_mac_from_guid && base_uid.base_guid_specified) { + // in case we derrive mac from guid + base_mac_64 = (((u_int64_t)base_uid.base_guid.l & 0xffffff) | (((u_int64_t)base_uid.base_guid.h & 0xffffff00) << 16)); + } + + guids.guids.uid = base_guid_64; + guids.guids.num_allocated = base_uid.num_of_guids ? base_uid.num_of_guids : guids.guids.num_allocated; + guids.guids.step = base_uid.step_size ? base_uid.step_size : guids.guids.step; + + guids.macs.uid = base_mac_64; + guids.macs.num_allocated = base_uid.num_of_guids ? base_uid.num_of_guids : guids.macs.num_allocated; + guids.macs.step = base_uid.step_size ? base_uid.step_size : guids.macs.step ; + return true; +} + +bool Fs3Operations::Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_uid_t base_uid, std::vector &newSectionData) { - struct cibfw_device_info dev_info; - cibfw_device_info_unpack(&dev_info, (u_int8_t*)§ion_data[0]); - Fs3ChangeUidsFromBase(base_uid, &dev_info.guids); + struct cibfw_device_info cib_dev_info; + struct cx4fw_device_info cx4_dev_info; + cibfw_device_info_unpack(&cib_dev_info, (u_int8_t*)§ion_data[0]); + + if (CHECK_DEV_INFO_OLD_FORMAT(cib_dev_info)) { + if (!Fs3ChangeUidsFromBase(base_uid, cib_dev_info.guids)) { + return false; + } + } else if (CHECK_DEV_INFO_NEW_FORMAT(cib_dev_info)) { + cx4fw_device_info_unpack(&cx4_dev_info, (u_int8_t*)§ion_data[0]); + if (!Fs3ChangeUidsFromBase(base_uid, cx4_dev_info.guids)) { + return false; + } + } else { + return errmsg("Unknown DEV_INFO format version (%d.%d).", cib_dev_info.major_version, cib_dev_info.minor_version); + } newSectionData = section_data; memset((u_int8_t*)&newSectionData[0], 0, curr_toc->toc_entry.size * 4); - cibfw_device_info_pack(&dev_info, (u_int8_t*)&newSectionData[0]); + + if (CHECK_DEV_INFO_NEW_FORMAT(cib_dev_info)) { + cx4fw_device_info_pack(&cx4_dev_info, (u_int8_t*)&newSectionData[0]); + } else { + cibfw_device_info_pack(&cib_dev_info, (u_int8_t*)&newSectionData[0]); + } return true; } @@ -1445,14 +1614,14 @@ bool Fs3Operations::Fs3UpdateSection(void *new_info, fs3_section_t sect_type, b } if (sect_type == FS3_MFG_INFO) { - fs3_guid_t base_uid = *(fs3_guid_t*)new_info; + fs3_uid_t base_uid = *(fs3_uid_t*)new_info; type_msg = "GUID"; if (!Fs3UpdateMfgUidsSection(curr_toc, curr_toc->section_data, base_uid, newUidSection)) { return false; } } else if (sect_type == FS3_DEV_INFO) { if (cmd_type == CMD_SET_GUIDS) { - fs3_guid_t base_uid = *(fs3_guid_t*)new_info; + fs3_uid_t base_uid = *(fs3_uid_t*)new_info; type_msg = "GUID"; if (!Fs3UpdateUidsSection(curr_toc, curr_toc->section_data, base_uid, newUidSection)) { return false; @@ -1602,7 +1771,6 @@ bool Fs3Operations::reburnItocSection(PrintCallBack callBackFunc) { // Itoc section is failsafe (two sectors after boot section are reserved for itoc entries) u_int32_t oldItocAddr = _fs3ImgInfo.itocAddr; u_int32_t newItocAddr = (_fs3ImgInfo.firstItocIsEmpty) ? (_fs3ImgInfo.itocAddr - sector_size) : (_fs3ImgInfo.itocAddr + sector_size); - // Update new ITOC u_int32_t itocSize = (_fs3ImgInfo.numOfItocs + 1 ) * CIBFW_ITOC_ENTRY_SIZE + CIBFW_ITOC_HEADER_SIZE; u_int8_t *p = new u_int8_t[itocSize]; @@ -1635,9 +1803,13 @@ bool Fs3Operations::reburnItocSection(PrintCallBack callBackFunc) { #define PUSH_DEV_DATA(vec)\ vec.push_back(FS3_MFG_INFO);\ vec.push_back(FS3_DEV_INFO);\ - vec.push_back(FS3_NV_DATA);\ + vec.push_back(FS3_NV_DATA1);\ + vec.push_back(FS3_NV_DATA2);\ + vec.push_back(FS3_FW_NV_LOG);\ vec.push_back(FS3_VPD_R0) #define POP_DEV_DATA(vec)\ + vec.pop_back();\ + vec.pop_back();\ vec.pop_back();\ vec.pop_back();\ vec.pop_back();\ diff --git a/mlxfwops/lib/fs3_ops.h b/mlxfwops/lib/fs3_ops.h index 36b811d..f762749 100644 --- a/mlxfwops/lib/fs3_ops.h +++ b/mlxfwops/lib/fs3_ops.h @@ -37,6 +37,7 @@ // #include "flint_base.h" #include "fw_ops.h" #include +#include @@ -64,7 +65,7 @@ public: virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBack, ProgressCallBack progressFunc); virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); - virtual bool FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); + virtual bool FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwGetSection (u_int32_t sectType, std::vector& sectInfo, bool stripedImage=false); virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL); virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL); @@ -106,7 +107,6 @@ private: int numOfItocs; struct toc_info tocArr[MAX_TOCS_NUM]; u_int8_t itocHeader[CIBFW_ITOC_HEADER_SIZE]; - u_int32_t bootSize; u_int8_t firstItocIsEmpty; u_int32_t itocAddr; u_int32_t smallestAbsAddr; @@ -128,6 +128,7 @@ private: virtual bool UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size); bool VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCallBack verifyCallBackFunc, bool show_itoc, struct QueryOptions queryOptions); + bool checkPreboot(u_int32_t* prebootBuff, u_int32_t size, VerifyCallBack verifyCallBackFunc); bool Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, struct QueryOptions queryOptions); const char* GetSectionNameByType(u_int8_t section_type); bool CheckTocSignature(struct cibfw_itoc_header *itoc_header, u_int32_t first_signature); @@ -146,10 +147,11 @@ private: bool UpdateDevDataITOC(u_int8_t *image_data, struct toc_info *image_toc_entry, struct toc_info *flash_toc_arr, int flash_toc_size); bool Fs3UpdateSection(void *new_info, fs3_section_t sect_type=FS3_DEV_INFO, bool is_sect_failsafe=true, CommandType cmd_type=CMD_UNKNOWN, PrintCallBack callBackFunc=(PrintCallBack)NULL ); bool Fs3GetItocInfo(struct toc_info *tocArr, int num_of_itocs, fs3_section_t sect_type, struct toc_info *&curr_toc); - bool Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, + bool Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_uid_t base_uid, std::vector &newSectionData); - bool Fs3ChangeUidsFromBase(fs3_guid_t base_uid, struct cibfw_guids *guids); - bool Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, + bool Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cibfw_guids& guids); + bool Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cx4fw_guids& guids); + bool Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_uid_t base_uid, std::vector &newSectionData); bool Fs3UpdateVsdSection(struct toc_info *curr_toc, std::vector section_data, char* user_vsd, std::vector &newSectionData); diff --git a/mlxfwops/lib/fw_ops.cpp b/mlxfwops/lib/fw_ops.cpp index f1966aa..5d4b118 100644 --- a/mlxfwops/lib/fw_ops.cpp +++ b/mlxfwops/lib/fw_ops.cpp @@ -240,38 +240,59 @@ bool FwOperations::checkBoot2(u_int32_t beg, u_int32_t offs, u_int32_t& next, bo bool FwOperations::CheckAndPrintCrcRes(char* pr, bool blank_crc, u_int32_t off, u_int32_t crc_act, u_int32_t crc_exp, bool ignore_crc, VerifyCallBack verifyCallBackFunc) { - - if (!blank_crc && crc_exp != crc_act) { - report_callback(verifyCallBackFunc, "%s /0x%08x/ - wrong CRC (exp:0x%x, act:0x%x)\n", - pr, off, crc_exp, crc_act); - return errmsg(BAD_CRC_MSG); - } - // if (_print_crc) { - // TODO: Print CRC here. - if (0) { - report_callback(verifyCallBackFunc, "%s - OK (CRC:0x%04x)\n", pr, crc_act & 0xffff); + if (ignore_crc) { + report_callback(verifyCallBackFunc, "%s - CRC IGNORED\n", pr); } else { - if (ignore_crc) { - report_callback(verifyCallBackFunc, "%s - CRC IGNORED\n", pr); + if(blank_crc) { + report_callback(verifyCallBackFunc, "%s - BLANK CRC (0xffff)\n", pr); + } else if (crc_exp == crc_act) { + report_callback(verifyCallBackFunc, "%s - OK\n", pr); } else { - if (blank_crc) { - report_callback(verifyCallBackFunc, "%s - BLANK CRC (0xffff)\n", pr); - } else { - report_callback(verifyCallBackFunc, "%s - OK\n", pr); - } + report_callback(verifyCallBackFunc, "%s /0x%08x/ - wrong CRC (exp:0x%x, act:0x%x)\n", + pr, off, crc_exp, crc_act); + return errmsg(BAD_CRC_MSG); } } return true; } -bool FwOperations::FwVerLessThan(u_int16_t r1[3], u_int16_t r2[3]) { - for (int i = 0; i < 3 ; i++) - if (r1[i] < r2[i]) - return true; - else if (r1[i] > r2[i]) - return false; - - return false; // equal versions +FwVerInfo FwOperations::FwVerLessThan(u_int16_t r1[3], u_int16_t r2[3], u_int8_t fwType) { + // copy version arrays to local variables + u_int16_t fwVer1[3]; + u_int16_t fwVer2[3]; + u_int16_t branch1 = 0, branch2 = 0; + memcpy(fwVer1, r1, sizeof(fwVer1)); + memcpy(fwVer2, r2, sizeof(fwVer2)); + // update minor according to format + if (fwType == FIT_FS3) { + // extract GA release version from minor (upper 2 digits) + fwVer1[1] = r1[1] / 100; + fwVer2[1] = r2[1] / 100; + // extract branch (assume branch is 0 in old format) + branch1 = r1[1] % 100; + branch2 = r2[1] % 100; + } + //compare + for (int i = 0; i < 3 ; i++) { + if (i == 2 && branch1 != branch2) { + // major and minor versions are the same + // check branches to see if its an upgrade/downgrade + if (branch1 != 0 && branch2 != 0) { + return FVI_UNKNOWN; + } else if (branch1 > branch2) { + return FVI_GREATER; + } else { + return FVI_SMALLER; + } + } + if (fwVer1[i] < fwVer2[i]) { + return FVI_SMALLER; + } + else if (fwVer1[i] > fwVer2[i]) { + return FVI_GREATER; + } + } + return FVI_EQUAL; // equal versions } const u_int32_t FwOperations::_cntx_magic_pattern[4] = { 0x4D544657, // Ascii of "MTFW" @@ -741,7 +762,7 @@ const FwOperations::HwDev2Str FwOperations::hwDev2Str[] = { {"ConnectX-3 A0", CX3_HW_ID, 0x00}, {"ConnectX-3 A1", CX3_HW_ID, 0x01}, {"ConnectX-3Pro", CX3_PRO_HW_ID, 0x00}, - {"ConnectX-4", CX4_HW_ID, 0x00}, + {"ConnectX-4", CX4_HW_ID, 0x00}, {"SwitchX A0", SWITCHX_HW_ID, 0x00}, {"SwitchX A1", SWITCHX_HW_ID, 0x01}, {"BridgeX", BRIDGEX_HW_ID, 0xA0}, @@ -897,10 +918,12 @@ bool FwOperations::CheckPSID(FwOperations &imageOps, u_int8_t allow_psid_change) bool FwOperations::CheckFwVersion(FwOperations &imageOps, u_int8_t forceVersion) { - bool updateRequired = true; + FwVerInfo updateRequired = FVI_UNKNOWN; if (!forceVersion) { - updateRequired = FwVerLessThan(_fwImgInfo.ext_info.fw_ver, imageOps._fwImgInfo.ext_info.fw_ver); - if (!updateRequired) { + updateRequired = FwVerLessThan(_fwImgInfo.ext_info.fw_ver, imageOps._fwImgInfo.ext_info.fw_ver, _fwImgInfo.fwType); + if (updateRequired == FVI_UNKNOWN) { + return errmsg("Cannot compare between FW versions(different branches)"); + } else if (updateRequired != FVI_SMALLER ) { return errmsg("FW is already updated."); } } @@ -1312,8 +1335,8 @@ void FwOperations::SetDevFlags(chip_type_t chipType, u_int32_t devType, fw_img_t ibDev = true; ethDev = true; } else { - ibDev = (fwType == FIT_FS3) || !CntxEthOnly(devType); - ethDev = chipType == CT_CONNECTX; + ibDev = (fwType == FIT_FS3 && chipType != CT_SWITCH_EN) || !CntxEthOnly(devType); + ethDev = (chipType == CT_CONNECTX) || (chipType == CT_SWITCH_EN); } if ((!ibDev && !ethDev) || chipType == CT_UNKNOWN) { @@ -1332,7 +1355,9 @@ void FwOperations::SetDevFlags(chip_type_t chipType, u_int32_t devType, fw_img_t bool FwOperations::IsFwSupportingRomModify(u_int16_t fw_ver[3]) { u_int16_t supported_fw[3] = {MAJOR_MOD_ROM_FW, MINOR_MOD_ROM_FW, SUBMINOR_MOD_ROM_FW}; - return !FwVerLessThan(fw_ver, supported_fw); + // only used in connectx (FS2) + FwVerInfo verInfo = FwVerLessThan(fw_ver, supported_fw, FIT_FS2); + return ((verInfo == FVI_EQUAL) || (verInfo == FVI_GREATER)); } bool FwOperations::checkMatchingExpRomDevId(const fw_info_t& info) diff --git a/mlxfwops/lib/fw_ops.h b/mlxfwops/lib/fw_ops.h index 1b7f9f9..73be75d 100644 --- a/mlxfwops/lib/fw_ops.h +++ b/mlxfwops/lib/fw_ops.h @@ -41,6 +41,7 @@ typedef f_prog_func_str VerifyCallBack; typedef f_prog_func ProgressCallBack; typedef f_prog_func_str PrintCallBack; +typedef fw_ver_info_t FwVerInfo; typedef int (*PrintCallBackAdv) (int completion, char* str); @@ -69,7 +70,7 @@ public: virtual ~FwOperations() {}; //virtual void print_type() {}; virtual u_int8_t FwType() = 0; - static bool FwVerLessThan(u_int16_t r1[3], u_int16_t r2[3]); + static FwVerInfo FwVerLessThan(u_int16_t r1[3], u_int16_t r2[3], u_int8_t fwType); static bool IsFwSupportingRomModify(u_int16_t fw_ver[3]); static bool CntxEthOnly(u_int32_t devid); static void SetDevFlags(chip_type_t chipType, u_int32_t devType, fw_img_type_t fwType, bool &ibDev, bool ðDev); @@ -94,7 +95,7 @@ public: virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc=(PrintCallBack)NULL, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0; - virtual bool FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0; + virtual bool FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0; virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0; // use progressFunc when dealing with FS2 image and printFunc when dealing with FS3 image. virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL) = 0; @@ -227,10 +228,10 @@ public: bool stripedImage; // default shuold be set to false unless working on striped image file bool macsSpecified; bool guidsSpecified; - bool uidsSpecified; + bool uidsSpecified; // valid for BridgeX and ConnectIB only std::vector userGuids; - u_int8_t numOfGUIDs; // number of GUIDs to allocate for each port. (FS3 image Only) - u_int8_t stepSize; // step size between GUIDs. (FS3 Image Only). + u_int8_t numOfGUIDs; // number of GUIDs to allocate for each port. keep zero for default. (FS3 image Only) + u_int8_t stepSize; // step size between GUIDs. keep zero for default. (FS3 Image Only) }; protected: @@ -250,7 +251,8 @@ protected: bool magicPatternFound; bool imageOk; bool wasQueried; - u_int32_t lastImageAddr; + u_int32_t lastImageAddr; + fw_img_type_t fwType; }; enum { OLD_CNTX_START_POS_SIZE = 6, diff --git a/mlxfwops/lib/mlxfwops.cpp b/mlxfwops/lib/mlxfwops.cpp index dbf5016..d08e301 100755 --- a/mlxfwops/lib/mlxfwops.cpp +++ b/mlxfwops/lib/mlxfwops.cpp @@ -39,39 +39,39 @@ #include "uefi_c.h" #endif -int mlxfw_open_int(mlxfwops_t** mlxfwops_p, void* fw_hndl, void* extra, char* psid, fw_hndl_type_t hndl_type) +int mlxfw_open_int(mlxfwops_t** mlxfwops_p, void* fw_hndl, void* extra, char* psid, fw_hndl_type_t hndl_type, char* err_buf, int buf_size) { - *mlxfwops_p = (mlxfwops_t*) FwOperations::FwOperationsCreate((void*)fw_hndl, extra, psid, hndl_type); + *mlxfwops_p = (mlxfwops_t*) FwOperations::FwOperationsCreate((void*)fw_hndl, extra, psid, hndl_type, err_buf, buf_size); if (*mlxfwops_p == NULL) { return MLXFW_MEM_ERR; } return MLXFW_OK; } -MLXFWOP_API int MLXFWOPCALL mlxfw_fw_ver_less_than(u_int16_t ver_a[3], u_int16_t ver_b[3]) +MLXFWOP_API int MLXFWOPCALL mlxfw_open_device_verbose(mlxfwops_t** mlxfwops_p, char *device_name, char* buf, int buf_size) { - return FwOperations::FwVerLessThan(ver_a, ver_b); + return mlxfw_open_int(mlxfwops_p, device_name, NULL, (char*)NULL, FHT_MST_DEV, buf, buf_size); } MLXFWOP_API int MLXFWOPCALL mlxfw_open_device(mlxfwops_t** mlxfwops_p, char *handle_name) { - return mlxfw_open_int(mlxfwops_p, handle_name, NULL, (char*)NULL, FHT_MST_DEV); + return mlxfw_open_int(mlxfwops_p, handle_name, NULL, (char*)NULL, FHT_MST_DEV, NULL, 0); } MLXFWOP_API int MLXFWOPCALL mlxfw_open_image(mlxfwops_t** mlxfwops_p, char *file_name, char *psid) { - return mlxfw_open_int(mlxfwops_p, file_name, NULL, psid, FHT_FW_FILE); + return mlxfw_open_int(mlxfwops_p, file_name, NULL, psid, FHT_FW_FILE, NULL, 0); } MLXFWOP_API int MLXFWOPCALL mlxfw_open_buffer(mlxfwops_t** mlxfwops_p, void* buffer, u_int32_t size, char *psid) { - return mlxfw_open_int(mlxfwops_p, buffer, &size, psid, FHT_FW_BUFF); + return mlxfw_open_int(mlxfwops_p, buffer, &size, psid, FHT_FW_BUFF, NULL, 0); } #ifdef UEFI_BUILD MLXFWOP_API int MLXFWOPCALL mlxfw_open_uefi(mlxfwops_t** mlxfwops_p, uefi_Dev_t* dev, f_fw_cmd fw_cmd_func) { - return mlxfw_open_int(mlxfwops_p, dev, (void*)fw_cmd_func, (char*)NULL, FHT_UEFI_DEV); + return mlxfw_open_int(mlxfwops_p, dev, (void*)fw_cmd_func, (char*)NULL, FHT_UEFI_DEV, NULL, 0); } diff --git a/mlxfwops/lib/mlxfwops.h b/mlxfwops/lib/mlxfwops.h index fda1726..0360476 100755 --- a/mlxfwops/lib/mlxfwops.h +++ b/mlxfwops/lib/mlxfwops.h @@ -59,6 +59,8 @@ struct image_context { MLXFWOP_API int MLXFWOPCALL mlxfw_open_device(mlxfwops_t** mlxfwops_p, char *device_name); +MLXFWOP_API int MLXFWOPCALL mlxfw_open_device_verbose(mlxfwops_t** mlxfwops_p, char *device_name, char* buf, int buf_size); + MLXFWOP_API int MLXFWOPCALL mlxfw_open_image(mlxfwops_t** mlxfwops_p, char *file_name, char *psid); MLXFWOP_API int MLXFWOPCALL mlxfw_open_buffer(mlxfwops_t** mlxfwops_p, void* buffer, u_int32_t size, char *psid); @@ -83,8 +85,6 @@ MLXFWOP_API int MLXFWOPCALL mlxfw_query(mlxfwops_t* mlxfwops, fw_info_t* fw_quer MLXFWOP_API int MLXFWOPCALL mlxfw_type_match(mlxfwops_t* dev_mlxfwops, mlxfwops_t* img_mlxfwops); -MLXFWOP_API int MLXFWOPCALL mlxfw_fw_ver_less_than(u_int16_t ver_a[3], u_int16_t ver_b[3]); - MLXFWOP_API const char* MLXFWOPCALL mlxfw_exp_rom_type_to_str(u_int16_t type); MLXFWOP_API void MLXFWOPCALL mlxfw_close(mlxfwops_t* mlxfwops); diff --git a/mlxfwops/lib/mlxfwops_com.h b/mlxfwops/lib/mlxfwops_com.h index 494fb9f..5d4a19d 100644 --- a/mlxfwops/lib/mlxfwops_com.h +++ b/mlxfwops/lib/mlxfwops_com.h @@ -119,7 +119,7 @@ typedef enum chip_type { CT_IS4, CT_CONNECT_IB, CT_SWITCH_IB, - CT_SWITCH_EN + CT_SWITCH_EN, }chip_type_t; typedef struct guid { @@ -128,11 +128,15 @@ typedef struct guid { } guid_t; typedef guid_t hw_key_t; -typedef struct fs3_guid { - guid_t uid; - u_int8_t num_of_guids; - u_int8_t step_size; -} fs3_guid_t; +typedef struct fs3_uid { + guid_t base_guid; + int base_guid_specified; + guid_t base_mac; + int base_mac_specified; + u_int8_t num_of_guids; // set 0 for default + u_int8_t step_size; // set 0 for default, not relevant for devices >= CX4 + int set_mac_from_guid; // if set , base_mac will be derrived automatically from base guid +} fs3_uid_t; typedef struct rom_info { u_int16_t exp_rom_product_id; // 0 - invalid. @@ -145,17 +149,30 @@ typedef struct rom_info { } rom_info_t; -struct cib_uid_entry { +struct fs3_uid_entry { u_int8_t num_allocated; - u_int8_t step; + u_int8_t step; // not relevant for devices >= CX4 u_int64_t uid; }; + typedef struct cibfw_uids { - struct cib_uid_entry guids[2]; - struct cib_uid_entry macs[2]; + struct fs3_uid_entry guids[2]; + struct fs3_uid_entry macs[2]; +} cib_uids_t; + +typedef struct cx4fw_uids { + struct fs3_uid_entry base_guid; + struct fs3_uid_entry base_mac; +} cx4_uids_t; + +typedef struct uids { + int valid_field; // 0: cib_uids , 1: cx4_uids + union { + cib_uids_t cib_uids; + cx4_uids_t cx4_uids; + }; } uids_t; - typedef struct fs3_info_ext { u_int8_t guids_override_en; uids_t fs3_uids_info; @@ -234,6 +251,12 @@ enum ExpRomProto { ER_VPI = 2 }; +typedef enum fw_ver_info { + FVI_UNKNOWN = -1, + FVI_SMALLER = 0, + FVI_EQUAL = 1, + FVI_GREATER = 2, +} fw_ver_info_t; typedef struct _MLX4_DEV uefi_Dev_t; typedef int (*f_fw_cmd) (uefi_Dev_t* dev, void* buffer, int* size); diff --git a/mstdump/mstdump_dbs/ConnectX3Pro.csv b/mstdump/mstdump_dbs/ConnectX3Pro.csv index f930b3b..e3b71e5 100755 --- a/mstdump/mstdump_dbs/ConnectX3Pro.csv +++ b/mstdump/mstdump_dbs/ConnectX3Pro.csv @@ -491,6 +491,8 @@ 0x01dba0,3, 0x01dc00,1, 0x01dc0c,1, +0x01dc80,6, +0x01dca0,1, 0x01dd80,13, 0x01ddbc,1, 0x01dde0,9, diff --git a/mstdump/mstdump_dbs/ConnectX4.csv b/mstdump/mstdump_dbs/ConnectX4.csv index 8cb16aa..6bd2889 100644 --- a/mstdump/mstdump_dbs/ConnectX4.csv +++ b/mstdump/mstdump_dbs/ConnectX4.csv @@ -536,7 +536,8 @@ 0x035210,3, 0x035244,3, 0x035300,64, -0x035410,7, +0x035404,1, +0x03540c,8, 0x037000,6, 0x03702c,7, 0x037080,10, @@ -795,7 +796,7 @@ 0x050d80,1, 0x050d90,1, 0x050da0,1, -0x052000,384, +0x052000,192, 0x052800,2, 0x053000,51, 0x053400,3, @@ -1650,7 +1651,7 @@ 0x0a3490,1, 0x0a3504,1, 0x0a3510,76, -0x0a4000,32, +0x0a4000,48, 0x0a4100,3, 0x0a4110,6, 0x0a412c,4, @@ -2786,93 +2787,75 @@ 0x0f20e0,6, 0x0f2100,2, 0x0f210c,3, -0x0f2120,2, -0x0f2140,2, +0x0f2120,10, 0x0f2160,6, 0x0f2180,2, 0x0f218c,3, -0x0f21a0,2, -0x0f21c0,2, +0x0f21a0,10, 0x0f21e0,6, 0x0f2200,2, 0x0f220c,3, -0x0f2220,2, -0x0f2240,2, +0x0f2220,10, 0x0f2260,6, 0x0f2280,2, 0x0f228c,3, -0x0f22a0,2, -0x0f22c0,2, +0x0f22a0,10, 0x0f22e0,6, 0x0f2300,2, 0x0f230c,3, -0x0f2320,2, -0x0f2340,2, +0x0f2320,10, 0x0f2360,6, 0x0f2380,2, 0x0f238c,3, -0x0f23a0,2, -0x0f23c0,2, +0x0f23a0,10, 0x0f23e0,6, 0x0f2400,2, 0x0f240c,3, -0x0f2420,2, -0x0f2440,2, +0x0f2420,10, 0x0f2460,6, 0x0f2480,2, 0x0f248c,3, -0x0f24a0,2, -0x0f24c0,2, +0x0f24a0,10, 0x0f24e0,6, 0x0f2500,2, 0x0f250c,3, -0x0f2520,2, -0x0f2540,2, +0x0f2520,10, 0x0f2560,6, 0x0f2580,2, 0x0f258c,3, -0x0f25a0,2, -0x0f25c0,2, +0x0f25a0,10, 0x0f25e0,6, 0x0f2600,2, 0x0f260c,3, -0x0f2620,2, -0x0f2640,2, +0x0f2620,10, 0x0f2660,6, 0x0f2680,2, 0x0f268c,3, -0x0f26a0,2, -0x0f26c0,2, +0x0f26a0,10, 0x0f26e0,6, 0x0f2700,2, 0x0f270c,3, -0x0f2720,2, -0x0f2740,2, +0x0f2720,10, 0x0f2760,6, 0x0f2780,2, 0x0f278c,3, -0x0f27a0,2, -0x0f27c0,2, +0x0f27a0,10, 0x0f27e0,6, 0x0f2800,2, 0x0f280c,3, -0x0f2820,2, -0x0f2840,2, +0x0f2820,10, 0x0f2860,6, 0x0f2880,2, 0x0f288c,3, -0x0f28a0,2, -0x0f28c0,2, +0x0f28a0,10, 0x0f28e0,6, 0x0f2900,2, 0x0f290c,3, -0x0f2920,2, -0x0f2940,2, +0x0f2920,10, 0x0f2960,6, 0x0f2980,2, 0x0f298c,3, -0x0f29a0,2, -0x0f29c0,2, +0x0f29a0,10, 0x0f29e0,6, 0x0f4000,7, 0x0f4020,4, @@ -3476,19 +3459,23 @@ 0x11da00,3, 0x11da10,1, 0x11da18,2, -0x11da24,15, +0x11da24,7, +0x11da50,4, 0x11da80,3, 0x11da90,1, 0x11da98,2, -0x11daa4,15, +0x11daa4,7, +0x11dad0,4, 0x11db00,3, 0x11db10,1, 0x11db18,2, -0x11db24,15, +0x11db24,7, +0x11db50,4, 0x11db80,3, 0x11db90,1, 0x11db98,2, -0x11dba4,15, +0x11dba4,7, +0x11dbd0,4, 0x11dc00,17, 0x11e000,72, 0x11e200,72, diff --git a/mstdump/mstdump_dbs/SwitchEN.csv b/mstdump/mstdump_dbs/SwitchEN.csv index 37ceeee..1fdc088 100644 --- a/mstdump/mstdump_dbs/SwitchEN.csv +++ b/mstdump/mstdump_dbs/SwitchEN.csv @@ -1,918 +1,1468 @@ #Addr, Size, Enable addr -0x000400,1, -0x000408,14, -0x000480,1, -0x000488,18, -0x000500,9, -0x000534,2, -0x00054c,4, -0x00056c,11, -0x0005ac,8, -0x0005d0,1, -0x000604,1, -0x00060c,13, -0x000644,1, -0x000654,3, -0x000664,1, -0x00066c,7, -0x0006a8,3, -0x0006c0,8, -0x000700,6, -0x000760,4, -0x000780,8, -0x0007b8,8, -0x0007dc,10, +0x000800,1, 0x000808,14, 0x000880,1, -0x000888,18, -0x000900,9, -0x000934,2, -0x00094c,4, -0x00096c,11, -0x0009ac,8, -0x0009d0,1, -0x000a04,1, -0x000a0c,13, -0x000a44,1, -0x000a54,3, -0x000a64,1, -0x000a6c,7, -0x000aa8,3, -0x000ac0,8, -0x000b00,6, -0x000b60,4, +0x000888,16, +0x000900,11, +0x000940,3, +0x000950,12, +0x000984,19, +0x000a00,1, +0x000a18,5, +0x000a30,2, +0x000a3c,9, +0x000a84,1, +0x000a90,4, +0x000aa4,1, +0x000aac,7, +0x000ae8,3, +0x000b00,8, +0x000b40,6, +0x000b60,3, 0x000b80,8, -0x000bb8,8, -0x000bdc,10, +0x000bb8,19, 0x000c08,14, 0x000c80,1, -0x000c88,18, -0x000d00,9, -0x000d34,2, -0x000d4c,4, -0x000d6c,11, -0x000dac,8, -0x000dd0,1, -0x000e04,1, -0x000e0c,13, -0x000e44,1, -0x000e54,3, -0x000e64,1, -0x000e6c,7, -0x000ea8,3, -0x000ec0,8, -0x000f00,6, -0x000f60,4, +0x000c88,16, +0x000d00,11, +0x000d40,3, +0x000d50,12, +0x000d84,19, +0x000e00,1, +0x000e18,5, +0x000e30,2, +0x000e3c,9, +0x000e84,1, +0x000e90,4, +0x000ea4,1, +0x000eac,7, +0x000ee8,3, +0x000f00,8, +0x000f40,6, +0x000f60,3, 0x000f80,8, -0x000fb8,8, -0x000fdc,10, +0x000fb8,19, 0x001008,14, 0x001080,1, -0x001088,18, -0x001100,9, -0x001134,2, -0x00114c,4, -0x00116c,11, -0x0011ac,8, -0x0011d0,1, -0x001204,1, -0x00120c,13, -0x001244,1, -0x001254,3, -0x001264,1, -0x00126c,7, -0x0012a8,3, -0x0012c0,8, -0x001300,6, -0x001360,4, +0x001088,16, +0x001100,11, +0x001140,3, +0x001150,12, +0x001184,19, +0x001200,1, +0x001218,5, +0x001230,2, +0x00123c,9, +0x001284,1, +0x001290,4, +0x0012a4,1, +0x0012ac,7, +0x0012e8,3, +0x001300,8, +0x001340,6, +0x001360,3, 0x001380,8, -0x0013b8,8, -0x0013dc,10, +0x0013b8,19, 0x001408,14, 0x001480,1, -0x001488,18, -0x001500,9, -0x001534,2, -0x00154c,4, -0x00156c,11, -0x0015ac,8, -0x0015d0,1, -0x001604,1, -0x00160c,13, -0x001644,1, -0x001654,3, -0x001664,1, -0x00166c,7, -0x0016a8,3, -0x0016c0,8, -0x001700,6, -0x001760,4, +0x001488,16, +0x001500,11, +0x001540,3, +0x001550,12, +0x001584,19, +0x001600,1, +0x001618,5, +0x001630,2, +0x00163c,9, +0x001684,1, +0x001690,4, +0x0016a4,1, +0x0016ac,7, +0x0016e8,3, +0x001700,8, +0x001740,6, +0x001760,3, 0x001780,8, -0x0017b8,8, -0x0017dc,10, +0x0017b8,19, 0x001808,14, 0x001880,1, -0x001888,18, -0x001900,9, -0x001934,2, -0x00194c,4, -0x00196c,11, -0x0019ac,8, -0x0019d0,1, -0x001a04,1, -0x001a0c,13, -0x001a44,1, -0x001a54,3, -0x001a64,1, -0x001a6c,7, -0x001aa8,3, -0x001ac0,8, -0x001b00,6, -0x001b60,4, +0x001888,16, +0x001900,11, +0x001940,3, +0x001950,12, +0x001984,19, +0x001a00,1, +0x001a18,5, +0x001a30,2, +0x001a3c,9, +0x001a84,1, +0x001a90,4, +0x001aa4,1, +0x001aac,7, +0x001ae8,3, +0x001b00,8, +0x001b40,6, +0x001b60,3, 0x001b80,8, -0x001bb8,8, -0x001bdc,10, +0x001bb8,19, 0x001c08,14, 0x001c80,1, -0x001c88,18, -0x001d00,9, -0x001d34,2, -0x001d4c,4, -0x001d6c,11, -0x001dac,8, -0x001dd0,1, -0x001e04,1, -0x001e0c,13, -0x001e44,1, -0x001e54,3, -0x001e64,1, -0x001e6c,7, -0x001ea8,3, -0x001ec0,8, -0x001f00,6, -0x001f60,4, +0x001c88,16, +0x001d00,11, +0x001d40,3, +0x001d50,12, +0x001d84,19, +0x001e00,1, +0x001e18,5, +0x001e30,2, +0x001e3c,9, +0x001e84,1, +0x001e90,4, +0x001ea4,1, +0x001eac,7, +0x001ee8,3, +0x001f00,8, +0x001f40,6, +0x001f60,3, 0x001f80,8, -0x001fb8,8, -0x001fdc,10, +0x001fb8,19, 0x002008,14, 0x002080,1, -0x002088,18, -0x002100,9, -0x002134,2, -0x00214c,4, -0x00216c,11, -0x0021ac,8, -0x0021d0,1, -0x002204,1, -0x00220c,13, -0x002244,1, -0x002254,3, -0x002264,1, -0x00226c,7, -0x0022a8,3, -0x0022c0,8, -0x002300,6, -0x002360,4, +0x002088,16, +0x002100,11, +0x002140,3, +0x002150,12, +0x002184,19, +0x002200,1, +0x002218,5, +0x002230,2, +0x00223c,9, +0x002284,1, +0x002290,4, +0x0022a4,1, +0x0022ac,7, +0x0022e8,3, +0x002300,8, +0x002340,6, +0x002360,3, 0x002380,8, -0x0023b8,8, -0x0023dc,10, +0x0023b8,19, 0x002408,14, 0x002480,1, -0x002488,18, -0x002500,9, -0x002534,2, -0x00254c,4, -0x00256c,11, -0x0025ac,8, -0x0025d0,1, -0x002604,1, -0x00260c,13, -0x002644,1, -0x002654,3, -0x002664,1, -0x00266c,7, -0x0026a8,3, -0x0026c0,8, -0x002700,6, -0x002760,4, +0x002488,16, +0x002500,11, +0x002540,3, +0x002550,12, +0x002584,19, +0x002600,1, +0x002618,5, +0x002630,2, +0x00263c,9, +0x002684,1, +0x002690,4, +0x0026a4,1, +0x0026ac,7, +0x0026e8,3, +0x002700,8, +0x002740,6, +0x002760,3, 0x002780,8, -0x0027b8,8, -0x0027dc,10, +0x0027b8,19, 0x002808,14, 0x002880,1, -0x002888,18, -0x002900,9, -0x002934,2, -0x00294c,4, -0x00296c,11, -0x0029ac,8, -0x0029d0,1, -0x002a04,1, -0x002a0c,13, -0x002a44,1, -0x002a54,3, -0x002a64,1, -0x002a6c,7, -0x002aa8,3, -0x002ac0,8, -0x002b00,6, -0x002b60,4, +0x002888,16, +0x002900,11, +0x002940,3, +0x002950,12, +0x002984,19, +0x002a00,1, +0x002a18,5, +0x002a30,2, +0x002a3c,9, +0x002a84,1, +0x002a90,4, +0x002aa4,1, +0x002aac,7, +0x002ae8,3, +0x002b00,8, +0x002b40,6, +0x002b60,3, 0x002b80,8, -0x002bb8,8, -0x002bdc,10, +0x002bb8,19, 0x002c08,14, 0x002c80,1, -0x002c88,18, -0x002d00,9, -0x002d34,2, -0x002d4c,4, -0x002d6c,11, -0x002dac,8, -0x002dd0,1, -0x002e04,1, -0x002e0c,13, -0x002e44,1, -0x002e54,3, -0x002e64,1, -0x002e6c,7, -0x002ea8,3, -0x002ec0,8, -0x002f00,6, -0x002f60,4, +0x002c88,16, +0x002d00,11, +0x002d40,3, +0x002d50,12, +0x002d84,19, +0x002e00,1, +0x002e18,5, +0x002e30,2, +0x002e3c,9, +0x002e84,1, +0x002e90,4, +0x002ea4,1, +0x002eac,7, +0x002ee8,3, +0x002f00,8, +0x002f40,6, +0x002f60,3, 0x002f80,8, -0x002fb8,8, -0x002fdc,10, +0x002fb8,19, 0x003008,14, 0x003080,1, -0x003088,18, -0x003100,9, -0x003134,2, -0x00314c,4, -0x00316c,11, -0x0031ac,8, -0x0031d0,1, -0x003204,1, -0x00320c,13, -0x003244,1, -0x003254,3, -0x003264,1, -0x00326c,7, -0x0032a8,3, -0x0032c0,8, -0x003300,6, -0x003360,4, +0x003088,16, +0x003100,11, +0x003140,3, +0x003150,12, +0x003184,19, +0x003200,1, +0x003218,5, +0x003230,2, +0x00323c,9, +0x003284,1, +0x003290,4, +0x0032a4,1, +0x0032ac,7, +0x0032e8,3, +0x003300,8, +0x003340,6, +0x003360,3, 0x003380,8, -0x0033b8,8, -0x0033dc,10, +0x0033b8,19, 0x003408,14, 0x003480,1, -0x003488,18, -0x003500,9, -0x003534,2, -0x00354c,4, -0x00356c,11, -0x0035ac,8, -0x0035d0,1, -0x003604,1, -0x00360c,13, -0x003644,1, -0x003654,3, -0x003664,1, -0x00366c,7, -0x0036a8,3, -0x0036c0,8, -0x003700,6, -0x003760,4, +0x003488,16, +0x003500,11, +0x003540,3, +0x003550,12, +0x003584,19, +0x003600,1, +0x003618,5, +0x003630,2, +0x00363c,9, +0x003684,1, +0x003690,4, +0x0036a4,1, +0x0036ac,7, +0x0036e8,3, +0x003700,8, +0x003740,6, +0x003760,3, 0x003780,8, -0x0037b8,8, -0x0037dc,10, +0x0037b8,19, 0x003808,14, 0x003880,1, -0x003888,18, -0x003900,9, -0x003934,2, -0x00394c,4, -0x00396c,11, -0x0039ac,8, -0x0039d0,1, -0x003a04,1, -0x003a0c,13, -0x003a44,1, -0x003a54,3, -0x003a64,1, -0x003a6c,7, -0x003aa8,3, -0x003ac0,8, -0x003b00,6, -0x003b60,4, +0x003888,16, +0x003900,11, +0x003940,3, +0x003950,12, +0x003984,19, +0x003a00,1, +0x003a18,5, +0x003a30,2, +0x003a3c,9, +0x003a84,1, +0x003a90,4, +0x003aa4,1, +0x003aac,7, +0x003ae8,3, +0x003b00,8, +0x003b40,6, +0x003b60,3, 0x003b80,8, -0x003bb8,8, -0x003bdc,10, +0x003bb8,19, 0x003c08,14, 0x003c80,1, -0x003c88,18, -0x003d00,9, -0x003d34,2, -0x003d4c,4, -0x003d6c,11, -0x003dac,8, -0x003dd0,1, -0x003e04,1, -0x003e0c,13, -0x003e44,1, -0x003e54,3, -0x003e64,1, -0x003e6c,7, -0x003ea8,3, -0x003ec0,8, -0x003f00,6, -0x003f60,4, +0x003c88,16, +0x003d00,11, +0x003d40,3, +0x003d50,12, +0x003d84,19, +0x003e00,1, +0x003e18,5, +0x003e30,2, +0x003e3c,9, +0x003e84,1, +0x003e90,4, +0x003ea4,1, +0x003eac,7, +0x003ee8,3, +0x003f00,8, +0x003f40,6, +0x003f60,3, 0x003f80,8, -0x003fb8,8, -0x003fdc,10, +0x003fb8,19, 0x004008,14, 0x004080,1, -0x004088,18, -0x004100,9, -0x004134,2, -0x00414c,4, -0x00416c,11, -0x0041ac,8, -0x0041d0,1, -0x004204,1, -0x00420c,13, -0x004244,1, -0x004254,3, -0x004264,1, -0x00426c,7, -0x0042a8,3, -0x0042c0,8, -0x004300,6, -0x004360,4, +0x004088,16, +0x004100,11, +0x004140,3, +0x004150,12, +0x004184,19, +0x004200,1, +0x004218,5, +0x004230,2, +0x00423c,9, +0x004284,1, +0x004290,4, +0x0042a4,1, +0x0042ac,7, +0x0042e8,3, +0x004300,8, +0x004340,6, +0x004360,3, 0x004380,8, -0x0043b8,8, -0x0043dc,10, +0x0043b8,19, 0x004408,14, 0x004480,1, -0x004488,18, -0x004500,9, -0x004534,2, -0x00454c,4, -0x00456c,11, -0x0045ac,8, -0x0045d0,1, -0x004604,1, -0x00460c,13, -0x004644,1, -0x004654,3, -0x004664,1, -0x00466c,7, -0x0046a8,3, -0x0046c0,8, -0x004700,6, -0x004760,4, +0x004488,16, +0x004500,11, +0x004540,3, +0x004550,12, +0x004584,19, +0x004600,1, +0x004618,5, +0x004630,2, +0x00463c,9, +0x004684,1, +0x004690,4, +0x0046a4,1, +0x0046ac,7, +0x0046e8,3, +0x004700,8, +0x004740,6, +0x004760,3, 0x004780,8, -0x0047b8,8, -0x0047dc,10, +0x0047b8,19, 0x004808,14, 0x004880,1, -0x004888,18, -0x004900,9, -0x004934,2, -0x00494c,4, -0x00496c,11, -0x0049ac,8, -0x0049d0,1, -0x004a04,1, -0x004a0c,13, -0x004a44,1, -0x004a54,3, -0x004a64,1, -0x004a6c,7, -0x004aa8,3, -0x004ac0,8, -0x004b00,6, -0x004b60,4, +0x004888,16, +0x004900,11, +0x004940,3, +0x004950,12, +0x004984,19, +0x004a00,1, +0x004a18,5, +0x004a30,2, +0x004a3c,9, +0x004a84,1, +0x004a90,4, +0x004aa4,1, +0x004aac,7, +0x004ae8,3, +0x004b00,8, +0x004b40,6, +0x004b60,3, 0x004b80,8, -0x004bb8,8, -0x004bdc,10, +0x004bb8,19, 0x004c08,14, 0x004c80,1, -0x004c88,18, -0x004d00,9, -0x004d34,2, -0x004d4c,4, -0x004d6c,11, -0x004dac,8, -0x004dd0,1, -0x004e04,1, -0x004e0c,13, -0x004e44,1, -0x004e54,3, -0x004e64,1, -0x004e6c,7, -0x004ea8,3, -0x004ec0,8, -0x004f00,6, -0x004f60,4, +0x004c88,16, +0x004d00,11, +0x004d40,3, +0x004d50,12, +0x004d84,19, +0x004e00,1, +0x004e18,5, +0x004e30,2, +0x004e3c,9, +0x004e84,1, +0x004e90,4, +0x004ea4,1, +0x004eac,7, +0x004ee8,3, +0x004f00,8, +0x004f40,6, +0x004f60,3, 0x004f80,8, -0x004fb8,8, -0x004fdc,10, +0x004fb8,19, 0x005008,14, 0x005080,1, -0x005088,18, -0x005100,9, -0x005134,2, -0x00514c,4, -0x00516c,11, -0x0051ac,8, -0x0051d0,1, -0x005204,1, -0x00520c,13, -0x005244,1, -0x005254,3, -0x005264,1, -0x00526c,7, -0x0052a8,3, -0x0052c0,8, -0x005300,6, -0x005360,4, +0x005088,16, +0x005100,11, +0x005140,3, +0x005150,12, +0x005184,19, +0x005200,1, +0x005218,5, +0x005230,2, +0x00523c,9, +0x005284,1, +0x005290,4, +0x0052a4,1, +0x0052ac,7, +0x0052e8,3, +0x005300,8, +0x005340,6, +0x005360,3, 0x005380,8, -0x0053b8,8, -0x0053dc,10, -0x005428,1, -0x005450,1, -0x005478,1, -0x0054a0,1, -0x0055ac,1, -0x0055d8,4, -0x005600,6, -0x005620,6, -0x005640,3, -0x005800,13, -0x005840,6, -0x005860,3, -0x005880,2, -0x005904,2, -0x005918,1, -0x005940,1, -0x008400,1, +0x0053b8,19, +0x005408,14, +0x005480,1, +0x005488,16, +0x005500,11, +0x005540,3, +0x005550,12, +0x005584,19, +0x005600,1, +0x005618,5, +0x005630,2, +0x00563c,9, +0x005684,1, +0x005690,4, +0x0056a4,1, +0x0056ac,7, +0x0056e8,3, +0x005700,8, +0x005740,6, +0x005760,3, +0x005780,8, +0x0057b8,19, +0x005808,14, +0x005880,1, +0x005888,16, +0x005900,11, +0x005940,3, +0x005950,12, +0x005984,19, +0x005a00,1, +0x005a18,5, +0x005a30,2, +0x005a3c,9, +0x005a84,1, +0x005a90,4, +0x005aa4,1, +0x005aac,7, +0x005ae8,3, +0x005b00,8, +0x005b40,6, +0x005b60,3, +0x005b80,8, +0x005bb8,19, +0x005c08,14, +0x005c80,1, +0x005c88,16, +0x005d00,11, +0x005d40,3, +0x005d50,12, +0x005d84,19, +0x005e00,1, +0x005e18,5, +0x005e30,2, +0x005e3c,9, +0x005e84,1, +0x005e90,4, +0x005ea4,1, +0x005eac,7, +0x005ee8,3, +0x005f00,8, +0x005f40,6, +0x005f60,3, +0x005f80,8, +0x005fb8,19, +0x006008,14, +0x006080,1, +0x006088,16, +0x006100,11, +0x006140,3, +0x006150,12, +0x006184,19, +0x006200,1, +0x006218,5, +0x006230,2, +0x00623c,9, +0x006284,1, +0x006290,4, +0x0062a4,1, +0x0062ac,7, +0x0062e8,3, +0x006300,8, +0x006340,6, +0x006360,3, +0x006380,8, +0x0063b8,19, +0x006408,14, +0x006480,1, +0x006488,16, +0x006500,11, +0x006540,3, +0x006550,12, +0x006584,19, +0x006600,1, +0x006618,5, +0x006630,2, +0x00663c,9, +0x006684,1, +0x006690,4, +0x0066a4,1, +0x0066ac,7, +0x0066e8,3, +0x006700,8, +0x006740,6, +0x006760,3, +0x006780,8, +0x0067b8,19, +0x006808,14, +0x006880,1, +0x006888,16, +0x006900,11, +0x006940,3, +0x006950,12, +0x006984,19, +0x006a00,1, +0x006a18,5, +0x006a30,2, +0x006a3c,9, +0x006a84,1, +0x006a90,4, +0x006aa4,1, +0x006aac,7, +0x006ae8,3, +0x006b00,8, +0x006b40,6, +0x006b60,3, +0x006b80,8, +0x006bb8,19, +0x006c08,14, +0x006c80,1, +0x006c88,16, +0x006d00,11, +0x006d40,3, +0x006d50,12, +0x006d84,19, +0x006e00,1, +0x006e18,5, +0x006e30,2, +0x006e3c,9, +0x006e84,1, +0x006e90,4, +0x006ea4,1, +0x006eac,7, +0x006ee8,3, +0x006f00,8, +0x006f40,6, +0x006f60,3, +0x006f80,8, +0x006fb8,19, +0x007008,14, +0x007080,1, +0x007088,16, +0x007100,11, +0x007140,3, +0x007150,12, +0x007184,19, +0x007200,1, +0x007218,5, +0x007230,2, +0x00723c,9, +0x007284,1, +0x007290,4, +0x0072a4,1, +0x0072ac,7, +0x0072e8,3, +0x007300,8, +0x007340,6, +0x007360,3, +0x007380,8, +0x0073b8,19, +0x007408,14, +0x007480,1, +0x007488,16, +0x007500,11, +0x007540,3, +0x007550,12, +0x007584,19, +0x007600,1, +0x007618,5, +0x007630,2, +0x00763c,9, +0x007684,1, +0x007690,4, +0x0076a4,1, +0x0076ac,7, +0x0076e8,3, +0x007700,8, +0x007740,6, +0x007760,3, +0x007780,8, +0x0077b8,19, +0x007808,14, +0x007880,1, +0x007888,16, +0x007900,11, +0x007940,3, +0x007950,12, +0x007984,19, +0x007a00,1, +0x007a18,5, +0x007a30,2, +0x007a3c,9, +0x007a84,1, +0x007a90,4, +0x007aa4,1, +0x007aac,7, +0x007ae8,3, +0x007b00,8, +0x007b40,6, +0x007b60,3, +0x007b80,8, +0x007bb8,19, +0x007c08,14, +0x007c80,1, +0x007c88,16, +0x007d00,11, +0x007d40,3, +0x007d50,12, +0x007d84,19, +0x007e00,1, +0x007e18,5, +0x007e30,2, +0x007e3c,9, +0x007e84,1, +0x007e90,4, +0x007ea4,1, +0x007eac,7, +0x007ee8,3, +0x007f00,8, +0x007f40,6, +0x007f60,3, +0x007f80,8, +0x007fb8,19, +0x008008,14, +0x008080,1, +0x008088,16, +0x008100,11, +0x008140,3, +0x008150,12, +0x008184,19, +0x008200,1, +0x008218,5, +0x008230,2, +0x00823c,9, +0x008284,1, +0x008290,4, +0x0082a4,1, +0x0082ac,7, +0x0082e8,3, +0x008300,8, +0x008340,6, +0x008360,3, +0x008380,8, +0x0083b8,19, 0x008408,14, 0x008480,1, -0x008488,18, -0x008500,9, -0x008534,2, -0x00854c,4, -0x00856c,11, -0x0085ac,8, -0x0085d0,1, -0x008604,1, -0x00860c,13, -0x008644,1, -0x008654,3, -0x008664,1, -0x00866c,7, -0x0086a8,3, -0x0086c0,8, -0x008700,6, -0x008760,4, +0x008488,16, +0x008500,11, +0x008540,3, +0x008550,12, +0x008584,19, +0x008600,1, +0x008618,5, +0x008630,2, +0x00863c,9, +0x008684,1, +0x008690,4, +0x0086a4,1, +0x0086ac,7, +0x0086e8,3, +0x008700,8, +0x008740,6, +0x008760,3, 0x008780,8, -0x0087b8,8, -0x0087dc,10, +0x0087b8,19, 0x008808,14, 0x008880,1, -0x008888,18, -0x008900,9, -0x008934,2, -0x00894c,4, -0x00896c,11, -0x0089ac,8, -0x0089d0,1, -0x008a04,1, -0x008a0c,13, -0x008a44,1, -0x008a54,3, -0x008a64,1, -0x008a6c,7, -0x008aa8,3, -0x008ac0,8, -0x008b00,6, -0x008b60,4, +0x008888,16, +0x008900,11, +0x008940,3, +0x008950,12, +0x008984,19, +0x008a00,1, +0x008a18,5, +0x008a30,2, +0x008a3c,9, +0x008a84,1, +0x008a90,4, +0x008aa4,1, +0x008aac,7, +0x008ae8,3, +0x008b00,8, +0x008b40,6, +0x008b60,3, 0x008b80,8, -0x008bb8,8, -0x008bdc,10, +0x008bb8,19, 0x008c08,14, 0x008c80,1, -0x008c88,18, -0x008d00,9, -0x008d34,2, -0x008d4c,4, -0x008d6c,11, -0x008dac,8, -0x008dd0,1, -0x008e04,1, -0x008e0c,13, -0x008e44,1, -0x008e54,3, -0x008e64,1, -0x008e6c,7, -0x008ea8,3, -0x008ec0,8, -0x008f00,6, -0x008f60,4, +0x008c88,16, +0x008d00,11, +0x008d40,3, +0x008d50,12, +0x008d84,19, +0x008e00,1, +0x008e18,5, +0x008e30,2, +0x008e3c,9, +0x008e84,1, +0x008e90,4, +0x008ea4,1, +0x008eac,7, +0x008ee8,3, +0x008f00,8, +0x008f40,6, +0x008f60,3, 0x008f80,8, -0x008fb8,8, -0x008fdc,10, -0x009008,14, -0x009080,1, -0x009088,18, -0x009100,9, -0x009134,2, -0x00914c,4, -0x00916c,11, -0x0091ac,8, -0x0091d0,1, -0x009204,1, -0x00920c,13, -0x009244,1, -0x009254,3, -0x009264,1, -0x00926c,7, -0x0092a8,3, -0x0092c0,8, -0x009300,6, -0x009360,4, -0x009380,8, -0x0093b8,8, -0x0093dc,10, -0x009408,14, -0x009480,1, -0x009488,18, -0x009500,9, -0x009534,2, -0x00954c,4, -0x00956c,11, -0x0095ac,8, -0x0095d0,1, -0x009604,1, -0x00960c,13, -0x009644,1, -0x009654,3, -0x009664,1, -0x00966c,7, -0x0096a8,3, -0x0096c0,8, -0x009700,6, -0x009760,4, -0x009780,8, -0x0097b8,8, -0x0097dc,10, -0x009808,14, -0x009880,1, -0x009888,18, -0x009900,9, -0x009934,2, -0x00994c,4, -0x00996c,11, -0x0099ac,8, -0x0099d0,1, -0x009a04,1, -0x009a0c,13, -0x009a44,1, -0x009a54,3, -0x009a64,1, -0x009a6c,7, -0x009aa8,3, -0x009ac0,8, -0x009b00,6, -0x009b60,4, -0x009b80,8, -0x009bb8,8, -0x009bdc,10, -0x009c08,14, -0x009c80,1, -0x009c88,18, -0x009d00,9, -0x009d34,2, -0x009d4c,4, -0x009d6c,11, -0x009dac,8, -0x009dd0,1, -0x009e04,1, -0x009e0c,13, -0x009e44,1, -0x009e54,3, -0x009e64,1, -0x009e6c,7, -0x009ea8,3, -0x009ec0,8, -0x009f00,6, -0x009f60,4, -0x009f80,8, -0x009fb8,8, -0x009fdc,10, -0x00a008,14, -0x00a080,1, -0x00a088,18, -0x00a100,9, -0x00a134,2, -0x00a14c,4, -0x00a16c,11, -0x00a1ac,8, -0x00a1d0,1, -0x00a204,1, -0x00a20c,13, -0x00a244,1, -0x00a254,3, -0x00a264,1, -0x00a26c,7, -0x00a2a8,3, -0x00a2c0,8, -0x00a300,6, -0x00a360,4, -0x00a380,8, -0x00a3b8,8, -0x00a3dc,10, -0x00a408,14, -0x00a480,1, -0x00a488,18, -0x00a500,9, -0x00a534,2, -0x00a54c,4, -0x00a56c,11, -0x00a5ac,8, -0x00a5d0,1, -0x00a604,1, -0x00a60c,13, -0x00a644,1, -0x00a654,3, -0x00a664,1, -0x00a66c,7, -0x00a6a8,3, -0x00a6c0,8, -0x00a700,6, -0x00a760,4, -0x00a780,8, -0x00a7b8,8, -0x00a7dc,10, -0x00a808,14, -0x00a880,1, -0x00a888,18, -0x00a900,9, -0x00a934,2, -0x00a94c,4, -0x00a96c,11, -0x00a9ac,8, -0x00a9d0,1, -0x00aa04,1, -0x00aa0c,13, -0x00aa44,1, -0x00aa54,3, -0x00aa64,1, -0x00aa6c,7, -0x00aaa8,3, -0x00aac0,8, -0x00ab00,6, -0x00ab60,4, -0x00ab80,8, -0x00abb8,8, -0x00abdc,10, -0x00ac08,14, -0x00ac80,1, -0x00ac88,18, -0x00ad00,9, -0x00ad34,2, -0x00ad4c,4, -0x00ad6c,11, -0x00adac,8, -0x00add0,1, -0x00ae04,1, -0x00ae0c,13, -0x00ae44,1, -0x00ae54,3, -0x00ae64,1, -0x00ae6c,7, -0x00aea8,3, -0x00aec0,8, -0x00af00,6, -0x00af60,4, -0x00af80,8, -0x00afb8,8, -0x00afdc,10, -0x00b008,14, -0x00b080,1, -0x00b088,18, -0x00b100,9, -0x00b134,2, -0x00b14c,4, -0x00b16c,11, -0x00b1ac,8, -0x00b1d0,1, -0x00b204,1, -0x00b20c,13, -0x00b244,1, -0x00b254,3, -0x00b264,1, -0x00b26c,7, -0x00b2a8,3, -0x00b2c0,8, -0x00b300,6, -0x00b360,4, -0x00b380,8, -0x00b3b8,8, -0x00b3dc,10, -0x00b408,14, -0x00b480,1, -0x00b488,18, -0x00b500,9, -0x00b534,2, -0x00b54c,4, -0x00b56c,11, -0x00b5ac,8, -0x00b5d0,1, -0x00b604,1, -0x00b60c,13, -0x00b644,1, -0x00b654,3, -0x00b664,1, -0x00b66c,7, -0x00b6a8,3, -0x00b6c0,8, -0x00b700,6, -0x00b760,4, -0x00b780,8, -0x00b7b8,8, -0x00b7dc,10, -0x00b808,14, -0x00b880,1, -0x00b888,18, -0x00b900,9, -0x00b934,2, -0x00b94c,4, -0x00b96c,11, -0x00b9ac,8, -0x00b9d0,1, -0x00ba04,1, -0x00ba0c,13, -0x00ba44,1, -0x00ba54,3, -0x00ba64,1, -0x00ba6c,7, -0x00baa8,3, -0x00bac0,8, -0x00bb00,6, -0x00bb60,4, -0x00bb80,8, -0x00bbb8,8, -0x00bbdc,10, -0x00bc08,14, -0x00bc80,1, -0x00bc88,18, -0x00bd00,9, -0x00bd34,2, -0x00bd4c,4, -0x00bd6c,11, -0x00bdac,8, -0x00bdd0,1, -0x00be04,1, -0x00be0c,13, -0x00be44,1, -0x00be54,3, -0x00be64,1, -0x00be6c,7, -0x00bea8,3, -0x00bec0,8, -0x00bf00,6, -0x00bf60,4, -0x00bf80,8, -0x00bfb8,8, -0x00bfdc,10, -0x00c008,14, -0x00c080,1, -0x00c088,18, -0x00c100,9, -0x00c134,2, -0x00c14c,4, -0x00c16c,11, -0x00c1ac,8, -0x00c1d0,1, -0x00c204,1, -0x00c20c,13, -0x00c244,1, -0x00c254,3, -0x00c264,1, -0x00c26c,7, -0x00c2a8,3, -0x00c2c0,8, -0x00c300,6, -0x00c360,4, -0x00c380,8, -0x00c3b8,8, -0x00c3dc,10, -0x00c408,14, -0x00c480,1, -0x00c488,18, -0x00c500,9, -0x00c534,2, -0x00c54c,4, -0x00c56c,11, -0x00c5ac,8, -0x00c5d0,1, -0x00c604,1, -0x00c60c,13, -0x00c644,1, -0x00c654,3, -0x00c664,1, -0x00c66c,7, -0x00c6a8,3, -0x00c6c0,8, -0x00c700,6, -0x00c760,4, -0x00c780,8, -0x00c7b8,8, -0x00c7dc,10, -0x00c808,14, -0x00c880,1, -0x00c888,18, -0x00c900,9, -0x00c934,2, -0x00c94c,4, -0x00c96c,11, -0x00c9ac,8, -0x00c9d0,1, -0x00ca04,1, -0x00ca0c,13, -0x00ca44,1, -0x00ca54,3, -0x00ca64,1, -0x00ca6c,7, -0x00caa8,3, -0x00cac0,8, -0x00cb00,6, -0x00cb60,4, -0x00cb80,8, -0x00cbb8,8, -0x00cbdc,10, -0x00cc08,14, -0x00cc80,1, -0x00cc88,18, -0x00cd00,9, -0x00cd34,2, -0x00cd4c,4, -0x00cd6c,11, -0x00cdac,8, -0x00cdd0,1, -0x00ce04,1, -0x00ce0c,13, -0x00ce44,1, -0x00ce54,3, -0x00ce64,1, -0x00ce6c,7, -0x00cea8,3, -0x00cec0,8, -0x00cf00,6, -0x00cf60,4, -0x00cf80,8, -0x00cfb8,8, -0x00cfdc,10, -0x00d008,14, -0x00d080,1, -0x00d088,18, -0x00d100,9, -0x00d134,2, -0x00d14c,4, -0x00d16c,11, -0x00d1ac,8, -0x00d1d0,1, -0x00d204,1, -0x00d20c,13, -0x00d244,1, -0x00d254,3, -0x00d264,1, -0x00d26c,7, -0x00d2a8,3, -0x00d2c0,8, -0x00d300,6, -0x00d360,4, -0x00d380,8, -0x00d3b8,8, -0x00d3dc,10, -0x00d428,1, -0x00d450,1, -0x00d478,1, -0x00d4a0,1, -0x00d5ac,1, -0x00d5d8,4, -0x00d600,6, -0x00d620,6, -0x00d640,3, -0x00d800,13, -0x00d840,6, -0x00d860,3, -0x00d880,2, -0x00d904,2, -0x00d918,1, -0x00d940,1, +0x008fb8,19, +0x009028,1, +0x009050,1, +0x009078,1, +0x0090a0,1, +0x0091ac,1, +0x0091d8,4, +0x009200,6, +0x009220,6, +0x009240,3, +0x009400,13, +0x009440,6, +0x009460,3, +0x009480,3, +0x009490,3, +0x0094a0,6, +0x0094bc,2, +0x009500,2, +0x010800,1, +0x010808,14, +0x010880,1, +0x010888,16, +0x010900,11, +0x010940,3, +0x010950,12, +0x010984,19, +0x010a00,1, +0x010a18,5, +0x010a30,2, +0x010a3c,9, +0x010a84,1, +0x010a90,4, +0x010aa4,1, +0x010aac,7, +0x010ae8,3, +0x010b00,8, +0x010b40,6, +0x010b60,3, +0x010b80,8, +0x010bb8,19, +0x010c08,14, +0x010c80,1, +0x010c88,16, +0x010d00,11, +0x010d40,3, +0x010d50,12, +0x010d84,19, +0x010e00,1, +0x010e18,5, +0x010e30,2, +0x010e3c,9, +0x010e84,1, +0x010e90,4, +0x010ea4,1, +0x010eac,7, +0x010ee8,3, +0x010f00,8, +0x010f40,6, +0x010f60,3, +0x010f80,8, +0x010fb8,19, +0x011008,14, +0x011080,1, +0x011088,16, +0x011100,11, +0x011140,3, +0x011150,12, +0x011184,19, +0x011200,1, +0x011218,5, +0x011230,2, +0x01123c,9, +0x011284,1, +0x011290,4, +0x0112a4,1, +0x0112ac,7, +0x0112e8,3, +0x011300,8, +0x011340,6, +0x011360,3, +0x011380,8, +0x0113b8,19, +0x011408,14, +0x011480,1, +0x011488,16, +0x011500,11, +0x011540,3, +0x011550,12, +0x011584,19, +0x011600,1, +0x011618,5, +0x011630,2, +0x01163c,9, +0x011684,1, +0x011690,4, +0x0116a4,1, +0x0116ac,7, +0x0116e8,3, +0x011700,8, +0x011740,6, +0x011760,3, +0x011780,8, +0x0117b8,19, +0x011808,14, +0x011880,1, +0x011888,16, +0x011900,11, +0x011940,3, +0x011950,12, +0x011984,19, +0x011a00,1, +0x011a18,5, +0x011a30,2, +0x011a3c,9, +0x011a84,1, +0x011a90,4, +0x011aa4,1, +0x011aac,7, +0x011ae8,3, +0x011b00,8, +0x011b40,6, +0x011b60,3, +0x011b80,8, +0x011bb8,19, +0x011c08,14, +0x011c80,1, +0x011c88,16, +0x011d00,11, +0x011d40,3, +0x011d50,12, +0x011d84,19, +0x011e00,1, +0x011e18,5, +0x011e30,2, +0x011e3c,9, +0x011e84,1, +0x011e90,4, +0x011ea4,1, +0x011eac,7, +0x011ee8,3, +0x011f00,8, +0x011f40,6, +0x011f60,3, +0x011f80,8, +0x011fb8,19, +0x012008,14, +0x012080,1, +0x012088,16, +0x012100,11, +0x012140,3, +0x012150,12, +0x012184,19, +0x012200,1, +0x012218,5, +0x012230,2, +0x01223c,9, +0x012284,1, +0x012290,4, +0x0122a4,1, +0x0122ac,7, +0x0122e8,3, +0x012300,8, +0x012340,6, +0x012360,3, +0x012380,8, +0x0123b8,19, +0x012408,14, +0x012480,1, +0x012488,16, +0x012500,11, +0x012540,3, +0x012550,12, +0x012584,19, +0x012600,1, +0x012618,5, +0x012630,2, +0x01263c,9, +0x012684,1, +0x012690,4, +0x0126a4,1, +0x0126ac,7, +0x0126e8,3, +0x012700,8, +0x012740,6, +0x012760,3, +0x012780,8, +0x0127b8,19, +0x012808,14, +0x012880,1, +0x012888,16, +0x012900,11, +0x012940,3, +0x012950,12, +0x012984,19, +0x012a00,1, +0x012a18,5, +0x012a30,2, +0x012a3c,9, +0x012a84,1, +0x012a90,4, +0x012aa4,1, +0x012aac,7, +0x012ae8,3, +0x012b00,8, +0x012b40,6, +0x012b60,3, +0x012b80,8, +0x012bb8,19, +0x012c08,14, +0x012c80,1, +0x012c88,16, +0x012d00,11, +0x012d40,3, +0x012d50,12, +0x012d84,19, +0x012e00,1, +0x012e18,5, +0x012e30,2, +0x012e3c,9, +0x012e84,1, +0x012e90,4, +0x012ea4,1, +0x012eac,7, +0x012ee8,3, +0x012f00,8, +0x012f40,6, +0x012f60,3, +0x012f80,8, +0x012fb8,19, +0x013008,14, +0x013080,1, +0x013088,16, +0x013100,11, +0x013140,3, +0x013150,12, +0x013184,19, +0x013200,1, +0x013218,5, +0x013230,2, +0x01323c,9, +0x013284,1, +0x013290,4, +0x0132a4,1, +0x0132ac,7, +0x0132e8,3, +0x013300,8, +0x013340,6, +0x013360,3, +0x013380,8, +0x0133b8,19, +0x013408,14, +0x013480,1, +0x013488,16, +0x013500,11, +0x013540,3, +0x013550,12, +0x013584,19, +0x013600,1, +0x013618,5, +0x013630,2, +0x01363c,9, +0x013684,1, +0x013690,4, +0x0136a4,1, +0x0136ac,7, +0x0136e8,3, +0x013700,8, +0x013740,6, +0x013760,3, +0x013780,8, +0x0137b8,19, +0x013808,14, +0x013880,1, +0x013888,16, +0x013900,11, +0x013940,3, +0x013950,12, +0x013984,19, +0x013a00,1, +0x013a18,5, +0x013a30,2, +0x013a3c,9, +0x013a84,1, +0x013a90,4, +0x013aa4,1, +0x013aac,7, +0x013ae8,3, +0x013b00,8, +0x013b40,6, +0x013b60,3, +0x013b80,8, +0x013bb8,19, +0x013c08,14, +0x013c80,1, +0x013c88,16, +0x013d00,11, +0x013d40,3, +0x013d50,12, +0x013d84,19, +0x013e00,1, +0x013e18,5, +0x013e30,2, +0x013e3c,9, +0x013e84,1, +0x013e90,4, +0x013ea4,1, +0x013eac,7, +0x013ee8,3, +0x013f00,8, +0x013f40,6, +0x013f60,3, +0x013f80,8, +0x013fb8,19, +0x014008,14, +0x014080,1, +0x014088,16, +0x014100,11, +0x014140,3, +0x014150,12, +0x014184,19, +0x014200,1, +0x014218,5, +0x014230,2, +0x01423c,9, +0x014284,1, +0x014290,4, +0x0142a4,1, +0x0142ac,7, +0x0142e8,3, +0x014300,8, +0x014340,6, +0x014360,3, +0x014380,8, +0x0143b8,19, +0x014408,14, +0x014480,1, +0x014488,16, +0x014500,11, +0x014540,3, +0x014550,12, +0x014584,19, +0x014600,1, +0x014618,5, +0x014630,2, +0x01463c,9, +0x014684,1, +0x014690,4, +0x0146a4,1, +0x0146ac,7, +0x0146e8,3, +0x014700,8, +0x014740,6, +0x014760,3, +0x014780,8, +0x0147b8,19, +0x014808,14, +0x014880,1, +0x014888,16, +0x014900,11, +0x014940,3, +0x014950,12, +0x014984,19, +0x014a00,1, +0x014a18,5, +0x014a30,2, +0x014a3c,9, +0x014a84,1, +0x014a90,4, +0x014aa4,1, +0x014aac,7, +0x014ae8,3, +0x014b00,8, +0x014b40,6, +0x014b60,3, +0x014b80,8, +0x014bb8,19, +0x014c08,14, +0x014c80,1, +0x014c88,16, +0x014d00,11, +0x014d40,3, +0x014d50,12, +0x014d84,19, +0x014e00,1, +0x014e18,5, +0x014e30,2, +0x014e3c,9, +0x014e84,1, +0x014e90,4, +0x014ea4,1, +0x014eac,7, +0x014ee8,3, +0x014f00,8, +0x014f40,6, +0x014f60,3, +0x014f80,8, +0x014fb8,19, +0x015008,14, +0x015080,1, +0x015088,16, +0x015100,11, +0x015140,3, +0x015150,12, +0x015184,19, +0x015200,1, +0x015218,5, +0x015230,2, +0x01523c,9, +0x015284,1, +0x015290,4, +0x0152a4,1, +0x0152ac,7, +0x0152e8,3, +0x015300,8, +0x015340,6, +0x015360,3, +0x015380,8, +0x0153b8,19, +0x015408,14, +0x015480,1, +0x015488,16, +0x015500,11, +0x015540,3, +0x015550,12, +0x015584,19, +0x015600,1, +0x015618,5, +0x015630,2, +0x01563c,9, +0x015684,1, +0x015690,4, +0x0156a4,1, +0x0156ac,7, +0x0156e8,3, +0x015700,8, +0x015740,6, +0x015760,3, +0x015780,8, +0x0157b8,19, +0x015808,14, +0x015880,1, +0x015888,16, +0x015900,11, +0x015940,3, +0x015950,12, +0x015984,19, +0x015a00,1, +0x015a18,5, +0x015a30,2, +0x015a3c,9, +0x015a84,1, +0x015a90,4, +0x015aa4,1, +0x015aac,7, +0x015ae8,3, +0x015b00,8, +0x015b40,6, +0x015b60,3, +0x015b80,8, +0x015bb8,19, +0x015c08,14, +0x015c80,1, +0x015c88,16, +0x015d00,11, +0x015d40,3, +0x015d50,12, +0x015d84,19, +0x015e00,1, +0x015e18,5, +0x015e30,2, +0x015e3c,9, +0x015e84,1, +0x015e90,4, +0x015ea4,1, +0x015eac,7, +0x015ee8,3, +0x015f00,8, +0x015f40,6, +0x015f60,3, +0x015f80,8, +0x015fb8,19, +0x016008,14, +0x016080,1, +0x016088,16, +0x016100,11, +0x016140,3, +0x016150,12, +0x016184,19, +0x016200,1, +0x016218,5, +0x016230,2, +0x01623c,9, +0x016284,1, +0x016290,4, +0x0162a4,1, +0x0162ac,7, +0x0162e8,3, +0x016300,8, +0x016340,6, +0x016360,3, +0x016380,8, +0x0163b8,19, +0x016408,14, +0x016480,1, +0x016488,16, +0x016500,11, +0x016540,3, +0x016550,12, +0x016584,19, +0x016600,1, +0x016618,5, +0x016630,2, +0x01663c,9, +0x016684,1, +0x016690,4, +0x0166a4,1, +0x0166ac,7, +0x0166e8,3, +0x016700,8, +0x016740,6, +0x016760,3, +0x016780,8, +0x0167b8,19, +0x016808,14, +0x016880,1, +0x016888,16, +0x016900,11, +0x016940,3, +0x016950,12, +0x016984,19, +0x016a00,1, +0x016a18,5, +0x016a30,2, +0x016a3c,9, +0x016a84,1, +0x016a90,4, +0x016aa4,1, +0x016aac,7, +0x016ae8,3, +0x016b00,8, +0x016b40,6, +0x016b60,3, +0x016b80,8, +0x016bb8,19, +0x016c08,14, +0x016c80,1, +0x016c88,16, +0x016d00,11, +0x016d40,3, +0x016d50,12, +0x016d84,19, +0x016e00,1, +0x016e18,5, +0x016e30,2, +0x016e3c,9, +0x016e84,1, +0x016e90,4, +0x016ea4,1, +0x016eac,7, +0x016ee8,3, +0x016f00,8, +0x016f40,6, +0x016f60,3, +0x016f80,8, +0x016fb8,19, +0x017008,14, +0x017080,1, +0x017088,16, +0x017100,11, +0x017140,3, +0x017150,12, +0x017184,19, +0x017200,1, +0x017218,5, +0x017230,2, +0x01723c,9, +0x017284,1, +0x017290,4, +0x0172a4,1, +0x0172ac,7, +0x0172e8,3, +0x017300,8, +0x017340,6, +0x017360,3, +0x017380,8, +0x0173b8,19, +0x017408,14, +0x017480,1, +0x017488,16, +0x017500,11, +0x017540,3, +0x017550,12, +0x017584,19, +0x017600,1, +0x017618,5, +0x017630,2, +0x01763c,9, +0x017684,1, +0x017690,4, +0x0176a4,1, +0x0176ac,7, +0x0176e8,3, +0x017700,8, +0x017740,6, +0x017760,3, +0x017780,8, +0x0177b8,19, +0x017808,14, +0x017880,1, +0x017888,16, +0x017900,11, +0x017940,3, +0x017950,12, +0x017984,19, +0x017a00,1, +0x017a18,5, +0x017a30,2, +0x017a3c,9, +0x017a84,1, +0x017a90,4, +0x017aa4,1, +0x017aac,7, +0x017ae8,3, +0x017b00,8, +0x017b40,6, +0x017b60,3, +0x017b80,8, +0x017bb8,19, +0x017c08,14, +0x017c80,1, +0x017c88,16, +0x017d00,11, +0x017d40,3, +0x017d50,12, +0x017d84,19, +0x017e00,1, +0x017e18,5, +0x017e30,2, +0x017e3c,9, +0x017e84,1, +0x017e90,4, +0x017ea4,1, +0x017eac,7, +0x017ee8,3, +0x017f00,8, +0x017f40,6, +0x017f60,3, +0x017f80,8, +0x017fb8,19, +0x018008,14, +0x018080,1, +0x018088,16, +0x018100,11, +0x018140,3, +0x018150,12, +0x018184,19, +0x018200,1, +0x018218,5, +0x018230,2, +0x01823c,9, +0x018284,1, +0x018290,4, +0x0182a4,1, +0x0182ac,7, +0x0182e8,3, +0x018300,8, +0x018340,6, +0x018360,3, +0x018380,8, +0x0183b8,19, +0x018408,14, +0x018480,1, +0x018488,16, +0x018500,11, +0x018540,3, +0x018550,12, +0x018584,19, +0x018600,1, +0x018618,5, +0x018630,2, +0x01863c,9, +0x018684,1, +0x018690,4, +0x0186a4,1, +0x0186ac,7, +0x0186e8,3, +0x018700,8, +0x018740,6, +0x018760,3, +0x018780,8, +0x0187b8,19, +0x018808,14, +0x018880,1, +0x018888,16, +0x018900,11, +0x018940,3, +0x018950,12, +0x018984,19, +0x018a00,1, +0x018a18,5, +0x018a30,2, +0x018a3c,9, +0x018a84,1, +0x018a90,4, +0x018aa4,1, +0x018aac,7, +0x018ae8,3, +0x018b00,8, +0x018b40,6, +0x018b60,3, +0x018b80,8, +0x018bb8,19, +0x018c08,14, +0x018c80,1, +0x018c88,16, +0x018d00,11, +0x018d40,3, +0x018d50,12, +0x018d84,19, +0x018e00,1, +0x018e18,5, +0x018e30,2, +0x018e3c,9, +0x018e84,1, +0x018e90,4, +0x018ea4,1, +0x018eac,7, +0x018ee8,3, +0x018f00,8, +0x018f40,6, +0x018f60,3, +0x018f80,8, +0x018fb8,19, +0x019028,1, +0x019050,1, +0x019078,1, +0x0190a0,1, +0x0191ac,1, +0x0191d8,4, +0x019200,6, +0x019220,6, +0x019240,3, +0x019400,13, +0x019440,6, +0x019460,3, +0x019480,3, +0x019490,3, +0x0194a0,6, +0x0194bc,2, +0x019500,2, 0x020000,1, 0x020008,10, 0x020034,16, @@ -1137,24 +1687,6 @@ 0x023e04,3, 0x023e14,4, 0x023ff0,1, -0x024800,2, -0x02480c,37, -0x0248a4,64, -0x024a00,84, -0x024b54,2, -0x024b7c,1, -0x024b84,1, -0x024b8c,4, -0x024ba4,1, -0x024bac,75, -0x024d00,60, -0x024dfc,7, -0x024e20,6, -0x024e40,6, -0x024e60,6, -0x024e80,3, -0x024f00,14, -0x024f40,1, 0x025000,4, 0x025028,4, 0x025050,4, @@ -1400,24 +1932,6 @@ 0x02be04,3, 0x02be14,4, 0x02bff0,1, -0x02c800,2, -0x02c80c,37, -0x02c8a4,64, -0x02ca00,84, -0x02cb54,2, -0x02cb7c,1, -0x02cb84,1, -0x02cb8c,4, -0x02cba4,1, -0x02cbac,75, -0x02cd00,60, -0x02cdfc,7, -0x02ce20,6, -0x02ce40,6, -0x02ce60,6, -0x02ce80,3, -0x02cf00,14, -0x02cf40,1, 0x02d000,4, 0x02d028,4, 0x02d050,4, @@ -1439,143 +1953,219 @@ 0x02d440,3, 0x02d500,13, 0x02d900,1, -0x030000,9, -0x030030,8, -0x030080,9, -0x0300b0,8, -0x030100,9, -0x030130,8, -0x030180,9, -0x0301b0,8, -0x030200,9, -0x030230,8, -0x030280,9, -0x0302b0,8, -0x030300,9, -0x030330,8, -0x030380,9, -0x0303b0,8, -0x030400,9, -0x030430,8, -0x030480,9, -0x0304b0,8, -0x030500,9, -0x030530,8, -0x030580,9, -0x0305b0,8, -0x030600,9, -0x030630,8, -0x030680,9, -0x0306b0,8, -0x030700,9, -0x030730,8, -0x030780,9, -0x0307b0,8, -0x030800,9, -0x030830,8, -0x030880,9, -0x0308b0,8, -0x030900,9, -0x030930,8, -0x030980,9, -0x0309b0,8, -0x030a00,9, -0x030a30,8, -0x030a80,9, -0x030ab0,8, -0x030b00,9, -0x030b30,8, -0x030b80,9, -0x030bb0,8, -0x030c00,9, -0x030c30,8, -0x030c80,9, -0x030cb0,8, -0x030d00,9, -0x030d30,8, -0x030d80,9, -0x030db0,8, -0x030e00,9, -0x030e30,8, -0x030e80,9, -0x030eb0,8, -0x030f00,9, -0x030f30,8, -0x030f80,9, -0x030fb0,8, -0x031000,9, -0x031030,8, -0x031080,9, -0x0310b0,8, -0x031100,9, -0x031130,8, -0x031180,9, -0x0311b0,8, -0x032400,13, -0x032440,6, -0x032460,3, +0x030000,37, +0x030100,37, +0x030200,37, +0x030300,37, +0x030400,37, +0x030500,37, +0x030600,37, +0x030700,37, +0x030800,37, +0x030900,37, +0x030a00,37, +0x030b00,37, +0x030c00,37, +0x030d00,37, +0x030e00,37, +0x030f00,37, +0x031000,37, +0x031100,37, +0x031200,37, +0x031300,37, +0x031400,37, +0x031500,37, +0x031600,37, +0x031700,37, +0x031800,37, +0x031900,37, +0x031a00,37, +0x031b00,37, +0x031c00,37, +0x031d00,37, +0x031e00,37, +0x031f00,37, +0x032000,6, +0x032020,6, +0x032040,3, +0x032054,2, +0x03206c,1, +0x032080,6, +0x0320a0,6, +0x0320c0,3, +0x0320d4,2, +0x0320ec,1, +0x032100,6, +0x032120,6, +0x032140,3, +0x032154,2, +0x03216c,1, +0x032180,6, +0x0321a0,6, +0x0321c0,3, +0x0321d4,2, +0x0321ec,1, +0x032200,6, +0x032220,6, +0x032240,3, +0x032254,2, +0x03226c,1, +0x032280,6, +0x0322a0,6, +0x0322c0,3, +0x0322d4,2, +0x0322ec,1, +0x032300,6, +0x032320,6, +0x032340,3, +0x032354,2, +0x03236c,1, +0x032380,6, +0x0323a0,6, +0x0323c0,3, +0x0323d4,2, +0x0323ec,1, +0x032400,6, +0x032420,6, +0x032440,3, +0x032454,2, +0x03246c,1, +0x032480,6, +0x0324a0,6, 0x0324c0,3, -0x0324d0,3, +0x0324d4,2, +0x0324ec,1, 0x032500,6, 0x032520,6, -0x032540,6, -0x032560,6, +0x032540,3, +0x032554,2, +0x03256c,1, 0x032580,6, 0x0325a0,6, -0x0325c0,6, -0x0325e0,6, +0x0325c0,3, +0x0325d4,2, +0x0325ec,1, 0x032600,6, 0x032620,6, -0x032640,6, -0x032660,6, +0x032640,3, +0x032654,2, +0x03266c,1, 0x032680,6, 0x0326a0,6, -0x0326c0,6, -0x0326e0,6, +0x0326c0,3, +0x0326d4,2, +0x0326ec,1, 0x032700,6, 0x032720,6, -0x032740,6, -0x032760,6, +0x032740,3, +0x032754,2, +0x03276c,1, 0x032780,6, 0x0327a0,6, -0x0327c0,6, -0x0327e0,6, +0x0327c0,3, +0x0327d4,2, +0x0327ec,1, 0x032800,6, 0x032820,6, -0x032840,6, -0x032860,6, +0x032840,3, +0x032854,2, +0x03286c,1, 0x032880,6, 0x0328a0,6, -0x0328c0,6, -0x0328e0,6, +0x0328c0,3, +0x0328d4,2, +0x0328ec,1, 0x032900,6, 0x032920,6, -0x032940,6, -0x032960,6, -0x032c00,5, -0x032cf4,3, -0x033000,38, +0x032940,3, +0x032954,2, +0x03296c,1, +0x032980,6, +0x0329a0,6, +0x0329c0,3, +0x0329d4,2, +0x0329ec,1, +0x032a00,6, +0x032a20,6, +0x032a40,3, +0x032a54,2, +0x032a6c,1, +0x032a80,6, +0x032aa0,6, +0x032ac0,3, +0x032ad4,2, +0x032aec,1, +0x032b00,6, +0x032b20,6, +0x032b40,3, +0x032b54,2, +0x032b6c,1, +0x032b80,6, +0x032ba0,6, +0x032bc0,3, +0x032bd4,2, +0x032bec,1, +0x032c00,6, +0x032c20,6, +0x032c40,3, +0x032c54,2, +0x032c6c,1, +0x032c80,6, +0x032ca0,6, +0x032cc0,3, +0x032cd4,2, +0x032cec,1, +0x032d00,6, +0x032d20,6, +0x032d40,3, +0x032d54,2, +0x032d6c,1, +0x032d80,6, +0x032da0,6, +0x032dc0,3, +0x032dd4,2, +0x032dec,1, +0x032e00,6, +0x032e20,6, +0x032e40,3, +0x032e54,2, +0x032e6c,1, +0x032e80,6, +0x032ea0,6, +0x032ec0,3, +0x032ed4,2, +0x032eec,1, +0x032f00,6, +0x032f20,6, +0x032f40,3, +0x032f54,2, +0x032f6c,1, +0x032f80,6, +0x032fa0,6, +0x032fc0,3, +0x032fd4,2, +0x032fec,1, +0x033000,6, +0x033020,6, +0x033040,3, +0x033054,2, +0x03306c,1, +0x033080,6, +0x0330a0,6, +0x0330c0,3, +0x0330d4,2, +0x0330ec,1, 0x033100,37, -0x033200,18, -0x033400,6, -0x033420,6, -0x033440,6, -0x033460,6, -0x033480,6, -0x0334a0,6, -0x0334c0,6, -0x0334e0,6, -0x033500,6, -0x033520,6, -0x033540,6, -0x033560,6, -0x033580,6, -0x0335a0,6, -0x0335c0,6, -0x0335e0,6, -0x033600,6, -0x033620,6, -0x033640,3, +0x033200,13, +0x033240,6, +0x033260,3, +0x0332c0,3, +0x0332d0,3, +0x033300,7, +0x0333fc,33, +0x033490,2, +0x033500,33, +0x033600,2, 0x033800,6, 0x033820,6, 0x033840,6, @@ -1592,140 +2182,206 @@ 0x0339a0,6, 0x0339c0,6, 0x0339e0,6, -0x033a00,6, -0x033a20,6, -0x033a40,6, -0x033a60,3, -0x033c00,2, +0x033a00,3, +0x033c00,6, +0x033c20,6, +0x033c40,6, +0x033c60,6, +0x033c80,6, +0x033ca0,6, +0x033cc0,6, +0x033ce0,6, +0x033d00,6, +0x033d20,6, +0x033d40,6, +0x033d60,6, +0x033d80,6, +0x033da0,6, +0x033dc0,6, +0x033de0,6, +0x033e00,6, +0x033e20,3, +0x034000,8, +0x034024,13, +0x034068,1, +0x034070,12, +0x0340a4,13, +0x0340e8,1, +0x0340f0,12, +0x034124,13, +0x034168,1, +0x034170,12, +0x0341a4,13, +0x0341e8,1, +0x0341f0,12, +0x034224,13, +0x034268,1, +0x034270,12, +0x0342a4,13, +0x0342e8,1, +0x0342f0,12, +0x034324,13, +0x034368,1, +0x034370,12, +0x0343a4,13, +0x0343e8,1, +0x0343f0,12, +0x034424,13, +0x034468,1, +0x034470,12, +0x0344a4,13, +0x0344e8,1, +0x0344f0,12, +0x034524,13, +0x034568,1, +0x034570,12, +0x0345a4,13, +0x0345e8,1, +0x0345f0,12, +0x034624,13, +0x034668,1, +0x034670,12, +0x0346a4,13, +0x0346e8,1, +0x0346f0,12, +0x034724,13, +0x034768,1, +0x034770,12, +0x0347a4,13, +0x0347e8,1, +0x0347f0,12, +0x034824,13, +0x034868,1, +0x034870,12, +0x0348a4,13, +0x0348e8,1, +0x0348f0,12, +0x034924,13, +0x034968,1, +0x034970,12, +0x0349a4,13, +0x0349e8,1, +0x0349f0,12, +0x034a24,13, +0x034a68,1, +0x034a70,12, +0x034aa4,13, +0x034ae8,1, +0x034af0,12, +0x034b24,13, +0x034b68,1, +0x034b70,12, +0x034ba4,13, +0x034be8,1, +0x034bf0,12, +0x034c24,13, +0x034c68,1, +0x034c70,12, +0x034ca4,13, +0x034ce8,1, +0x034cf0,12, +0x034d24,13, +0x034d68,1, +0x034d70,12, +0x034da4,13, +0x034de8,1, +0x034df0,12, +0x034e24,13, +0x034e68,1, +0x034e70,12, +0x034ea4,13, +0x034ee8,1, +0x034ef0,12, +0x034f24,13, +0x034f68,1, +0x034f70,12, +0x034fa4,13, +0x034fe8,1, +0x034ff0,4, 0x035200,2, 0x035800,6, -0x035820,4, -0x035840,8, +0x035828,2, 0x03587c,7, -0x0358a0,4, -0x0358c0,8, +0x0358a8,2, 0x0358fc,7, -0x035920,4, -0x035940,8, +0x035928,2, 0x03597c,7, -0x0359a0,4, -0x0359c0,8, +0x0359a8,2, 0x0359fc,7, -0x035a20,4, -0x035a40,8, +0x035a28,2, 0x035a7c,7, -0x035aa0,4, -0x035ac0,8, +0x035aa8,2, 0x035afc,7, -0x035b20,4, -0x035b40,8, +0x035b28,2, 0x035b7c,7, -0x035ba0,4, -0x035bc0,8, +0x035ba8,2, 0x035bfc,7, -0x035c20,4, -0x035c40,8, +0x035c28,2, 0x035c7c,7, -0x035ca0,4, -0x035cc0,8, +0x035ca8,2, 0x035cfc,7, -0x035d20,4, -0x035d40,8, +0x035d28,2, 0x035d7c,7, -0x035da0,4, -0x035dc0,8, +0x035da8,2, 0x035dfc,7, -0x035e20,4, -0x035e40,8, +0x035e28,2, 0x035e7c,7, -0x035ea0,4, -0x035ec0,8, +0x035ea8,2, 0x035efc,7, -0x035f20,4, -0x035f40,8, +0x035f28,2, 0x035f7c,7, -0x035fa0,4, -0x035fc0,8, +0x035fa8,2, 0x035ffc,7, -0x036020,4, -0x036040,8, +0x036028,2, 0x03607c,7, -0x0360a0,4, -0x0360c0,8, +0x0360a8,2, 0x0360fc,7, -0x036120,4, -0x036140,8, +0x036128,2, 0x03617c,7, -0x0361a0,4, -0x0361c0,8, +0x0361a8,2, 0x0361fc,7, -0x036220,4, -0x036240,8, +0x036228,2, 0x03627c,7, -0x0362a0,4, -0x0362c0,8, +0x0362a8,2, 0x0362fc,7, -0x036320,4, -0x036340,8, +0x036328,2, 0x03637c,7, -0x0363a0,4, -0x0363c0,8, +0x0363a8,2, 0x0363fc,7, -0x036420,4, -0x036440,8, +0x036428,2, 0x03647c,7, -0x0364a0,4, -0x0364c0,8, +0x0364a8,2, 0x0364fc,7, -0x036520,4, -0x036540,8, +0x036528,2, 0x03657c,7, -0x0365a0,4, -0x0365c0,8, +0x0365a8,2, 0x0365fc,7, -0x036620,4, -0x036640,8, +0x036628,2, 0x03667c,7, -0x0366a0,4, -0x0366c0,8, +0x0366a8,2, 0x0366fc,7, -0x036720,4, -0x036740,8, +0x036728,2, 0x03677c,7, -0x0367a0,4, -0x0367c0,8, -0x0367fc,7, -0x036820,4, -0x036840,8, -0x03687c,7, -0x0368a0,4, -0x0368c0,8, -0x0368fc,7, -0x036920,4, -0x036940,8, -0x03697c,7, -0x0369a0,4, -0x0369c0,8, -0x0369fc,7, -0x036a20,4, +0x0367a8,2, +0x0367fc,1, +0x036a00,6, +0x036a28,2, 0x036a40,8, -0x036a7c,7, -0x036aa0,4, -0x036ac0,8, -0x036afc,1, -0x037408,13, +0x036a7c,1, +0x037410,3, +0x03742c,4, 0x037440,1, 0x037448,1, 0x03745c,4, -0x037470,10, +0x037480,6, 0x0374a0,6, 0x0374c0,6, 0x0374e0,3, -0x037800,4, -0x037828,4, -0x037850,4, -0x037878,4, -0x0378a0,4, +0x037800,6, +0x037828,6, +0x037850,6, +0x037878,6, +0x0378a0,6, 0x0379ac,1, 0x0379d8,4, 0x037a00,6, @@ -1736,35 +2392,32 @@ 0x037aa0,6, 0x037ac0,6, 0x037ae0,6, -0x037b00,3, +0x037b00,6, +0x037b20,6, +0x037b40,6, +0x037b60,6, +0x037b80,3, 0x037c00,13, -0x037c40,3, -0x037c50,6, +0x037c40,1, 0x037c6c,1, 0x037c80,6, 0x037ca0,6, -0x037cc0,6, -0x037ce0,3, +0x037cc0,3, 0x037d00,1, -0x037d80,6, -0x037da0,6, -0x037dc0,6, -0x037de0,3, -0x037e00,1, -0x037e08,4, +0x037e0c,3, 0x037ffc,1, 0x057000,2, -0x05700c,9, -0x057040,6, -0x057060,6, -0x057080,2, -0x05708c,5, -0x0570a4,3, -0x0570e0,1, -0x057500,2, -0x057518,5, -0x057540,6, +0x05700c,3, +0x057028,2, +0x057038,47, +0x057500,6, +0x057520,6, +0x057540,3, 0x057580,10, +0x0575c0,15, +0x057600,2, +0x057618,5, +0x057630,1, 0x057800,6, 0x057820,3, 0x057840,2, @@ -2773,8 +3426,10 @@ 0x0c1500,13, 0x0c1540,3, 0x0c2000,14, -0x0c2070,3, +0x0c2040,6, +0x0c2060,6, 0x0c2080,6, +0x0c20a0,3, 0x0c2100,9, 0x0c2204,1, 0x0c220c,6, @@ -2933,190 +3588,250 @@ 0x0cb400,5, 0x0cb59c,1, 0x0cb5ac,9, -0x0d0000,5, -0x0d0020,4, -0x0d0034,17, -0x0d0080,1, +0x0d0000,4, +0x0d0014,1, +0x0d0020,3, +0x0d0030,3, +0x0d0040,8, +0x0d007c,2, 0x0d00a0,6, -0x0d0100,5, -0x0d0120,4, -0x0d0134,17, -0x0d0180,1, +0x0d00c0,6, +0x0d00e0,6, +0x0d0100,4, +0x0d0114,1, +0x0d0120,3, +0x0d0130,3, +0x0d0140,8, +0x0d017c,2, 0x0d01a0,6, -0x0d0200,5, -0x0d0220,4, -0x0d0234,17, -0x0d0280,1, +0x0d01c0,6, +0x0d01e0,6, +0x0d0200,4, +0x0d0214,1, +0x0d0220,3, +0x0d0230,3, +0x0d0240,8, +0x0d027c,2, 0x0d02a0,6, -0x0d0300,5, -0x0d0320,4, -0x0d0334,17, -0x0d0380,1, +0x0d02c0,6, +0x0d02e0,6, +0x0d0300,4, +0x0d0314,1, +0x0d0320,3, +0x0d0330,3, +0x0d0340,8, +0x0d037c,2, 0x0d03a0,6, +0x0d03c0,6, +0x0d03e0,6, 0x0d0400,6, 0x0d0440,6, 0x0d0480,3, 0x0d04c0,3, -0x0d0500,6, -0x0d051c,7, -0x0d0540,1, +0x0d0500,2, +0x0d050c,4, +0x0d0520,2, +0x0d052c,4, +0x0d0540,2, 0x0d0c00,13, 0x0d0c40,12, 0x0d0c80,13, 0x0d0cc0,12, -0x0d0d00,6, -0x0d0d20,6, +0x0d0d00,14, +0x0d0d40,2, 0x0d0d80,14, 0x0d0dc0,2, -0x0d0e40,11, +0x0d0e00,11, +0x0d0e40,6, +0x0d0e60,6, 0x0d0e80,6, 0x0d0ea0,6, 0x0d1000,2, -0x0d1010,5, +0x0d1014,4, 0x0d1040,3, 0x0d1050,3, -0x0d1060,32, -0x0d1100,8, -0x0d1140,8, +0x0d1080,42, +0x0d1140,10, 0x0d1180,3, 0x0d1190,2, -0x0d119c,9, -0x0d1218,9, -0x0d1240,3, -0x0d1250,6, -0x0d1280,1, -0x0d1288,6, -0x0d12a4,1, -0x0d12c0,1, -0x0d12c8,6, -0x0d12e4,1, -0x0d1400,8, -0x0d1424,2, +0x0d119c,15, +0x0d1200,9, +0x0d1300,1, +0x0d1308,6, +0x0d1324,10, +0x0d1380,1, +0x0d1388,6, +0x0d13a4,10, +0x0d1400,6, +0x0d1420,6, 0x0d1500,5, 0x0d1520,4, 0x0d1540,5, 0x0d1560,4, 0x0d1800,24, -0x0d1864,5, +0x0d1864,6, 0x0d1880,8, -0x0d1900,13, -0x0d1980,4, -0x0d19a0,6, -0x0d19c0,6, -0x0d19dc,1, -0x0d1a00,6, -0x0d1a1c,1, -0x0d1a40,1, -0x0d1a60,1, -0x0d1a68,23, +0x0d1900,24, +0x0d1964,6, +0x0d1980,8, +0x0d1a00,17, +0x0d1a48,6, +0x0d1a80,17, 0x0d1ac8,6, -0x0d1b00,17, -0x0d1b48,6, -0x0d1b80,12, +0x0d1b00,6, +0x0d1b20,6, +0x0d1b40,3, +0x0d1b80,6, +0x0d1ba0,6, +0x0d1bc0,3, 0x0d1c00,6, 0x0d1c20,6, -0x0d1c40,6, -0x0d1c60,3, -0x0d1d00,6, -0x0d1d20,6, -0x0d1d40,3, -0x0d1d80,6, -0x0d1da0,6, -0x0d1dc0,3, -0x0d2000,5, -0x0d2020,4, -0x0d2034,17, -0x0d2080,1, +0x0d1c40,3, +0x0d1c80,6, +0x0d1ca0,6, +0x0d1cc0,3, +0x0d1d10,2, +0x0d1d1c,1, +0x0d1d50,2, +0x0d1d5c,1, +0x0d1d80,1, +0x0d1da0,1, +0x0d1da8,7, +0x0d1de0,1, +0x0d1de8,19, +0x0d1e40,6, +0x0d1e60,6, +0x0d1e80,6, +0x0d1ea0,6, +0x0d1ec0,7, +0x0d1ee0,7, +0x0d1f00,12, +0x0d1f40,3, +0x0d1f50,8, +0x0d2000,4, +0x0d2014,1, +0x0d2020,3, +0x0d2030,3, +0x0d2040,8, +0x0d207c,2, 0x0d20a0,6, -0x0d2100,5, -0x0d2120,4, -0x0d2134,17, -0x0d2180,1, +0x0d20c0,6, +0x0d20e0,6, +0x0d2100,4, +0x0d2114,1, +0x0d2120,3, +0x0d2130,3, +0x0d2140,8, +0x0d217c,2, 0x0d21a0,6, -0x0d2200,5, -0x0d2220,4, -0x0d2234,17, -0x0d2280,1, +0x0d21c0,6, +0x0d21e0,6, +0x0d2200,4, +0x0d2214,1, +0x0d2220,3, +0x0d2230,3, +0x0d2240,8, +0x0d227c,2, 0x0d22a0,6, -0x0d2300,5, -0x0d2320,4, -0x0d2334,17, -0x0d2380,1, +0x0d22c0,6, +0x0d22e0,6, +0x0d2300,4, +0x0d2314,1, +0x0d2320,3, +0x0d2330,3, +0x0d2340,8, +0x0d237c,2, 0x0d23a0,6, +0x0d23c0,6, +0x0d23e0,6, 0x0d2400,6, 0x0d2440,6, 0x0d2480,3, 0x0d24c0,3, -0x0d2500,6, -0x0d251c,7, -0x0d2540,1, +0x0d2500,2, +0x0d250c,4, +0x0d2520,2, +0x0d252c,4, +0x0d2540,2, 0x0d2c00,13, 0x0d2c40,12, 0x0d2c80,13, 0x0d2cc0,12, -0x0d2d00,6, -0x0d2d20,6, +0x0d2d00,14, +0x0d2d40,2, 0x0d2d80,14, 0x0d2dc0,2, -0x0d2e40,11, +0x0d2e00,11, +0x0d2e40,6, +0x0d2e60,6, 0x0d2e80,6, 0x0d2ea0,6, 0x0d3000,2, -0x0d3010,5, +0x0d3014,4, 0x0d3040,3, 0x0d3050,3, -0x0d3060,32, -0x0d3100,8, -0x0d3140,8, +0x0d3080,42, +0x0d3140,10, 0x0d3180,3, 0x0d3190,2, -0x0d319c,9, -0x0d3218,9, -0x0d3240,3, -0x0d3250,6, -0x0d3280,1, -0x0d3288,6, -0x0d32a4,1, -0x0d32c0,1, -0x0d32c8,6, -0x0d32e4,1, -0x0d3400,8, -0x0d3424,2, +0x0d319c,15, +0x0d3200,9, +0x0d3300,1, +0x0d3308,6, +0x0d3324,10, +0x0d3380,1, +0x0d3388,6, +0x0d33a4,10, +0x0d3400,6, +0x0d3420,6, 0x0d3500,5, 0x0d3520,4, 0x0d3540,5, 0x0d3560,4, 0x0d3800,24, -0x0d3864,5, +0x0d3864,6, 0x0d3880,8, -0x0d3900,13, -0x0d3980,4, -0x0d39a0,6, -0x0d39c0,6, -0x0d39dc,1, -0x0d3a00,6, -0x0d3a1c,1, -0x0d3a40,1, -0x0d3a60,1, -0x0d3a68,23, +0x0d3900,24, +0x0d3964,6, +0x0d3980,8, +0x0d3a00,17, +0x0d3a48,6, +0x0d3a80,17, 0x0d3ac8,6, -0x0d3b00,17, -0x0d3b48,6, -0x0d3b80,12, +0x0d3b00,6, +0x0d3b20,6, +0x0d3b40,3, +0x0d3b80,6, +0x0d3ba0,6, +0x0d3bc0,3, 0x0d3c00,6, 0x0d3c20,6, -0x0d3c40,6, -0x0d3c60,3, -0x0d3d00,6, -0x0d3d20,6, -0x0d3d40,3, -0x0d3d80,6, -0x0d3da0,6, -0x0d3dc0,3, +0x0d3c40,3, +0x0d3c80,6, +0x0d3ca0,6, +0x0d3cc0,3, +0x0d3d10,2, +0x0d3d1c,1, +0x0d3d50,2, +0x0d3d5c,1, +0x0d3d80,1, +0x0d3da0,1, +0x0d3da8,7, +0x0d3de0,1, +0x0d3de8,19, +0x0d3e40,6, +0x0d3e60,6, +0x0d3e80,6, +0x0d3ea0,6, +0x0d3ec0,7, +0x0d3ee0,7, +0x0d3f00,12, +0x0d3f40,3, +0x0d3f50,8, 0x0d7400,5, 0x0d7438,1, 0x0d7444,1, -0x0d7450,2, +0x0d7450,4, 0x0d7540,6, 0x0d7600,1, 0x0d8000,6, @@ -3146,15 +3861,19 @@ 0x0d89f4,3, 0x0d9000,4, 0x0d9020,4, -0x0d9040,3, -0x0d9050,3, -0x0d9080,2, -0x0d90b0,3, -0x0d912c,1, -0x0d9140,6, -0x0d9200,20, -0x0d925c,30, -0x0d9300,24, +0x0d9040,11, +0x0d9070,3, +0x0d9080,4, +0x0d90b0,22, +0x0d9110,2, +0x0d9120,22, +0x0d9180,1, +0x0d91a0,6, +0x0d9200,42, +0x0d92c0,1, +0x0d92c8,3, +0x0d9300,25, +0x0d936c,4, 0x0d9380,2, 0x0d93a0,1, 0x0d93c0,11, @@ -3163,18 +3882,25 @@ 0x0d9480,6, 0x0d9500,6, 0x0d9520,6, +0x0d9540,3, +0x0d9550,7, +0x0d9570,4, 0x0d9800,410, 0x0da000,4, 0x0da020,4, -0x0da040,3, -0x0da050,3, -0x0da080,2, -0x0da0b0,3, -0x0da12c,1, -0x0da140,6, -0x0da200,20, -0x0da25c,30, -0x0da300,24, +0x0da040,11, +0x0da070,3, +0x0da080,4, +0x0da0b0,22, +0x0da110,2, +0x0da120,22, +0x0da180,1, +0x0da1a0,6, +0x0da200,42, +0x0da2c0,1, +0x0da2c8,3, +0x0da300,25, +0x0da36c,4, 0x0da380,2, 0x0da3a0,1, 0x0da3c0,11, @@ -3183,6 +3909,9 @@ 0x0da480,6, 0x0da500,6, 0x0da520,6, +0x0da540,3, +0x0da550,7, +0x0da570,4, 0x0da800,410, 0x0df800,5, 0x0df818,1, @@ -3498,151 +4227,141 @@ 0x0f6d10,10, 0x0f6d3c,3, 0x0f8000,9, -0x0f8048,6, 0x0f8100,6, 0x0f8120,6, 0x0f8140,3, -0x0f8180,6, +0x0f8180,10, 0x0f81c0,3, 0x0f81d0,2, 0x0f8200,9, -0x0f8248,6, 0x0f8300,6, 0x0f8320,6, 0x0f8340,3, -0x0f8380,6, +0x0f8380,10, 0x0f83c0,3, 0x0f83d0,2, 0x0f8400,9, -0x0f8448,6, 0x0f8500,6, 0x0f8520,6, 0x0f8540,3, -0x0f8580,6, +0x0f8580,10, 0x0f85c0,3, 0x0f85d0,2, 0x0f8600,9, -0x0f8648,6, 0x0f8700,6, 0x0f8720,6, 0x0f8740,3, -0x0f8780,6, +0x0f8780,10, 0x0f87c0,3, 0x0f87d0,2, 0x0f8800,9, -0x0f8848,6, 0x0f8900,6, 0x0f8920,6, 0x0f8940,3, -0x0f8980,6, +0x0f8980,10, 0x0f89c0,3, 0x0f89d0,2, 0x0f8a00,9, -0x0f8a48,6, 0x0f8b00,6, 0x0f8b20,6, 0x0f8b40,3, -0x0f8b80,6, +0x0f8b80,10, 0x0f8bc0,3, 0x0f8bd0,2, 0x0f8c00,9, -0x0f8c48,6, 0x0f8d00,6, 0x0f8d20,6, 0x0f8d40,3, -0x0f8d80,6, +0x0f8d80,10, 0x0f8dc0,3, 0x0f8dd0,2, 0x0f8e00,9, -0x0f8e48,6, 0x0f8f00,6, 0x0f8f20,6, 0x0f8f40,3, -0x0f8f80,6, +0x0f8f80,10, 0x0f8fc0,3, 0x0f8fd0,2, 0x0f9000,9, -0x0f9048,6, 0x0f9100,6, 0x0f9120,6, 0x0f9140,3, -0x0f9180,6, +0x0f9180,10, 0x0f91c0,3, 0x0f91d0,2, 0x0f9200,9, -0x0f9248,6, 0x0f9300,6, 0x0f9320,6, 0x0f9340,3, -0x0f9380,6, +0x0f9380,10, 0x0f93c0,3, 0x0f93d0,2, 0x0f9400,9, -0x0f9448,6, 0x0f9500,6, 0x0f9520,6, 0x0f9540,3, -0x0f9580,6, +0x0f9580,10, 0x0f95c0,3, 0x0f95d0,2, 0x0f9600,9, -0x0f9648,6, 0x0f9700,6, 0x0f9720,6, 0x0f9740,3, -0x0f9780,6, +0x0f9780,10, 0x0f97c0,3, 0x0f97d0,2, 0x0f9800,9, -0x0f9848,6, 0x0f9900,6, 0x0f9920,6, 0x0f9940,3, -0x0f9980,6, +0x0f9980,10, 0x0f99c0,3, 0x0f99d0,2, 0x0f9a00,9, -0x0f9a48,6, 0x0f9b00,6, 0x0f9b20,6, 0x0f9b40,3, -0x0f9b80,6, +0x0f9b80,10, 0x0f9bc0,3, 0x0f9bd0,2, 0x0f9c00,9, -0x0f9c48,6, 0x0f9d00,6, 0x0f9d20,6, 0x0f9d40,3, -0x0f9d80,6, +0x0f9d80,10, 0x0f9dc0,3, 0x0f9dd0,2, 0x0f9e00,9, -0x0f9e48,6, 0x0f9f00,6, 0x0f9f20,6, 0x0f9f40,3, -0x0f9f80,6, +0x0f9f80,10, 0x0f9fc0,3, 0x0f9fd0,2, 0x0fa000,9, -0x0fa048,6, -0x0fa100,6, +0x0fa080,10, +0x0fa0c0,1, +0x0fa0e0,2, +0x0fa0ec,1, +0x0fa0f4,9, 0x0fa120,6, 0x0fa140,3, -0x0fa180,6, +0x0fa180,10, 0x0fa1c0,3, 0x0fa1d0,2, +0x0fa1e8,2, 0x0fa200,9, -0x0fa248,6, -0x0fa300,6, +0x0fa280,10, +0x0fa2c0,1, +0x0fa2e0,2, +0x0fa2ec,1, +0x0fa2f4,9, 0x0fa320,6, 0x0fa340,3, -0x0fa380,6, +0x0fa380,8, 0x0fa3c0,3, 0x0fa3d0,2, 0x0fa400,9, -0x0fa448,6, 0x0fa480,10, 0x0fa4c0,1, 0x0fa4e0,2, @@ -3650,11 +4369,10 @@ 0x0fa4f4,9, 0x0fa520,6, 0x0fa540,3, -0x0fa580,4, +0x0fa580,8, 0x0fa5c0,3, -0x0fa5d0,6, +0x0fa5d0,2, 0x0fa600,9, -0x0fa648,6, 0x0fa680,10, 0x0fa6c0,1, 0x0fa6e0,2, @@ -3662,11 +4380,11 @@ 0x0fa6f4,9, 0x0fa720,6, 0x0fa740,3, -0x0fa780,4, +0x0fa780,10, 0x0fa7c0,3, -0x0fa7d0,6, +0x0fa7d0,2, +0x0fa7e8,2, 0x0fa800,9, -0x0fa848,6, 0x0fa880,10, 0x0fa8c0,1, 0x0fa8e0,2, @@ -3676,9 +4394,8 @@ 0x0fa940,3, 0x0fa980,6, 0x0fa9c0,3, -0x0fa9d0,2, +0x0fa9d0,4, 0x0faa00,9, -0x0faa48,6, 0x0faa80,10, 0x0faac0,1, 0x0faae0,2, @@ -3688,9 +4405,8 @@ 0x0fab40,3, 0x0fab80,6, 0x0fabc0,3, -0x0fabd0,2, +0x0fabd0,4, 0x0fac00,9, -0x0fac48,6, 0x0fac80,10, 0x0facc0,1, 0x0face0,2, @@ -3703,7 +4419,6 @@ 0x0fadd0,2, 0x0fade8,2, 0x0fae00,9, -0x0fae48,6, 0x0fae80,10, 0x0faec0,1, 0x0faee0,2, @@ -3711,7 +4426,7 @@ 0x0faef4,9, 0x0faf20,6, 0x0faf40,3, -0x0faf80,8, +0x0faf80,12, 0x0fafc0,3, 0x0fafd0,2, 0x100000,1, @@ -6370,10 +7085,10 @@ 0x17e240,6, 0x17e260,6, 0x17e280,3, -0x1c0000,6, -0x1c0028,6, -0x1c0050,6, -0x1c0078,6, +0x1c0000,4, +0x1c0028,4, +0x1c0050,4, +0x1c0078,4, 0x1c00a0,3, 0x1c01ac,1, 0x1c01d8,4, @@ -6385,43 +7100,59 @@ 0x1c02a0,6, 0x1c02c0,6, 0x1c02e0,6, -0x1c0300,6, -0x1c0320,6, -0x1c0340,6, -0x1c0360,6, -0x1c0380,3, -0x1c0400,8, -0x1c0480,2, -0x1c0800,64, -0x1c0b00,1, -0x1c0b10,68, -0x1c0c28,1, -0x1c0c30,1, -0x1c0c38,1, -0x1c0c40,2, -0x1c0c50,2, -0x1c0d00,8, -0x1c0d80,1, -0x1c0d98,11, -0x1c1000,7, -0x1c1020,7, -0x1c1040,1, -0x1c1200,1, +0x1c0300,3, +0x1c0400,6, +0x1c0420,6, +0x1c0440,6, +0x1c0460,6, +0x1c0480,6, +0x1c04a0,6, +0x1c04c0,6, +0x1c04e0,6, +0x1c0500,6, +0x1c0520,3, +0x1c0600,6, +0x1c0620,2, +0x1c0630,1, +0x1c0a00,64, +0x1c0d00,66, +0x1c0e10,4, +0x1c0e28,3, +0x1c0e38,1, +0x1c0e40,1, +0x1c0e50,1, +0x1c0f00,14, +0x1c0f80,19, +0x1c0fd0,4, +0x1c1000,37, 0x1c1240,2, -0x1c1280,1, -0x1c1288,3, +0x1c1280,5, 0x1c129c,2, -0x1c12f0,68, 0x1c1614,2, 0x1c1620,2, -0x1c1640,1, -0x1c2000,34, -0x1c2090,3, -0x1c20a0,4, -0x1c2100,33, +0x1c2080,11, +0x1c20b0,2, +0x1c20c0,3, +0x1c20d0,4, +0x1c2180,1, 0x1c21a0,1, -0x1c21b0,2, -0x1c2600,6, +0x1c2200,3, +0x1c2210,3, +0x1c2220,3, +0x1c2230,3, +0x1c2240,3, +0x1c2250,3, +0x1c2260,3, +0x1c2270,3, +0x1c2280,68, +0x1c2584,3, +0x1c2594,3, +0x1c25a4,3, +0x1c25b4,3, +0x1c25c4,3, +0x1c25d4,3, +0x1c25e4,3, +0x1c25f4,9, 0x1c261c,15, 0x1c265c,15, 0x1c269c,15, @@ -6430,84 +7161,277 @@ 0x1c275c,15, 0x1c279c,15, 0x1c27dc,9, +0x1c2e00,11, +0x1c2e30,1, +0x1c2e40,5, +0x1c2e60,5, +0x1c2f00,5, +0x1c2f20,1, +0x1c2f30,15, +0x1c2f90,2, 0x1c3004,4, 0x1c3018,2, -0x1c3040,9, -0x1c3080,9, -0x1c30c0,9, -0x1c3100,9, -0x1c3140,9, +0x1c3028,3, +0x1c3040,10, +0x1c3080,10, +0x1c30c0,10, +0x1c3100,10, +0x1c3140,10, +0x1c3184,5, +0x1c319c,2, 0x1c3204,4, 0x1c3218,2, -0x1c3240,9, -0x1c3280,9, -0x1c32c0,9, -0x1c3300,9, -0x1c3340,9, +0x1c3228,3, +0x1c3240,10, +0x1c3280,10, +0x1c32c0,10, +0x1c3300,10, +0x1c3340,10, +0x1c3384,5, +0x1c339c,2, 0x1c3404,4, 0x1c3418,2, -0x1c3440,9, -0x1c3480,9, -0x1c34c0,9, -0x1c3500,9, -0x1c3540,9, +0x1c3428,3, +0x1c3440,10, +0x1c3480,10, +0x1c34c0,10, +0x1c3500,10, +0x1c3540,10, +0x1c3584,5, +0x1c359c,2, 0x1c3604,4, 0x1c3618,2, -0x1c3640,9, -0x1c3680,9, -0x1c36c0,9, -0x1c3700,9, -0x1c3740,9, +0x1c3628,3, +0x1c3640,10, +0x1c3680,10, +0x1c36c0,10, +0x1c3700,10, +0x1c3740,10, +0x1c3784,5, +0x1c379c,2, 0x1c3804,4, 0x1c3818,2, -0x1c3840,9, -0x1c3880,9, -0x1c38c0,9, -0x1c3900,9, -0x1c3940,9, +0x1c3828,3, +0x1c3840,10, +0x1c3880,10, +0x1c38c0,10, +0x1c3900,10, +0x1c3940,10, +0x1c3984,5, +0x1c399c,2, 0x1c3a04,4, 0x1c3a18,2, -0x1c3a40,9, -0x1c3a80,9, -0x1c3ac0,9, -0x1c3b00,9, -0x1c3b40,9, +0x1c3a28,3, +0x1c3a40,10, +0x1c3a80,10, +0x1c3ac0,10, +0x1c3b00,10, +0x1c3b40,10, +0x1c3b84,5, +0x1c3b9c,2, 0x1c3c04,4, 0x1c3c18,2, -0x1c3c40,9, -0x1c3c80,9, -0x1c3cc0,9, -0x1c3d00,9, -0x1c3d40,9, +0x1c3c28,3, +0x1c3c40,10, +0x1c3c80,10, +0x1c3cc0,10, +0x1c3d00,10, +0x1c3d40,10, +0x1c3d84,5, +0x1c3d9c,2, 0x1c3e04,4, 0x1c3e18,2, -0x1c3e40,9, -0x1c3e80,9, -0x1c3ec0,9, -0x1c3f00,9, -0x1c3f40,9, +0x1c3e28,3, +0x1c3e40,10, +0x1c3e80,10, +0x1c3ec0,10, +0x1c3f00,10, +0x1c3f40,10, +0x1c3f84,5, +0x1c3f9c,2, +0x1c4000,4, +0x1c4028,4, +0x1c4050,4, +0x1c4078,4, +0x1c40a0,3, +0x1c41ac,1, +0x1c41d8,4, +0x1c4200,6, +0x1c4220,6, +0x1c4240,6, +0x1c4260,6, +0x1c4280,6, +0x1c42a0,6, +0x1c42c0,6, +0x1c42e0,6, +0x1c4300,3, +0x1c4400,6, +0x1c4420,6, +0x1c4440,6, +0x1c4460,6, +0x1c4480,6, +0x1c44a0,6, +0x1c44c0,6, +0x1c44e0,6, +0x1c4500,6, +0x1c4520,3, +0x1c4600,6, +0x1c4620,2, +0x1c4630,1, +0x1c4a00,64, +0x1c4d00,66, +0x1c4e10,4, +0x1c4e28,3, +0x1c4e38,1, +0x1c4e40,1, +0x1c4e50,1, +0x1c4f00,14, +0x1c4f80,19, +0x1c4fd0,4, +0x1c5000,37, +0x1c5240,2, +0x1c5280,5, +0x1c529c,2, +0x1c5614,2, +0x1c5620,2, +0x1c6080,11, +0x1c60b0,2, +0x1c60c0,3, +0x1c60d0,4, +0x1c6180,1, +0x1c61a0,1, +0x1c6200,3, +0x1c6210,3, +0x1c6220,3, +0x1c6230,3, +0x1c6240,3, +0x1c6250,3, +0x1c6260,3, +0x1c6270,3, +0x1c6280,68, +0x1c6584,3, +0x1c6594,3, +0x1c65a4,3, +0x1c65b4,3, +0x1c65c4,3, +0x1c65d4,3, +0x1c65e4,3, +0x1c65f4,9, +0x1c661c,15, +0x1c665c,15, +0x1c669c,15, +0x1c66dc,15, +0x1c671c,15, +0x1c675c,15, +0x1c679c,15, +0x1c67dc,9, +0x1c6e00,11, +0x1c6e30,1, +0x1c6e40,5, +0x1c6e60,5, +0x1c6f00,5, +0x1c6f20,1, +0x1c6f30,15, +0x1c6f90,2, +0x1c7004,4, +0x1c7018,2, +0x1c7028,3, +0x1c7040,10, +0x1c7080,10, +0x1c70c0,10, +0x1c7100,10, +0x1c7140,10, +0x1c7184,5, +0x1c719c,2, +0x1c7204,4, +0x1c7218,2, +0x1c7228,3, +0x1c7240,10, +0x1c7280,10, +0x1c72c0,10, +0x1c7300,10, +0x1c7340,10, +0x1c7384,5, +0x1c739c,2, +0x1c7404,4, +0x1c7418,2, +0x1c7428,3, +0x1c7440,10, +0x1c7480,10, +0x1c74c0,10, +0x1c7500,10, +0x1c7540,10, +0x1c7584,5, +0x1c759c,2, +0x1c7604,4, +0x1c7618,2, +0x1c7628,3, +0x1c7640,10, +0x1c7680,10, +0x1c76c0,10, +0x1c7700,10, +0x1c7740,10, +0x1c7784,5, +0x1c779c,2, +0x1c7804,4, +0x1c7818,2, +0x1c7828,3, +0x1c7840,10, +0x1c7880,10, +0x1c78c0,10, +0x1c7900,10, +0x1c7940,10, +0x1c7984,5, +0x1c799c,2, +0x1c7a04,4, +0x1c7a18,2, +0x1c7a28,3, +0x1c7a40,10, +0x1c7a80,10, +0x1c7ac0,10, +0x1c7b00,10, +0x1c7b40,10, +0x1c7b84,5, +0x1c7b9c,2, +0x1c7c04,4, +0x1c7c18,2, +0x1c7c28,3, +0x1c7c40,10, +0x1c7c80,10, +0x1c7cc0,10, +0x1c7d00,10, +0x1c7d40,10, +0x1c7d84,5, +0x1c7d9c,2, +0x1c7e04,4, +0x1c7e18,2, +0x1c7e28,3, +0x1c7e40,10, +0x1c7e80,10, +0x1c7ec0,10, +0x1c7f00,10, +0x1c7f40,10, +0x1c7f84,5, +0x1c7f9c,2, 0x1c8000,34, 0x1c8100,184, -0x1c8440,16, -0x1c8540,33, +0x1c8460,14, +0x1c85c0,1, 0x1c85e0,1, -0x1c85f0,2, -0x1c8640,34, -0x1c86d0,3, -0x1c86e0,4, -0x1c8740,20, +0x1c86c0,11, +0x1c86f0,2, +0x1c8700,3, +0x1c8710,4, +0x1c8740,9, +0x1c8768,5, 0x1c8810,36, 0x1c88a4,2, 0x1c8920,5, -0x1c9100,5, -0x1c9124,12, -0x1c9164,12, -0x1c91a4,12, -0x1c91e4,12, -0x1c9224,12, -0x1c9264,12, -0x1c92a4,12, -0x1c92e4,7, +0x1c9100,7, +0x1c9120,7, +0x1c9140,7, +0x1c9160,7, +0x1c9180,7, 0x1c9304,1, 0x1c9324,10, 0x1c9384,1, @@ -6518,12 +7442,6 @@ 0x1c94a4,10, 0x1c9504,1, 0x1c9524,10, -0x1c9584,1, -0x1c95a4,10, -0x1c9604,1, -0x1c9624,10, -0x1c9684,1, -0x1c96a4,10, 0x1c9800,2, 0x1c9828,2, 0x1c9850,2, @@ -6538,29 +7456,34 @@ 0x1c9a80,3, 0x1c9c04,1, 0x1c9c0c,4, -0x1c9c20,144, +0x1c9c20,10, +0x1c9c60,10, +0x1c9ca0,10, +0x1c9ce0,10, +0x1c9d40,10, +0x1c9d80,8, +0x1c9dc0,10, +0x1c9e00,5, +0x1c9e20,10, 0x1ca000,34, 0x1ca100,184, -0x1ca440,16, -0x1ca540,33, +0x1ca460,14, +0x1ca5c0,1, 0x1ca5e0,1, -0x1ca5f0,2, -0x1ca640,34, -0x1ca6d0,3, -0x1ca6e0,4, -0x1ca740,20, +0x1ca6c0,11, +0x1ca6f0,2, +0x1ca700,3, +0x1ca710,4, +0x1ca740,9, +0x1ca768,5, 0x1ca810,36, 0x1ca8a4,2, 0x1ca920,5, -0x1cb100,5, -0x1cb124,12, -0x1cb164,12, -0x1cb1a4,12, -0x1cb1e4,12, -0x1cb224,12, -0x1cb264,12, -0x1cb2a4,12, -0x1cb2e4,7, +0x1cb100,7, +0x1cb120,7, +0x1cb140,7, +0x1cb160,7, +0x1cb180,7, 0x1cb304,1, 0x1cb324,10, 0x1cb384,1, @@ -6571,12 +7494,6 @@ 0x1cb4a4,10, 0x1cb504,1, 0x1cb524,10, -0x1cb584,1, -0x1cb5a4,10, -0x1cb604,1, -0x1cb624,10, -0x1cb684,1, -0x1cb6a4,10, 0x1cb800,2, 0x1cb828,2, 0x1cb850,2, @@ -6591,55 +7508,204 @@ 0x1cba80,3, 0x1cbc04,1, 0x1cbc0c,4, -0x1cbc20,144, -0x1d8000,2, -0x1d8028,2, -0x1d8050,2, -0x1d8078,2, -0x1d80a0,2, +0x1cbc20,10, +0x1cbc60,10, +0x1cbca0,10, +0x1cbce0,10, +0x1cbd40,10, +0x1cbd80,8, +0x1cbdc0,10, +0x1cbe00,5, +0x1cbe20,10, +0x1cc000,34, +0x1cc100,184, +0x1cc460,14, +0x1cc5c0,1, +0x1cc5e0,1, +0x1cc6c0,11, +0x1cc6f0,2, +0x1cc700,3, +0x1cc710,4, +0x1cc740,9, +0x1cc768,5, +0x1cc810,36, +0x1cc8a4,2, +0x1cc920,5, +0x1cd100,7, +0x1cd120,7, +0x1cd140,7, +0x1cd160,7, +0x1cd180,7, +0x1cd304,1, +0x1cd324,10, +0x1cd384,1, +0x1cd3a4,10, +0x1cd404,1, +0x1cd424,10, +0x1cd484,1, +0x1cd4a4,10, +0x1cd504,1, +0x1cd524,10, +0x1cd800,2, +0x1cd828,2, +0x1cd850,2, +0x1cd878,2, +0x1cd8a0,5, +0x1cd9ac,1, +0x1cd9d8,4, +0x1cda00,6, +0x1cda20,6, +0x1cda40,6, +0x1cda60,6, +0x1cda80,3, +0x1cdc04,1, +0x1cdc0c,4, +0x1cdc20,10, +0x1cdc60,10, +0x1cdca0,10, +0x1cdce0,10, +0x1cdd40,10, +0x1cdd80,8, +0x1cddc0,10, +0x1cde00,5, +0x1cde20,10, +0x1ce000,34, +0x1ce100,184, +0x1ce460,14, +0x1ce5c0,1, +0x1ce5e0,1, +0x1ce6c0,11, +0x1ce6f0,2, +0x1ce700,3, +0x1ce710,4, +0x1ce740,9, +0x1ce768,5, +0x1ce810,36, +0x1ce8a4,2, +0x1ce920,5, +0x1cf100,7, +0x1cf120,7, +0x1cf140,7, +0x1cf160,7, +0x1cf180,7, +0x1cf304,1, +0x1cf324,10, +0x1cf384,1, +0x1cf3a4,10, +0x1cf404,1, +0x1cf424,10, +0x1cf484,1, +0x1cf4a4,10, +0x1cf504,1, +0x1cf524,10, +0x1cf800,2, +0x1cf828,2, +0x1cf850,2, +0x1cf878,2, +0x1cf8a0,5, +0x1cf9ac,1, +0x1cf9d8,4, +0x1cfa00,6, +0x1cfa20,6, +0x1cfa40,6, +0x1cfa60,6, +0x1cfa80,3, +0x1cfc04,1, +0x1cfc0c,4, +0x1cfc20,10, +0x1cfc60,10, +0x1cfca0,10, +0x1cfce0,10, +0x1cfd40,10, +0x1cfd80,8, +0x1cfdc0,10, +0x1cfe00,5, +0x1cfe20,10, +0x1d8000,1, +0x1d8028,1, +0x1d8050,1, +0x1d8078,1, +0x1d80a0,1, 0x1d81ac,1, 0x1d81d8,4, 0x1d8200,6, 0x1d8220,6, -0x1d8240,6, -0x1d8260,6, -0x1d8280,3, -0x1d8500,2, -0x1d8510,2, -0x1d8520,2, -0x1d8530,2, -0x1d8540,2, -0x1d8550,2, -0x1d8560,2, -0x1d8570,2, -0x1d8580,1, -0x1d8588,6, -0x1d8600,16, -0x1d8700,20, -0x1d8760,2, -0x1d8770,10, -0x1d8800,10, -0x1d8900,1, -0x1d8908,1, -0x1d8910,3, -0x1d9000,11, -0x1d9030,3, -0x1d9058,2, -0x1d907c,2, -0x1d90a0,2, -0x1d90c4,2, -0x1d90e8,2, -0x1d910c,2, -0x1d9130,2, -0x1d9154,2, -0x1d9178,2, -0x1d919c,2, -0x1d91c0,2, -0x1d91e4,2, -0x1d9208,2, -0x1d922c,2, -0x1d9250,2, -0x1d9300,8, +0x1d8240,3, +0x1d8404,1, +0x1d840c,5, +0x1d8424,1, +0x1d842c,5, +0x1d8444,1, +0x1d844c,5, +0x1d8464,1, +0x1d846c,8, +0x1d8504,1, +0x1d850c,5, +0x1d8524,1, +0x1d852c,5, +0x1d8544,1, +0x1d854c,5, +0x1d8564,1, +0x1d856c,8, +0x1d8604,1, +0x1d860c,5, +0x1d8624,1, +0x1d862c,5, +0x1d8644,1, +0x1d864c,5, +0x1d8664,1, +0x1d866c,8, +0x1d8704,1, +0x1d870c,5, +0x1d8724,1, +0x1d872c,5, +0x1d8744,1, +0x1d874c,5, +0x1d8764,1, +0x1d876c,8, +0x1d8804,1, +0x1d880c,5, +0x1d8824,1, +0x1d882c,5, +0x1d8844,1, +0x1d884c,5, +0x1d8864,1, +0x1d886c,8, +0x1d8904,1, +0x1d890c,5, +0x1d8924,1, +0x1d892c,5, +0x1d8944,1, +0x1d894c,5, +0x1d8964,1, +0x1d896c,8, +0x1d8a04,1, +0x1d8a0c,5, +0x1d8a24,1, +0x1d8a2c,5, +0x1d8a44,1, +0x1d8a4c,5, +0x1d8a64,1, +0x1d8a6c,8, +0x1d8b04,1, +0x1d8b0c,5, +0x1d8b24,1, +0x1d8b2c,5, +0x1d8b44,1, +0x1d8b4c,5, +0x1d8b64,1, +0x1d8b6c,8, +0x1d8c00,2, +0x1d8c10,2, +0x1d8c20,2, +0x1d8c30,2, +0x1d8c40,2, +0x1d8c50,2, +0x1d8c60,2, +0x1d8c70,2, +0x1d8c80,1, +0x1d8c88,6, +0x1d8d00,16, 0x1dc004,1, 0x1dc020,1, 0x1dc044,15, @@ -6708,186 +7774,246 @@ 0x1ec260,6, 0x1ec280,3, 0x1ec600,2, -0x200000,5, -0x200020,4, -0x200034,17, -0x200080,1, +0x200000,4, +0x200014,1, +0x200020,3, +0x200030,3, +0x200040,8, +0x20007c,2, 0x2000a0,6, -0x200100,5, -0x200120,4, -0x200134,17, -0x200180,1, +0x2000c0,6, +0x2000e0,6, +0x200100,4, +0x200114,1, +0x200120,3, +0x200130,3, +0x200140,8, +0x20017c,2, 0x2001a0,6, -0x200200,5, -0x200220,4, -0x200234,17, -0x200280,1, +0x2001c0,6, +0x2001e0,6, +0x200200,4, +0x200214,1, +0x200220,3, +0x200230,3, +0x200240,8, +0x20027c,2, 0x2002a0,6, -0x200300,5, -0x200320,4, -0x200334,17, -0x200380,1, +0x2002c0,6, +0x2002e0,6, +0x200300,4, +0x200314,1, +0x200320,3, +0x200330,3, +0x200340,8, +0x20037c,2, 0x2003a0,6, +0x2003c0,6, +0x2003e0,6, 0x200400,6, 0x200440,6, 0x200480,3, 0x2004c0,3, -0x200500,6, -0x20051c,7, -0x200540,1, +0x200500,2, +0x20050c,4, +0x200520,2, +0x20052c,4, +0x200540,2, 0x200c00,13, 0x200c40,12, 0x200c80,13, 0x200cc0,12, -0x200d00,6, -0x200d20,6, +0x200d00,14, +0x200d40,2, 0x200d80,14, 0x200dc0,2, -0x200e40,11, +0x200e00,11, +0x200e40,6, +0x200e60,6, 0x200e80,6, 0x200ea0,6, 0x201000,2, -0x201010,5, +0x201014,4, 0x201040,3, 0x201050,3, -0x201060,32, -0x201100,8, -0x201140,8, +0x201080,42, +0x201140,10, 0x201180,3, 0x201190,2, -0x20119c,9, -0x201218,9, -0x201240,3, -0x201250,6, -0x201280,1, -0x201288,6, -0x2012a4,1, -0x2012c0,1, -0x2012c8,6, -0x2012e4,1, -0x201400,8, -0x201424,2, +0x20119c,15, +0x201200,9, +0x201300,1, +0x201308,6, +0x201324,10, +0x201380,1, +0x201388,6, +0x2013a4,10, +0x201400,6, +0x201420,6, 0x201500,5, 0x201520,4, 0x201540,5, 0x201560,4, 0x201800,24, -0x201864,5, +0x201864,6, 0x201880,8, -0x201900,13, -0x201980,4, -0x2019a0,6, -0x2019c0,6, -0x2019dc,1, -0x201a00,6, -0x201a1c,1, -0x201a40,1, -0x201a60,1, -0x201a68,23, +0x201900,24, +0x201964,6, +0x201980,8, +0x201a00,17, +0x201a48,6, +0x201a80,17, 0x201ac8,6, -0x201b00,17, -0x201b48,6, -0x201b80,12, +0x201b00,6, +0x201b20,6, +0x201b40,3, +0x201b80,6, +0x201ba0,6, +0x201bc0,3, 0x201c00,6, 0x201c20,6, -0x201c40,6, -0x201c60,3, -0x201d00,6, -0x201d20,6, -0x201d40,3, -0x201d80,6, -0x201da0,6, -0x201dc0,3, -0x202000,5, -0x202020,4, -0x202034,17, -0x202080,1, +0x201c40,3, +0x201c80,6, +0x201ca0,6, +0x201cc0,3, +0x201d10,2, +0x201d1c,1, +0x201d50,2, +0x201d5c,1, +0x201d80,1, +0x201da0,1, +0x201da8,7, +0x201de0,1, +0x201de8,19, +0x201e40,6, +0x201e60,6, +0x201e80,6, +0x201ea0,6, +0x201ec0,7, +0x201ee0,7, +0x201f00,12, +0x201f40,3, +0x201f50,8, +0x202000,4, +0x202014,1, +0x202020,3, +0x202030,3, +0x202040,8, +0x20207c,2, 0x2020a0,6, -0x202100,5, -0x202120,4, -0x202134,17, -0x202180,1, +0x2020c0,6, +0x2020e0,6, +0x202100,4, +0x202114,1, +0x202120,3, +0x202130,3, +0x202140,8, +0x20217c,2, 0x2021a0,6, -0x202200,5, -0x202220,4, -0x202234,17, -0x202280,1, +0x2021c0,6, +0x2021e0,6, +0x202200,4, +0x202214,1, +0x202220,3, +0x202230,3, +0x202240,8, +0x20227c,2, 0x2022a0,6, -0x202300,5, -0x202320,4, -0x202334,17, -0x202380,1, +0x2022c0,6, +0x2022e0,6, +0x202300,4, +0x202314,1, +0x202320,3, +0x202330,3, +0x202340,8, +0x20237c,2, 0x2023a0,6, +0x2023c0,6, +0x2023e0,6, 0x202400,6, 0x202440,6, 0x202480,3, 0x2024c0,3, -0x202500,6, -0x20251c,7, -0x202540,1, +0x202500,2, +0x20250c,4, +0x202520,2, +0x20252c,4, +0x202540,2, 0x202c00,13, 0x202c40,12, 0x202c80,13, 0x202cc0,12, -0x202d00,6, -0x202d20,6, +0x202d00,14, +0x202d40,2, 0x202d80,14, 0x202dc0,2, -0x202e40,11, +0x202e00,11, +0x202e40,6, +0x202e60,6, 0x202e80,6, 0x202ea0,6, 0x203000,2, -0x203010,5, +0x203014,4, 0x203040,3, 0x203050,3, -0x203060,32, -0x203100,8, -0x203140,8, +0x203080,42, +0x203140,10, 0x203180,3, 0x203190,2, -0x20319c,9, -0x203218,9, -0x203240,3, -0x203250,6, -0x203280,1, -0x203288,6, -0x2032a4,1, -0x2032c0,1, -0x2032c8,6, -0x2032e4,1, -0x203400,8, -0x203424,2, +0x20319c,15, +0x203200,9, +0x203300,1, +0x203308,6, +0x203324,10, +0x203380,1, +0x203388,6, +0x2033a4,10, +0x203400,6, +0x203420,6, 0x203500,5, 0x203520,4, 0x203540,5, 0x203560,4, 0x203800,24, -0x203864,5, +0x203864,6, 0x203880,8, -0x203900,13, -0x203980,4, -0x2039a0,6, -0x2039c0,6, -0x2039dc,1, -0x203a00,6, -0x203a1c,1, -0x203a40,1, -0x203a60,1, -0x203a68,23, +0x203900,24, +0x203964,6, +0x203980,8, +0x203a00,17, +0x203a48,6, +0x203a80,17, 0x203ac8,6, -0x203b00,17, -0x203b48,6, -0x203b80,12, +0x203b00,6, +0x203b20,6, +0x203b40,3, +0x203b80,6, +0x203ba0,6, +0x203bc0,3, 0x203c00,6, 0x203c20,6, -0x203c40,6, -0x203c60,3, -0x203d00,6, -0x203d20,6, -0x203d40,3, -0x203d80,6, -0x203da0,6, -0x203dc0,3, +0x203c40,3, +0x203c80,6, +0x203ca0,6, +0x203cc0,3, +0x203d10,2, +0x203d1c,1, +0x203d50,2, +0x203d5c,1, +0x203d80,1, +0x203da0,1, +0x203da8,7, +0x203de0,1, +0x203de8,19, +0x203e40,6, +0x203e60,6, +0x203e80,6, +0x203ea0,6, +0x203ec0,7, +0x203ee0,7, +0x203f00,12, +0x203f40,3, +0x203f50,8, 0x204000,29, 0x204078,4, 0x204090,2, @@ -7011,8 +8137,10 @@ 0x205eac,1, 0x205eb4,3, 0x206000,14, -0x206070,3, +0x206040,6, +0x206060,6, 0x206080,6, +0x2060a0,3, 0x206100,9, 0x206204,1, 0x20620c,6, @@ -7057,18 +8185,29 @@ 0x206c94,8, 0x206cb8,9, 0x206ce0,4, -0x207000,6, -0x207020,3, -0x207040,7, -0x207060,6, -0x207100,5, -0x207138,1, -0x207144,1, -0x207150,2, +0x207000,1, +0x207028,1, +0x207050,1, +0x207078,1, +0x2070a0,4, +0x2071ac,1, +0x2071d8,4, +0x207200,6, +0x207220,6, +0x207240,3, +0x207400,5, +0x207438,1, +0x207444,1, +0x207450,4, +0x207500,7, +0x207520,6, +0x207540,6, +0x207560,3, +0x207570,1, 0x208000,6, 0x208020,3, -0x208030,1, -0x208038,7, +0x208030,3, +0x208050,1, 0x208100,6, 0x208120,10, 0x208150,10, @@ -7102,15 +8241,19 @@ 0x2089f4,3, 0x209000,4, 0x209020,4, -0x209040,3, -0x209050,3, -0x209080,2, -0x2090b0,3, -0x20912c,1, -0x209140,6, -0x209200,20, -0x20925c,30, -0x209300,24, +0x209040,11, +0x209070,3, +0x209080,4, +0x2090b0,22, +0x209110,2, +0x209120,22, +0x209180,1, +0x2091a0,6, +0x209200,42, +0x2092c0,1, +0x2092c8,3, +0x209300,25, +0x20936c,4, 0x209380,2, 0x2093a0,1, 0x2093c0,11, @@ -7119,18 +8262,25 @@ 0x209480,6, 0x209500,6, 0x209520,6, +0x209540,3, +0x209550,7, +0x209570,4, 0x209800,410, 0x20a000,4, 0x20a020,4, -0x20a040,3, -0x20a050,3, -0x20a080,2, -0x20a0b0,3, -0x20a12c,1, -0x20a140,6, -0x20a200,20, -0x20a25c,30, -0x20a300,24, +0x20a040,11, +0x20a070,3, +0x20a080,4, +0x20a0b0,22, +0x20a110,2, +0x20a120,22, +0x20a180,1, +0x20a1a0,6, +0x20a200,42, +0x20a2c0,1, +0x20a2c8,3, +0x20a300,25, +0x20a36c,4, 0x20a380,2, 0x20a3a0,1, 0x20a3c0,11, @@ -7139,18 +8289,25 @@ 0x20a480,6, 0x20a500,6, 0x20a520,6, +0x20a540,3, +0x20a550,7, +0x20a570,4, 0x20a800,410, 0x20b000,4, 0x20b020,4, -0x20b040,3, -0x20b050,3, -0x20b080,2, -0x20b0b0,3, -0x20b12c,1, -0x20b140,6, -0x20b200,20, -0x20b25c,30, -0x20b300,24, +0x20b040,11, +0x20b070,3, +0x20b080,4, +0x20b0b0,22, +0x20b110,2, +0x20b120,22, +0x20b180,1, +0x20b1a0,6, +0x20b200,42, +0x20b2c0,1, +0x20b2c8,3, +0x20b300,25, +0x20b36c,4, 0x20b380,2, 0x20b3a0,1, 0x20b3c0,11, @@ -7159,18 +8316,25 @@ 0x20b480,6, 0x20b500,6, 0x20b520,6, +0x20b540,3, +0x20b550,7, +0x20b570,4, 0x20b800,410, 0x20c000,4, 0x20c020,4, -0x20c040,3, -0x20c050,3, -0x20c080,2, -0x20c0b0,3, -0x20c12c,1, -0x20c140,6, -0x20c200,20, -0x20c25c,30, -0x20c300,24, +0x20c040,11, +0x20c070,3, +0x20c080,4, +0x20c0b0,22, +0x20c110,2, +0x20c120,22, +0x20c180,1, +0x20c1a0,6, +0x20c200,42, +0x20c2c0,1, +0x20c2c8,3, +0x20c300,25, +0x20c36c,4, 0x20c380,2, 0x20c3a0,1, 0x20c3c0,11, @@ -7179,6 +8343,9 @@ 0x20c480,6, 0x20c500,6, 0x20c520,6, +0x20c540,3, +0x20c550,7, +0x20c570,4, 0x20c800,410, 0x20f800,5, 0x20f818,1, @@ -7205,23 +8372,30 @@ 0x20fba4,1, 0x20fbac,2, 0x214000,3, -0x214018,3, -0x214100,25, +0x214018,4, +0x214100,56, +0x2141f0,1, 0x214400,3, -0x214418,3, -0x214500,25, -0x214800,1, +0x214418,4, +0x214500,56, +0x2145f0,1, +0x214800,5, +0x214820,3, 0x215000,3, -0x215018,3, -0x215100,25, +0x215018,4, +0x215100,56, +0x2151f0,1, 0x215400,3, -0x215418,3, -0x215500,25, -0x215800,1, +0x215418,4, +0x215500,56, +0x2155f0,1, +0x215800,5, +0x215820,3, 0x216004,7, -0x216024,3, +0x216024,1, +0x216034,3, 0x216300,5, -0x21631c,3, +0x21631c,1, 0x216600,10, 0x216630,1, 0x216680,10, @@ -7231,36 +8405,37 @@ 0x216780,10, 0x2167b0,1, 0x216800,47, -0x216910,12, -0x217000,64, +0x216910,14, +0x216e00,1, +0x217000,65, 0x218000,2, -0x21800c,9, -0x218040,6, -0x218060,6, -0x218080,2, -0x21808c,5, -0x2180a4,3, -0x2180e0,1, -0x218500,2, -0x218518,5, -0x218540,6, +0x21800c,3, +0x218028,2, +0x218038,47, +0x218500,6, +0x218520,6, +0x218540,3, 0x218580,10, +0x2185c0,15, +0x218600,2, +0x218618,5, +0x218630,1, 0x218800,2, -0x21880c,9, -0x218840,6, -0x218860,6, -0x218880,2, -0x21888c,5, -0x2188a4,3, -0x2188e0,1, -0x218d00,2, -0x218d18,5, -0x218d40,6, +0x21880c,3, +0x218828,2, +0x218838,47, +0x218d00,6, +0x218d20,6, +0x218d40,3, 0x218d80,10, -0x219800,2, -0x219828,2, -0x219850,2, -0x219878,2, +0x218dc0,15, +0x218e00,2, +0x218e18,5, +0x218e30,1, +0x219800,3, +0x219828,3, +0x219850,3, +0x219878,3, 0x2198a0,7, 0x2199ac,1, 0x2199d8,4, @@ -7268,191 +8443,253 @@ 0x219a20,6, 0x219a40,6, 0x219a60,6, -0x219a80,3, +0x219a80,6, +0x219aa0,6, +0x219ac0,3, 0x219c00,6, 0x219c20,3, 0x219c40,2, 0x219c60,1, -0x220000,5, -0x220020,4, -0x220034,17, -0x220080,1, +0x220000,4, +0x220014,1, +0x220020,3, +0x220030,3, +0x220040,8, +0x22007c,2, 0x2200a0,6, -0x220100,5, -0x220120,4, -0x220134,17, -0x220180,1, +0x2200c0,6, +0x2200e0,6, +0x220100,4, +0x220114,1, +0x220120,3, +0x220130,3, +0x220140,8, +0x22017c,2, 0x2201a0,6, -0x220200,5, -0x220220,4, -0x220234,17, -0x220280,1, +0x2201c0,6, +0x2201e0,6, +0x220200,4, +0x220214,1, +0x220220,3, +0x220230,3, +0x220240,8, +0x22027c,2, 0x2202a0,6, -0x220300,5, -0x220320,4, -0x220334,17, -0x220380,1, +0x2202c0,6, +0x2202e0,6, +0x220300,4, +0x220314,1, +0x220320,3, +0x220330,3, +0x220340,8, +0x22037c,2, 0x2203a0,6, +0x2203c0,6, +0x2203e0,6, 0x220400,6, 0x220440,6, 0x220480,3, 0x2204c0,3, -0x220500,6, -0x22051c,7, -0x220540,1, +0x220500,2, +0x22050c,4, +0x220520,2, +0x22052c,4, +0x220540,2, 0x220c00,13, 0x220c40,12, 0x220c80,13, 0x220cc0,12, -0x220d00,6, -0x220d20,6, +0x220d00,14, +0x220d40,2, 0x220d80,14, 0x220dc0,2, -0x220e40,11, +0x220e00,11, +0x220e40,6, +0x220e60,6, 0x220e80,6, 0x220ea0,6, 0x221000,2, -0x221010,5, +0x221014,4, 0x221040,3, 0x221050,3, -0x221060,32, -0x221100,8, -0x221140,8, +0x221080,42, +0x221140,10, 0x221180,3, 0x221190,2, -0x22119c,9, -0x221218,9, -0x221240,3, -0x221250,6, -0x221280,1, -0x221288,6, -0x2212a4,1, -0x2212c0,1, -0x2212c8,6, -0x2212e4,1, -0x221400,8, -0x221424,2, +0x22119c,15, +0x221200,9, +0x221300,1, +0x221308,6, +0x221324,10, +0x221380,1, +0x221388,6, +0x2213a4,10, +0x221400,6, +0x221420,6, 0x221500,5, 0x221520,4, 0x221540,5, 0x221560,4, 0x221800,24, -0x221864,5, +0x221864,6, 0x221880,8, -0x221900,13, -0x221980,4, -0x2219a0,6, -0x2219c0,6, -0x2219dc,1, -0x221a00,6, -0x221a1c,1, -0x221a40,1, -0x221a60,1, -0x221a68,23, +0x221900,24, +0x221964,6, +0x221980,8, +0x221a00,17, +0x221a48,6, +0x221a80,17, 0x221ac8,6, -0x221b00,17, -0x221b48,6, -0x221b80,12, +0x221b00,6, +0x221b20,6, +0x221b40,3, +0x221b80,6, +0x221ba0,6, +0x221bc0,3, 0x221c00,6, 0x221c20,6, -0x221c40,6, -0x221c60,3, -0x221d00,6, -0x221d20,6, -0x221d40,3, -0x221d80,6, -0x221da0,6, -0x221dc0,3, -0x222000,5, -0x222020,4, -0x222034,17, -0x222080,1, +0x221c40,3, +0x221c80,6, +0x221ca0,6, +0x221cc0,3, +0x221d10,2, +0x221d1c,1, +0x221d50,2, +0x221d5c,1, +0x221d80,1, +0x221da0,1, +0x221da8,7, +0x221de0,1, +0x221de8,19, +0x221e40,6, +0x221e60,6, +0x221e80,6, +0x221ea0,6, +0x221ec0,7, +0x221ee0,7, +0x221f00,12, +0x221f40,3, +0x221f50,8, +0x222000,4, +0x222014,1, +0x222020,3, +0x222030,3, +0x222040,8, +0x22207c,2, 0x2220a0,6, -0x222100,5, -0x222120,4, -0x222134,17, -0x222180,1, +0x2220c0,6, +0x2220e0,6, +0x222100,4, +0x222114,1, +0x222120,3, +0x222130,3, +0x222140,8, +0x22217c,2, 0x2221a0,6, -0x222200,5, -0x222220,4, -0x222234,17, -0x222280,1, +0x2221c0,6, +0x2221e0,6, +0x222200,4, +0x222214,1, +0x222220,3, +0x222230,3, +0x222240,8, +0x22227c,2, 0x2222a0,6, -0x222300,5, -0x222320,4, -0x222334,17, -0x222380,1, +0x2222c0,6, +0x2222e0,6, +0x222300,4, +0x222314,1, +0x222320,3, +0x222330,3, +0x222340,8, +0x22237c,2, 0x2223a0,6, +0x2223c0,6, +0x2223e0,6, 0x222400,6, 0x222440,6, 0x222480,3, 0x2224c0,3, -0x222500,6, -0x22251c,7, -0x222540,1, +0x222500,2, +0x22250c,4, +0x222520,2, +0x22252c,4, +0x222540,2, 0x222c00,13, 0x222c40,12, 0x222c80,13, 0x222cc0,12, -0x222d00,6, -0x222d20,6, +0x222d00,14, +0x222d40,2, 0x222d80,14, 0x222dc0,2, -0x222e40,11, +0x222e00,11, +0x222e40,6, +0x222e60,6, 0x222e80,6, 0x222ea0,6, 0x223000,2, -0x223010,5, +0x223014,4, 0x223040,3, 0x223050,3, -0x223060,32, -0x223100,8, -0x223140,8, +0x223080,42, +0x223140,10, 0x223180,3, 0x223190,2, -0x22319c,9, -0x223218,9, -0x223240,3, -0x223250,6, -0x223280,1, -0x223288,6, -0x2232a4,1, -0x2232c0,1, -0x2232c8,6, -0x2232e4,1, -0x223400,8, -0x223424,2, +0x22319c,15, +0x223200,9, +0x223300,1, +0x223308,6, +0x223324,10, +0x223380,1, +0x223388,6, +0x2233a4,10, +0x223400,6, +0x223420,6, 0x223500,5, 0x223520,4, 0x223540,5, 0x223560,4, 0x223800,24, -0x223864,5, +0x223864,6, 0x223880,8, -0x223900,13, -0x223980,4, -0x2239a0,6, -0x2239c0,6, -0x2239dc,1, -0x223a00,6, -0x223a1c,1, -0x223a40,1, -0x223a60,1, -0x223a68,23, +0x223900,24, +0x223964,6, +0x223980,8, +0x223a00,17, +0x223a48,6, +0x223a80,17, 0x223ac8,6, -0x223b00,17, -0x223b48,6, -0x223b80,12, +0x223b00,6, +0x223b20,6, +0x223b40,3, +0x223b80,6, +0x223ba0,6, +0x223bc0,3, 0x223c00,6, 0x223c20,6, -0x223c40,6, -0x223c60,3, -0x223d00,6, -0x223d20,6, -0x223d40,3, -0x223d80,6, -0x223da0,6, -0x223dc0,3, +0x223c40,3, +0x223c80,6, +0x223ca0,6, +0x223cc0,3, +0x223d10,2, +0x223d1c,1, +0x223d50,2, +0x223d5c,1, +0x223d80,1, +0x223da0,1, +0x223da8,7, +0x223de0,1, +0x223de8,19, +0x223e40,6, +0x223e60,6, +0x223e80,6, +0x223ea0,6, +0x223ec0,7, +0x223ee0,7, +0x223f00,12, +0x223f40,3, +0x223f50,8, 0x224000,29, 0x224078,4, 0x224090,2, @@ -7576,8 +8813,10 @@ 0x225eac,1, 0x225eb4,3, 0x226000,14, -0x226070,3, +0x226040,6, +0x226060,6, 0x226080,6, +0x2260a0,3, 0x226100,9, 0x226204,1, 0x22620c,6, @@ -7622,18 +8861,29 @@ 0x226c94,8, 0x226cb8,9, 0x226ce0,4, -0x227000,6, -0x227020,3, -0x227040,7, -0x227060,6, -0x227100,5, -0x227138,1, -0x227144,1, -0x227150,2, +0x227000,1, +0x227028,1, +0x227050,1, +0x227078,1, +0x2270a0,4, +0x2271ac,1, +0x2271d8,4, +0x227200,6, +0x227220,6, +0x227240,3, +0x227400,5, +0x227438,1, +0x227444,1, +0x227450,4, +0x227500,7, +0x227520,6, +0x227540,6, +0x227560,3, +0x227570,1, 0x228000,6, 0x228020,3, -0x228030,1, -0x228038,7, +0x228030,3, +0x228050,1, 0x228100,6, 0x228120,10, 0x228150,10, @@ -7667,15 +8917,19 @@ 0x2289f4,3, 0x229000,4, 0x229020,4, -0x229040,3, -0x229050,3, -0x229080,2, -0x2290b0,3, -0x22912c,1, -0x229140,6, -0x229200,20, -0x22925c,30, -0x229300,24, +0x229040,11, +0x229070,3, +0x229080,4, +0x2290b0,22, +0x229110,2, +0x229120,22, +0x229180,1, +0x2291a0,6, +0x229200,42, +0x2292c0,1, +0x2292c8,3, +0x229300,25, +0x22936c,4, 0x229380,2, 0x2293a0,1, 0x2293c0,11, @@ -7684,18 +8938,25 @@ 0x229480,6, 0x229500,6, 0x229520,6, +0x229540,3, +0x229550,7, +0x229570,4, 0x229800,410, 0x22a000,4, 0x22a020,4, -0x22a040,3, -0x22a050,3, -0x22a080,2, -0x22a0b0,3, -0x22a12c,1, -0x22a140,6, -0x22a200,20, -0x22a25c,30, -0x22a300,24, +0x22a040,11, +0x22a070,3, +0x22a080,4, +0x22a0b0,22, +0x22a110,2, +0x22a120,22, +0x22a180,1, +0x22a1a0,6, +0x22a200,42, +0x22a2c0,1, +0x22a2c8,3, +0x22a300,25, +0x22a36c,4, 0x22a380,2, 0x22a3a0,1, 0x22a3c0,11, @@ -7704,18 +8965,25 @@ 0x22a480,6, 0x22a500,6, 0x22a520,6, +0x22a540,3, +0x22a550,7, +0x22a570,4, 0x22a800,410, 0x22b000,4, 0x22b020,4, -0x22b040,3, -0x22b050,3, -0x22b080,2, -0x22b0b0,3, -0x22b12c,1, -0x22b140,6, -0x22b200,20, -0x22b25c,30, -0x22b300,24, +0x22b040,11, +0x22b070,3, +0x22b080,4, +0x22b0b0,22, +0x22b110,2, +0x22b120,22, +0x22b180,1, +0x22b1a0,6, +0x22b200,42, +0x22b2c0,1, +0x22b2c8,3, +0x22b300,25, +0x22b36c,4, 0x22b380,2, 0x22b3a0,1, 0x22b3c0,11, @@ -7724,18 +8992,25 @@ 0x22b480,6, 0x22b500,6, 0x22b520,6, +0x22b540,3, +0x22b550,7, +0x22b570,4, 0x22b800,410, 0x22c000,4, 0x22c020,4, -0x22c040,3, -0x22c050,3, -0x22c080,2, -0x22c0b0,3, -0x22c12c,1, -0x22c140,6, -0x22c200,20, -0x22c25c,30, -0x22c300,24, +0x22c040,11, +0x22c070,3, +0x22c080,4, +0x22c0b0,22, +0x22c110,2, +0x22c120,22, +0x22c180,1, +0x22c1a0,6, +0x22c200,42, +0x22c2c0,1, +0x22c2c8,3, +0x22c300,25, +0x22c36c,4, 0x22c380,2, 0x22c3a0,1, 0x22c3c0,11, @@ -7744,6 +9019,9 @@ 0x22c480,6, 0x22c500,6, 0x22c520,6, +0x22c540,3, +0x22c550,7, +0x22c570,4, 0x22c800,410, 0x22f800,5, 0x22f818,1, @@ -7770,23 +9048,30 @@ 0x22fba4,1, 0x22fbac,2, 0x234000,3, -0x234018,3, -0x234100,25, +0x234018,4, +0x234100,56, +0x2341f0,1, 0x234400,3, -0x234418,3, -0x234500,25, -0x234800,1, +0x234418,4, +0x234500,56, +0x2345f0,1, +0x234800,5, +0x234820,3, 0x235000,3, -0x235018,3, -0x235100,25, +0x235018,4, +0x235100,56, +0x2351f0,1, 0x235400,3, -0x235418,3, -0x235500,25, -0x235800,1, +0x235418,4, +0x235500,56, +0x2355f0,1, +0x235800,5, +0x235820,3, 0x236004,7, -0x236024,3, +0x236024,1, +0x236034,3, 0x236300,5, -0x23631c,3, +0x23631c,1, 0x236600,10, 0x236630,1, 0x236680,10, @@ -7796,36 +9081,37 @@ 0x236780,10, 0x2367b0,1, 0x236800,47, -0x236910,12, -0x237000,64, +0x236910,14, +0x236e00,1, +0x237000,65, 0x238000,2, -0x23800c,9, -0x238040,6, -0x238060,6, -0x238080,2, -0x23808c,5, -0x2380a4,3, -0x2380e0,1, -0x238500,2, -0x238518,5, -0x238540,6, +0x23800c,3, +0x238028,2, +0x238038,47, +0x238500,6, +0x238520,6, +0x238540,3, 0x238580,10, +0x2385c0,15, +0x238600,2, +0x238618,5, +0x238630,1, 0x238800,2, -0x23880c,9, -0x238840,6, -0x238860,6, -0x238880,2, -0x23888c,5, -0x2388a4,3, -0x2388e0,1, -0x238d00,2, -0x238d18,5, -0x238d40,6, +0x23880c,3, +0x238828,2, +0x238838,47, +0x238d00,6, +0x238d20,6, +0x238d40,3, 0x238d80,10, -0x239800,2, -0x239828,2, -0x239850,2, -0x239878,2, +0x238dc0,15, +0x238e00,2, +0x238e18,5, +0x238e30,1, +0x239800,3, +0x239828,3, +0x239850,3, +0x239878,3, 0x2398a0,7, 0x2399ac,1, 0x2399d8,4, @@ -7833,191 +9119,253 @@ 0x239a20,6, 0x239a40,6, 0x239a60,6, -0x239a80,3, +0x239a80,6, +0x239aa0,6, +0x239ac0,3, 0x239c00,6, 0x239c20,3, 0x239c40,2, 0x239c60,1, -0x240000,5, -0x240020,4, -0x240034,17, -0x240080,1, +0x240000,4, +0x240014,1, +0x240020,3, +0x240030,3, +0x240040,8, +0x24007c,2, 0x2400a0,6, -0x240100,5, -0x240120,4, -0x240134,17, -0x240180,1, +0x2400c0,6, +0x2400e0,6, +0x240100,4, +0x240114,1, +0x240120,3, +0x240130,3, +0x240140,8, +0x24017c,2, 0x2401a0,6, -0x240200,5, -0x240220,4, -0x240234,17, -0x240280,1, +0x2401c0,6, +0x2401e0,6, +0x240200,4, +0x240214,1, +0x240220,3, +0x240230,3, +0x240240,8, +0x24027c,2, 0x2402a0,6, -0x240300,5, -0x240320,4, -0x240334,17, -0x240380,1, +0x2402c0,6, +0x2402e0,6, +0x240300,4, +0x240314,1, +0x240320,3, +0x240330,3, +0x240340,8, +0x24037c,2, 0x2403a0,6, +0x2403c0,6, +0x2403e0,6, 0x240400,6, 0x240440,6, 0x240480,3, 0x2404c0,3, -0x240500,6, -0x24051c,7, -0x240540,1, +0x240500,2, +0x24050c,4, +0x240520,2, +0x24052c,4, +0x240540,2, 0x240c00,13, 0x240c40,12, 0x240c80,13, 0x240cc0,12, -0x240d00,6, -0x240d20,6, +0x240d00,14, +0x240d40,2, 0x240d80,14, 0x240dc0,2, -0x240e40,11, +0x240e00,11, +0x240e40,6, +0x240e60,6, 0x240e80,6, 0x240ea0,6, 0x241000,2, -0x241010,5, +0x241014,4, 0x241040,3, 0x241050,3, -0x241060,32, -0x241100,8, -0x241140,8, +0x241080,42, +0x241140,10, 0x241180,3, 0x241190,2, -0x24119c,9, -0x241218,9, -0x241240,3, -0x241250,6, -0x241280,1, -0x241288,6, -0x2412a4,1, -0x2412c0,1, -0x2412c8,6, -0x2412e4,1, -0x241400,8, -0x241424,2, +0x24119c,15, +0x241200,9, +0x241300,1, +0x241308,6, +0x241324,10, +0x241380,1, +0x241388,6, +0x2413a4,10, +0x241400,6, +0x241420,6, 0x241500,5, 0x241520,4, 0x241540,5, 0x241560,4, 0x241800,24, -0x241864,5, +0x241864,6, 0x241880,8, -0x241900,13, -0x241980,4, -0x2419a0,6, -0x2419c0,6, -0x2419dc,1, -0x241a00,6, -0x241a1c,1, -0x241a40,1, -0x241a60,1, -0x241a68,23, +0x241900,24, +0x241964,6, +0x241980,8, +0x241a00,17, +0x241a48,6, +0x241a80,17, 0x241ac8,6, -0x241b00,17, -0x241b48,6, -0x241b80,12, +0x241b00,6, +0x241b20,6, +0x241b40,3, +0x241b80,6, +0x241ba0,6, +0x241bc0,3, 0x241c00,6, 0x241c20,6, -0x241c40,6, -0x241c60,3, -0x241d00,6, -0x241d20,6, -0x241d40,3, -0x241d80,6, -0x241da0,6, -0x241dc0,3, -0x242000,5, -0x242020,4, -0x242034,17, -0x242080,1, +0x241c40,3, +0x241c80,6, +0x241ca0,6, +0x241cc0,3, +0x241d10,2, +0x241d1c,1, +0x241d50,2, +0x241d5c,1, +0x241d80,1, +0x241da0,1, +0x241da8,7, +0x241de0,1, +0x241de8,19, +0x241e40,6, +0x241e60,6, +0x241e80,6, +0x241ea0,6, +0x241ec0,7, +0x241ee0,7, +0x241f00,12, +0x241f40,3, +0x241f50,8, +0x242000,4, +0x242014,1, +0x242020,3, +0x242030,3, +0x242040,8, +0x24207c,2, 0x2420a0,6, -0x242100,5, -0x242120,4, -0x242134,17, -0x242180,1, +0x2420c0,6, +0x2420e0,6, +0x242100,4, +0x242114,1, +0x242120,3, +0x242130,3, +0x242140,8, +0x24217c,2, 0x2421a0,6, -0x242200,5, -0x242220,4, -0x242234,17, -0x242280,1, +0x2421c0,6, +0x2421e0,6, +0x242200,4, +0x242214,1, +0x242220,3, +0x242230,3, +0x242240,8, +0x24227c,2, 0x2422a0,6, -0x242300,5, -0x242320,4, -0x242334,17, -0x242380,1, +0x2422c0,6, +0x2422e0,6, +0x242300,4, +0x242314,1, +0x242320,3, +0x242330,3, +0x242340,8, +0x24237c,2, 0x2423a0,6, +0x2423c0,6, +0x2423e0,6, 0x242400,6, 0x242440,6, 0x242480,3, 0x2424c0,3, -0x242500,6, -0x24251c,7, -0x242540,1, +0x242500,2, +0x24250c,4, +0x242520,2, +0x24252c,4, +0x242540,2, 0x242c00,13, 0x242c40,12, 0x242c80,13, 0x242cc0,12, -0x242d00,6, -0x242d20,6, +0x242d00,14, +0x242d40,2, 0x242d80,14, 0x242dc0,2, -0x242e40,11, +0x242e00,11, +0x242e40,6, +0x242e60,6, 0x242e80,6, 0x242ea0,6, 0x243000,2, -0x243010,5, +0x243014,4, 0x243040,3, 0x243050,3, -0x243060,32, -0x243100,8, -0x243140,8, +0x243080,42, +0x243140,10, 0x243180,3, 0x243190,2, -0x24319c,9, -0x243218,9, -0x243240,3, -0x243250,6, -0x243280,1, -0x243288,6, -0x2432a4,1, -0x2432c0,1, -0x2432c8,6, -0x2432e4,1, -0x243400,8, -0x243424,2, +0x24319c,15, +0x243200,9, +0x243300,1, +0x243308,6, +0x243324,10, +0x243380,1, +0x243388,6, +0x2433a4,10, +0x243400,6, +0x243420,6, 0x243500,5, 0x243520,4, 0x243540,5, 0x243560,4, 0x243800,24, -0x243864,5, +0x243864,6, 0x243880,8, -0x243900,13, -0x243980,4, -0x2439a0,6, -0x2439c0,6, -0x2439dc,1, -0x243a00,6, -0x243a1c,1, -0x243a40,1, -0x243a60,1, -0x243a68,23, +0x243900,24, +0x243964,6, +0x243980,8, +0x243a00,17, +0x243a48,6, +0x243a80,17, 0x243ac8,6, -0x243b00,17, -0x243b48,6, -0x243b80,12, +0x243b00,6, +0x243b20,6, +0x243b40,3, +0x243b80,6, +0x243ba0,6, +0x243bc0,3, 0x243c00,6, 0x243c20,6, -0x243c40,6, -0x243c60,3, -0x243d00,6, -0x243d20,6, -0x243d40,3, -0x243d80,6, -0x243da0,6, -0x243dc0,3, +0x243c40,3, +0x243c80,6, +0x243ca0,6, +0x243cc0,3, +0x243d10,2, +0x243d1c,1, +0x243d50,2, +0x243d5c,1, +0x243d80,1, +0x243da0,1, +0x243da8,7, +0x243de0,1, +0x243de8,19, +0x243e40,6, +0x243e60,6, +0x243e80,6, +0x243ea0,6, +0x243ec0,7, +0x243ee0,7, +0x243f00,12, +0x243f40,3, +0x243f50,8, 0x244000,29, 0x244078,4, 0x244090,2, @@ -8141,8 +9489,10 @@ 0x245eac,1, 0x245eb4,3, 0x246000,14, -0x246070,3, +0x246040,6, +0x246060,6, 0x246080,6, +0x2460a0,3, 0x246100,9, 0x246204,1, 0x24620c,6, @@ -8187,18 +9537,29 @@ 0x246c94,8, 0x246cb8,9, 0x246ce0,4, -0x247000,6, -0x247020,3, -0x247040,7, -0x247060,6, -0x247100,5, -0x247138,1, -0x247144,1, -0x247150,2, +0x247000,1, +0x247028,1, +0x247050,1, +0x247078,1, +0x2470a0,4, +0x2471ac,1, +0x2471d8,4, +0x247200,6, +0x247220,6, +0x247240,3, +0x247400,5, +0x247438,1, +0x247444,1, +0x247450,4, +0x247500,7, +0x247520,6, +0x247540,6, +0x247560,3, +0x247570,1, 0x248000,6, 0x248020,3, -0x248030,1, -0x248038,7, +0x248030,3, +0x248050,1, 0x248100,6, 0x248120,10, 0x248150,10, @@ -8232,15 +9593,19 @@ 0x2489f4,3, 0x249000,4, 0x249020,4, -0x249040,3, -0x249050,3, -0x249080,2, -0x2490b0,3, -0x24912c,1, -0x249140,6, -0x249200,20, -0x24925c,30, -0x249300,24, +0x249040,11, +0x249070,3, +0x249080,4, +0x2490b0,22, +0x249110,2, +0x249120,22, +0x249180,1, +0x2491a0,6, +0x249200,42, +0x2492c0,1, +0x2492c8,3, +0x249300,25, +0x24936c,4, 0x249380,2, 0x2493a0,1, 0x2493c0,11, @@ -8249,18 +9614,25 @@ 0x249480,6, 0x249500,6, 0x249520,6, +0x249540,3, +0x249550,7, +0x249570,4, 0x249800,410, 0x24a000,4, 0x24a020,4, -0x24a040,3, -0x24a050,3, -0x24a080,2, -0x24a0b0,3, -0x24a12c,1, -0x24a140,6, -0x24a200,20, -0x24a25c,30, -0x24a300,24, +0x24a040,11, +0x24a070,3, +0x24a080,4, +0x24a0b0,22, +0x24a110,2, +0x24a120,22, +0x24a180,1, +0x24a1a0,6, +0x24a200,42, +0x24a2c0,1, +0x24a2c8,3, +0x24a300,25, +0x24a36c,4, 0x24a380,2, 0x24a3a0,1, 0x24a3c0,11, @@ -8269,18 +9641,25 @@ 0x24a480,6, 0x24a500,6, 0x24a520,6, +0x24a540,3, +0x24a550,7, +0x24a570,4, 0x24a800,410, 0x24b000,4, 0x24b020,4, -0x24b040,3, -0x24b050,3, -0x24b080,2, -0x24b0b0,3, -0x24b12c,1, -0x24b140,6, -0x24b200,20, -0x24b25c,30, -0x24b300,24, +0x24b040,11, +0x24b070,3, +0x24b080,4, +0x24b0b0,22, +0x24b110,2, +0x24b120,22, +0x24b180,1, +0x24b1a0,6, +0x24b200,42, +0x24b2c0,1, +0x24b2c8,3, +0x24b300,25, +0x24b36c,4, 0x24b380,2, 0x24b3a0,1, 0x24b3c0,11, @@ -8289,18 +9668,25 @@ 0x24b480,6, 0x24b500,6, 0x24b520,6, +0x24b540,3, +0x24b550,7, +0x24b570,4, 0x24b800,410, 0x24c000,4, 0x24c020,4, -0x24c040,3, -0x24c050,3, -0x24c080,2, -0x24c0b0,3, -0x24c12c,1, -0x24c140,6, -0x24c200,20, -0x24c25c,30, -0x24c300,24, +0x24c040,11, +0x24c070,3, +0x24c080,4, +0x24c0b0,22, +0x24c110,2, +0x24c120,22, +0x24c180,1, +0x24c1a0,6, +0x24c200,42, +0x24c2c0,1, +0x24c2c8,3, +0x24c300,25, +0x24c36c,4, 0x24c380,2, 0x24c3a0,1, 0x24c3c0,11, @@ -8309,6 +9695,9 @@ 0x24c480,6, 0x24c500,6, 0x24c520,6, +0x24c540,3, +0x24c550,7, +0x24c570,4, 0x24c800,410, 0x24f800,5, 0x24f818,1, @@ -8335,23 +9724,30 @@ 0x24fba4,1, 0x24fbac,2, 0x254000,3, -0x254018,3, -0x254100,25, +0x254018,4, +0x254100,56, +0x2541f0,1, 0x254400,3, -0x254418,3, -0x254500,25, -0x254800,1, +0x254418,4, +0x254500,56, +0x2545f0,1, +0x254800,5, +0x254820,3, 0x255000,3, -0x255018,3, -0x255100,25, +0x255018,4, +0x255100,56, +0x2551f0,1, 0x255400,3, -0x255418,3, -0x255500,25, -0x255800,1, +0x255418,4, +0x255500,56, +0x2555f0,1, +0x255800,5, +0x255820,3, 0x256004,7, -0x256024,3, +0x256024,1, +0x256034,3, 0x256300,5, -0x25631c,3, +0x25631c,1, 0x256600,10, 0x256630,1, 0x256680,10, @@ -8361,36 +9757,37 @@ 0x256780,10, 0x2567b0,1, 0x256800,47, -0x256910,12, -0x257000,64, +0x256910,14, +0x256e00,1, +0x257000,65, 0x258000,2, -0x25800c,9, -0x258040,6, -0x258060,6, -0x258080,2, -0x25808c,5, -0x2580a4,3, -0x2580e0,1, -0x258500,2, -0x258518,5, -0x258540,6, +0x25800c,3, +0x258028,2, +0x258038,47, +0x258500,6, +0x258520,6, +0x258540,3, 0x258580,10, +0x2585c0,15, +0x258600,2, +0x258618,5, +0x258630,1, 0x258800,2, -0x25880c,9, -0x258840,6, -0x258860,6, -0x258880,2, -0x25888c,5, -0x2588a4,3, -0x2588e0,1, -0x258d00,2, -0x258d18,5, -0x258d40,6, +0x25880c,3, +0x258828,2, +0x258838,47, +0x258d00,6, +0x258d20,6, +0x258d40,3, 0x258d80,10, -0x259800,2, -0x259828,2, -0x259850,2, -0x259878,2, +0x258dc0,15, +0x258e00,2, +0x258e18,5, +0x258e30,1, +0x259800,3, +0x259828,3, +0x259850,3, +0x259878,3, 0x2598a0,7, 0x2599ac,1, 0x2599d8,4, @@ -8398,191 +9795,253 @@ 0x259a20,6, 0x259a40,6, 0x259a60,6, -0x259a80,3, +0x259a80,6, +0x259aa0,6, +0x259ac0,3, 0x259c00,6, 0x259c20,3, 0x259c40,2, 0x259c60,1, -0x260000,5, -0x260020,4, -0x260034,17, -0x260080,1, +0x260000,4, +0x260014,1, +0x260020,3, +0x260030,3, +0x260040,8, +0x26007c,2, 0x2600a0,6, -0x260100,5, -0x260120,4, -0x260134,17, -0x260180,1, +0x2600c0,6, +0x2600e0,6, +0x260100,4, +0x260114,1, +0x260120,3, +0x260130,3, +0x260140,8, +0x26017c,2, 0x2601a0,6, -0x260200,5, -0x260220,4, -0x260234,17, -0x260280,1, +0x2601c0,6, +0x2601e0,6, +0x260200,4, +0x260214,1, +0x260220,3, +0x260230,3, +0x260240,8, +0x26027c,2, 0x2602a0,6, -0x260300,5, -0x260320,4, -0x260334,17, -0x260380,1, +0x2602c0,6, +0x2602e0,6, +0x260300,4, +0x260314,1, +0x260320,3, +0x260330,3, +0x260340,8, +0x26037c,2, 0x2603a0,6, +0x2603c0,6, +0x2603e0,6, 0x260400,6, 0x260440,6, 0x260480,3, 0x2604c0,3, -0x260500,6, -0x26051c,7, -0x260540,1, +0x260500,2, +0x26050c,4, +0x260520,2, +0x26052c,4, +0x260540,2, 0x260c00,13, 0x260c40,12, 0x260c80,13, 0x260cc0,12, -0x260d00,6, -0x260d20,6, +0x260d00,14, +0x260d40,2, 0x260d80,14, 0x260dc0,2, -0x260e40,11, +0x260e00,11, +0x260e40,6, +0x260e60,6, 0x260e80,6, 0x260ea0,6, 0x261000,2, -0x261010,5, +0x261014,4, 0x261040,3, 0x261050,3, -0x261060,32, -0x261100,8, -0x261140,8, +0x261080,42, +0x261140,10, 0x261180,3, 0x261190,2, -0x26119c,9, -0x261218,9, -0x261240,3, -0x261250,6, -0x261280,1, -0x261288,6, -0x2612a4,1, -0x2612c0,1, -0x2612c8,6, -0x2612e4,1, -0x261400,8, -0x261424,2, +0x26119c,15, +0x261200,9, +0x261300,1, +0x261308,6, +0x261324,10, +0x261380,1, +0x261388,6, +0x2613a4,10, +0x261400,6, +0x261420,6, 0x261500,5, 0x261520,4, 0x261540,5, 0x261560,4, 0x261800,24, -0x261864,5, +0x261864,6, 0x261880,8, -0x261900,13, -0x261980,4, -0x2619a0,6, -0x2619c0,6, -0x2619dc,1, -0x261a00,6, -0x261a1c,1, -0x261a40,1, -0x261a60,1, -0x261a68,23, +0x261900,24, +0x261964,6, +0x261980,8, +0x261a00,17, +0x261a48,6, +0x261a80,17, 0x261ac8,6, -0x261b00,17, -0x261b48,6, -0x261b80,12, +0x261b00,6, +0x261b20,6, +0x261b40,3, +0x261b80,6, +0x261ba0,6, +0x261bc0,3, 0x261c00,6, 0x261c20,6, -0x261c40,6, -0x261c60,3, -0x261d00,6, -0x261d20,6, -0x261d40,3, -0x261d80,6, -0x261da0,6, -0x261dc0,3, -0x262000,5, -0x262020,4, -0x262034,17, -0x262080,1, +0x261c40,3, +0x261c80,6, +0x261ca0,6, +0x261cc0,3, +0x261d10,2, +0x261d1c,1, +0x261d50,2, +0x261d5c,1, +0x261d80,1, +0x261da0,1, +0x261da8,7, +0x261de0,1, +0x261de8,19, +0x261e40,6, +0x261e60,6, +0x261e80,6, +0x261ea0,6, +0x261ec0,7, +0x261ee0,7, +0x261f00,12, +0x261f40,3, +0x261f50,8, +0x262000,4, +0x262014,1, +0x262020,3, +0x262030,3, +0x262040,8, +0x26207c,2, 0x2620a0,6, -0x262100,5, -0x262120,4, -0x262134,17, -0x262180,1, +0x2620c0,6, +0x2620e0,6, +0x262100,4, +0x262114,1, +0x262120,3, +0x262130,3, +0x262140,8, +0x26217c,2, 0x2621a0,6, -0x262200,5, -0x262220,4, -0x262234,17, -0x262280,1, +0x2621c0,6, +0x2621e0,6, +0x262200,4, +0x262214,1, +0x262220,3, +0x262230,3, +0x262240,8, +0x26227c,2, 0x2622a0,6, -0x262300,5, -0x262320,4, -0x262334,17, -0x262380,1, +0x2622c0,6, +0x2622e0,6, +0x262300,4, +0x262314,1, +0x262320,3, +0x262330,3, +0x262340,8, +0x26237c,2, 0x2623a0,6, +0x2623c0,6, +0x2623e0,6, 0x262400,6, 0x262440,6, 0x262480,3, 0x2624c0,3, -0x262500,6, -0x26251c,7, -0x262540,1, +0x262500,2, +0x26250c,4, +0x262520,2, +0x26252c,4, +0x262540,2, 0x262c00,13, 0x262c40,12, 0x262c80,13, 0x262cc0,12, -0x262d00,6, -0x262d20,6, +0x262d00,14, +0x262d40,2, 0x262d80,14, 0x262dc0,2, -0x262e40,11, +0x262e00,11, +0x262e40,6, +0x262e60,6, 0x262e80,6, 0x262ea0,6, 0x263000,2, -0x263010,5, +0x263014,4, 0x263040,3, 0x263050,3, -0x263060,32, -0x263100,8, -0x263140,8, +0x263080,42, +0x263140,10, 0x263180,3, 0x263190,2, -0x26319c,9, -0x263218,9, -0x263240,3, -0x263250,6, -0x263280,1, -0x263288,6, -0x2632a4,1, -0x2632c0,1, -0x2632c8,6, -0x2632e4,1, -0x263400,8, -0x263424,2, +0x26319c,15, +0x263200,9, +0x263300,1, +0x263308,6, +0x263324,10, +0x263380,1, +0x263388,6, +0x2633a4,10, +0x263400,6, +0x263420,6, 0x263500,5, 0x263520,4, 0x263540,5, 0x263560,4, 0x263800,24, -0x263864,5, +0x263864,6, 0x263880,8, -0x263900,13, -0x263980,4, -0x2639a0,6, -0x2639c0,6, -0x2639dc,1, -0x263a00,6, -0x263a1c,1, -0x263a40,1, -0x263a60,1, -0x263a68,23, +0x263900,24, +0x263964,6, +0x263980,8, +0x263a00,17, +0x263a48,6, +0x263a80,17, 0x263ac8,6, -0x263b00,17, -0x263b48,6, -0x263b80,12, +0x263b00,6, +0x263b20,6, +0x263b40,3, +0x263b80,6, +0x263ba0,6, +0x263bc0,3, 0x263c00,6, 0x263c20,6, -0x263c40,6, -0x263c60,3, -0x263d00,6, -0x263d20,6, -0x263d40,3, -0x263d80,6, -0x263da0,6, -0x263dc0,3, +0x263c40,3, +0x263c80,6, +0x263ca0,6, +0x263cc0,3, +0x263d10,2, +0x263d1c,1, +0x263d50,2, +0x263d5c,1, +0x263d80,1, +0x263da0,1, +0x263da8,7, +0x263de0,1, +0x263de8,19, +0x263e40,6, +0x263e60,6, +0x263e80,6, +0x263ea0,6, +0x263ec0,7, +0x263ee0,7, +0x263f00,12, +0x263f40,3, +0x263f50,8, 0x264000,29, 0x264078,4, 0x264090,2, @@ -8706,8 +10165,10 @@ 0x265eac,1, 0x265eb4,3, 0x266000,14, -0x266070,3, +0x266040,6, +0x266060,6, 0x266080,6, +0x2660a0,3, 0x266100,9, 0x266204,1, 0x26620c,6, @@ -8752,18 +10213,29 @@ 0x266c94,8, 0x266cb8,9, 0x266ce0,4, -0x267000,6, -0x267020,3, -0x267040,7, -0x267060,6, -0x267100,5, -0x267138,1, -0x267144,1, -0x267150,2, +0x267000,1, +0x267028,1, +0x267050,1, +0x267078,1, +0x2670a0,4, +0x2671ac,1, +0x2671d8,4, +0x267200,6, +0x267220,6, +0x267240,3, +0x267400,5, +0x267438,1, +0x267444,1, +0x267450,4, +0x267500,7, +0x267520,6, +0x267540,6, +0x267560,3, +0x267570,1, 0x268000,6, 0x268020,3, -0x268030,1, -0x268038,7, +0x268030,3, +0x268050,1, 0x268100,6, 0x268120,10, 0x268150,10, @@ -8797,15 +10269,19 @@ 0x2689f4,3, 0x269000,4, 0x269020,4, -0x269040,3, -0x269050,3, -0x269080,2, -0x2690b0,3, -0x26912c,1, -0x269140,6, -0x269200,20, -0x26925c,30, -0x269300,24, +0x269040,11, +0x269070,3, +0x269080,4, +0x2690b0,22, +0x269110,2, +0x269120,22, +0x269180,1, +0x2691a0,6, +0x269200,42, +0x2692c0,1, +0x2692c8,3, +0x269300,25, +0x26936c,4, 0x269380,2, 0x2693a0,1, 0x2693c0,11, @@ -8814,18 +10290,25 @@ 0x269480,6, 0x269500,6, 0x269520,6, +0x269540,3, +0x269550,7, +0x269570,4, 0x269800,410, 0x26a000,4, 0x26a020,4, -0x26a040,3, -0x26a050,3, -0x26a080,2, -0x26a0b0,3, -0x26a12c,1, -0x26a140,6, -0x26a200,20, -0x26a25c,30, -0x26a300,24, +0x26a040,11, +0x26a070,3, +0x26a080,4, +0x26a0b0,22, +0x26a110,2, +0x26a120,22, +0x26a180,1, +0x26a1a0,6, +0x26a200,42, +0x26a2c0,1, +0x26a2c8,3, +0x26a300,25, +0x26a36c,4, 0x26a380,2, 0x26a3a0,1, 0x26a3c0,11, @@ -8834,18 +10317,25 @@ 0x26a480,6, 0x26a500,6, 0x26a520,6, +0x26a540,3, +0x26a550,7, +0x26a570,4, 0x26a800,410, 0x26b000,4, 0x26b020,4, -0x26b040,3, -0x26b050,3, -0x26b080,2, -0x26b0b0,3, -0x26b12c,1, -0x26b140,6, -0x26b200,20, -0x26b25c,30, -0x26b300,24, +0x26b040,11, +0x26b070,3, +0x26b080,4, +0x26b0b0,22, +0x26b110,2, +0x26b120,22, +0x26b180,1, +0x26b1a0,6, +0x26b200,42, +0x26b2c0,1, +0x26b2c8,3, +0x26b300,25, +0x26b36c,4, 0x26b380,2, 0x26b3a0,1, 0x26b3c0,11, @@ -8854,18 +10344,25 @@ 0x26b480,6, 0x26b500,6, 0x26b520,6, +0x26b540,3, +0x26b550,7, +0x26b570,4, 0x26b800,410, 0x26c000,4, 0x26c020,4, -0x26c040,3, -0x26c050,3, -0x26c080,2, -0x26c0b0,3, -0x26c12c,1, -0x26c140,6, -0x26c200,20, -0x26c25c,30, -0x26c300,24, +0x26c040,11, +0x26c070,3, +0x26c080,4, +0x26c0b0,22, +0x26c110,2, +0x26c120,22, +0x26c180,1, +0x26c1a0,6, +0x26c200,42, +0x26c2c0,1, +0x26c2c8,3, +0x26c300,25, +0x26c36c,4, 0x26c380,2, 0x26c3a0,1, 0x26c3c0,11, @@ -8874,6 +10371,9 @@ 0x26c480,6, 0x26c500,6, 0x26c520,6, +0x26c540,3, +0x26c550,7, +0x26c570,4, 0x26c800,410, 0x26f800,5, 0x26f818,1, @@ -8900,23 +10400,30 @@ 0x26fba4,1, 0x26fbac,2, 0x274000,3, -0x274018,3, -0x274100,25, +0x274018,4, +0x274100,56, +0x2741f0,1, 0x274400,3, -0x274418,3, -0x274500,25, -0x274800,1, +0x274418,4, +0x274500,56, +0x2745f0,1, +0x274800,5, +0x274820,3, 0x275000,3, -0x275018,3, -0x275100,25, +0x275018,4, +0x275100,56, +0x2751f0,1, 0x275400,3, -0x275418,3, -0x275500,25, -0x275800,1, +0x275418,4, +0x275500,56, +0x2755f0,1, +0x275800,5, +0x275820,3, 0x276004,7, -0x276024,3, +0x276024,1, +0x276034,3, 0x276300,5, -0x27631c,3, +0x27631c,1, 0x276600,10, 0x276630,1, 0x276680,10, @@ -8926,36 +10433,37 @@ 0x276780,10, 0x2767b0,1, 0x276800,47, -0x276910,12, -0x277000,64, +0x276910,14, +0x276e00,1, +0x277000,65, 0x278000,2, -0x27800c,9, -0x278040,6, -0x278060,6, -0x278080,2, -0x27808c,5, -0x2780a4,3, -0x2780e0,1, -0x278500,2, -0x278518,5, -0x278540,6, +0x27800c,3, +0x278028,2, +0x278038,47, +0x278500,6, +0x278520,6, +0x278540,3, 0x278580,10, +0x2785c0,15, +0x278600,2, +0x278618,5, +0x278630,1, 0x278800,2, -0x27880c,9, -0x278840,6, -0x278860,6, -0x278880,2, -0x27888c,5, -0x2788a4,3, -0x2788e0,1, -0x278d00,2, -0x278d18,5, -0x278d40,6, +0x27880c,3, +0x278828,2, +0x278838,47, +0x278d00,6, +0x278d20,6, +0x278d40,3, 0x278d80,10, -0x279800,2, -0x279828,2, -0x279850,2, -0x279878,2, +0x278dc0,15, +0x278e00,2, +0x278e18,5, +0x278e30,1, +0x279800,3, +0x279828,3, +0x279850,3, +0x279878,3, 0x2798a0,7, 0x2799ac,1, 0x2799d8,4, @@ -8963,191 +10471,253 @@ 0x279a20,6, 0x279a40,6, 0x279a60,6, -0x279a80,3, +0x279a80,6, +0x279aa0,6, +0x279ac0,3, 0x279c00,6, 0x279c20,3, 0x279c40,2, 0x279c60,1, -0x280000,5, -0x280020,4, -0x280034,17, -0x280080,1, +0x280000,4, +0x280014,1, +0x280020,3, +0x280030,3, +0x280040,8, +0x28007c,2, 0x2800a0,6, -0x280100,5, -0x280120,4, -0x280134,17, -0x280180,1, +0x2800c0,6, +0x2800e0,6, +0x280100,4, +0x280114,1, +0x280120,3, +0x280130,3, +0x280140,8, +0x28017c,2, 0x2801a0,6, -0x280200,5, -0x280220,4, -0x280234,17, -0x280280,1, +0x2801c0,6, +0x2801e0,6, +0x280200,4, +0x280214,1, +0x280220,3, +0x280230,3, +0x280240,8, +0x28027c,2, 0x2802a0,6, -0x280300,5, -0x280320,4, -0x280334,17, -0x280380,1, +0x2802c0,6, +0x2802e0,6, +0x280300,4, +0x280314,1, +0x280320,3, +0x280330,3, +0x280340,8, +0x28037c,2, 0x2803a0,6, +0x2803c0,6, +0x2803e0,6, 0x280400,6, 0x280440,6, 0x280480,3, 0x2804c0,3, -0x280500,6, -0x28051c,7, -0x280540,1, +0x280500,2, +0x28050c,4, +0x280520,2, +0x28052c,4, +0x280540,2, 0x280c00,13, 0x280c40,12, 0x280c80,13, 0x280cc0,12, -0x280d00,6, -0x280d20,6, +0x280d00,14, +0x280d40,2, 0x280d80,14, 0x280dc0,2, -0x280e40,11, +0x280e00,11, +0x280e40,6, +0x280e60,6, 0x280e80,6, 0x280ea0,6, 0x281000,2, -0x281010,5, +0x281014,4, 0x281040,3, 0x281050,3, -0x281060,32, -0x281100,8, -0x281140,8, +0x281080,42, +0x281140,10, 0x281180,3, 0x281190,2, -0x28119c,9, -0x281218,9, -0x281240,3, -0x281250,6, -0x281280,1, -0x281288,6, -0x2812a4,1, -0x2812c0,1, -0x2812c8,6, -0x2812e4,1, -0x281400,8, -0x281424,2, +0x28119c,15, +0x281200,9, +0x281300,1, +0x281308,6, +0x281324,10, +0x281380,1, +0x281388,6, +0x2813a4,10, +0x281400,6, +0x281420,6, 0x281500,5, 0x281520,4, 0x281540,5, 0x281560,4, 0x281800,24, -0x281864,5, +0x281864,6, 0x281880,8, -0x281900,13, -0x281980,4, -0x2819a0,6, -0x2819c0,6, -0x2819dc,1, -0x281a00,6, -0x281a1c,1, -0x281a40,1, -0x281a60,1, -0x281a68,23, +0x281900,24, +0x281964,6, +0x281980,8, +0x281a00,17, +0x281a48,6, +0x281a80,17, 0x281ac8,6, -0x281b00,17, -0x281b48,6, -0x281b80,12, +0x281b00,6, +0x281b20,6, +0x281b40,3, +0x281b80,6, +0x281ba0,6, +0x281bc0,3, 0x281c00,6, 0x281c20,6, -0x281c40,6, -0x281c60,3, -0x281d00,6, -0x281d20,6, -0x281d40,3, -0x281d80,6, -0x281da0,6, -0x281dc0,3, -0x282000,5, -0x282020,4, -0x282034,17, -0x282080,1, +0x281c40,3, +0x281c80,6, +0x281ca0,6, +0x281cc0,3, +0x281d10,2, +0x281d1c,1, +0x281d50,2, +0x281d5c,1, +0x281d80,1, +0x281da0,1, +0x281da8,7, +0x281de0,1, +0x281de8,19, +0x281e40,6, +0x281e60,6, +0x281e80,6, +0x281ea0,6, +0x281ec0,7, +0x281ee0,7, +0x281f00,12, +0x281f40,3, +0x281f50,8, +0x282000,4, +0x282014,1, +0x282020,3, +0x282030,3, +0x282040,8, +0x28207c,2, 0x2820a0,6, -0x282100,5, -0x282120,4, -0x282134,17, -0x282180,1, +0x2820c0,6, +0x2820e0,6, +0x282100,4, +0x282114,1, +0x282120,3, +0x282130,3, +0x282140,8, +0x28217c,2, 0x2821a0,6, -0x282200,5, -0x282220,4, -0x282234,17, -0x282280,1, +0x2821c0,6, +0x2821e0,6, +0x282200,4, +0x282214,1, +0x282220,3, +0x282230,3, +0x282240,8, +0x28227c,2, 0x2822a0,6, -0x282300,5, -0x282320,4, -0x282334,17, -0x282380,1, +0x2822c0,6, +0x2822e0,6, +0x282300,4, +0x282314,1, +0x282320,3, +0x282330,3, +0x282340,8, +0x28237c,2, 0x2823a0,6, +0x2823c0,6, +0x2823e0,6, 0x282400,6, 0x282440,6, 0x282480,3, 0x2824c0,3, -0x282500,6, -0x28251c,7, -0x282540,1, +0x282500,2, +0x28250c,4, +0x282520,2, +0x28252c,4, +0x282540,2, 0x282c00,13, 0x282c40,12, 0x282c80,13, 0x282cc0,12, -0x282d00,6, -0x282d20,6, +0x282d00,14, +0x282d40,2, 0x282d80,14, 0x282dc0,2, -0x282e40,11, +0x282e00,11, +0x282e40,6, +0x282e60,6, 0x282e80,6, 0x282ea0,6, 0x283000,2, -0x283010,5, +0x283014,4, 0x283040,3, 0x283050,3, -0x283060,32, -0x283100,8, -0x283140,8, +0x283080,42, +0x283140,10, 0x283180,3, 0x283190,2, -0x28319c,9, -0x283218,9, -0x283240,3, -0x283250,6, -0x283280,1, -0x283288,6, -0x2832a4,1, -0x2832c0,1, -0x2832c8,6, -0x2832e4,1, -0x283400,8, -0x283424,2, +0x28319c,15, +0x283200,9, +0x283300,1, +0x283308,6, +0x283324,10, +0x283380,1, +0x283388,6, +0x2833a4,10, +0x283400,6, +0x283420,6, 0x283500,5, 0x283520,4, 0x283540,5, 0x283560,4, 0x283800,24, -0x283864,5, +0x283864,6, 0x283880,8, -0x283900,13, -0x283980,4, -0x2839a0,6, -0x2839c0,6, -0x2839dc,1, -0x283a00,6, -0x283a1c,1, -0x283a40,1, -0x283a60,1, -0x283a68,23, +0x283900,24, +0x283964,6, +0x283980,8, +0x283a00,17, +0x283a48,6, +0x283a80,17, 0x283ac8,6, -0x283b00,17, -0x283b48,6, -0x283b80,12, +0x283b00,6, +0x283b20,6, +0x283b40,3, +0x283b80,6, +0x283ba0,6, +0x283bc0,3, 0x283c00,6, 0x283c20,6, -0x283c40,6, -0x283c60,3, -0x283d00,6, -0x283d20,6, -0x283d40,3, -0x283d80,6, -0x283da0,6, -0x283dc0,3, +0x283c40,3, +0x283c80,6, +0x283ca0,6, +0x283cc0,3, +0x283d10,2, +0x283d1c,1, +0x283d50,2, +0x283d5c,1, +0x283d80,1, +0x283da0,1, +0x283da8,7, +0x283de0,1, +0x283de8,19, +0x283e40,6, +0x283e60,6, +0x283e80,6, +0x283ea0,6, +0x283ec0,7, +0x283ee0,7, +0x283f00,12, +0x283f40,3, +0x283f50,8, 0x284000,29, 0x284078,4, 0x284090,2, @@ -9271,8 +10841,10 @@ 0x285eac,1, 0x285eb4,3, 0x286000,14, -0x286070,3, +0x286040,6, +0x286060,6, 0x286080,6, +0x2860a0,3, 0x286100,9, 0x286204,1, 0x28620c,6, @@ -9317,18 +10889,29 @@ 0x286c94,8, 0x286cb8,9, 0x286ce0,4, -0x287000,6, -0x287020,3, -0x287040,7, -0x287060,6, -0x287100,5, -0x287138,1, -0x287144,1, -0x287150,2, +0x287000,1, +0x287028,1, +0x287050,1, +0x287078,1, +0x2870a0,4, +0x2871ac,1, +0x2871d8,4, +0x287200,6, +0x287220,6, +0x287240,3, +0x287400,5, +0x287438,1, +0x287444,1, +0x287450,4, +0x287500,7, +0x287520,6, +0x287540,6, +0x287560,3, +0x287570,1, 0x288000,6, 0x288020,3, -0x288030,1, -0x288038,7, +0x288030,3, +0x288050,1, 0x288100,6, 0x288120,10, 0x288150,10, @@ -9362,15 +10945,19 @@ 0x2889f4,3, 0x289000,4, 0x289020,4, -0x289040,3, -0x289050,3, -0x289080,2, -0x2890b0,3, -0x28912c,1, -0x289140,6, -0x289200,20, -0x28925c,30, -0x289300,24, +0x289040,11, +0x289070,3, +0x289080,4, +0x2890b0,22, +0x289110,2, +0x289120,22, +0x289180,1, +0x2891a0,6, +0x289200,42, +0x2892c0,1, +0x2892c8,3, +0x289300,25, +0x28936c,4, 0x289380,2, 0x2893a0,1, 0x2893c0,11, @@ -9379,18 +10966,25 @@ 0x289480,6, 0x289500,6, 0x289520,6, +0x289540,3, +0x289550,7, +0x289570,4, 0x289800,410, 0x28a000,4, 0x28a020,4, -0x28a040,3, -0x28a050,3, -0x28a080,2, -0x28a0b0,3, -0x28a12c,1, -0x28a140,6, -0x28a200,20, -0x28a25c,30, -0x28a300,24, +0x28a040,11, +0x28a070,3, +0x28a080,4, +0x28a0b0,22, +0x28a110,2, +0x28a120,22, +0x28a180,1, +0x28a1a0,6, +0x28a200,42, +0x28a2c0,1, +0x28a2c8,3, +0x28a300,25, +0x28a36c,4, 0x28a380,2, 0x28a3a0,1, 0x28a3c0,11, @@ -9399,18 +10993,25 @@ 0x28a480,6, 0x28a500,6, 0x28a520,6, +0x28a540,3, +0x28a550,7, +0x28a570,4, 0x28a800,410, 0x28b000,4, 0x28b020,4, -0x28b040,3, -0x28b050,3, -0x28b080,2, -0x28b0b0,3, -0x28b12c,1, -0x28b140,6, -0x28b200,20, -0x28b25c,30, -0x28b300,24, +0x28b040,11, +0x28b070,3, +0x28b080,4, +0x28b0b0,22, +0x28b110,2, +0x28b120,22, +0x28b180,1, +0x28b1a0,6, +0x28b200,42, +0x28b2c0,1, +0x28b2c8,3, +0x28b300,25, +0x28b36c,4, 0x28b380,2, 0x28b3a0,1, 0x28b3c0,11, @@ -9419,18 +11020,25 @@ 0x28b480,6, 0x28b500,6, 0x28b520,6, +0x28b540,3, +0x28b550,7, +0x28b570,4, 0x28b800,410, 0x28c000,4, 0x28c020,4, -0x28c040,3, -0x28c050,3, -0x28c080,2, -0x28c0b0,3, -0x28c12c,1, -0x28c140,6, -0x28c200,20, -0x28c25c,30, -0x28c300,24, +0x28c040,11, +0x28c070,3, +0x28c080,4, +0x28c0b0,22, +0x28c110,2, +0x28c120,22, +0x28c180,1, +0x28c1a0,6, +0x28c200,42, +0x28c2c0,1, +0x28c2c8,3, +0x28c300,25, +0x28c36c,4, 0x28c380,2, 0x28c3a0,1, 0x28c3c0,11, @@ -9439,6 +11047,9 @@ 0x28c480,6, 0x28c500,6, 0x28c520,6, +0x28c540,3, +0x28c550,7, +0x28c570,4, 0x28c800,410, 0x28f800,5, 0x28f818,1, @@ -9465,23 +11076,30 @@ 0x28fba4,1, 0x28fbac,2, 0x294000,3, -0x294018,3, -0x294100,25, +0x294018,4, +0x294100,56, +0x2941f0,1, 0x294400,3, -0x294418,3, -0x294500,25, -0x294800,1, +0x294418,4, +0x294500,56, +0x2945f0,1, +0x294800,5, +0x294820,3, 0x295000,3, -0x295018,3, -0x295100,25, +0x295018,4, +0x295100,56, +0x2951f0,1, 0x295400,3, -0x295418,3, -0x295500,25, -0x295800,1, +0x295418,4, +0x295500,56, +0x2955f0,1, +0x295800,5, +0x295820,3, 0x296004,7, -0x296024,3, +0x296024,1, +0x296034,3, 0x296300,5, -0x29631c,3, +0x29631c,1, 0x296600,10, 0x296630,1, 0x296680,10, @@ -9491,36 +11109,37 @@ 0x296780,10, 0x2967b0,1, 0x296800,47, -0x296910,12, -0x297000,64, +0x296910,14, +0x296e00,1, +0x297000,65, 0x298000,2, -0x29800c,9, -0x298040,6, -0x298060,6, -0x298080,2, -0x29808c,5, -0x2980a4,3, -0x2980e0,1, -0x298500,2, -0x298518,5, -0x298540,6, +0x29800c,3, +0x298028,2, +0x298038,47, +0x298500,6, +0x298520,6, +0x298540,3, 0x298580,10, +0x2985c0,15, +0x298600,2, +0x298618,5, +0x298630,1, 0x298800,2, -0x29880c,9, -0x298840,6, -0x298860,6, -0x298880,2, -0x29888c,5, -0x2988a4,3, -0x2988e0,1, -0x298d00,2, -0x298d18,5, -0x298d40,6, +0x29880c,3, +0x298828,2, +0x298838,47, +0x298d00,6, +0x298d20,6, +0x298d40,3, 0x298d80,10, -0x299800,2, -0x299828,2, -0x299850,2, -0x299878,2, +0x298dc0,15, +0x298e00,2, +0x298e18,5, +0x298e30,1, +0x299800,3, +0x299828,3, +0x299850,3, +0x299878,3, 0x2998a0,7, 0x2999ac,1, 0x2999d8,4, @@ -9528,191 +11147,253 @@ 0x299a20,6, 0x299a40,6, 0x299a60,6, -0x299a80,3, +0x299a80,6, +0x299aa0,6, +0x299ac0,3, 0x299c00,6, 0x299c20,3, 0x299c40,2, 0x299c60,1, -0x2a0000,5, -0x2a0020,4, -0x2a0034,17, -0x2a0080,1, +0x2a0000,4, +0x2a0014,1, +0x2a0020,3, +0x2a0030,3, +0x2a0040,8, +0x2a007c,2, 0x2a00a0,6, -0x2a0100,5, -0x2a0120,4, -0x2a0134,17, -0x2a0180,1, +0x2a00c0,6, +0x2a00e0,6, +0x2a0100,4, +0x2a0114,1, +0x2a0120,3, +0x2a0130,3, +0x2a0140,8, +0x2a017c,2, 0x2a01a0,6, -0x2a0200,5, -0x2a0220,4, -0x2a0234,17, -0x2a0280,1, +0x2a01c0,6, +0x2a01e0,6, +0x2a0200,4, +0x2a0214,1, +0x2a0220,3, +0x2a0230,3, +0x2a0240,8, +0x2a027c,2, 0x2a02a0,6, -0x2a0300,5, -0x2a0320,4, -0x2a0334,17, -0x2a0380,1, +0x2a02c0,6, +0x2a02e0,6, +0x2a0300,4, +0x2a0314,1, +0x2a0320,3, +0x2a0330,3, +0x2a0340,8, +0x2a037c,2, 0x2a03a0,6, +0x2a03c0,6, +0x2a03e0,6, 0x2a0400,6, 0x2a0440,6, 0x2a0480,3, 0x2a04c0,3, -0x2a0500,6, -0x2a051c,7, -0x2a0540,1, +0x2a0500,2, +0x2a050c,4, +0x2a0520,2, +0x2a052c,4, +0x2a0540,2, 0x2a0c00,13, 0x2a0c40,12, 0x2a0c80,13, 0x2a0cc0,12, -0x2a0d00,6, -0x2a0d20,6, +0x2a0d00,14, +0x2a0d40,2, 0x2a0d80,14, 0x2a0dc0,2, -0x2a0e40,11, +0x2a0e00,11, +0x2a0e40,6, +0x2a0e60,6, 0x2a0e80,6, 0x2a0ea0,6, 0x2a1000,2, -0x2a1010,5, +0x2a1014,4, 0x2a1040,3, 0x2a1050,3, -0x2a1060,32, -0x2a1100,8, -0x2a1140,8, +0x2a1080,42, +0x2a1140,10, 0x2a1180,3, 0x2a1190,2, -0x2a119c,9, -0x2a1218,9, -0x2a1240,3, -0x2a1250,6, -0x2a1280,1, -0x2a1288,6, -0x2a12a4,1, -0x2a12c0,1, -0x2a12c8,6, -0x2a12e4,1, -0x2a1400,8, -0x2a1424,2, +0x2a119c,15, +0x2a1200,9, +0x2a1300,1, +0x2a1308,6, +0x2a1324,10, +0x2a1380,1, +0x2a1388,6, +0x2a13a4,10, +0x2a1400,6, +0x2a1420,6, 0x2a1500,5, 0x2a1520,4, 0x2a1540,5, 0x2a1560,4, 0x2a1800,24, -0x2a1864,5, +0x2a1864,6, 0x2a1880,8, -0x2a1900,13, -0x2a1980,4, -0x2a19a0,6, -0x2a19c0,6, -0x2a19dc,1, -0x2a1a00,6, -0x2a1a1c,1, -0x2a1a40,1, -0x2a1a60,1, -0x2a1a68,23, +0x2a1900,24, +0x2a1964,6, +0x2a1980,8, +0x2a1a00,17, +0x2a1a48,6, +0x2a1a80,17, 0x2a1ac8,6, -0x2a1b00,17, -0x2a1b48,6, -0x2a1b80,12, +0x2a1b00,6, +0x2a1b20,6, +0x2a1b40,3, +0x2a1b80,6, +0x2a1ba0,6, +0x2a1bc0,3, 0x2a1c00,6, 0x2a1c20,6, -0x2a1c40,6, -0x2a1c60,3, -0x2a1d00,6, -0x2a1d20,6, -0x2a1d40,3, -0x2a1d80,6, -0x2a1da0,6, -0x2a1dc0,3, -0x2a2000,5, -0x2a2020,4, -0x2a2034,17, -0x2a2080,1, +0x2a1c40,3, +0x2a1c80,6, +0x2a1ca0,6, +0x2a1cc0,3, +0x2a1d10,2, +0x2a1d1c,1, +0x2a1d50,2, +0x2a1d5c,1, +0x2a1d80,1, +0x2a1da0,1, +0x2a1da8,7, +0x2a1de0,1, +0x2a1de8,19, +0x2a1e40,6, +0x2a1e60,6, +0x2a1e80,6, +0x2a1ea0,6, +0x2a1ec0,7, +0x2a1ee0,7, +0x2a1f00,12, +0x2a1f40,3, +0x2a1f50,8, +0x2a2000,4, +0x2a2014,1, +0x2a2020,3, +0x2a2030,3, +0x2a2040,8, +0x2a207c,2, 0x2a20a0,6, -0x2a2100,5, -0x2a2120,4, -0x2a2134,17, -0x2a2180,1, +0x2a20c0,6, +0x2a20e0,6, +0x2a2100,4, +0x2a2114,1, +0x2a2120,3, +0x2a2130,3, +0x2a2140,8, +0x2a217c,2, 0x2a21a0,6, -0x2a2200,5, -0x2a2220,4, -0x2a2234,17, -0x2a2280,1, +0x2a21c0,6, +0x2a21e0,6, +0x2a2200,4, +0x2a2214,1, +0x2a2220,3, +0x2a2230,3, +0x2a2240,8, +0x2a227c,2, 0x2a22a0,6, -0x2a2300,5, -0x2a2320,4, -0x2a2334,17, -0x2a2380,1, +0x2a22c0,6, +0x2a22e0,6, +0x2a2300,4, +0x2a2314,1, +0x2a2320,3, +0x2a2330,3, +0x2a2340,8, +0x2a237c,2, 0x2a23a0,6, +0x2a23c0,6, +0x2a23e0,6, 0x2a2400,6, 0x2a2440,6, 0x2a2480,3, 0x2a24c0,3, -0x2a2500,6, -0x2a251c,7, -0x2a2540,1, +0x2a2500,2, +0x2a250c,4, +0x2a2520,2, +0x2a252c,4, +0x2a2540,2, 0x2a2c00,13, 0x2a2c40,12, 0x2a2c80,13, 0x2a2cc0,12, -0x2a2d00,6, -0x2a2d20,6, +0x2a2d00,14, +0x2a2d40,2, 0x2a2d80,14, 0x2a2dc0,2, -0x2a2e40,11, +0x2a2e00,11, +0x2a2e40,6, +0x2a2e60,6, 0x2a2e80,6, 0x2a2ea0,6, 0x2a3000,2, -0x2a3010,5, +0x2a3014,4, 0x2a3040,3, 0x2a3050,3, -0x2a3060,32, -0x2a3100,8, -0x2a3140,8, +0x2a3080,42, +0x2a3140,10, 0x2a3180,3, 0x2a3190,2, -0x2a319c,9, -0x2a3218,9, -0x2a3240,3, -0x2a3250,6, -0x2a3280,1, -0x2a3288,6, -0x2a32a4,1, -0x2a32c0,1, -0x2a32c8,6, -0x2a32e4,1, -0x2a3400,8, -0x2a3424,2, +0x2a319c,15, +0x2a3200,9, +0x2a3300,1, +0x2a3308,6, +0x2a3324,10, +0x2a3380,1, +0x2a3388,6, +0x2a33a4,10, +0x2a3400,6, +0x2a3420,6, 0x2a3500,5, 0x2a3520,4, 0x2a3540,5, 0x2a3560,4, 0x2a3800,24, -0x2a3864,5, +0x2a3864,6, 0x2a3880,8, -0x2a3900,13, -0x2a3980,4, -0x2a39a0,6, -0x2a39c0,6, -0x2a39dc,1, -0x2a3a00,6, -0x2a3a1c,1, -0x2a3a40,1, -0x2a3a60,1, -0x2a3a68,23, +0x2a3900,24, +0x2a3964,6, +0x2a3980,8, +0x2a3a00,17, +0x2a3a48,6, +0x2a3a80,17, 0x2a3ac8,6, -0x2a3b00,17, -0x2a3b48,6, -0x2a3b80,12, +0x2a3b00,6, +0x2a3b20,6, +0x2a3b40,3, +0x2a3b80,6, +0x2a3ba0,6, +0x2a3bc0,3, 0x2a3c00,6, 0x2a3c20,6, -0x2a3c40,6, -0x2a3c60,3, -0x2a3d00,6, -0x2a3d20,6, -0x2a3d40,3, -0x2a3d80,6, -0x2a3da0,6, -0x2a3dc0,3, +0x2a3c40,3, +0x2a3c80,6, +0x2a3ca0,6, +0x2a3cc0,3, +0x2a3d10,2, +0x2a3d1c,1, +0x2a3d50,2, +0x2a3d5c,1, +0x2a3d80,1, +0x2a3da0,1, +0x2a3da8,7, +0x2a3de0,1, +0x2a3de8,19, +0x2a3e40,6, +0x2a3e60,6, +0x2a3e80,6, +0x2a3ea0,6, +0x2a3ec0,7, +0x2a3ee0,7, +0x2a3f00,12, +0x2a3f40,3, +0x2a3f50,8, 0x2a4000,29, 0x2a4078,4, 0x2a4090,2, @@ -9836,8 +11517,10 @@ 0x2a5eac,1, 0x2a5eb4,3, 0x2a6000,14, -0x2a6070,3, +0x2a6040,6, +0x2a6060,6, 0x2a6080,6, +0x2a60a0,3, 0x2a6100,9, 0x2a6204,1, 0x2a620c,6, @@ -9882,18 +11565,29 @@ 0x2a6c94,8, 0x2a6cb8,9, 0x2a6ce0,4, -0x2a7000,6, -0x2a7020,3, -0x2a7040,7, -0x2a7060,6, -0x2a7100,5, -0x2a7138,1, -0x2a7144,1, -0x2a7150,2, +0x2a7000,1, +0x2a7028,1, +0x2a7050,1, +0x2a7078,1, +0x2a70a0,4, +0x2a71ac,1, +0x2a71d8,4, +0x2a7200,6, +0x2a7220,6, +0x2a7240,3, +0x2a7400,5, +0x2a7438,1, +0x2a7444,1, +0x2a7450,4, +0x2a7500,7, +0x2a7520,6, +0x2a7540,6, +0x2a7560,3, +0x2a7570,1, 0x2a8000,6, 0x2a8020,3, -0x2a8030,1, -0x2a8038,7, +0x2a8030,3, +0x2a8050,1, 0x2a8100,6, 0x2a8120,10, 0x2a8150,10, @@ -9927,15 +11621,19 @@ 0x2a89f4,3, 0x2a9000,4, 0x2a9020,4, -0x2a9040,3, -0x2a9050,3, -0x2a9080,2, -0x2a90b0,3, -0x2a912c,1, -0x2a9140,6, -0x2a9200,20, -0x2a925c,30, -0x2a9300,24, +0x2a9040,11, +0x2a9070,3, +0x2a9080,4, +0x2a90b0,22, +0x2a9110,2, +0x2a9120,22, +0x2a9180,1, +0x2a91a0,6, +0x2a9200,42, +0x2a92c0,1, +0x2a92c8,3, +0x2a9300,25, +0x2a936c,4, 0x2a9380,2, 0x2a93a0,1, 0x2a93c0,11, @@ -9944,18 +11642,25 @@ 0x2a9480,6, 0x2a9500,6, 0x2a9520,6, +0x2a9540,3, +0x2a9550,7, +0x2a9570,4, 0x2a9800,410, 0x2aa000,4, 0x2aa020,4, -0x2aa040,3, -0x2aa050,3, -0x2aa080,2, -0x2aa0b0,3, -0x2aa12c,1, -0x2aa140,6, -0x2aa200,20, -0x2aa25c,30, -0x2aa300,24, +0x2aa040,11, +0x2aa070,3, +0x2aa080,4, +0x2aa0b0,22, +0x2aa110,2, +0x2aa120,22, +0x2aa180,1, +0x2aa1a0,6, +0x2aa200,42, +0x2aa2c0,1, +0x2aa2c8,3, +0x2aa300,25, +0x2aa36c,4, 0x2aa380,2, 0x2aa3a0,1, 0x2aa3c0,11, @@ -9964,18 +11669,25 @@ 0x2aa480,6, 0x2aa500,6, 0x2aa520,6, +0x2aa540,3, +0x2aa550,7, +0x2aa570,4, 0x2aa800,410, 0x2ab000,4, 0x2ab020,4, -0x2ab040,3, -0x2ab050,3, -0x2ab080,2, -0x2ab0b0,3, -0x2ab12c,1, -0x2ab140,6, -0x2ab200,20, -0x2ab25c,30, -0x2ab300,24, +0x2ab040,11, +0x2ab070,3, +0x2ab080,4, +0x2ab0b0,22, +0x2ab110,2, +0x2ab120,22, +0x2ab180,1, +0x2ab1a0,6, +0x2ab200,42, +0x2ab2c0,1, +0x2ab2c8,3, +0x2ab300,25, +0x2ab36c,4, 0x2ab380,2, 0x2ab3a0,1, 0x2ab3c0,11, @@ -9984,18 +11696,25 @@ 0x2ab480,6, 0x2ab500,6, 0x2ab520,6, +0x2ab540,3, +0x2ab550,7, +0x2ab570,4, 0x2ab800,410, 0x2ac000,4, 0x2ac020,4, -0x2ac040,3, -0x2ac050,3, -0x2ac080,2, -0x2ac0b0,3, -0x2ac12c,1, -0x2ac140,6, -0x2ac200,20, -0x2ac25c,30, -0x2ac300,24, +0x2ac040,11, +0x2ac070,3, +0x2ac080,4, +0x2ac0b0,22, +0x2ac110,2, +0x2ac120,22, +0x2ac180,1, +0x2ac1a0,6, +0x2ac200,42, +0x2ac2c0,1, +0x2ac2c8,3, +0x2ac300,25, +0x2ac36c,4, 0x2ac380,2, 0x2ac3a0,1, 0x2ac3c0,11, @@ -10004,6 +11723,9 @@ 0x2ac480,6, 0x2ac500,6, 0x2ac520,6, +0x2ac540,3, +0x2ac550,7, +0x2ac570,4, 0x2ac800,410, 0x2af800,5, 0x2af818,1, @@ -10030,23 +11752,30 @@ 0x2afba4,1, 0x2afbac,2, 0x2b4000,3, -0x2b4018,3, -0x2b4100,25, +0x2b4018,4, +0x2b4100,56, +0x2b41f0,1, 0x2b4400,3, -0x2b4418,3, -0x2b4500,25, -0x2b4800,1, +0x2b4418,4, +0x2b4500,56, +0x2b45f0,1, +0x2b4800,5, +0x2b4820,3, 0x2b5000,3, -0x2b5018,3, -0x2b5100,25, +0x2b5018,4, +0x2b5100,56, +0x2b51f0,1, 0x2b5400,3, -0x2b5418,3, -0x2b5500,25, -0x2b5800,1, +0x2b5418,4, +0x2b5500,56, +0x2b55f0,1, +0x2b5800,5, +0x2b5820,3, 0x2b6004,7, -0x2b6024,3, +0x2b6024,1, +0x2b6034,3, 0x2b6300,5, -0x2b631c,3, +0x2b631c,1, 0x2b6600,10, 0x2b6630,1, 0x2b6680,10, @@ -10056,36 +11785,37 @@ 0x2b6780,10, 0x2b67b0,1, 0x2b6800,47, -0x2b6910,12, -0x2b7000,64, +0x2b6910,14, +0x2b6e00,1, +0x2b7000,65, 0x2b8000,2, -0x2b800c,9, -0x2b8040,6, -0x2b8060,6, -0x2b8080,2, -0x2b808c,5, -0x2b80a4,3, -0x2b80e0,1, -0x2b8500,2, -0x2b8518,5, -0x2b8540,6, +0x2b800c,3, +0x2b8028,2, +0x2b8038,47, +0x2b8500,6, +0x2b8520,6, +0x2b8540,3, 0x2b8580,10, +0x2b85c0,15, +0x2b8600,2, +0x2b8618,5, +0x2b8630,1, 0x2b8800,2, -0x2b880c,9, -0x2b8840,6, -0x2b8860,6, -0x2b8880,2, -0x2b888c,5, -0x2b88a4,3, -0x2b88e0,1, -0x2b8d00,2, -0x2b8d18,5, -0x2b8d40,6, +0x2b880c,3, +0x2b8828,2, +0x2b8838,47, +0x2b8d00,6, +0x2b8d20,6, +0x2b8d40,3, 0x2b8d80,10, -0x2b9800,2, -0x2b9828,2, -0x2b9850,2, -0x2b9878,2, +0x2b8dc0,15, +0x2b8e00,2, +0x2b8e18,5, +0x2b8e30,1, +0x2b9800,3, +0x2b9828,3, +0x2b9850,3, +0x2b9878,3, 0x2b98a0,7, 0x2b99ac,1, 0x2b99d8,4, @@ -10093,191 +11823,253 @@ 0x2b9a20,6, 0x2b9a40,6, 0x2b9a60,6, -0x2b9a80,3, +0x2b9a80,6, +0x2b9aa0,6, +0x2b9ac0,3, 0x2b9c00,6, 0x2b9c20,3, 0x2b9c40,2, 0x2b9c60,1, -0x2c0000,5, -0x2c0020,4, -0x2c0034,17, -0x2c0080,1, +0x2c0000,4, +0x2c0014,1, +0x2c0020,3, +0x2c0030,3, +0x2c0040,8, +0x2c007c,2, 0x2c00a0,6, -0x2c0100,5, -0x2c0120,4, -0x2c0134,17, -0x2c0180,1, +0x2c00c0,6, +0x2c00e0,6, +0x2c0100,4, +0x2c0114,1, +0x2c0120,3, +0x2c0130,3, +0x2c0140,8, +0x2c017c,2, 0x2c01a0,6, -0x2c0200,5, -0x2c0220,4, -0x2c0234,17, -0x2c0280,1, +0x2c01c0,6, +0x2c01e0,6, +0x2c0200,4, +0x2c0214,1, +0x2c0220,3, +0x2c0230,3, +0x2c0240,8, +0x2c027c,2, 0x2c02a0,6, -0x2c0300,5, -0x2c0320,4, -0x2c0334,17, -0x2c0380,1, +0x2c02c0,6, +0x2c02e0,6, +0x2c0300,4, +0x2c0314,1, +0x2c0320,3, +0x2c0330,3, +0x2c0340,8, +0x2c037c,2, 0x2c03a0,6, +0x2c03c0,6, +0x2c03e0,6, 0x2c0400,6, 0x2c0440,6, 0x2c0480,3, 0x2c04c0,3, -0x2c0500,6, -0x2c051c,7, -0x2c0540,1, +0x2c0500,2, +0x2c050c,4, +0x2c0520,2, +0x2c052c,4, +0x2c0540,2, 0x2c0c00,13, 0x2c0c40,12, 0x2c0c80,13, 0x2c0cc0,12, -0x2c0d00,6, -0x2c0d20,6, +0x2c0d00,14, +0x2c0d40,2, 0x2c0d80,14, 0x2c0dc0,2, -0x2c0e40,11, +0x2c0e00,11, +0x2c0e40,6, +0x2c0e60,6, 0x2c0e80,6, 0x2c0ea0,6, 0x2c1000,2, -0x2c1010,5, +0x2c1014,4, 0x2c1040,3, 0x2c1050,3, -0x2c1060,32, -0x2c1100,8, -0x2c1140,8, +0x2c1080,42, +0x2c1140,10, 0x2c1180,3, 0x2c1190,2, -0x2c119c,9, -0x2c1218,9, -0x2c1240,3, -0x2c1250,6, -0x2c1280,1, -0x2c1288,6, -0x2c12a4,1, -0x2c12c0,1, -0x2c12c8,6, -0x2c12e4,1, -0x2c1400,8, -0x2c1424,2, +0x2c119c,15, +0x2c1200,9, +0x2c1300,1, +0x2c1308,6, +0x2c1324,10, +0x2c1380,1, +0x2c1388,6, +0x2c13a4,10, +0x2c1400,6, +0x2c1420,6, 0x2c1500,5, 0x2c1520,4, 0x2c1540,5, 0x2c1560,4, 0x2c1800,24, -0x2c1864,5, +0x2c1864,6, 0x2c1880,8, -0x2c1900,13, -0x2c1980,4, -0x2c19a0,6, -0x2c19c0,6, -0x2c19dc,1, -0x2c1a00,6, -0x2c1a1c,1, -0x2c1a40,1, -0x2c1a60,1, -0x2c1a68,23, +0x2c1900,24, +0x2c1964,6, +0x2c1980,8, +0x2c1a00,17, +0x2c1a48,6, +0x2c1a80,17, 0x2c1ac8,6, -0x2c1b00,17, -0x2c1b48,6, -0x2c1b80,12, +0x2c1b00,6, +0x2c1b20,6, +0x2c1b40,3, +0x2c1b80,6, +0x2c1ba0,6, +0x2c1bc0,3, 0x2c1c00,6, 0x2c1c20,6, -0x2c1c40,6, -0x2c1c60,3, -0x2c1d00,6, -0x2c1d20,6, -0x2c1d40,3, -0x2c1d80,6, -0x2c1da0,6, -0x2c1dc0,3, -0x2c2000,5, -0x2c2020,4, -0x2c2034,17, -0x2c2080,1, +0x2c1c40,3, +0x2c1c80,6, +0x2c1ca0,6, +0x2c1cc0,3, +0x2c1d10,2, +0x2c1d1c,1, +0x2c1d50,2, +0x2c1d5c,1, +0x2c1d80,1, +0x2c1da0,1, +0x2c1da8,7, +0x2c1de0,1, +0x2c1de8,19, +0x2c1e40,6, +0x2c1e60,6, +0x2c1e80,6, +0x2c1ea0,6, +0x2c1ec0,7, +0x2c1ee0,7, +0x2c1f00,12, +0x2c1f40,3, +0x2c1f50,8, +0x2c2000,4, +0x2c2014,1, +0x2c2020,3, +0x2c2030,3, +0x2c2040,8, +0x2c207c,2, 0x2c20a0,6, -0x2c2100,5, -0x2c2120,4, -0x2c2134,17, -0x2c2180,1, +0x2c20c0,6, +0x2c20e0,6, +0x2c2100,4, +0x2c2114,1, +0x2c2120,3, +0x2c2130,3, +0x2c2140,8, +0x2c217c,2, 0x2c21a0,6, -0x2c2200,5, -0x2c2220,4, -0x2c2234,17, -0x2c2280,1, +0x2c21c0,6, +0x2c21e0,6, +0x2c2200,4, +0x2c2214,1, +0x2c2220,3, +0x2c2230,3, +0x2c2240,8, +0x2c227c,2, 0x2c22a0,6, -0x2c2300,5, -0x2c2320,4, -0x2c2334,17, -0x2c2380,1, +0x2c22c0,6, +0x2c22e0,6, +0x2c2300,4, +0x2c2314,1, +0x2c2320,3, +0x2c2330,3, +0x2c2340,8, +0x2c237c,2, 0x2c23a0,6, +0x2c23c0,6, +0x2c23e0,6, 0x2c2400,6, 0x2c2440,6, 0x2c2480,3, 0x2c24c0,3, -0x2c2500,6, -0x2c251c,7, -0x2c2540,1, +0x2c2500,2, +0x2c250c,4, +0x2c2520,2, +0x2c252c,4, +0x2c2540,2, 0x2c2c00,13, 0x2c2c40,12, 0x2c2c80,13, 0x2c2cc0,12, -0x2c2d00,6, -0x2c2d20,6, +0x2c2d00,14, +0x2c2d40,2, 0x2c2d80,14, 0x2c2dc0,2, -0x2c2e40,11, +0x2c2e00,11, +0x2c2e40,6, +0x2c2e60,6, 0x2c2e80,6, 0x2c2ea0,6, 0x2c3000,2, -0x2c3010,5, +0x2c3014,4, 0x2c3040,3, 0x2c3050,3, -0x2c3060,32, -0x2c3100,8, -0x2c3140,8, +0x2c3080,42, +0x2c3140,10, 0x2c3180,3, 0x2c3190,2, -0x2c319c,9, -0x2c3218,9, -0x2c3240,3, -0x2c3250,6, -0x2c3280,1, -0x2c3288,6, -0x2c32a4,1, -0x2c32c0,1, -0x2c32c8,6, -0x2c32e4,1, -0x2c3400,8, -0x2c3424,2, +0x2c319c,15, +0x2c3200,9, +0x2c3300,1, +0x2c3308,6, +0x2c3324,10, +0x2c3380,1, +0x2c3388,6, +0x2c33a4,10, +0x2c3400,6, +0x2c3420,6, 0x2c3500,5, 0x2c3520,4, 0x2c3540,5, 0x2c3560,4, 0x2c3800,24, -0x2c3864,5, +0x2c3864,6, 0x2c3880,8, -0x2c3900,13, -0x2c3980,4, -0x2c39a0,6, -0x2c39c0,6, -0x2c39dc,1, -0x2c3a00,6, -0x2c3a1c,1, -0x2c3a40,1, -0x2c3a60,1, -0x2c3a68,23, +0x2c3900,24, +0x2c3964,6, +0x2c3980,8, +0x2c3a00,17, +0x2c3a48,6, +0x2c3a80,17, 0x2c3ac8,6, -0x2c3b00,17, -0x2c3b48,6, -0x2c3b80,12, +0x2c3b00,6, +0x2c3b20,6, +0x2c3b40,3, +0x2c3b80,6, +0x2c3ba0,6, +0x2c3bc0,3, 0x2c3c00,6, 0x2c3c20,6, -0x2c3c40,6, -0x2c3c60,3, -0x2c3d00,6, -0x2c3d20,6, -0x2c3d40,3, -0x2c3d80,6, -0x2c3da0,6, -0x2c3dc0,3, +0x2c3c40,3, +0x2c3c80,6, +0x2c3ca0,6, +0x2c3cc0,3, +0x2c3d10,2, +0x2c3d1c,1, +0x2c3d50,2, +0x2c3d5c,1, +0x2c3d80,1, +0x2c3da0,1, +0x2c3da8,7, +0x2c3de0,1, +0x2c3de8,19, +0x2c3e40,6, +0x2c3e60,6, +0x2c3e80,6, +0x2c3ea0,6, +0x2c3ec0,7, +0x2c3ee0,7, +0x2c3f00,12, +0x2c3f40,3, +0x2c3f50,8, 0x2c4000,29, 0x2c4078,4, 0x2c4090,2, @@ -10401,8 +12193,10 @@ 0x2c5eac,1, 0x2c5eb4,3, 0x2c6000,14, -0x2c6070,3, +0x2c6040,6, +0x2c6060,6, 0x2c6080,6, +0x2c60a0,3, 0x2c6100,9, 0x2c6204,1, 0x2c620c,6, @@ -10447,18 +12241,29 @@ 0x2c6c94,8, 0x2c6cb8,9, 0x2c6ce0,4, -0x2c7000,6, -0x2c7020,3, -0x2c7040,7, -0x2c7060,6, -0x2c7100,5, -0x2c7138,1, -0x2c7144,1, -0x2c7150,2, +0x2c7000,1, +0x2c7028,1, +0x2c7050,1, +0x2c7078,1, +0x2c70a0,4, +0x2c71ac,1, +0x2c71d8,4, +0x2c7200,6, +0x2c7220,6, +0x2c7240,3, +0x2c7400,5, +0x2c7438,1, +0x2c7444,1, +0x2c7450,4, +0x2c7500,7, +0x2c7520,6, +0x2c7540,6, +0x2c7560,3, +0x2c7570,1, 0x2c8000,6, 0x2c8020,3, -0x2c8030,1, -0x2c8038,7, +0x2c8030,3, +0x2c8050,1, 0x2c8100,6, 0x2c8120,10, 0x2c8150,10, @@ -10492,15 +12297,19 @@ 0x2c89f4,3, 0x2c9000,4, 0x2c9020,4, -0x2c9040,3, -0x2c9050,3, -0x2c9080,2, -0x2c90b0,3, -0x2c912c,1, -0x2c9140,6, -0x2c9200,20, -0x2c925c,30, -0x2c9300,24, +0x2c9040,11, +0x2c9070,3, +0x2c9080,4, +0x2c90b0,22, +0x2c9110,2, +0x2c9120,22, +0x2c9180,1, +0x2c91a0,6, +0x2c9200,42, +0x2c92c0,1, +0x2c92c8,3, +0x2c9300,25, +0x2c936c,4, 0x2c9380,2, 0x2c93a0,1, 0x2c93c0,11, @@ -10509,18 +12318,25 @@ 0x2c9480,6, 0x2c9500,6, 0x2c9520,6, +0x2c9540,3, +0x2c9550,7, +0x2c9570,4, 0x2c9800,410, 0x2ca000,4, 0x2ca020,4, -0x2ca040,3, -0x2ca050,3, -0x2ca080,2, -0x2ca0b0,3, -0x2ca12c,1, -0x2ca140,6, -0x2ca200,20, -0x2ca25c,30, -0x2ca300,24, +0x2ca040,11, +0x2ca070,3, +0x2ca080,4, +0x2ca0b0,22, +0x2ca110,2, +0x2ca120,22, +0x2ca180,1, +0x2ca1a0,6, +0x2ca200,42, +0x2ca2c0,1, +0x2ca2c8,3, +0x2ca300,25, +0x2ca36c,4, 0x2ca380,2, 0x2ca3a0,1, 0x2ca3c0,11, @@ -10529,18 +12345,25 @@ 0x2ca480,6, 0x2ca500,6, 0x2ca520,6, +0x2ca540,3, +0x2ca550,7, +0x2ca570,4, 0x2ca800,410, 0x2cb000,4, 0x2cb020,4, -0x2cb040,3, -0x2cb050,3, -0x2cb080,2, -0x2cb0b0,3, -0x2cb12c,1, -0x2cb140,6, -0x2cb200,20, -0x2cb25c,30, -0x2cb300,24, +0x2cb040,11, +0x2cb070,3, +0x2cb080,4, +0x2cb0b0,22, +0x2cb110,2, +0x2cb120,22, +0x2cb180,1, +0x2cb1a0,6, +0x2cb200,42, +0x2cb2c0,1, +0x2cb2c8,3, +0x2cb300,25, +0x2cb36c,4, 0x2cb380,2, 0x2cb3a0,1, 0x2cb3c0,11, @@ -10549,18 +12372,25 @@ 0x2cb480,6, 0x2cb500,6, 0x2cb520,6, +0x2cb540,3, +0x2cb550,7, +0x2cb570,4, 0x2cb800,410, 0x2cc000,4, 0x2cc020,4, -0x2cc040,3, -0x2cc050,3, -0x2cc080,2, -0x2cc0b0,3, -0x2cc12c,1, -0x2cc140,6, -0x2cc200,20, -0x2cc25c,30, -0x2cc300,24, +0x2cc040,11, +0x2cc070,3, +0x2cc080,4, +0x2cc0b0,22, +0x2cc110,2, +0x2cc120,22, +0x2cc180,1, +0x2cc1a0,6, +0x2cc200,42, +0x2cc2c0,1, +0x2cc2c8,3, +0x2cc300,25, +0x2cc36c,4, 0x2cc380,2, 0x2cc3a0,1, 0x2cc3c0,11, @@ -10569,6 +12399,9 @@ 0x2cc480,6, 0x2cc500,6, 0x2cc520,6, +0x2cc540,3, +0x2cc550,7, +0x2cc570,4, 0x2cc800,410, 0x2cf800,5, 0x2cf818,1, @@ -10595,23 +12428,30 @@ 0x2cfba4,1, 0x2cfbac,2, 0x2d4000,3, -0x2d4018,3, -0x2d4100,25, +0x2d4018,4, +0x2d4100,56, +0x2d41f0,1, 0x2d4400,3, -0x2d4418,3, -0x2d4500,25, -0x2d4800,1, +0x2d4418,4, +0x2d4500,56, +0x2d45f0,1, +0x2d4800,5, +0x2d4820,3, 0x2d5000,3, -0x2d5018,3, -0x2d5100,25, +0x2d5018,4, +0x2d5100,56, +0x2d51f0,1, 0x2d5400,3, -0x2d5418,3, -0x2d5500,25, -0x2d5800,1, +0x2d5418,4, +0x2d5500,56, +0x2d55f0,1, +0x2d5800,5, +0x2d5820,3, 0x2d6004,7, -0x2d6024,3, +0x2d6024,1, +0x2d6034,3, 0x2d6300,5, -0x2d631c,3, +0x2d631c,1, 0x2d6600,10, 0x2d6630,1, 0x2d6680,10, @@ -10621,36 +12461,37 @@ 0x2d6780,10, 0x2d67b0,1, 0x2d6800,47, -0x2d6910,12, -0x2d7000,64, +0x2d6910,14, +0x2d6e00,1, +0x2d7000,65, 0x2d8000,2, -0x2d800c,9, -0x2d8040,6, -0x2d8060,6, -0x2d8080,2, -0x2d808c,5, -0x2d80a4,3, -0x2d80e0,1, -0x2d8500,2, -0x2d8518,5, -0x2d8540,6, +0x2d800c,3, +0x2d8028,2, +0x2d8038,47, +0x2d8500,6, +0x2d8520,6, +0x2d8540,3, 0x2d8580,10, +0x2d85c0,15, +0x2d8600,2, +0x2d8618,5, +0x2d8630,1, 0x2d8800,2, -0x2d880c,9, -0x2d8840,6, -0x2d8860,6, -0x2d8880,2, -0x2d888c,5, -0x2d88a4,3, -0x2d88e0,1, -0x2d8d00,2, -0x2d8d18,5, -0x2d8d40,6, +0x2d880c,3, +0x2d8828,2, +0x2d8838,47, +0x2d8d00,6, +0x2d8d20,6, +0x2d8d40,3, 0x2d8d80,10, -0x2d9800,2, -0x2d9828,2, -0x2d9850,2, -0x2d9878,2, +0x2d8dc0,15, +0x2d8e00,2, +0x2d8e18,5, +0x2d8e30,1, +0x2d9800,3, +0x2d9828,3, +0x2d9850,3, +0x2d9878,3, 0x2d98a0,7, 0x2d99ac,1, 0x2d99d8,4, @@ -10658,191 +12499,253 @@ 0x2d9a20,6, 0x2d9a40,6, 0x2d9a60,6, -0x2d9a80,3, +0x2d9a80,6, +0x2d9aa0,6, +0x2d9ac0,3, 0x2d9c00,6, 0x2d9c20,3, 0x2d9c40,2, 0x2d9c60,1, -0x2e0000,5, -0x2e0020,4, -0x2e0034,17, -0x2e0080,1, +0x2e0000,4, +0x2e0014,1, +0x2e0020,3, +0x2e0030,3, +0x2e0040,8, +0x2e007c,2, 0x2e00a0,6, -0x2e0100,5, -0x2e0120,4, -0x2e0134,17, -0x2e0180,1, +0x2e00c0,6, +0x2e00e0,6, +0x2e0100,4, +0x2e0114,1, +0x2e0120,3, +0x2e0130,3, +0x2e0140,8, +0x2e017c,2, 0x2e01a0,6, -0x2e0200,5, -0x2e0220,4, -0x2e0234,17, -0x2e0280,1, +0x2e01c0,6, +0x2e01e0,6, +0x2e0200,4, +0x2e0214,1, +0x2e0220,3, +0x2e0230,3, +0x2e0240,8, +0x2e027c,2, 0x2e02a0,6, -0x2e0300,5, -0x2e0320,4, -0x2e0334,17, -0x2e0380,1, +0x2e02c0,6, +0x2e02e0,6, +0x2e0300,4, +0x2e0314,1, +0x2e0320,3, +0x2e0330,3, +0x2e0340,8, +0x2e037c,2, 0x2e03a0,6, +0x2e03c0,6, +0x2e03e0,6, 0x2e0400,6, 0x2e0440,6, 0x2e0480,3, 0x2e04c0,3, -0x2e0500,6, -0x2e051c,7, -0x2e0540,1, +0x2e0500,2, +0x2e050c,4, +0x2e0520,2, +0x2e052c,4, +0x2e0540,2, 0x2e0c00,13, 0x2e0c40,12, 0x2e0c80,13, 0x2e0cc0,12, -0x2e0d00,6, -0x2e0d20,6, +0x2e0d00,14, +0x2e0d40,2, 0x2e0d80,14, 0x2e0dc0,2, -0x2e0e40,11, +0x2e0e00,11, +0x2e0e40,6, +0x2e0e60,6, 0x2e0e80,6, 0x2e0ea0,6, 0x2e1000,2, -0x2e1010,5, +0x2e1014,4, 0x2e1040,3, 0x2e1050,3, -0x2e1060,32, -0x2e1100,8, -0x2e1140,8, +0x2e1080,42, +0x2e1140,10, 0x2e1180,3, 0x2e1190,2, -0x2e119c,9, -0x2e1218,9, -0x2e1240,3, -0x2e1250,6, -0x2e1280,1, -0x2e1288,6, -0x2e12a4,1, -0x2e12c0,1, -0x2e12c8,6, -0x2e12e4,1, -0x2e1400,8, -0x2e1424,2, +0x2e119c,15, +0x2e1200,9, +0x2e1300,1, +0x2e1308,6, +0x2e1324,10, +0x2e1380,1, +0x2e1388,6, +0x2e13a4,10, +0x2e1400,6, +0x2e1420,6, 0x2e1500,5, 0x2e1520,4, 0x2e1540,5, 0x2e1560,4, 0x2e1800,24, -0x2e1864,5, +0x2e1864,6, 0x2e1880,8, -0x2e1900,13, -0x2e1980,4, -0x2e19a0,6, -0x2e19c0,6, -0x2e19dc,1, -0x2e1a00,6, -0x2e1a1c,1, -0x2e1a40,1, -0x2e1a60,1, -0x2e1a68,23, +0x2e1900,24, +0x2e1964,6, +0x2e1980,8, +0x2e1a00,17, +0x2e1a48,6, +0x2e1a80,17, 0x2e1ac8,6, -0x2e1b00,17, -0x2e1b48,6, -0x2e1b80,12, +0x2e1b00,6, +0x2e1b20,6, +0x2e1b40,3, +0x2e1b80,6, +0x2e1ba0,6, +0x2e1bc0,3, 0x2e1c00,6, 0x2e1c20,6, -0x2e1c40,6, -0x2e1c60,3, -0x2e1d00,6, -0x2e1d20,6, -0x2e1d40,3, -0x2e1d80,6, -0x2e1da0,6, -0x2e1dc0,3, -0x2e2000,5, -0x2e2020,4, -0x2e2034,17, -0x2e2080,1, +0x2e1c40,3, +0x2e1c80,6, +0x2e1ca0,6, +0x2e1cc0,3, +0x2e1d10,2, +0x2e1d1c,1, +0x2e1d50,2, +0x2e1d5c,1, +0x2e1d80,1, +0x2e1da0,1, +0x2e1da8,7, +0x2e1de0,1, +0x2e1de8,19, +0x2e1e40,6, +0x2e1e60,6, +0x2e1e80,6, +0x2e1ea0,6, +0x2e1ec0,7, +0x2e1ee0,7, +0x2e1f00,12, +0x2e1f40,3, +0x2e1f50,8, +0x2e2000,4, +0x2e2014,1, +0x2e2020,3, +0x2e2030,3, +0x2e2040,8, +0x2e207c,2, 0x2e20a0,6, -0x2e2100,5, -0x2e2120,4, -0x2e2134,17, -0x2e2180,1, +0x2e20c0,6, +0x2e20e0,6, +0x2e2100,4, +0x2e2114,1, +0x2e2120,3, +0x2e2130,3, +0x2e2140,8, +0x2e217c,2, 0x2e21a0,6, -0x2e2200,5, -0x2e2220,4, -0x2e2234,17, -0x2e2280,1, +0x2e21c0,6, +0x2e21e0,6, +0x2e2200,4, +0x2e2214,1, +0x2e2220,3, +0x2e2230,3, +0x2e2240,8, +0x2e227c,2, 0x2e22a0,6, -0x2e2300,5, -0x2e2320,4, -0x2e2334,17, -0x2e2380,1, +0x2e22c0,6, +0x2e22e0,6, +0x2e2300,4, +0x2e2314,1, +0x2e2320,3, +0x2e2330,3, +0x2e2340,8, +0x2e237c,2, 0x2e23a0,6, +0x2e23c0,6, +0x2e23e0,6, 0x2e2400,6, 0x2e2440,6, 0x2e2480,3, 0x2e24c0,3, -0x2e2500,6, -0x2e251c,7, -0x2e2540,1, +0x2e2500,2, +0x2e250c,4, +0x2e2520,2, +0x2e252c,4, +0x2e2540,2, 0x2e2c00,13, 0x2e2c40,12, 0x2e2c80,13, 0x2e2cc0,12, -0x2e2d00,6, -0x2e2d20,6, +0x2e2d00,14, +0x2e2d40,2, 0x2e2d80,14, 0x2e2dc0,2, -0x2e2e40,11, +0x2e2e00,11, +0x2e2e40,6, +0x2e2e60,6, 0x2e2e80,6, 0x2e2ea0,6, 0x2e3000,2, -0x2e3010,5, +0x2e3014,4, 0x2e3040,3, 0x2e3050,3, -0x2e3060,32, -0x2e3100,8, -0x2e3140,8, +0x2e3080,42, +0x2e3140,10, 0x2e3180,3, 0x2e3190,2, -0x2e319c,9, -0x2e3218,9, -0x2e3240,3, -0x2e3250,6, -0x2e3280,1, -0x2e3288,6, -0x2e32a4,1, -0x2e32c0,1, -0x2e32c8,6, -0x2e32e4,1, -0x2e3400,8, -0x2e3424,2, +0x2e319c,15, +0x2e3200,9, +0x2e3300,1, +0x2e3308,6, +0x2e3324,10, +0x2e3380,1, +0x2e3388,6, +0x2e33a4,10, +0x2e3400,6, +0x2e3420,6, 0x2e3500,5, 0x2e3520,4, 0x2e3540,5, 0x2e3560,4, 0x2e3800,24, -0x2e3864,5, +0x2e3864,6, 0x2e3880,8, -0x2e3900,13, -0x2e3980,4, -0x2e39a0,6, -0x2e39c0,6, -0x2e39dc,1, -0x2e3a00,6, -0x2e3a1c,1, -0x2e3a40,1, -0x2e3a60,1, -0x2e3a68,23, +0x2e3900,24, +0x2e3964,6, +0x2e3980,8, +0x2e3a00,17, +0x2e3a48,6, +0x2e3a80,17, 0x2e3ac8,6, -0x2e3b00,17, -0x2e3b48,6, -0x2e3b80,12, +0x2e3b00,6, +0x2e3b20,6, +0x2e3b40,3, +0x2e3b80,6, +0x2e3ba0,6, +0x2e3bc0,3, 0x2e3c00,6, 0x2e3c20,6, -0x2e3c40,6, -0x2e3c60,3, -0x2e3d00,6, -0x2e3d20,6, -0x2e3d40,3, -0x2e3d80,6, -0x2e3da0,6, -0x2e3dc0,3, +0x2e3c40,3, +0x2e3c80,6, +0x2e3ca0,6, +0x2e3cc0,3, +0x2e3d10,2, +0x2e3d1c,1, +0x2e3d50,2, +0x2e3d5c,1, +0x2e3d80,1, +0x2e3da0,1, +0x2e3da8,7, +0x2e3de0,1, +0x2e3de8,19, +0x2e3e40,6, +0x2e3e60,6, +0x2e3e80,6, +0x2e3ea0,6, +0x2e3ec0,7, +0x2e3ee0,7, +0x2e3f00,12, +0x2e3f40,3, +0x2e3f50,8, 0x2e4000,29, 0x2e4078,4, 0x2e4090,2, @@ -10966,8 +12869,10 @@ 0x2e5eac,1, 0x2e5eb4,3, 0x2e6000,14, -0x2e6070,3, +0x2e6040,6, +0x2e6060,6, 0x2e6080,6, +0x2e60a0,3, 0x2e6100,9, 0x2e6204,1, 0x2e620c,6, @@ -11012,18 +12917,29 @@ 0x2e6c94,8, 0x2e6cb8,9, 0x2e6ce0,4, -0x2e7000,6, -0x2e7020,3, -0x2e7040,7, -0x2e7060,6, -0x2e7100,5, -0x2e7138,1, -0x2e7144,1, -0x2e7150,2, +0x2e7000,1, +0x2e7028,1, +0x2e7050,1, +0x2e7078,1, +0x2e70a0,4, +0x2e71ac,1, +0x2e71d8,4, +0x2e7200,6, +0x2e7220,6, +0x2e7240,3, +0x2e7400,5, +0x2e7438,1, +0x2e7444,1, +0x2e7450,4, +0x2e7500,7, +0x2e7520,6, +0x2e7540,6, +0x2e7560,3, +0x2e7570,1, 0x2e8000,6, 0x2e8020,3, -0x2e8030,1, -0x2e8038,7, +0x2e8030,3, +0x2e8050,1, 0x2e8100,6, 0x2e8120,10, 0x2e8150,10, @@ -11057,15 +12973,19 @@ 0x2e89f4,3, 0x2e9000,4, 0x2e9020,4, -0x2e9040,3, -0x2e9050,3, -0x2e9080,2, -0x2e90b0,3, -0x2e912c,1, -0x2e9140,6, -0x2e9200,20, -0x2e925c,30, -0x2e9300,24, +0x2e9040,11, +0x2e9070,3, +0x2e9080,4, +0x2e90b0,22, +0x2e9110,2, +0x2e9120,22, +0x2e9180,1, +0x2e91a0,6, +0x2e9200,42, +0x2e92c0,1, +0x2e92c8,3, +0x2e9300,25, +0x2e936c,4, 0x2e9380,2, 0x2e93a0,1, 0x2e93c0,11, @@ -11074,18 +12994,25 @@ 0x2e9480,6, 0x2e9500,6, 0x2e9520,6, +0x2e9540,3, +0x2e9550,7, +0x2e9570,4, 0x2e9800,410, 0x2ea000,4, 0x2ea020,4, -0x2ea040,3, -0x2ea050,3, -0x2ea080,2, -0x2ea0b0,3, -0x2ea12c,1, -0x2ea140,6, -0x2ea200,20, -0x2ea25c,30, -0x2ea300,24, +0x2ea040,11, +0x2ea070,3, +0x2ea080,4, +0x2ea0b0,22, +0x2ea110,2, +0x2ea120,22, +0x2ea180,1, +0x2ea1a0,6, +0x2ea200,42, +0x2ea2c0,1, +0x2ea2c8,3, +0x2ea300,25, +0x2ea36c,4, 0x2ea380,2, 0x2ea3a0,1, 0x2ea3c0,11, @@ -11094,18 +13021,25 @@ 0x2ea480,6, 0x2ea500,6, 0x2ea520,6, +0x2ea540,3, +0x2ea550,7, +0x2ea570,4, 0x2ea800,410, 0x2eb000,4, 0x2eb020,4, -0x2eb040,3, -0x2eb050,3, -0x2eb080,2, -0x2eb0b0,3, -0x2eb12c,1, -0x2eb140,6, -0x2eb200,20, -0x2eb25c,30, -0x2eb300,24, +0x2eb040,11, +0x2eb070,3, +0x2eb080,4, +0x2eb0b0,22, +0x2eb110,2, +0x2eb120,22, +0x2eb180,1, +0x2eb1a0,6, +0x2eb200,42, +0x2eb2c0,1, +0x2eb2c8,3, +0x2eb300,25, +0x2eb36c,4, 0x2eb380,2, 0x2eb3a0,1, 0x2eb3c0,11, @@ -11114,18 +13048,25 @@ 0x2eb480,6, 0x2eb500,6, 0x2eb520,6, +0x2eb540,3, +0x2eb550,7, +0x2eb570,4, 0x2eb800,410, 0x2ec000,4, 0x2ec020,4, -0x2ec040,3, -0x2ec050,3, -0x2ec080,2, -0x2ec0b0,3, -0x2ec12c,1, -0x2ec140,6, -0x2ec200,20, -0x2ec25c,30, -0x2ec300,24, +0x2ec040,11, +0x2ec070,3, +0x2ec080,4, +0x2ec0b0,22, +0x2ec110,2, +0x2ec120,22, +0x2ec180,1, +0x2ec1a0,6, +0x2ec200,42, +0x2ec2c0,1, +0x2ec2c8,3, +0x2ec300,25, +0x2ec36c,4, 0x2ec380,2, 0x2ec3a0,1, 0x2ec3c0,11, @@ -11134,6 +13075,9 @@ 0x2ec480,6, 0x2ec500,6, 0x2ec520,6, +0x2ec540,3, +0x2ec550,7, +0x2ec570,4, 0x2ec800,410, 0x2ef800,5, 0x2ef818,1, @@ -11160,23 +13104,30 @@ 0x2efba4,1, 0x2efbac,2, 0x2f4000,3, -0x2f4018,3, -0x2f4100,25, +0x2f4018,4, +0x2f4100,56, +0x2f41f0,1, 0x2f4400,3, -0x2f4418,3, -0x2f4500,25, -0x2f4800,1, +0x2f4418,4, +0x2f4500,56, +0x2f45f0,1, +0x2f4800,5, +0x2f4820,3, 0x2f5000,3, -0x2f5018,3, -0x2f5100,25, +0x2f5018,4, +0x2f5100,56, +0x2f51f0,1, 0x2f5400,3, -0x2f5418,3, -0x2f5500,25, -0x2f5800,1, +0x2f5418,4, +0x2f5500,56, +0x2f55f0,1, +0x2f5800,5, +0x2f5820,3, 0x2f6004,7, -0x2f6024,3, +0x2f6024,1, +0x2f6034,3, 0x2f6300,5, -0x2f631c,3, +0x2f631c,1, 0x2f6600,10, 0x2f6630,1, 0x2f6680,10, @@ -11186,36 +13137,37 @@ 0x2f6780,10, 0x2f67b0,1, 0x2f6800,47, -0x2f6910,12, -0x2f7000,64, +0x2f6910,14, +0x2f6e00,1, +0x2f7000,65, 0x2f8000,2, -0x2f800c,9, -0x2f8040,6, -0x2f8060,6, -0x2f8080,2, -0x2f808c,5, -0x2f80a4,3, -0x2f80e0,1, -0x2f8500,2, -0x2f8518,5, -0x2f8540,6, +0x2f800c,3, +0x2f8028,2, +0x2f8038,47, +0x2f8500,6, +0x2f8520,6, +0x2f8540,3, 0x2f8580,10, +0x2f85c0,15, +0x2f8600,2, +0x2f8618,5, +0x2f8630,1, 0x2f8800,2, -0x2f880c,9, -0x2f8840,6, -0x2f8860,6, -0x2f8880,2, -0x2f888c,5, -0x2f88a4,3, -0x2f88e0,1, -0x2f8d00,2, -0x2f8d18,5, -0x2f8d40,6, +0x2f880c,3, +0x2f8828,2, +0x2f8838,47, +0x2f8d00,6, +0x2f8d20,6, +0x2f8d40,3, 0x2f8d80,10, -0x2f9800,2, -0x2f9828,2, -0x2f9850,2, -0x2f9878,2, +0x2f8dc0,15, +0x2f8e00,2, +0x2f8e18,5, +0x2f8e30,1, +0x2f9800,3, +0x2f9828,3, +0x2f9850,3, +0x2f9878,3, 0x2f98a0,7, 0x2f99ac,1, 0x2f99d8,4, @@ -11223,191 +13175,253 @@ 0x2f9a20,6, 0x2f9a40,6, 0x2f9a60,6, -0x2f9a80,3, +0x2f9a80,6, +0x2f9aa0,6, +0x2f9ac0,3, 0x2f9c00,6, 0x2f9c20,3, 0x2f9c40,2, 0x2f9c60,1, -0x300000,5, -0x300020,4, -0x300034,17, -0x300080,1, +0x300000,4, +0x300014,1, +0x300020,3, +0x300030,3, +0x300040,8, +0x30007c,2, 0x3000a0,6, -0x300100,5, -0x300120,4, -0x300134,17, -0x300180,1, +0x3000c0,6, +0x3000e0,6, +0x300100,4, +0x300114,1, +0x300120,3, +0x300130,3, +0x300140,8, +0x30017c,2, 0x3001a0,6, -0x300200,5, -0x300220,4, -0x300234,17, -0x300280,1, +0x3001c0,6, +0x3001e0,6, +0x300200,4, +0x300214,1, +0x300220,3, +0x300230,3, +0x300240,8, +0x30027c,2, 0x3002a0,6, -0x300300,5, -0x300320,4, -0x300334,17, -0x300380,1, +0x3002c0,6, +0x3002e0,6, +0x300300,4, +0x300314,1, +0x300320,3, +0x300330,3, +0x300340,8, +0x30037c,2, 0x3003a0,6, +0x3003c0,6, +0x3003e0,6, 0x300400,6, 0x300440,6, 0x300480,3, 0x3004c0,3, -0x300500,6, -0x30051c,7, -0x300540,1, +0x300500,2, +0x30050c,4, +0x300520,2, +0x30052c,4, +0x300540,2, 0x300c00,13, 0x300c40,12, 0x300c80,13, 0x300cc0,12, -0x300d00,6, -0x300d20,6, +0x300d00,14, +0x300d40,2, 0x300d80,14, 0x300dc0,2, -0x300e40,11, +0x300e00,11, +0x300e40,6, +0x300e60,6, 0x300e80,6, 0x300ea0,6, 0x301000,2, -0x301010,5, +0x301014,4, 0x301040,3, 0x301050,3, -0x301060,32, -0x301100,8, -0x301140,8, +0x301080,42, +0x301140,10, 0x301180,3, 0x301190,2, -0x30119c,9, -0x301218,9, -0x301240,3, -0x301250,6, -0x301280,1, -0x301288,6, -0x3012a4,1, -0x3012c0,1, -0x3012c8,6, -0x3012e4,1, -0x301400,8, -0x301424,2, +0x30119c,15, +0x301200,9, +0x301300,1, +0x301308,6, +0x301324,10, +0x301380,1, +0x301388,6, +0x3013a4,10, +0x301400,6, +0x301420,6, 0x301500,5, 0x301520,4, 0x301540,5, 0x301560,4, 0x301800,24, -0x301864,5, +0x301864,6, 0x301880,8, -0x301900,13, -0x301980,4, -0x3019a0,6, -0x3019c0,6, -0x3019dc,1, -0x301a00,6, -0x301a1c,1, -0x301a40,1, -0x301a60,1, -0x301a68,23, +0x301900,24, +0x301964,6, +0x301980,8, +0x301a00,17, +0x301a48,6, +0x301a80,17, 0x301ac8,6, -0x301b00,17, -0x301b48,6, -0x301b80,12, +0x301b00,6, +0x301b20,6, +0x301b40,3, +0x301b80,6, +0x301ba0,6, +0x301bc0,3, 0x301c00,6, 0x301c20,6, -0x301c40,6, -0x301c60,3, -0x301d00,6, -0x301d20,6, -0x301d40,3, -0x301d80,6, -0x301da0,6, -0x301dc0,3, -0x302000,5, -0x302020,4, -0x302034,17, -0x302080,1, +0x301c40,3, +0x301c80,6, +0x301ca0,6, +0x301cc0,3, +0x301d10,2, +0x301d1c,1, +0x301d50,2, +0x301d5c,1, +0x301d80,1, +0x301da0,1, +0x301da8,7, +0x301de0,1, +0x301de8,19, +0x301e40,6, +0x301e60,6, +0x301e80,6, +0x301ea0,6, +0x301ec0,7, +0x301ee0,7, +0x301f00,12, +0x301f40,3, +0x301f50,8, +0x302000,4, +0x302014,1, +0x302020,3, +0x302030,3, +0x302040,8, +0x30207c,2, 0x3020a0,6, -0x302100,5, -0x302120,4, -0x302134,17, -0x302180,1, +0x3020c0,6, +0x3020e0,6, +0x302100,4, +0x302114,1, +0x302120,3, +0x302130,3, +0x302140,8, +0x30217c,2, 0x3021a0,6, -0x302200,5, -0x302220,4, -0x302234,17, -0x302280,1, +0x3021c0,6, +0x3021e0,6, +0x302200,4, +0x302214,1, +0x302220,3, +0x302230,3, +0x302240,8, +0x30227c,2, 0x3022a0,6, -0x302300,5, -0x302320,4, -0x302334,17, -0x302380,1, +0x3022c0,6, +0x3022e0,6, +0x302300,4, +0x302314,1, +0x302320,3, +0x302330,3, +0x302340,8, +0x30237c,2, 0x3023a0,6, +0x3023c0,6, +0x3023e0,6, 0x302400,6, 0x302440,6, 0x302480,3, 0x3024c0,3, -0x302500,6, -0x30251c,7, -0x302540,1, +0x302500,2, +0x30250c,4, +0x302520,2, +0x30252c,4, +0x302540,2, 0x302c00,13, 0x302c40,12, 0x302c80,13, 0x302cc0,12, -0x302d00,6, -0x302d20,6, +0x302d00,14, +0x302d40,2, 0x302d80,14, 0x302dc0,2, -0x302e40,11, +0x302e00,11, +0x302e40,6, +0x302e60,6, 0x302e80,6, 0x302ea0,6, 0x303000,2, -0x303010,5, +0x303014,4, 0x303040,3, 0x303050,3, -0x303060,32, -0x303100,8, -0x303140,8, +0x303080,42, +0x303140,10, 0x303180,3, 0x303190,2, -0x30319c,9, -0x303218,9, -0x303240,3, -0x303250,6, -0x303280,1, -0x303288,6, -0x3032a4,1, -0x3032c0,1, -0x3032c8,6, -0x3032e4,1, -0x303400,8, -0x303424,2, +0x30319c,15, +0x303200,9, +0x303300,1, +0x303308,6, +0x303324,10, +0x303380,1, +0x303388,6, +0x3033a4,10, +0x303400,6, +0x303420,6, 0x303500,5, 0x303520,4, 0x303540,5, 0x303560,4, 0x303800,24, -0x303864,5, +0x303864,6, 0x303880,8, -0x303900,13, -0x303980,4, -0x3039a0,6, -0x3039c0,6, -0x3039dc,1, -0x303a00,6, -0x303a1c,1, -0x303a40,1, -0x303a60,1, -0x303a68,23, +0x303900,24, +0x303964,6, +0x303980,8, +0x303a00,17, +0x303a48,6, +0x303a80,17, 0x303ac8,6, -0x303b00,17, -0x303b48,6, -0x303b80,12, +0x303b00,6, +0x303b20,6, +0x303b40,3, +0x303b80,6, +0x303ba0,6, +0x303bc0,3, 0x303c00,6, 0x303c20,6, -0x303c40,6, -0x303c60,3, -0x303d00,6, -0x303d20,6, -0x303d40,3, -0x303d80,6, -0x303da0,6, -0x303dc0,3, +0x303c40,3, +0x303c80,6, +0x303ca0,6, +0x303cc0,3, +0x303d10,2, +0x303d1c,1, +0x303d50,2, +0x303d5c,1, +0x303d80,1, +0x303da0,1, +0x303da8,7, +0x303de0,1, +0x303de8,19, +0x303e40,6, +0x303e60,6, +0x303e80,6, +0x303ea0,6, +0x303ec0,7, +0x303ee0,7, +0x303f00,12, +0x303f40,3, +0x303f50,8, 0x304000,29, 0x304078,4, 0x304090,2, @@ -11531,8 +13545,10 @@ 0x305eac,1, 0x305eb4,3, 0x306000,14, -0x306070,3, +0x306040,6, +0x306060,6, 0x306080,6, +0x3060a0,3, 0x306100,9, 0x306204,1, 0x30620c,6, @@ -11577,18 +13593,29 @@ 0x306c94,8, 0x306cb8,9, 0x306ce0,4, -0x307000,6, -0x307020,3, -0x307040,7, -0x307060,6, -0x307100,5, -0x307138,1, -0x307144,1, -0x307150,2, +0x307000,1, +0x307028,1, +0x307050,1, +0x307078,1, +0x3070a0,4, +0x3071ac,1, +0x3071d8,4, +0x307200,6, +0x307220,6, +0x307240,3, +0x307400,5, +0x307438,1, +0x307444,1, +0x307450,4, +0x307500,7, +0x307520,6, +0x307540,6, +0x307560,3, +0x307570,1, 0x308000,6, 0x308020,3, -0x308030,1, -0x308038,7, +0x308030,3, +0x308050,1, 0x308100,6, 0x308120,10, 0x308150,10, @@ -11622,15 +13649,19 @@ 0x3089f4,3, 0x309000,4, 0x309020,4, -0x309040,3, -0x309050,3, -0x309080,2, -0x3090b0,3, -0x30912c,1, -0x309140,6, -0x309200,20, -0x30925c,30, -0x309300,24, +0x309040,11, +0x309070,3, +0x309080,4, +0x3090b0,22, +0x309110,2, +0x309120,22, +0x309180,1, +0x3091a0,6, +0x309200,42, +0x3092c0,1, +0x3092c8,3, +0x309300,25, +0x30936c,4, 0x309380,2, 0x3093a0,1, 0x3093c0,11, @@ -11639,18 +13670,25 @@ 0x309480,6, 0x309500,6, 0x309520,6, +0x309540,3, +0x309550,7, +0x309570,4, 0x309800,410, 0x30a000,4, 0x30a020,4, -0x30a040,3, -0x30a050,3, -0x30a080,2, -0x30a0b0,3, -0x30a12c,1, -0x30a140,6, -0x30a200,20, -0x30a25c,30, -0x30a300,24, +0x30a040,11, +0x30a070,3, +0x30a080,4, +0x30a0b0,22, +0x30a110,2, +0x30a120,22, +0x30a180,1, +0x30a1a0,6, +0x30a200,42, +0x30a2c0,1, +0x30a2c8,3, +0x30a300,25, +0x30a36c,4, 0x30a380,2, 0x30a3a0,1, 0x30a3c0,11, @@ -11659,18 +13697,25 @@ 0x30a480,6, 0x30a500,6, 0x30a520,6, +0x30a540,3, +0x30a550,7, +0x30a570,4, 0x30a800,410, 0x30b000,4, 0x30b020,4, -0x30b040,3, -0x30b050,3, -0x30b080,2, -0x30b0b0,3, -0x30b12c,1, -0x30b140,6, -0x30b200,20, -0x30b25c,30, -0x30b300,24, +0x30b040,11, +0x30b070,3, +0x30b080,4, +0x30b0b0,22, +0x30b110,2, +0x30b120,22, +0x30b180,1, +0x30b1a0,6, +0x30b200,42, +0x30b2c0,1, +0x30b2c8,3, +0x30b300,25, +0x30b36c,4, 0x30b380,2, 0x30b3a0,1, 0x30b3c0,11, @@ -11679,18 +13724,25 @@ 0x30b480,6, 0x30b500,6, 0x30b520,6, +0x30b540,3, +0x30b550,7, +0x30b570,4, 0x30b800,410, 0x30c000,4, 0x30c020,4, -0x30c040,3, -0x30c050,3, -0x30c080,2, -0x30c0b0,3, -0x30c12c,1, -0x30c140,6, -0x30c200,20, -0x30c25c,30, -0x30c300,24, +0x30c040,11, +0x30c070,3, +0x30c080,4, +0x30c0b0,22, +0x30c110,2, +0x30c120,22, +0x30c180,1, +0x30c1a0,6, +0x30c200,42, +0x30c2c0,1, +0x30c2c8,3, +0x30c300,25, +0x30c36c,4, 0x30c380,2, 0x30c3a0,1, 0x30c3c0,11, @@ -11699,6 +13751,9 @@ 0x30c480,6, 0x30c500,6, 0x30c520,6, +0x30c540,3, +0x30c550,7, +0x30c570,4, 0x30c800,410, 0x30f800,5, 0x30f818,1, @@ -11725,23 +13780,30 @@ 0x30fba4,1, 0x30fbac,2, 0x314000,3, -0x314018,3, -0x314100,25, +0x314018,4, +0x314100,56, +0x3141f0,1, 0x314400,3, -0x314418,3, -0x314500,25, -0x314800,1, +0x314418,4, +0x314500,56, +0x3145f0,1, +0x314800,5, +0x314820,3, 0x315000,3, -0x315018,3, -0x315100,25, +0x315018,4, +0x315100,56, +0x3151f0,1, 0x315400,3, -0x315418,3, -0x315500,25, -0x315800,1, +0x315418,4, +0x315500,56, +0x3155f0,1, +0x315800,5, +0x315820,3, 0x316004,7, -0x316024,3, +0x316024,1, +0x316034,3, 0x316300,5, -0x31631c,3, +0x31631c,1, 0x316600,10, 0x316630,1, 0x316680,10, @@ -11751,36 +13813,37 @@ 0x316780,10, 0x3167b0,1, 0x316800,47, -0x316910,12, -0x317000,64, +0x316910,14, +0x316e00,1, +0x317000,65, 0x318000,2, -0x31800c,9, -0x318040,6, -0x318060,6, -0x318080,2, -0x31808c,5, -0x3180a4,3, -0x3180e0,1, -0x318500,2, -0x318518,5, -0x318540,6, +0x31800c,3, +0x318028,2, +0x318038,47, +0x318500,6, +0x318520,6, +0x318540,3, 0x318580,10, +0x3185c0,15, +0x318600,2, +0x318618,5, +0x318630,1, 0x318800,2, -0x31880c,9, -0x318840,6, -0x318860,6, -0x318880,2, -0x31888c,5, -0x3188a4,3, -0x3188e0,1, -0x318d00,2, -0x318d18,5, -0x318d40,6, +0x31880c,3, +0x318828,2, +0x318838,47, +0x318d00,6, +0x318d20,6, +0x318d40,3, 0x318d80,10, -0x319800,2, -0x319828,2, -0x319850,2, -0x319878,2, +0x318dc0,15, +0x318e00,2, +0x318e18,5, +0x318e30,1, +0x319800,3, +0x319828,3, +0x319850,3, +0x319878,3, 0x3198a0,7, 0x3199ac,1, 0x3199d8,4, @@ -11788,191 +13851,253 @@ 0x319a20,6, 0x319a40,6, 0x319a60,6, -0x319a80,3, +0x319a80,6, +0x319aa0,6, +0x319ac0,3, 0x319c00,6, 0x319c20,3, 0x319c40,2, 0x319c60,1, -0x320000,5, -0x320020,4, -0x320034,17, -0x320080,1, +0x320000,4, +0x320014,1, +0x320020,3, +0x320030,3, +0x320040,8, +0x32007c,2, 0x3200a0,6, -0x320100,5, -0x320120,4, -0x320134,17, -0x320180,1, +0x3200c0,6, +0x3200e0,6, +0x320100,4, +0x320114,1, +0x320120,3, +0x320130,3, +0x320140,8, +0x32017c,2, 0x3201a0,6, -0x320200,5, -0x320220,4, -0x320234,17, -0x320280,1, +0x3201c0,6, +0x3201e0,6, +0x320200,4, +0x320214,1, +0x320220,3, +0x320230,3, +0x320240,8, +0x32027c,2, 0x3202a0,6, -0x320300,5, -0x320320,4, -0x320334,17, -0x320380,1, +0x3202c0,6, +0x3202e0,6, +0x320300,4, +0x320314,1, +0x320320,3, +0x320330,3, +0x320340,8, +0x32037c,2, 0x3203a0,6, +0x3203c0,6, +0x3203e0,6, 0x320400,6, 0x320440,6, 0x320480,3, 0x3204c0,3, -0x320500,6, -0x32051c,7, -0x320540,1, +0x320500,2, +0x32050c,4, +0x320520,2, +0x32052c,4, +0x320540,2, 0x320c00,13, 0x320c40,12, 0x320c80,13, 0x320cc0,12, -0x320d00,6, -0x320d20,6, +0x320d00,14, +0x320d40,2, 0x320d80,14, 0x320dc0,2, -0x320e40,11, +0x320e00,11, +0x320e40,6, +0x320e60,6, 0x320e80,6, 0x320ea0,6, 0x321000,2, -0x321010,5, +0x321014,4, 0x321040,3, 0x321050,3, -0x321060,32, -0x321100,8, -0x321140,8, +0x321080,42, +0x321140,10, 0x321180,3, 0x321190,2, -0x32119c,9, -0x321218,9, -0x321240,3, -0x321250,6, -0x321280,1, -0x321288,6, -0x3212a4,1, -0x3212c0,1, -0x3212c8,6, -0x3212e4,1, -0x321400,8, -0x321424,2, +0x32119c,15, +0x321200,9, +0x321300,1, +0x321308,6, +0x321324,10, +0x321380,1, +0x321388,6, +0x3213a4,10, +0x321400,6, +0x321420,6, 0x321500,5, 0x321520,4, 0x321540,5, 0x321560,4, 0x321800,24, -0x321864,5, +0x321864,6, 0x321880,8, -0x321900,13, -0x321980,4, -0x3219a0,6, -0x3219c0,6, -0x3219dc,1, -0x321a00,6, -0x321a1c,1, -0x321a40,1, -0x321a60,1, -0x321a68,23, +0x321900,24, +0x321964,6, +0x321980,8, +0x321a00,17, +0x321a48,6, +0x321a80,17, 0x321ac8,6, -0x321b00,17, -0x321b48,6, -0x321b80,12, +0x321b00,6, +0x321b20,6, +0x321b40,3, +0x321b80,6, +0x321ba0,6, +0x321bc0,3, 0x321c00,6, 0x321c20,6, -0x321c40,6, -0x321c60,3, -0x321d00,6, -0x321d20,6, -0x321d40,3, -0x321d80,6, -0x321da0,6, -0x321dc0,3, -0x322000,5, -0x322020,4, -0x322034,17, -0x322080,1, +0x321c40,3, +0x321c80,6, +0x321ca0,6, +0x321cc0,3, +0x321d10,2, +0x321d1c,1, +0x321d50,2, +0x321d5c,1, +0x321d80,1, +0x321da0,1, +0x321da8,7, +0x321de0,1, +0x321de8,19, +0x321e40,6, +0x321e60,6, +0x321e80,6, +0x321ea0,6, +0x321ec0,7, +0x321ee0,7, +0x321f00,12, +0x321f40,3, +0x321f50,8, +0x322000,4, +0x322014,1, +0x322020,3, +0x322030,3, +0x322040,8, +0x32207c,2, 0x3220a0,6, -0x322100,5, -0x322120,4, -0x322134,17, -0x322180,1, +0x3220c0,6, +0x3220e0,6, +0x322100,4, +0x322114,1, +0x322120,3, +0x322130,3, +0x322140,8, +0x32217c,2, 0x3221a0,6, -0x322200,5, -0x322220,4, -0x322234,17, -0x322280,1, +0x3221c0,6, +0x3221e0,6, +0x322200,4, +0x322214,1, +0x322220,3, +0x322230,3, +0x322240,8, +0x32227c,2, 0x3222a0,6, -0x322300,5, -0x322320,4, -0x322334,17, -0x322380,1, +0x3222c0,6, +0x3222e0,6, +0x322300,4, +0x322314,1, +0x322320,3, +0x322330,3, +0x322340,8, +0x32237c,2, 0x3223a0,6, +0x3223c0,6, +0x3223e0,6, 0x322400,6, 0x322440,6, 0x322480,3, 0x3224c0,3, -0x322500,6, -0x32251c,7, -0x322540,1, +0x322500,2, +0x32250c,4, +0x322520,2, +0x32252c,4, +0x322540,2, 0x322c00,13, 0x322c40,12, 0x322c80,13, 0x322cc0,12, -0x322d00,6, -0x322d20,6, +0x322d00,14, +0x322d40,2, 0x322d80,14, 0x322dc0,2, -0x322e40,11, +0x322e00,11, +0x322e40,6, +0x322e60,6, 0x322e80,6, 0x322ea0,6, 0x323000,2, -0x323010,5, +0x323014,4, 0x323040,3, 0x323050,3, -0x323060,32, -0x323100,8, -0x323140,8, +0x323080,42, +0x323140,10, 0x323180,3, 0x323190,2, -0x32319c,9, -0x323218,9, -0x323240,3, -0x323250,6, -0x323280,1, -0x323288,6, -0x3232a4,1, -0x3232c0,1, -0x3232c8,6, -0x3232e4,1, -0x323400,8, -0x323424,2, +0x32319c,15, +0x323200,9, +0x323300,1, +0x323308,6, +0x323324,10, +0x323380,1, +0x323388,6, +0x3233a4,10, +0x323400,6, +0x323420,6, 0x323500,5, 0x323520,4, 0x323540,5, 0x323560,4, 0x323800,24, -0x323864,5, +0x323864,6, 0x323880,8, -0x323900,13, -0x323980,4, -0x3239a0,6, -0x3239c0,6, -0x3239dc,1, -0x323a00,6, -0x323a1c,1, -0x323a40,1, -0x323a60,1, -0x323a68,23, +0x323900,24, +0x323964,6, +0x323980,8, +0x323a00,17, +0x323a48,6, +0x323a80,17, 0x323ac8,6, -0x323b00,17, -0x323b48,6, -0x323b80,12, +0x323b00,6, +0x323b20,6, +0x323b40,3, +0x323b80,6, +0x323ba0,6, +0x323bc0,3, 0x323c00,6, 0x323c20,6, -0x323c40,6, -0x323c60,3, -0x323d00,6, -0x323d20,6, -0x323d40,3, -0x323d80,6, -0x323da0,6, -0x323dc0,3, +0x323c40,3, +0x323c80,6, +0x323ca0,6, +0x323cc0,3, +0x323d10,2, +0x323d1c,1, +0x323d50,2, +0x323d5c,1, +0x323d80,1, +0x323da0,1, +0x323da8,7, +0x323de0,1, +0x323de8,19, +0x323e40,6, +0x323e60,6, +0x323e80,6, +0x323ea0,6, +0x323ec0,7, +0x323ee0,7, +0x323f00,12, +0x323f40,3, +0x323f50,8, 0x324000,29, 0x324078,4, 0x324090,2, @@ -12096,8 +14221,10 @@ 0x325eac,1, 0x325eb4,3, 0x326000,14, -0x326070,3, +0x326040,6, +0x326060,6, 0x326080,6, +0x3260a0,3, 0x326100,9, 0x326204,1, 0x32620c,6, @@ -12142,18 +14269,29 @@ 0x326c94,8, 0x326cb8,9, 0x326ce0,4, -0x327000,6, -0x327020,3, -0x327040,7, -0x327060,6, -0x327100,5, -0x327138,1, -0x327144,1, -0x327150,2, +0x327000,1, +0x327028,1, +0x327050,1, +0x327078,1, +0x3270a0,4, +0x3271ac,1, +0x3271d8,4, +0x327200,6, +0x327220,6, +0x327240,3, +0x327400,5, +0x327438,1, +0x327444,1, +0x327450,4, +0x327500,7, +0x327520,6, +0x327540,6, +0x327560,3, +0x327570,1, 0x328000,6, 0x328020,3, -0x328030,1, -0x328038,7, +0x328030,3, +0x328050,1, 0x328100,6, 0x328120,10, 0x328150,10, @@ -12187,15 +14325,19 @@ 0x3289f4,3, 0x329000,4, 0x329020,4, -0x329040,3, -0x329050,3, -0x329080,2, -0x3290b0,3, -0x32912c,1, -0x329140,6, -0x329200,20, -0x32925c,30, -0x329300,24, +0x329040,11, +0x329070,3, +0x329080,4, +0x3290b0,22, +0x329110,2, +0x329120,22, +0x329180,1, +0x3291a0,6, +0x329200,42, +0x3292c0,1, +0x3292c8,3, +0x329300,25, +0x32936c,4, 0x329380,2, 0x3293a0,1, 0x3293c0,11, @@ -12204,18 +14346,25 @@ 0x329480,6, 0x329500,6, 0x329520,6, +0x329540,3, +0x329550,7, +0x329570,4, 0x329800,410, 0x32a000,4, 0x32a020,4, -0x32a040,3, -0x32a050,3, -0x32a080,2, -0x32a0b0,3, -0x32a12c,1, -0x32a140,6, -0x32a200,20, -0x32a25c,30, -0x32a300,24, +0x32a040,11, +0x32a070,3, +0x32a080,4, +0x32a0b0,22, +0x32a110,2, +0x32a120,22, +0x32a180,1, +0x32a1a0,6, +0x32a200,42, +0x32a2c0,1, +0x32a2c8,3, +0x32a300,25, +0x32a36c,4, 0x32a380,2, 0x32a3a0,1, 0x32a3c0,11, @@ -12224,18 +14373,25 @@ 0x32a480,6, 0x32a500,6, 0x32a520,6, +0x32a540,3, +0x32a550,7, +0x32a570,4, 0x32a800,410, 0x32b000,4, 0x32b020,4, -0x32b040,3, -0x32b050,3, -0x32b080,2, -0x32b0b0,3, -0x32b12c,1, -0x32b140,6, -0x32b200,20, -0x32b25c,30, -0x32b300,24, +0x32b040,11, +0x32b070,3, +0x32b080,4, +0x32b0b0,22, +0x32b110,2, +0x32b120,22, +0x32b180,1, +0x32b1a0,6, +0x32b200,42, +0x32b2c0,1, +0x32b2c8,3, +0x32b300,25, +0x32b36c,4, 0x32b380,2, 0x32b3a0,1, 0x32b3c0,11, @@ -12244,18 +14400,25 @@ 0x32b480,6, 0x32b500,6, 0x32b520,6, +0x32b540,3, +0x32b550,7, +0x32b570,4, 0x32b800,410, 0x32c000,4, 0x32c020,4, -0x32c040,3, -0x32c050,3, -0x32c080,2, -0x32c0b0,3, -0x32c12c,1, -0x32c140,6, -0x32c200,20, -0x32c25c,30, -0x32c300,24, +0x32c040,11, +0x32c070,3, +0x32c080,4, +0x32c0b0,22, +0x32c110,2, +0x32c120,22, +0x32c180,1, +0x32c1a0,6, +0x32c200,42, +0x32c2c0,1, +0x32c2c8,3, +0x32c300,25, +0x32c36c,4, 0x32c380,2, 0x32c3a0,1, 0x32c3c0,11, @@ -12264,6 +14427,9 @@ 0x32c480,6, 0x32c500,6, 0x32c520,6, +0x32c540,3, +0x32c550,7, +0x32c570,4, 0x32c800,410, 0x32f800,5, 0x32f818,1, @@ -12290,23 +14456,30 @@ 0x32fba4,1, 0x32fbac,2, 0x334000,3, -0x334018,3, -0x334100,25, +0x334018,4, +0x334100,56, +0x3341f0,1, 0x334400,3, -0x334418,3, -0x334500,25, -0x334800,1, +0x334418,4, +0x334500,56, +0x3345f0,1, +0x334800,5, +0x334820,3, 0x335000,3, -0x335018,3, -0x335100,25, +0x335018,4, +0x335100,56, +0x3351f0,1, 0x335400,3, -0x335418,3, -0x335500,25, -0x335800,1, +0x335418,4, +0x335500,56, +0x3355f0,1, +0x335800,5, +0x335820,3, 0x336004,7, -0x336024,3, +0x336024,1, +0x336034,3, 0x336300,5, -0x33631c,3, +0x33631c,1, 0x336600,10, 0x336630,1, 0x336680,10, @@ -12316,36 +14489,37 @@ 0x336780,10, 0x3367b0,1, 0x336800,47, -0x336910,12, -0x337000,64, +0x336910,14, +0x336e00,1, +0x337000,65, 0x338000,2, -0x33800c,9, -0x338040,6, -0x338060,6, -0x338080,2, -0x33808c,5, -0x3380a4,3, -0x3380e0,1, -0x338500,2, -0x338518,5, -0x338540,6, +0x33800c,3, +0x338028,2, +0x338038,47, +0x338500,6, +0x338520,6, +0x338540,3, 0x338580,10, +0x3385c0,15, +0x338600,2, +0x338618,5, +0x338630,1, 0x338800,2, -0x33880c,9, -0x338840,6, -0x338860,6, -0x338880,2, -0x33888c,5, -0x3388a4,3, -0x3388e0,1, -0x338d00,2, -0x338d18,5, -0x338d40,6, +0x33880c,3, +0x338828,2, +0x338838,47, +0x338d00,6, +0x338d20,6, +0x338d40,3, 0x338d80,10, -0x339800,2, -0x339828,2, -0x339850,2, -0x339878,2, +0x338dc0,15, +0x338e00,2, +0x338e18,5, +0x338e30,1, +0x339800,3, +0x339828,3, +0x339850,3, +0x339878,3, 0x3398a0,7, 0x3399ac,1, 0x3399d8,4, @@ -12353,191 +14527,253 @@ 0x339a20,6, 0x339a40,6, 0x339a60,6, -0x339a80,3, +0x339a80,6, +0x339aa0,6, +0x339ac0,3, 0x339c00,6, 0x339c20,3, 0x339c40,2, 0x339c60,1, -0x340000,5, -0x340020,4, -0x340034,17, -0x340080,1, +0x340000,4, +0x340014,1, +0x340020,3, +0x340030,3, +0x340040,8, +0x34007c,2, 0x3400a0,6, -0x340100,5, -0x340120,4, -0x340134,17, -0x340180,1, +0x3400c0,6, +0x3400e0,6, +0x340100,4, +0x340114,1, +0x340120,3, +0x340130,3, +0x340140,8, +0x34017c,2, 0x3401a0,6, -0x340200,5, -0x340220,4, -0x340234,17, -0x340280,1, +0x3401c0,6, +0x3401e0,6, +0x340200,4, +0x340214,1, +0x340220,3, +0x340230,3, +0x340240,8, +0x34027c,2, 0x3402a0,6, -0x340300,5, -0x340320,4, -0x340334,17, -0x340380,1, +0x3402c0,6, +0x3402e0,6, +0x340300,4, +0x340314,1, +0x340320,3, +0x340330,3, +0x340340,8, +0x34037c,2, 0x3403a0,6, +0x3403c0,6, +0x3403e0,6, 0x340400,6, 0x340440,6, 0x340480,3, 0x3404c0,3, -0x340500,6, -0x34051c,7, -0x340540,1, +0x340500,2, +0x34050c,4, +0x340520,2, +0x34052c,4, +0x340540,2, 0x340c00,13, 0x340c40,12, 0x340c80,13, 0x340cc0,12, -0x340d00,6, -0x340d20,6, +0x340d00,14, +0x340d40,2, 0x340d80,14, 0x340dc0,2, -0x340e40,11, +0x340e00,11, +0x340e40,6, +0x340e60,6, 0x340e80,6, 0x340ea0,6, 0x341000,2, -0x341010,5, +0x341014,4, 0x341040,3, 0x341050,3, -0x341060,32, -0x341100,8, -0x341140,8, +0x341080,42, +0x341140,10, 0x341180,3, 0x341190,2, -0x34119c,9, -0x341218,9, -0x341240,3, -0x341250,6, -0x341280,1, -0x341288,6, -0x3412a4,1, -0x3412c0,1, -0x3412c8,6, -0x3412e4,1, -0x341400,8, -0x341424,2, +0x34119c,15, +0x341200,9, +0x341300,1, +0x341308,6, +0x341324,10, +0x341380,1, +0x341388,6, +0x3413a4,10, +0x341400,6, +0x341420,6, 0x341500,5, 0x341520,4, 0x341540,5, 0x341560,4, 0x341800,24, -0x341864,5, +0x341864,6, 0x341880,8, -0x341900,13, -0x341980,4, -0x3419a0,6, -0x3419c0,6, -0x3419dc,1, -0x341a00,6, -0x341a1c,1, -0x341a40,1, -0x341a60,1, -0x341a68,23, +0x341900,24, +0x341964,6, +0x341980,8, +0x341a00,17, +0x341a48,6, +0x341a80,17, 0x341ac8,6, -0x341b00,17, -0x341b48,6, -0x341b80,12, +0x341b00,6, +0x341b20,6, +0x341b40,3, +0x341b80,6, +0x341ba0,6, +0x341bc0,3, 0x341c00,6, 0x341c20,6, -0x341c40,6, -0x341c60,3, -0x341d00,6, -0x341d20,6, -0x341d40,3, -0x341d80,6, -0x341da0,6, -0x341dc0,3, -0x342000,5, -0x342020,4, -0x342034,17, -0x342080,1, +0x341c40,3, +0x341c80,6, +0x341ca0,6, +0x341cc0,3, +0x341d10,2, +0x341d1c,1, +0x341d50,2, +0x341d5c,1, +0x341d80,1, +0x341da0,1, +0x341da8,7, +0x341de0,1, +0x341de8,19, +0x341e40,6, +0x341e60,6, +0x341e80,6, +0x341ea0,6, +0x341ec0,7, +0x341ee0,7, +0x341f00,12, +0x341f40,3, +0x341f50,8, +0x342000,4, +0x342014,1, +0x342020,3, +0x342030,3, +0x342040,8, +0x34207c,2, 0x3420a0,6, -0x342100,5, -0x342120,4, -0x342134,17, -0x342180,1, +0x3420c0,6, +0x3420e0,6, +0x342100,4, +0x342114,1, +0x342120,3, +0x342130,3, +0x342140,8, +0x34217c,2, 0x3421a0,6, -0x342200,5, -0x342220,4, -0x342234,17, -0x342280,1, +0x3421c0,6, +0x3421e0,6, +0x342200,4, +0x342214,1, +0x342220,3, +0x342230,3, +0x342240,8, +0x34227c,2, 0x3422a0,6, -0x342300,5, -0x342320,4, -0x342334,17, -0x342380,1, +0x3422c0,6, +0x3422e0,6, +0x342300,4, +0x342314,1, +0x342320,3, +0x342330,3, +0x342340,8, +0x34237c,2, 0x3423a0,6, +0x3423c0,6, +0x3423e0,6, 0x342400,6, 0x342440,6, 0x342480,3, 0x3424c0,3, -0x342500,6, -0x34251c,7, -0x342540,1, +0x342500,2, +0x34250c,4, +0x342520,2, +0x34252c,4, +0x342540,2, 0x342c00,13, 0x342c40,12, 0x342c80,13, 0x342cc0,12, -0x342d00,6, -0x342d20,6, +0x342d00,14, +0x342d40,2, 0x342d80,14, 0x342dc0,2, -0x342e40,11, +0x342e00,11, +0x342e40,6, +0x342e60,6, 0x342e80,6, 0x342ea0,6, 0x343000,2, -0x343010,5, +0x343014,4, 0x343040,3, 0x343050,3, -0x343060,32, -0x343100,8, -0x343140,8, +0x343080,42, +0x343140,10, 0x343180,3, 0x343190,2, -0x34319c,9, -0x343218,9, -0x343240,3, -0x343250,6, -0x343280,1, -0x343288,6, -0x3432a4,1, -0x3432c0,1, -0x3432c8,6, -0x3432e4,1, -0x343400,8, -0x343424,2, +0x34319c,15, +0x343200,9, +0x343300,1, +0x343308,6, +0x343324,10, +0x343380,1, +0x343388,6, +0x3433a4,10, +0x343400,6, +0x343420,6, 0x343500,5, 0x343520,4, 0x343540,5, 0x343560,4, 0x343800,24, -0x343864,5, +0x343864,6, 0x343880,8, -0x343900,13, -0x343980,4, -0x3439a0,6, -0x3439c0,6, -0x3439dc,1, -0x343a00,6, -0x343a1c,1, -0x343a40,1, -0x343a60,1, -0x343a68,23, +0x343900,24, +0x343964,6, +0x343980,8, +0x343a00,17, +0x343a48,6, +0x343a80,17, 0x343ac8,6, -0x343b00,17, -0x343b48,6, -0x343b80,12, +0x343b00,6, +0x343b20,6, +0x343b40,3, +0x343b80,6, +0x343ba0,6, +0x343bc0,3, 0x343c00,6, 0x343c20,6, -0x343c40,6, -0x343c60,3, -0x343d00,6, -0x343d20,6, -0x343d40,3, -0x343d80,6, -0x343da0,6, -0x343dc0,3, +0x343c40,3, +0x343c80,6, +0x343ca0,6, +0x343cc0,3, +0x343d10,2, +0x343d1c,1, +0x343d50,2, +0x343d5c,1, +0x343d80,1, +0x343da0,1, +0x343da8,7, +0x343de0,1, +0x343de8,19, +0x343e40,6, +0x343e60,6, +0x343e80,6, +0x343ea0,6, +0x343ec0,7, +0x343ee0,7, +0x343f00,12, +0x343f40,3, +0x343f50,8, 0x344000,29, 0x344078,4, 0x344090,2, @@ -12661,8 +14897,10 @@ 0x345eac,1, 0x345eb4,3, 0x346000,14, -0x346070,3, +0x346040,6, +0x346060,6, 0x346080,6, +0x3460a0,3, 0x346100,9, 0x346204,1, 0x34620c,6, @@ -12707,18 +14945,29 @@ 0x346c94,8, 0x346cb8,9, 0x346ce0,4, -0x347000,6, -0x347020,3, -0x347040,7, -0x347060,6, -0x347100,5, -0x347138,1, -0x347144,1, -0x347150,2, +0x347000,1, +0x347028,1, +0x347050,1, +0x347078,1, +0x3470a0,4, +0x3471ac,1, +0x3471d8,4, +0x347200,6, +0x347220,6, +0x347240,3, +0x347400,5, +0x347438,1, +0x347444,1, +0x347450,4, +0x347500,7, +0x347520,6, +0x347540,6, +0x347560,3, +0x347570,1, 0x348000,6, 0x348020,3, -0x348030,1, -0x348038,7, +0x348030,3, +0x348050,1, 0x348100,6, 0x348120,10, 0x348150,10, @@ -12752,15 +15001,19 @@ 0x3489f4,3, 0x349000,4, 0x349020,4, -0x349040,3, -0x349050,3, -0x349080,2, -0x3490b0,3, -0x34912c,1, -0x349140,6, -0x349200,20, -0x34925c,30, -0x349300,24, +0x349040,11, +0x349070,3, +0x349080,4, +0x3490b0,22, +0x349110,2, +0x349120,22, +0x349180,1, +0x3491a0,6, +0x349200,42, +0x3492c0,1, +0x3492c8,3, +0x349300,25, +0x34936c,4, 0x349380,2, 0x3493a0,1, 0x3493c0,11, @@ -12769,18 +15022,25 @@ 0x349480,6, 0x349500,6, 0x349520,6, +0x349540,3, +0x349550,7, +0x349570,4, 0x349800,410, 0x34a000,4, 0x34a020,4, -0x34a040,3, -0x34a050,3, -0x34a080,2, -0x34a0b0,3, -0x34a12c,1, -0x34a140,6, -0x34a200,20, -0x34a25c,30, -0x34a300,24, +0x34a040,11, +0x34a070,3, +0x34a080,4, +0x34a0b0,22, +0x34a110,2, +0x34a120,22, +0x34a180,1, +0x34a1a0,6, +0x34a200,42, +0x34a2c0,1, +0x34a2c8,3, +0x34a300,25, +0x34a36c,4, 0x34a380,2, 0x34a3a0,1, 0x34a3c0,11, @@ -12789,18 +15049,25 @@ 0x34a480,6, 0x34a500,6, 0x34a520,6, +0x34a540,3, +0x34a550,7, +0x34a570,4, 0x34a800,410, 0x34b000,4, 0x34b020,4, -0x34b040,3, -0x34b050,3, -0x34b080,2, -0x34b0b0,3, -0x34b12c,1, -0x34b140,6, -0x34b200,20, -0x34b25c,30, -0x34b300,24, +0x34b040,11, +0x34b070,3, +0x34b080,4, +0x34b0b0,22, +0x34b110,2, +0x34b120,22, +0x34b180,1, +0x34b1a0,6, +0x34b200,42, +0x34b2c0,1, +0x34b2c8,3, +0x34b300,25, +0x34b36c,4, 0x34b380,2, 0x34b3a0,1, 0x34b3c0,11, @@ -12809,18 +15076,25 @@ 0x34b480,6, 0x34b500,6, 0x34b520,6, +0x34b540,3, +0x34b550,7, +0x34b570,4, 0x34b800,410, 0x34c000,4, 0x34c020,4, -0x34c040,3, -0x34c050,3, -0x34c080,2, -0x34c0b0,3, -0x34c12c,1, -0x34c140,6, -0x34c200,20, -0x34c25c,30, -0x34c300,24, +0x34c040,11, +0x34c070,3, +0x34c080,4, +0x34c0b0,22, +0x34c110,2, +0x34c120,22, +0x34c180,1, +0x34c1a0,6, +0x34c200,42, +0x34c2c0,1, +0x34c2c8,3, +0x34c300,25, +0x34c36c,4, 0x34c380,2, 0x34c3a0,1, 0x34c3c0,11, @@ -12829,6 +15103,9 @@ 0x34c480,6, 0x34c500,6, 0x34c520,6, +0x34c540,3, +0x34c550,7, +0x34c570,4, 0x34c800,410, 0x34f800,5, 0x34f818,1, @@ -12855,23 +15132,30 @@ 0x34fba4,1, 0x34fbac,2, 0x354000,3, -0x354018,3, -0x354100,25, +0x354018,4, +0x354100,56, +0x3541f0,1, 0x354400,3, -0x354418,3, -0x354500,25, -0x354800,1, +0x354418,4, +0x354500,56, +0x3545f0,1, +0x354800,5, +0x354820,3, 0x355000,3, -0x355018,3, -0x355100,25, +0x355018,4, +0x355100,56, +0x3551f0,1, 0x355400,3, -0x355418,3, -0x355500,25, -0x355800,1, +0x355418,4, +0x355500,56, +0x3555f0,1, +0x355800,5, +0x355820,3, 0x356004,7, -0x356024,3, +0x356024,1, +0x356034,3, 0x356300,5, -0x35631c,3, +0x35631c,1, 0x356600,10, 0x356630,1, 0x356680,10, @@ -12881,36 +15165,37 @@ 0x356780,10, 0x3567b0,1, 0x356800,47, -0x356910,12, -0x357000,64, +0x356910,14, +0x356e00,1, +0x357000,65, 0x358000,2, -0x35800c,9, -0x358040,6, -0x358060,6, -0x358080,2, -0x35808c,5, -0x3580a4,3, -0x3580e0,1, -0x358500,2, -0x358518,5, -0x358540,6, +0x35800c,3, +0x358028,2, +0x358038,47, +0x358500,6, +0x358520,6, +0x358540,3, 0x358580,10, +0x3585c0,15, +0x358600,2, +0x358618,5, +0x358630,1, 0x358800,2, -0x35880c,9, -0x358840,6, -0x358860,6, -0x358880,2, -0x35888c,5, -0x3588a4,3, -0x3588e0,1, -0x358d00,2, -0x358d18,5, -0x358d40,6, +0x35880c,3, +0x358828,2, +0x358838,47, +0x358d00,6, +0x358d20,6, +0x358d40,3, 0x358d80,10, -0x359800,2, -0x359828,2, -0x359850,2, -0x359878,2, +0x358dc0,15, +0x358e00,2, +0x358e18,5, +0x358e30,1, +0x359800,3, +0x359828,3, +0x359850,3, +0x359878,3, 0x3598a0,7, 0x3599ac,1, 0x3599d8,4, @@ -12918,191 +15203,253 @@ 0x359a20,6, 0x359a40,6, 0x359a60,6, -0x359a80,3, +0x359a80,6, +0x359aa0,6, +0x359ac0,3, 0x359c00,6, 0x359c20,3, 0x359c40,2, 0x359c60,1, -0x360000,5, -0x360020,4, -0x360034,17, -0x360080,1, +0x360000,4, +0x360014,1, +0x360020,3, +0x360030,3, +0x360040,8, +0x36007c,2, 0x3600a0,6, -0x360100,5, -0x360120,4, -0x360134,17, -0x360180,1, +0x3600c0,6, +0x3600e0,6, +0x360100,4, +0x360114,1, +0x360120,3, +0x360130,3, +0x360140,8, +0x36017c,2, 0x3601a0,6, -0x360200,5, -0x360220,4, -0x360234,17, -0x360280,1, +0x3601c0,6, +0x3601e0,6, +0x360200,4, +0x360214,1, +0x360220,3, +0x360230,3, +0x360240,8, +0x36027c,2, 0x3602a0,6, -0x360300,5, -0x360320,4, -0x360334,17, -0x360380,1, +0x3602c0,6, +0x3602e0,6, +0x360300,4, +0x360314,1, +0x360320,3, +0x360330,3, +0x360340,8, +0x36037c,2, 0x3603a0,6, +0x3603c0,6, +0x3603e0,6, 0x360400,6, 0x360440,6, 0x360480,3, 0x3604c0,3, -0x360500,6, -0x36051c,7, -0x360540,1, +0x360500,2, +0x36050c,4, +0x360520,2, +0x36052c,4, +0x360540,2, 0x360c00,13, 0x360c40,12, 0x360c80,13, 0x360cc0,12, -0x360d00,6, -0x360d20,6, +0x360d00,14, +0x360d40,2, 0x360d80,14, 0x360dc0,2, -0x360e40,11, +0x360e00,11, +0x360e40,6, +0x360e60,6, 0x360e80,6, 0x360ea0,6, 0x361000,2, -0x361010,5, +0x361014,4, 0x361040,3, 0x361050,3, -0x361060,32, -0x361100,8, -0x361140,8, +0x361080,42, +0x361140,10, 0x361180,3, 0x361190,2, -0x36119c,9, -0x361218,9, -0x361240,3, -0x361250,6, -0x361280,1, -0x361288,6, -0x3612a4,1, -0x3612c0,1, -0x3612c8,6, -0x3612e4,1, -0x361400,8, -0x361424,2, +0x36119c,15, +0x361200,9, +0x361300,1, +0x361308,6, +0x361324,10, +0x361380,1, +0x361388,6, +0x3613a4,10, +0x361400,6, +0x361420,6, 0x361500,5, 0x361520,4, 0x361540,5, 0x361560,4, 0x361800,24, -0x361864,5, +0x361864,6, 0x361880,8, -0x361900,13, -0x361980,4, -0x3619a0,6, -0x3619c0,6, -0x3619dc,1, -0x361a00,6, -0x361a1c,1, -0x361a40,1, -0x361a60,1, -0x361a68,23, +0x361900,24, +0x361964,6, +0x361980,8, +0x361a00,17, +0x361a48,6, +0x361a80,17, 0x361ac8,6, -0x361b00,17, -0x361b48,6, -0x361b80,12, +0x361b00,6, +0x361b20,6, +0x361b40,3, +0x361b80,6, +0x361ba0,6, +0x361bc0,3, 0x361c00,6, 0x361c20,6, -0x361c40,6, -0x361c60,3, -0x361d00,6, -0x361d20,6, -0x361d40,3, -0x361d80,6, -0x361da0,6, -0x361dc0,3, -0x362000,5, -0x362020,4, -0x362034,17, -0x362080,1, +0x361c40,3, +0x361c80,6, +0x361ca0,6, +0x361cc0,3, +0x361d10,2, +0x361d1c,1, +0x361d50,2, +0x361d5c,1, +0x361d80,1, +0x361da0,1, +0x361da8,7, +0x361de0,1, +0x361de8,19, +0x361e40,6, +0x361e60,6, +0x361e80,6, +0x361ea0,6, +0x361ec0,7, +0x361ee0,7, +0x361f00,12, +0x361f40,3, +0x361f50,8, +0x362000,4, +0x362014,1, +0x362020,3, +0x362030,3, +0x362040,8, +0x36207c,2, 0x3620a0,6, -0x362100,5, -0x362120,4, -0x362134,17, -0x362180,1, +0x3620c0,6, +0x3620e0,6, +0x362100,4, +0x362114,1, +0x362120,3, +0x362130,3, +0x362140,8, +0x36217c,2, 0x3621a0,6, -0x362200,5, -0x362220,4, -0x362234,17, -0x362280,1, +0x3621c0,6, +0x3621e0,6, +0x362200,4, +0x362214,1, +0x362220,3, +0x362230,3, +0x362240,8, +0x36227c,2, 0x3622a0,6, -0x362300,5, -0x362320,4, -0x362334,17, -0x362380,1, +0x3622c0,6, +0x3622e0,6, +0x362300,4, +0x362314,1, +0x362320,3, +0x362330,3, +0x362340,8, +0x36237c,2, 0x3623a0,6, +0x3623c0,6, +0x3623e0,6, 0x362400,6, 0x362440,6, 0x362480,3, 0x3624c0,3, -0x362500,6, -0x36251c,7, -0x362540,1, +0x362500,2, +0x36250c,4, +0x362520,2, +0x36252c,4, +0x362540,2, 0x362c00,13, 0x362c40,12, 0x362c80,13, 0x362cc0,12, -0x362d00,6, -0x362d20,6, +0x362d00,14, +0x362d40,2, 0x362d80,14, 0x362dc0,2, -0x362e40,11, +0x362e00,11, +0x362e40,6, +0x362e60,6, 0x362e80,6, 0x362ea0,6, 0x363000,2, -0x363010,5, +0x363014,4, 0x363040,3, 0x363050,3, -0x363060,32, -0x363100,8, -0x363140,8, +0x363080,42, +0x363140,10, 0x363180,3, 0x363190,2, -0x36319c,9, -0x363218,9, -0x363240,3, -0x363250,6, -0x363280,1, -0x363288,6, -0x3632a4,1, -0x3632c0,1, -0x3632c8,6, -0x3632e4,1, -0x363400,8, -0x363424,2, +0x36319c,15, +0x363200,9, +0x363300,1, +0x363308,6, +0x363324,10, +0x363380,1, +0x363388,6, +0x3633a4,10, +0x363400,6, +0x363420,6, 0x363500,5, 0x363520,4, 0x363540,5, 0x363560,4, 0x363800,24, -0x363864,5, +0x363864,6, 0x363880,8, -0x363900,13, -0x363980,4, -0x3639a0,6, -0x3639c0,6, -0x3639dc,1, -0x363a00,6, -0x363a1c,1, -0x363a40,1, -0x363a60,1, -0x363a68,23, +0x363900,24, +0x363964,6, +0x363980,8, +0x363a00,17, +0x363a48,6, +0x363a80,17, 0x363ac8,6, -0x363b00,17, -0x363b48,6, -0x363b80,12, +0x363b00,6, +0x363b20,6, +0x363b40,3, +0x363b80,6, +0x363ba0,6, +0x363bc0,3, 0x363c00,6, 0x363c20,6, -0x363c40,6, -0x363c60,3, -0x363d00,6, -0x363d20,6, -0x363d40,3, -0x363d80,6, -0x363da0,6, -0x363dc0,3, +0x363c40,3, +0x363c80,6, +0x363ca0,6, +0x363cc0,3, +0x363d10,2, +0x363d1c,1, +0x363d50,2, +0x363d5c,1, +0x363d80,1, +0x363da0,1, +0x363da8,7, +0x363de0,1, +0x363de8,19, +0x363e40,6, +0x363e60,6, +0x363e80,6, +0x363ea0,6, +0x363ec0,7, +0x363ee0,7, +0x363f00,12, +0x363f40,3, +0x363f50,8, 0x364000,29, 0x364078,4, 0x364090,2, @@ -13226,8 +15573,10 @@ 0x365eac,1, 0x365eb4,3, 0x366000,14, -0x366070,3, +0x366040,6, +0x366060,6, 0x366080,6, +0x3660a0,3, 0x366100,9, 0x366204,1, 0x36620c,6, @@ -13272,18 +15621,29 @@ 0x366c94,8, 0x366cb8,9, 0x366ce0,4, -0x367000,6, -0x367020,3, -0x367040,7, -0x367060,6, -0x367100,5, -0x367138,1, -0x367144,1, -0x367150,2, +0x367000,1, +0x367028,1, +0x367050,1, +0x367078,1, +0x3670a0,4, +0x3671ac,1, +0x3671d8,4, +0x367200,6, +0x367220,6, +0x367240,3, +0x367400,5, +0x367438,1, +0x367444,1, +0x367450,4, +0x367500,7, +0x367520,6, +0x367540,6, +0x367560,3, +0x367570,1, 0x368000,6, 0x368020,3, -0x368030,1, -0x368038,7, +0x368030,3, +0x368050,1, 0x368100,6, 0x368120,10, 0x368150,10, @@ -13317,15 +15677,19 @@ 0x3689f4,3, 0x369000,4, 0x369020,4, -0x369040,3, -0x369050,3, -0x369080,2, -0x3690b0,3, -0x36912c,1, -0x369140,6, -0x369200,20, -0x36925c,30, -0x369300,24, +0x369040,11, +0x369070,3, +0x369080,4, +0x3690b0,22, +0x369110,2, +0x369120,22, +0x369180,1, +0x3691a0,6, +0x369200,42, +0x3692c0,1, +0x3692c8,3, +0x369300,25, +0x36936c,4, 0x369380,2, 0x3693a0,1, 0x3693c0,11, @@ -13334,18 +15698,25 @@ 0x369480,6, 0x369500,6, 0x369520,6, +0x369540,3, +0x369550,7, +0x369570,4, 0x369800,410, 0x36a000,4, 0x36a020,4, -0x36a040,3, -0x36a050,3, -0x36a080,2, -0x36a0b0,3, -0x36a12c,1, -0x36a140,6, -0x36a200,20, -0x36a25c,30, -0x36a300,24, +0x36a040,11, +0x36a070,3, +0x36a080,4, +0x36a0b0,22, +0x36a110,2, +0x36a120,22, +0x36a180,1, +0x36a1a0,6, +0x36a200,42, +0x36a2c0,1, +0x36a2c8,3, +0x36a300,25, +0x36a36c,4, 0x36a380,2, 0x36a3a0,1, 0x36a3c0,11, @@ -13354,18 +15725,25 @@ 0x36a480,6, 0x36a500,6, 0x36a520,6, +0x36a540,3, +0x36a550,7, +0x36a570,4, 0x36a800,410, 0x36b000,4, 0x36b020,4, -0x36b040,3, -0x36b050,3, -0x36b080,2, -0x36b0b0,3, -0x36b12c,1, -0x36b140,6, -0x36b200,20, -0x36b25c,30, -0x36b300,24, +0x36b040,11, +0x36b070,3, +0x36b080,4, +0x36b0b0,22, +0x36b110,2, +0x36b120,22, +0x36b180,1, +0x36b1a0,6, +0x36b200,42, +0x36b2c0,1, +0x36b2c8,3, +0x36b300,25, +0x36b36c,4, 0x36b380,2, 0x36b3a0,1, 0x36b3c0,11, @@ -13374,18 +15752,25 @@ 0x36b480,6, 0x36b500,6, 0x36b520,6, +0x36b540,3, +0x36b550,7, +0x36b570,4, 0x36b800,410, 0x36c000,4, 0x36c020,4, -0x36c040,3, -0x36c050,3, -0x36c080,2, -0x36c0b0,3, -0x36c12c,1, -0x36c140,6, -0x36c200,20, -0x36c25c,30, -0x36c300,24, +0x36c040,11, +0x36c070,3, +0x36c080,4, +0x36c0b0,22, +0x36c110,2, +0x36c120,22, +0x36c180,1, +0x36c1a0,6, +0x36c200,42, +0x36c2c0,1, +0x36c2c8,3, +0x36c300,25, +0x36c36c,4, 0x36c380,2, 0x36c3a0,1, 0x36c3c0,11, @@ -13394,6 +15779,9 @@ 0x36c480,6, 0x36c500,6, 0x36c520,6, +0x36c540,3, +0x36c550,7, +0x36c570,4, 0x36c800,410, 0x36f800,5, 0x36f818,1, @@ -13420,23 +15808,30 @@ 0x36fba4,1, 0x36fbac,2, 0x374000,3, -0x374018,3, -0x374100,25, +0x374018,4, +0x374100,56, +0x3741f0,1, 0x374400,3, -0x374418,3, -0x374500,25, -0x374800,1, +0x374418,4, +0x374500,56, +0x3745f0,1, +0x374800,5, +0x374820,3, 0x375000,3, -0x375018,3, -0x375100,25, +0x375018,4, +0x375100,56, +0x3751f0,1, 0x375400,3, -0x375418,3, -0x375500,25, -0x375800,1, +0x375418,4, +0x375500,56, +0x3755f0,1, +0x375800,5, +0x375820,3, 0x376004,7, -0x376024,3, +0x376024,1, +0x376034,3, 0x376300,5, -0x37631c,3, +0x37631c,1, 0x376600,10, 0x376630,1, 0x376680,10, @@ -13446,36 +15841,37 @@ 0x376780,10, 0x3767b0,1, 0x376800,47, -0x376910,12, -0x377000,64, +0x376910,14, +0x376e00,1, +0x377000,65, 0x378000,2, -0x37800c,9, -0x378040,6, -0x378060,6, -0x378080,2, -0x37808c,5, -0x3780a4,3, -0x3780e0,1, -0x378500,2, -0x378518,5, -0x378540,6, +0x37800c,3, +0x378028,2, +0x378038,47, +0x378500,6, +0x378520,6, +0x378540,3, 0x378580,10, +0x3785c0,15, +0x378600,2, +0x378618,5, +0x378630,1, 0x378800,2, -0x37880c,9, -0x378840,6, -0x378860,6, -0x378880,2, -0x37888c,5, -0x3788a4,3, -0x3788e0,1, -0x378d00,2, -0x378d18,5, -0x378d40,6, +0x37880c,3, +0x378828,2, +0x378838,47, +0x378d00,6, +0x378d20,6, +0x378d40,3, 0x378d80,10, -0x379800,2, -0x379828,2, -0x379850,2, -0x379878,2, +0x378dc0,15, +0x378e00,2, +0x378e18,5, +0x378e30,1, +0x379800,3, +0x379828,3, +0x379850,3, +0x379878,3, 0x3798a0,7, 0x3799ac,1, 0x3799d8,4, @@ -13483,191 +15879,253 @@ 0x379a20,6, 0x379a40,6, 0x379a60,6, -0x379a80,3, +0x379a80,6, +0x379aa0,6, +0x379ac0,3, 0x379c00,6, 0x379c20,3, 0x379c40,2, 0x379c60,1, -0x380000,5, -0x380020,4, -0x380034,17, -0x380080,1, +0x380000,4, +0x380014,1, +0x380020,3, +0x380030,3, +0x380040,8, +0x38007c,2, 0x3800a0,6, -0x380100,5, -0x380120,4, -0x380134,17, -0x380180,1, +0x3800c0,6, +0x3800e0,6, +0x380100,4, +0x380114,1, +0x380120,3, +0x380130,3, +0x380140,8, +0x38017c,2, 0x3801a0,6, -0x380200,5, -0x380220,4, -0x380234,17, -0x380280,1, +0x3801c0,6, +0x3801e0,6, +0x380200,4, +0x380214,1, +0x380220,3, +0x380230,3, +0x380240,8, +0x38027c,2, 0x3802a0,6, -0x380300,5, -0x380320,4, -0x380334,17, -0x380380,1, +0x3802c0,6, +0x3802e0,6, +0x380300,4, +0x380314,1, +0x380320,3, +0x380330,3, +0x380340,8, +0x38037c,2, 0x3803a0,6, +0x3803c0,6, +0x3803e0,6, 0x380400,6, 0x380440,6, 0x380480,3, 0x3804c0,3, -0x380500,6, -0x38051c,7, -0x380540,1, +0x380500,2, +0x38050c,4, +0x380520,2, +0x38052c,4, +0x380540,2, 0x380c00,13, 0x380c40,12, 0x380c80,13, 0x380cc0,12, -0x380d00,6, -0x380d20,6, +0x380d00,14, +0x380d40,2, 0x380d80,14, 0x380dc0,2, -0x380e40,11, +0x380e00,11, +0x380e40,6, +0x380e60,6, 0x380e80,6, 0x380ea0,6, 0x381000,2, -0x381010,5, +0x381014,4, 0x381040,3, 0x381050,3, -0x381060,32, -0x381100,8, -0x381140,8, +0x381080,42, +0x381140,10, 0x381180,3, 0x381190,2, -0x38119c,9, -0x381218,9, -0x381240,3, -0x381250,6, -0x381280,1, -0x381288,6, -0x3812a4,1, -0x3812c0,1, -0x3812c8,6, -0x3812e4,1, -0x381400,8, -0x381424,2, +0x38119c,15, +0x381200,9, +0x381300,1, +0x381308,6, +0x381324,10, +0x381380,1, +0x381388,6, +0x3813a4,10, +0x381400,6, +0x381420,6, 0x381500,5, 0x381520,4, 0x381540,5, 0x381560,4, 0x381800,24, -0x381864,5, +0x381864,6, 0x381880,8, -0x381900,13, -0x381980,4, -0x3819a0,6, -0x3819c0,6, -0x3819dc,1, -0x381a00,6, -0x381a1c,1, -0x381a40,1, -0x381a60,1, -0x381a68,23, +0x381900,24, +0x381964,6, +0x381980,8, +0x381a00,17, +0x381a48,6, +0x381a80,17, 0x381ac8,6, -0x381b00,17, -0x381b48,6, -0x381b80,12, +0x381b00,6, +0x381b20,6, +0x381b40,3, +0x381b80,6, +0x381ba0,6, +0x381bc0,3, 0x381c00,6, 0x381c20,6, -0x381c40,6, -0x381c60,3, -0x381d00,6, -0x381d20,6, -0x381d40,3, -0x381d80,6, -0x381da0,6, -0x381dc0,3, -0x382000,5, -0x382020,4, -0x382034,17, -0x382080,1, +0x381c40,3, +0x381c80,6, +0x381ca0,6, +0x381cc0,3, +0x381d10,2, +0x381d1c,1, +0x381d50,2, +0x381d5c,1, +0x381d80,1, +0x381da0,1, +0x381da8,7, +0x381de0,1, +0x381de8,19, +0x381e40,6, +0x381e60,6, +0x381e80,6, +0x381ea0,6, +0x381ec0,7, +0x381ee0,7, +0x381f00,12, +0x381f40,3, +0x381f50,8, +0x382000,4, +0x382014,1, +0x382020,3, +0x382030,3, +0x382040,8, +0x38207c,2, 0x3820a0,6, -0x382100,5, -0x382120,4, -0x382134,17, -0x382180,1, +0x3820c0,6, +0x3820e0,6, +0x382100,4, +0x382114,1, +0x382120,3, +0x382130,3, +0x382140,8, +0x38217c,2, 0x3821a0,6, -0x382200,5, -0x382220,4, -0x382234,17, -0x382280,1, +0x3821c0,6, +0x3821e0,6, +0x382200,4, +0x382214,1, +0x382220,3, +0x382230,3, +0x382240,8, +0x38227c,2, 0x3822a0,6, -0x382300,5, -0x382320,4, -0x382334,17, -0x382380,1, +0x3822c0,6, +0x3822e0,6, +0x382300,4, +0x382314,1, +0x382320,3, +0x382330,3, +0x382340,8, +0x38237c,2, 0x3823a0,6, +0x3823c0,6, +0x3823e0,6, 0x382400,6, 0x382440,6, 0x382480,3, 0x3824c0,3, -0x382500,6, -0x38251c,7, -0x382540,1, +0x382500,2, +0x38250c,4, +0x382520,2, +0x38252c,4, +0x382540,2, 0x382c00,13, 0x382c40,12, 0x382c80,13, 0x382cc0,12, -0x382d00,6, -0x382d20,6, +0x382d00,14, +0x382d40,2, 0x382d80,14, 0x382dc0,2, -0x382e40,11, +0x382e00,11, +0x382e40,6, +0x382e60,6, 0x382e80,6, 0x382ea0,6, 0x383000,2, -0x383010,5, +0x383014,4, 0x383040,3, 0x383050,3, -0x383060,32, -0x383100,8, -0x383140,8, +0x383080,42, +0x383140,10, 0x383180,3, 0x383190,2, -0x38319c,9, -0x383218,9, -0x383240,3, -0x383250,6, -0x383280,1, -0x383288,6, -0x3832a4,1, -0x3832c0,1, -0x3832c8,6, -0x3832e4,1, -0x383400,8, -0x383424,2, +0x38319c,15, +0x383200,9, +0x383300,1, +0x383308,6, +0x383324,10, +0x383380,1, +0x383388,6, +0x3833a4,10, +0x383400,6, +0x383420,6, 0x383500,5, 0x383520,4, 0x383540,5, 0x383560,4, 0x383800,24, -0x383864,5, +0x383864,6, 0x383880,8, -0x383900,13, -0x383980,4, -0x3839a0,6, -0x3839c0,6, -0x3839dc,1, -0x383a00,6, -0x383a1c,1, -0x383a40,1, -0x383a60,1, -0x383a68,23, +0x383900,24, +0x383964,6, +0x383980,8, +0x383a00,17, +0x383a48,6, +0x383a80,17, 0x383ac8,6, -0x383b00,17, -0x383b48,6, -0x383b80,12, +0x383b00,6, +0x383b20,6, +0x383b40,3, +0x383b80,6, +0x383ba0,6, +0x383bc0,3, 0x383c00,6, 0x383c20,6, -0x383c40,6, -0x383c60,3, -0x383d00,6, -0x383d20,6, -0x383d40,3, -0x383d80,6, -0x383da0,6, -0x383dc0,3, +0x383c40,3, +0x383c80,6, +0x383ca0,6, +0x383cc0,3, +0x383d10,2, +0x383d1c,1, +0x383d50,2, +0x383d5c,1, +0x383d80,1, +0x383da0,1, +0x383da8,7, +0x383de0,1, +0x383de8,19, +0x383e40,6, +0x383e60,6, +0x383e80,6, +0x383ea0,6, +0x383ec0,7, +0x383ee0,7, +0x383f00,12, +0x383f40,3, +0x383f50,8, 0x384000,29, 0x384078,4, 0x384090,2, @@ -13791,8 +16249,10 @@ 0x385eac,1, 0x385eb4,3, 0x386000,14, -0x386070,3, +0x386040,6, +0x386060,6, 0x386080,6, +0x3860a0,3, 0x386100,9, 0x386204,1, 0x38620c,6, @@ -13837,18 +16297,29 @@ 0x386c94,8, 0x386cb8,9, 0x386ce0,4, -0x387000,6, -0x387020,3, -0x387040,7, -0x387060,6, -0x387100,5, -0x387138,1, -0x387144,1, -0x387150,2, +0x387000,1, +0x387028,1, +0x387050,1, +0x387078,1, +0x3870a0,4, +0x3871ac,1, +0x3871d8,4, +0x387200,6, +0x387220,6, +0x387240,3, +0x387400,5, +0x387438,1, +0x387444,1, +0x387450,4, +0x387500,7, +0x387520,6, +0x387540,6, +0x387560,3, +0x387570,1, 0x388000,6, 0x388020,3, -0x388030,1, -0x388038,7, +0x388030,3, +0x388050,1, 0x388100,6, 0x388120,10, 0x388150,10, @@ -13882,15 +16353,19 @@ 0x3889f4,3, 0x389000,4, 0x389020,4, -0x389040,3, -0x389050,3, -0x389080,2, -0x3890b0,3, -0x38912c,1, -0x389140,6, -0x389200,20, -0x38925c,30, -0x389300,24, +0x389040,11, +0x389070,3, +0x389080,4, +0x3890b0,22, +0x389110,2, +0x389120,22, +0x389180,1, +0x3891a0,6, +0x389200,42, +0x3892c0,1, +0x3892c8,3, +0x389300,25, +0x38936c,4, 0x389380,2, 0x3893a0,1, 0x3893c0,11, @@ -13899,18 +16374,25 @@ 0x389480,6, 0x389500,6, 0x389520,6, +0x389540,3, +0x389550,7, +0x389570,4, 0x389800,410, 0x38a000,4, 0x38a020,4, -0x38a040,3, -0x38a050,3, -0x38a080,2, -0x38a0b0,3, -0x38a12c,1, -0x38a140,6, -0x38a200,20, -0x38a25c,30, -0x38a300,24, +0x38a040,11, +0x38a070,3, +0x38a080,4, +0x38a0b0,22, +0x38a110,2, +0x38a120,22, +0x38a180,1, +0x38a1a0,6, +0x38a200,42, +0x38a2c0,1, +0x38a2c8,3, +0x38a300,25, +0x38a36c,4, 0x38a380,2, 0x38a3a0,1, 0x38a3c0,11, @@ -13919,18 +16401,25 @@ 0x38a480,6, 0x38a500,6, 0x38a520,6, +0x38a540,3, +0x38a550,7, +0x38a570,4, 0x38a800,410, 0x38b000,4, 0x38b020,4, -0x38b040,3, -0x38b050,3, -0x38b080,2, -0x38b0b0,3, -0x38b12c,1, -0x38b140,6, -0x38b200,20, -0x38b25c,30, -0x38b300,24, +0x38b040,11, +0x38b070,3, +0x38b080,4, +0x38b0b0,22, +0x38b110,2, +0x38b120,22, +0x38b180,1, +0x38b1a0,6, +0x38b200,42, +0x38b2c0,1, +0x38b2c8,3, +0x38b300,25, +0x38b36c,4, 0x38b380,2, 0x38b3a0,1, 0x38b3c0,11, @@ -13939,18 +16428,25 @@ 0x38b480,6, 0x38b500,6, 0x38b520,6, +0x38b540,3, +0x38b550,7, +0x38b570,4, 0x38b800,410, 0x38c000,4, 0x38c020,4, -0x38c040,3, -0x38c050,3, -0x38c080,2, -0x38c0b0,3, -0x38c12c,1, -0x38c140,6, -0x38c200,20, -0x38c25c,30, -0x38c300,24, +0x38c040,11, +0x38c070,3, +0x38c080,4, +0x38c0b0,22, +0x38c110,2, +0x38c120,22, +0x38c180,1, +0x38c1a0,6, +0x38c200,42, +0x38c2c0,1, +0x38c2c8,3, +0x38c300,25, +0x38c36c,4, 0x38c380,2, 0x38c3a0,1, 0x38c3c0,11, @@ -13959,6 +16455,9 @@ 0x38c480,6, 0x38c500,6, 0x38c520,6, +0x38c540,3, +0x38c550,7, +0x38c570,4, 0x38c800,410, 0x38f800,5, 0x38f818,1, @@ -13985,23 +16484,30 @@ 0x38fba4,1, 0x38fbac,2, 0x394000,3, -0x394018,3, -0x394100,25, +0x394018,4, +0x394100,56, +0x3941f0,1, 0x394400,3, -0x394418,3, -0x394500,25, -0x394800,1, +0x394418,4, +0x394500,56, +0x3945f0,1, +0x394800,5, +0x394820,3, 0x395000,3, -0x395018,3, -0x395100,25, +0x395018,4, +0x395100,56, +0x3951f0,1, 0x395400,3, -0x395418,3, -0x395500,25, -0x395800,1, +0x395418,4, +0x395500,56, +0x3955f0,1, +0x395800,5, +0x395820,3, 0x396004,7, -0x396024,3, +0x396024,1, +0x396034,3, 0x396300,5, -0x39631c,3, +0x39631c,1, 0x396600,10, 0x396630,1, 0x396680,10, @@ -14011,36 +16517,37 @@ 0x396780,10, 0x3967b0,1, 0x396800,47, -0x396910,12, -0x397000,64, +0x396910,14, +0x396e00,1, +0x397000,65, 0x398000,2, -0x39800c,9, -0x398040,6, -0x398060,6, -0x398080,2, -0x39808c,5, -0x3980a4,3, -0x3980e0,1, -0x398500,2, -0x398518,5, -0x398540,6, +0x39800c,3, +0x398028,2, +0x398038,47, +0x398500,6, +0x398520,6, +0x398540,3, 0x398580,10, +0x3985c0,15, +0x398600,2, +0x398618,5, +0x398630,1, 0x398800,2, -0x39880c,9, -0x398840,6, -0x398860,6, -0x398880,2, -0x39888c,5, -0x3988a4,3, -0x3988e0,1, -0x398d00,2, -0x398d18,5, -0x398d40,6, +0x39880c,3, +0x398828,2, +0x398838,47, +0x398d00,6, +0x398d20,6, +0x398d40,3, 0x398d80,10, -0x399800,2, -0x399828,2, -0x399850,2, -0x399878,2, +0x398dc0,15, +0x398e00,2, +0x398e18,5, +0x398e30,1, +0x399800,3, +0x399828,3, +0x399850,3, +0x399878,3, 0x3998a0,7, 0x3999ac,1, 0x3999d8,4, @@ -14048,191 +16555,253 @@ 0x399a20,6, 0x399a40,6, 0x399a60,6, -0x399a80,3, +0x399a80,6, +0x399aa0,6, +0x399ac0,3, 0x399c00,6, 0x399c20,3, 0x399c40,2, 0x399c60,1, -0x3a0000,5, -0x3a0020,4, -0x3a0034,17, -0x3a0080,1, +0x3a0000,4, +0x3a0014,1, +0x3a0020,3, +0x3a0030,3, +0x3a0040,8, +0x3a007c,2, 0x3a00a0,6, -0x3a0100,5, -0x3a0120,4, -0x3a0134,17, -0x3a0180,1, +0x3a00c0,6, +0x3a00e0,6, +0x3a0100,4, +0x3a0114,1, +0x3a0120,3, +0x3a0130,3, +0x3a0140,8, +0x3a017c,2, 0x3a01a0,6, -0x3a0200,5, -0x3a0220,4, -0x3a0234,17, -0x3a0280,1, +0x3a01c0,6, +0x3a01e0,6, +0x3a0200,4, +0x3a0214,1, +0x3a0220,3, +0x3a0230,3, +0x3a0240,8, +0x3a027c,2, 0x3a02a0,6, -0x3a0300,5, -0x3a0320,4, -0x3a0334,17, -0x3a0380,1, +0x3a02c0,6, +0x3a02e0,6, +0x3a0300,4, +0x3a0314,1, +0x3a0320,3, +0x3a0330,3, +0x3a0340,8, +0x3a037c,2, 0x3a03a0,6, +0x3a03c0,6, +0x3a03e0,6, 0x3a0400,6, 0x3a0440,6, 0x3a0480,3, 0x3a04c0,3, -0x3a0500,6, -0x3a051c,7, -0x3a0540,1, +0x3a0500,2, +0x3a050c,4, +0x3a0520,2, +0x3a052c,4, +0x3a0540,2, 0x3a0c00,13, 0x3a0c40,12, 0x3a0c80,13, 0x3a0cc0,12, -0x3a0d00,6, -0x3a0d20,6, +0x3a0d00,14, +0x3a0d40,2, 0x3a0d80,14, 0x3a0dc0,2, -0x3a0e40,11, +0x3a0e00,11, +0x3a0e40,6, +0x3a0e60,6, 0x3a0e80,6, 0x3a0ea0,6, 0x3a1000,2, -0x3a1010,5, +0x3a1014,4, 0x3a1040,3, 0x3a1050,3, -0x3a1060,32, -0x3a1100,8, -0x3a1140,8, +0x3a1080,42, +0x3a1140,10, 0x3a1180,3, 0x3a1190,2, -0x3a119c,9, -0x3a1218,9, -0x3a1240,3, -0x3a1250,6, -0x3a1280,1, -0x3a1288,6, -0x3a12a4,1, -0x3a12c0,1, -0x3a12c8,6, -0x3a12e4,1, -0x3a1400,8, -0x3a1424,2, +0x3a119c,15, +0x3a1200,9, +0x3a1300,1, +0x3a1308,6, +0x3a1324,10, +0x3a1380,1, +0x3a1388,6, +0x3a13a4,10, +0x3a1400,6, +0x3a1420,6, 0x3a1500,5, 0x3a1520,4, 0x3a1540,5, 0x3a1560,4, 0x3a1800,24, -0x3a1864,5, +0x3a1864,6, 0x3a1880,8, -0x3a1900,13, -0x3a1980,4, -0x3a19a0,6, -0x3a19c0,6, -0x3a19dc,1, -0x3a1a00,6, -0x3a1a1c,1, -0x3a1a40,1, -0x3a1a60,1, -0x3a1a68,23, +0x3a1900,24, +0x3a1964,6, +0x3a1980,8, +0x3a1a00,17, +0x3a1a48,6, +0x3a1a80,17, 0x3a1ac8,6, -0x3a1b00,17, -0x3a1b48,6, -0x3a1b80,12, +0x3a1b00,6, +0x3a1b20,6, +0x3a1b40,3, +0x3a1b80,6, +0x3a1ba0,6, +0x3a1bc0,3, 0x3a1c00,6, 0x3a1c20,6, -0x3a1c40,6, -0x3a1c60,3, -0x3a1d00,6, -0x3a1d20,6, -0x3a1d40,3, -0x3a1d80,6, -0x3a1da0,6, -0x3a1dc0,3, -0x3a2000,5, -0x3a2020,4, -0x3a2034,17, -0x3a2080,1, +0x3a1c40,3, +0x3a1c80,6, +0x3a1ca0,6, +0x3a1cc0,3, +0x3a1d10,2, +0x3a1d1c,1, +0x3a1d50,2, +0x3a1d5c,1, +0x3a1d80,1, +0x3a1da0,1, +0x3a1da8,7, +0x3a1de0,1, +0x3a1de8,19, +0x3a1e40,6, +0x3a1e60,6, +0x3a1e80,6, +0x3a1ea0,6, +0x3a1ec0,7, +0x3a1ee0,7, +0x3a1f00,12, +0x3a1f40,3, +0x3a1f50,8, +0x3a2000,4, +0x3a2014,1, +0x3a2020,3, +0x3a2030,3, +0x3a2040,8, +0x3a207c,2, 0x3a20a0,6, -0x3a2100,5, -0x3a2120,4, -0x3a2134,17, -0x3a2180,1, +0x3a20c0,6, +0x3a20e0,6, +0x3a2100,4, +0x3a2114,1, +0x3a2120,3, +0x3a2130,3, +0x3a2140,8, +0x3a217c,2, 0x3a21a0,6, -0x3a2200,5, -0x3a2220,4, -0x3a2234,17, -0x3a2280,1, +0x3a21c0,6, +0x3a21e0,6, +0x3a2200,4, +0x3a2214,1, +0x3a2220,3, +0x3a2230,3, +0x3a2240,8, +0x3a227c,2, 0x3a22a0,6, -0x3a2300,5, -0x3a2320,4, -0x3a2334,17, -0x3a2380,1, +0x3a22c0,6, +0x3a22e0,6, +0x3a2300,4, +0x3a2314,1, +0x3a2320,3, +0x3a2330,3, +0x3a2340,8, +0x3a237c,2, 0x3a23a0,6, +0x3a23c0,6, +0x3a23e0,6, 0x3a2400,6, 0x3a2440,6, 0x3a2480,3, 0x3a24c0,3, -0x3a2500,6, -0x3a251c,7, -0x3a2540,1, +0x3a2500,2, +0x3a250c,4, +0x3a2520,2, +0x3a252c,4, +0x3a2540,2, 0x3a2c00,13, 0x3a2c40,12, 0x3a2c80,13, 0x3a2cc0,12, -0x3a2d00,6, -0x3a2d20,6, +0x3a2d00,14, +0x3a2d40,2, 0x3a2d80,14, 0x3a2dc0,2, -0x3a2e40,11, +0x3a2e00,11, +0x3a2e40,6, +0x3a2e60,6, 0x3a2e80,6, 0x3a2ea0,6, 0x3a3000,2, -0x3a3010,5, +0x3a3014,4, 0x3a3040,3, 0x3a3050,3, -0x3a3060,32, -0x3a3100,8, -0x3a3140,8, +0x3a3080,42, +0x3a3140,10, 0x3a3180,3, 0x3a3190,2, -0x3a319c,9, -0x3a3218,9, -0x3a3240,3, -0x3a3250,6, -0x3a3280,1, -0x3a3288,6, -0x3a32a4,1, -0x3a32c0,1, -0x3a32c8,6, -0x3a32e4,1, -0x3a3400,8, -0x3a3424,2, +0x3a319c,15, +0x3a3200,9, +0x3a3300,1, +0x3a3308,6, +0x3a3324,10, +0x3a3380,1, +0x3a3388,6, +0x3a33a4,10, +0x3a3400,6, +0x3a3420,6, 0x3a3500,5, 0x3a3520,4, 0x3a3540,5, 0x3a3560,4, 0x3a3800,24, -0x3a3864,5, +0x3a3864,6, 0x3a3880,8, -0x3a3900,13, -0x3a3980,4, -0x3a39a0,6, -0x3a39c0,6, -0x3a39dc,1, -0x3a3a00,6, -0x3a3a1c,1, -0x3a3a40,1, -0x3a3a60,1, -0x3a3a68,23, +0x3a3900,24, +0x3a3964,6, +0x3a3980,8, +0x3a3a00,17, +0x3a3a48,6, +0x3a3a80,17, 0x3a3ac8,6, -0x3a3b00,17, -0x3a3b48,6, -0x3a3b80,12, +0x3a3b00,6, +0x3a3b20,6, +0x3a3b40,3, +0x3a3b80,6, +0x3a3ba0,6, +0x3a3bc0,3, 0x3a3c00,6, 0x3a3c20,6, -0x3a3c40,6, -0x3a3c60,3, -0x3a3d00,6, -0x3a3d20,6, -0x3a3d40,3, -0x3a3d80,6, -0x3a3da0,6, -0x3a3dc0,3, +0x3a3c40,3, +0x3a3c80,6, +0x3a3ca0,6, +0x3a3cc0,3, +0x3a3d10,2, +0x3a3d1c,1, +0x3a3d50,2, +0x3a3d5c,1, +0x3a3d80,1, +0x3a3da0,1, +0x3a3da8,7, +0x3a3de0,1, +0x3a3de8,19, +0x3a3e40,6, +0x3a3e60,6, +0x3a3e80,6, +0x3a3ea0,6, +0x3a3ec0,7, +0x3a3ee0,7, +0x3a3f00,12, +0x3a3f40,3, +0x3a3f50,8, 0x3a4000,29, 0x3a4078,4, 0x3a4090,2, @@ -14356,8 +16925,10 @@ 0x3a5eac,1, 0x3a5eb4,3, 0x3a6000,14, -0x3a6070,3, +0x3a6040,6, +0x3a6060,6, 0x3a6080,6, +0x3a60a0,3, 0x3a6100,9, 0x3a6204,1, 0x3a620c,6, @@ -14402,18 +16973,29 @@ 0x3a6c94,8, 0x3a6cb8,9, 0x3a6ce0,4, -0x3a7000,6, -0x3a7020,3, -0x3a7040,7, -0x3a7060,6, -0x3a7100,5, -0x3a7138,1, -0x3a7144,1, -0x3a7150,2, +0x3a7000,1, +0x3a7028,1, +0x3a7050,1, +0x3a7078,1, +0x3a70a0,4, +0x3a71ac,1, +0x3a71d8,4, +0x3a7200,6, +0x3a7220,6, +0x3a7240,3, +0x3a7400,5, +0x3a7438,1, +0x3a7444,1, +0x3a7450,4, +0x3a7500,7, +0x3a7520,6, +0x3a7540,6, +0x3a7560,3, +0x3a7570,1, 0x3a8000,6, 0x3a8020,3, -0x3a8030,1, -0x3a8038,7, +0x3a8030,3, +0x3a8050,1, 0x3a8100,6, 0x3a8120,10, 0x3a8150,10, @@ -14447,15 +17029,19 @@ 0x3a89f4,3, 0x3a9000,4, 0x3a9020,4, -0x3a9040,3, -0x3a9050,3, -0x3a9080,2, -0x3a90b0,3, -0x3a912c,1, -0x3a9140,6, -0x3a9200,20, -0x3a925c,30, -0x3a9300,24, +0x3a9040,11, +0x3a9070,3, +0x3a9080,4, +0x3a90b0,22, +0x3a9110,2, +0x3a9120,22, +0x3a9180,1, +0x3a91a0,6, +0x3a9200,42, +0x3a92c0,1, +0x3a92c8,3, +0x3a9300,25, +0x3a936c,4, 0x3a9380,2, 0x3a93a0,1, 0x3a93c0,11, @@ -14464,18 +17050,25 @@ 0x3a9480,6, 0x3a9500,6, 0x3a9520,6, +0x3a9540,3, +0x3a9550,7, +0x3a9570,4, 0x3a9800,410, 0x3aa000,4, 0x3aa020,4, -0x3aa040,3, -0x3aa050,3, -0x3aa080,2, -0x3aa0b0,3, -0x3aa12c,1, -0x3aa140,6, -0x3aa200,20, -0x3aa25c,30, -0x3aa300,24, +0x3aa040,11, +0x3aa070,3, +0x3aa080,4, +0x3aa0b0,22, +0x3aa110,2, +0x3aa120,22, +0x3aa180,1, +0x3aa1a0,6, +0x3aa200,42, +0x3aa2c0,1, +0x3aa2c8,3, +0x3aa300,25, +0x3aa36c,4, 0x3aa380,2, 0x3aa3a0,1, 0x3aa3c0,11, @@ -14484,18 +17077,25 @@ 0x3aa480,6, 0x3aa500,6, 0x3aa520,6, +0x3aa540,3, +0x3aa550,7, +0x3aa570,4, 0x3aa800,410, 0x3ab000,4, 0x3ab020,4, -0x3ab040,3, -0x3ab050,3, -0x3ab080,2, -0x3ab0b0,3, -0x3ab12c,1, -0x3ab140,6, -0x3ab200,20, -0x3ab25c,30, -0x3ab300,24, +0x3ab040,11, +0x3ab070,3, +0x3ab080,4, +0x3ab0b0,22, +0x3ab110,2, +0x3ab120,22, +0x3ab180,1, +0x3ab1a0,6, +0x3ab200,42, +0x3ab2c0,1, +0x3ab2c8,3, +0x3ab300,25, +0x3ab36c,4, 0x3ab380,2, 0x3ab3a0,1, 0x3ab3c0,11, @@ -14504,18 +17104,25 @@ 0x3ab480,6, 0x3ab500,6, 0x3ab520,6, +0x3ab540,3, +0x3ab550,7, +0x3ab570,4, 0x3ab800,410, 0x3ac000,4, 0x3ac020,4, -0x3ac040,3, -0x3ac050,3, -0x3ac080,2, -0x3ac0b0,3, -0x3ac12c,1, -0x3ac140,6, -0x3ac200,20, -0x3ac25c,30, -0x3ac300,24, +0x3ac040,11, +0x3ac070,3, +0x3ac080,4, +0x3ac0b0,22, +0x3ac110,2, +0x3ac120,22, +0x3ac180,1, +0x3ac1a0,6, +0x3ac200,42, +0x3ac2c0,1, +0x3ac2c8,3, +0x3ac300,25, +0x3ac36c,4, 0x3ac380,2, 0x3ac3a0,1, 0x3ac3c0,11, @@ -14524,6 +17131,9 @@ 0x3ac480,6, 0x3ac500,6, 0x3ac520,6, +0x3ac540,3, +0x3ac550,7, +0x3ac570,4, 0x3ac800,410, 0x3af800,5, 0x3af818,1, @@ -14550,23 +17160,30 @@ 0x3afba4,1, 0x3afbac,2, 0x3b4000,3, -0x3b4018,3, -0x3b4100,25, +0x3b4018,4, +0x3b4100,56, +0x3b41f0,1, 0x3b4400,3, -0x3b4418,3, -0x3b4500,25, -0x3b4800,1, +0x3b4418,4, +0x3b4500,56, +0x3b45f0,1, +0x3b4800,5, +0x3b4820,3, 0x3b5000,3, -0x3b5018,3, -0x3b5100,25, +0x3b5018,4, +0x3b5100,56, +0x3b51f0,1, 0x3b5400,3, -0x3b5418,3, -0x3b5500,25, -0x3b5800,1, +0x3b5418,4, +0x3b5500,56, +0x3b55f0,1, +0x3b5800,5, +0x3b5820,3, 0x3b6004,7, -0x3b6024,3, +0x3b6024,1, +0x3b6034,3, 0x3b6300,5, -0x3b631c,3, +0x3b631c,1, 0x3b6600,10, 0x3b6630,1, 0x3b6680,10, @@ -14576,36 +17193,37 @@ 0x3b6780,10, 0x3b67b0,1, 0x3b6800,47, -0x3b6910,12, -0x3b7000,64, +0x3b6910,14, +0x3b6e00,1, +0x3b7000,65, 0x3b8000,2, -0x3b800c,9, -0x3b8040,6, -0x3b8060,6, -0x3b8080,2, -0x3b808c,5, -0x3b80a4,3, -0x3b80e0,1, -0x3b8500,2, -0x3b8518,5, -0x3b8540,6, +0x3b800c,3, +0x3b8028,2, +0x3b8038,47, +0x3b8500,6, +0x3b8520,6, +0x3b8540,3, 0x3b8580,10, +0x3b85c0,15, +0x3b8600,2, +0x3b8618,5, +0x3b8630,1, 0x3b8800,2, -0x3b880c,9, -0x3b8840,6, -0x3b8860,6, -0x3b8880,2, -0x3b888c,5, -0x3b88a4,3, -0x3b88e0,1, -0x3b8d00,2, -0x3b8d18,5, -0x3b8d40,6, +0x3b880c,3, +0x3b8828,2, +0x3b8838,47, +0x3b8d00,6, +0x3b8d20,6, +0x3b8d40,3, 0x3b8d80,10, -0x3b9800,2, -0x3b9828,2, -0x3b9850,2, -0x3b9878,2, +0x3b8dc0,15, +0x3b8e00,2, +0x3b8e18,5, +0x3b8e30,1, +0x3b9800,3, +0x3b9828,3, +0x3b9850,3, +0x3b9878,3, 0x3b98a0,7, 0x3b99ac,1, 0x3b99d8,4, @@ -14613,191 +17231,253 @@ 0x3b9a20,6, 0x3b9a40,6, 0x3b9a60,6, -0x3b9a80,3, +0x3b9a80,6, +0x3b9aa0,6, +0x3b9ac0,3, 0x3b9c00,6, 0x3b9c20,3, 0x3b9c40,2, 0x3b9c60,1, -0x3c0000,5, -0x3c0020,4, -0x3c0034,17, -0x3c0080,1, +0x3c0000,4, +0x3c0014,1, +0x3c0020,3, +0x3c0030,3, +0x3c0040,8, +0x3c007c,2, 0x3c00a0,6, -0x3c0100,5, -0x3c0120,4, -0x3c0134,17, -0x3c0180,1, +0x3c00c0,6, +0x3c00e0,6, +0x3c0100,4, +0x3c0114,1, +0x3c0120,3, +0x3c0130,3, +0x3c0140,8, +0x3c017c,2, 0x3c01a0,6, -0x3c0200,5, -0x3c0220,4, -0x3c0234,17, -0x3c0280,1, +0x3c01c0,6, +0x3c01e0,6, +0x3c0200,4, +0x3c0214,1, +0x3c0220,3, +0x3c0230,3, +0x3c0240,8, +0x3c027c,2, 0x3c02a0,6, -0x3c0300,5, -0x3c0320,4, -0x3c0334,17, -0x3c0380,1, +0x3c02c0,6, +0x3c02e0,6, +0x3c0300,4, +0x3c0314,1, +0x3c0320,3, +0x3c0330,3, +0x3c0340,8, +0x3c037c,2, 0x3c03a0,6, +0x3c03c0,6, +0x3c03e0,6, 0x3c0400,6, 0x3c0440,6, 0x3c0480,3, 0x3c04c0,3, -0x3c0500,6, -0x3c051c,7, -0x3c0540,1, +0x3c0500,2, +0x3c050c,4, +0x3c0520,2, +0x3c052c,4, +0x3c0540,2, 0x3c0c00,13, 0x3c0c40,12, 0x3c0c80,13, 0x3c0cc0,12, -0x3c0d00,6, -0x3c0d20,6, +0x3c0d00,14, +0x3c0d40,2, 0x3c0d80,14, 0x3c0dc0,2, -0x3c0e40,11, +0x3c0e00,11, +0x3c0e40,6, +0x3c0e60,6, 0x3c0e80,6, 0x3c0ea0,6, 0x3c1000,2, -0x3c1010,5, +0x3c1014,4, 0x3c1040,3, 0x3c1050,3, -0x3c1060,32, -0x3c1100,8, -0x3c1140,8, +0x3c1080,42, +0x3c1140,10, 0x3c1180,3, 0x3c1190,2, -0x3c119c,9, -0x3c1218,9, -0x3c1240,3, -0x3c1250,6, -0x3c1280,1, -0x3c1288,6, -0x3c12a4,1, -0x3c12c0,1, -0x3c12c8,6, -0x3c12e4,1, -0x3c1400,8, -0x3c1424,2, +0x3c119c,15, +0x3c1200,9, +0x3c1300,1, +0x3c1308,6, +0x3c1324,10, +0x3c1380,1, +0x3c1388,6, +0x3c13a4,10, +0x3c1400,6, +0x3c1420,6, 0x3c1500,5, 0x3c1520,4, 0x3c1540,5, 0x3c1560,4, 0x3c1800,24, -0x3c1864,5, +0x3c1864,6, 0x3c1880,8, -0x3c1900,13, -0x3c1980,4, -0x3c19a0,6, -0x3c19c0,6, -0x3c19dc,1, -0x3c1a00,6, -0x3c1a1c,1, -0x3c1a40,1, -0x3c1a60,1, -0x3c1a68,23, +0x3c1900,24, +0x3c1964,6, +0x3c1980,8, +0x3c1a00,17, +0x3c1a48,6, +0x3c1a80,17, 0x3c1ac8,6, -0x3c1b00,17, -0x3c1b48,6, -0x3c1b80,12, +0x3c1b00,6, +0x3c1b20,6, +0x3c1b40,3, +0x3c1b80,6, +0x3c1ba0,6, +0x3c1bc0,3, 0x3c1c00,6, 0x3c1c20,6, -0x3c1c40,6, -0x3c1c60,3, -0x3c1d00,6, -0x3c1d20,6, -0x3c1d40,3, -0x3c1d80,6, -0x3c1da0,6, -0x3c1dc0,3, -0x3c2000,5, -0x3c2020,4, -0x3c2034,17, -0x3c2080,1, +0x3c1c40,3, +0x3c1c80,6, +0x3c1ca0,6, +0x3c1cc0,3, +0x3c1d10,2, +0x3c1d1c,1, +0x3c1d50,2, +0x3c1d5c,1, +0x3c1d80,1, +0x3c1da0,1, +0x3c1da8,7, +0x3c1de0,1, +0x3c1de8,19, +0x3c1e40,6, +0x3c1e60,6, +0x3c1e80,6, +0x3c1ea0,6, +0x3c1ec0,7, +0x3c1ee0,7, +0x3c1f00,12, +0x3c1f40,3, +0x3c1f50,8, +0x3c2000,4, +0x3c2014,1, +0x3c2020,3, +0x3c2030,3, +0x3c2040,8, +0x3c207c,2, 0x3c20a0,6, -0x3c2100,5, -0x3c2120,4, -0x3c2134,17, -0x3c2180,1, +0x3c20c0,6, +0x3c20e0,6, +0x3c2100,4, +0x3c2114,1, +0x3c2120,3, +0x3c2130,3, +0x3c2140,8, +0x3c217c,2, 0x3c21a0,6, -0x3c2200,5, -0x3c2220,4, -0x3c2234,17, -0x3c2280,1, +0x3c21c0,6, +0x3c21e0,6, +0x3c2200,4, +0x3c2214,1, +0x3c2220,3, +0x3c2230,3, +0x3c2240,8, +0x3c227c,2, 0x3c22a0,6, -0x3c2300,5, -0x3c2320,4, -0x3c2334,17, -0x3c2380,1, +0x3c22c0,6, +0x3c22e0,6, +0x3c2300,4, +0x3c2314,1, +0x3c2320,3, +0x3c2330,3, +0x3c2340,8, +0x3c237c,2, 0x3c23a0,6, +0x3c23c0,6, +0x3c23e0,6, 0x3c2400,6, 0x3c2440,6, 0x3c2480,3, 0x3c24c0,3, -0x3c2500,6, -0x3c251c,7, -0x3c2540,1, +0x3c2500,2, +0x3c250c,4, +0x3c2520,2, +0x3c252c,4, +0x3c2540,2, 0x3c2c00,13, 0x3c2c40,12, 0x3c2c80,13, 0x3c2cc0,12, -0x3c2d00,6, -0x3c2d20,6, +0x3c2d00,14, +0x3c2d40,2, 0x3c2d80,14, 0x3c2dc0,2, -0x3c2e40,11, +0x3c2e00,11, +0x3c2e40,6, +0x3c2e60,6, 0x3c2e80,6, 0x3c2ea0,6, 0x3c3000,2, -0x3c3010,5, +0x3c3014,4, 0x3c3040,3, 0x3c3050,3, -0x3c3060,32, -0x3c3100,8, -0x3c3140,8, +0x3c3080,42, +0x3c3140,10, 0x3c3180,3, 0x3c3190,2, -0x3c319c,9, -0x3c3218,9, -0x3c3240,3, -0x3c3250,6, -0x3c3280,1, -0x3c3288,6, -0x3c32a4,1, -0x3c32c0,1, -0x3c32c8,6, -0x3c32e4,1, -0x3c3400,8, -0x3c3424,2, +0x3c319c,15, +0x3c3200,9, +0x3c3300,1, +0x3c3308,6, +0x3c3324,10, +0x3c3380,1, +0x3c3388,6, +0x3c33a4,10, +0x3c3400,6, +0x3c3420,6, 0x3c3500,5, 0x3c3520,4, 0x3c3540,5, 0x3c3560,4, 0x3c3800,24, -0x3c3864,5, +0x3c3864,6, 0x3c3880,8, -0x3c3900,13, -0x3c3980,4, -0x3c39a0,6, -0x3c39c0,6, -0x3c39dc,1, -0x3c3a00,6, -0x3c3a1c,1, -0x3c3a40,1, -0x3c3a60,1, -0x3c3a68,23, +0x3c3900,24, +0x3c3964,6, +0x3c3980,8, +0x3c3a00,17, +0x3c3a48,6, +0x3c3a80,17, 0x3c3ac8,6, -0x3c3b00,17, -0x3c3b48,6, -0x3c3b80,12, +0x3c3b00,6, +0x3c3b20,6, +0x3c3b40,3, +0x3c3b80,6, +0x3c3ba0,6, +0x3c3bc0,3, 0x3c3c00,6, 0x3c3c20,6, -0x3c3c40,6, -0x3c3c60,3, -0x3c3d00,6, -0x3c3d20,6, -0x3c3d40,3, -0x3c3d80,6, -0x3c3da0,6, -0x3c3dc0,3, +0x3c3c40,3, +0x3c3c80,6, +0x3c3ca0,6, +0x3c3cc0,3, +0x3c3d10,2, +0x3c3d1c,1, +0x3c3d50,2, +0x3c3d5c,1, +0x3c3d80,1, +0x3c3da0,1, +0x3c3da8,7, +0x3c3de0,1, +0x3c3de8,19, +0x3c3e40,6, +0x3c3e60,6, +0x3c3e80,6, +0x3c3ea0,6, +0x3c3ec0,7, +0x3c3ee0,7, +0x3c3f00,12, +0x3c3f40,3, +0x3c3f50,8, 0x3c4000,29, 0x3c4078,4, 0x3c4090,2, @@ -14921,8 +17601,10 @@ 0x3c5eac,1, 0x3c5eb4,3, 0x3c6000,14, -0x3c6070,3, +0x3c6040,6, +0x3c6060,6, 0x3c6080,6, +0x3c60a0,3, 0x3c6100,9, 0x3c6204,1, 0x3c620c,6, @@ -14967,18 +17649,29 @@ 0x3c6c94,8, 0x3c6cb8,9, 0x3c6ce0,4, -0x3c7000,6, -0x3c7020,3, -0x3c7040,7, -0x3c7060,6, -0x3c7100,5, -0x3c7138,1, -0x3c7144,1, -0x3c7150,2, +0x3c7000,1, +0x3c7028,1, +0x3c7050,1, +0x3c7078,1, +0x3c70a0,4, +0x3c71ac,1, +0x3c71d8,4, +0x3c7200,6, +0x3c7220,6, +0x3c7240,3, +0x3c7400,5, +0x3c7438,1, +0x3c7444,1, +0x3c7450,4, +0x3c7500,7, +0x3c7520,6, +0x3c7540,6, +0x3c7560,3, +0x3c7570,1, 0x3c8000,6, 0x3c8020,3, -0x3c8030,1, -0x3c8038,7, +0x3c8030,3, +0x3c8050,1, 0x3c8100,6, 0x3c8120,10, 0x3c8150,10, @@ -15012,15 +17705,19 @@ 0x3c89f4,3, 0x3c9000,4, 0x3c9020,4, -0x3c9040,3, -0x3c9050,3, -0x3c9080,2, -0x3c90b0,3, -0x3c912c,1, -0x3c9140,6, -0x3c9200,20, -0x3c925c,30, -0x3c9300,24, +0x3c9040,11, +0x3c9070,3, +0x3c9080,4, +0x3c90b0,22, +0x3c9110,2, +0x3c9120,22, +0x3c9180,1, +0x3c91a0,6, +0x3c9200,42, +0x3c92c0,1, +0x3c92c8,3, +0x3c9300,25, +0x3c936c,4, 0x3c9380,2, 0x3c93a0,1, 0x3c93c0,11, @@ -15029,18 +17726,25 @@ 0x3c9480,6, 0x3c9500,6, 0x3c9520,6, +0x3c9540,3, +0x3c9550,7, +0x3c9570,4, 0x3c9800,410, 0x3ca000,4, 0x3ca020,4, -0x3ca040,3, -0x3ca050,3, -0x3ca080,2, -0x3ca0b0,3, -0x3ca12c,1, -0x3ca140,6, -0x3ca200,20, -0x3ca25c,30, -0x3ca300,24, +0x3ca040,11, +0x3ca070,3, +0x3ca080,4, +0x3ca0b0,22, +0x3ca110,2, +0x3ca120,22, +0x3ca180,1, +0x3ca1a0,6, +0x3ca200,42, +0x3ca2c0,1, +0x3ca2c8,3, +0x3ca300,25, +0x3ca36c,4, 0x3ca380,2, 0x3ca3a0,1, 0x3ca3c0,11, @@ -15049,18 +17753,25 @@ 0x3ca480,6, 0x3ca500,6, 0x3ca520,6, +0x3ca540,3, +0x3ca550,7, +0x3ca570,4, 0x3ca800,410, 0x3cb000,4, 0x3cb020,4, -0x3cb040,3, -0x3cb050,3, -0x3cb080,2, -0x3cb0b0,3, -0x3cb12c,1, -0x3cb140,6, -0x3cb200,20, -0x3cb25c,30, -0x3cb300,24, +0x3cb040,11, +0x3cb070,3, +0x3cb080,4, +0x3cb0b0,22, +0x3cb110,2, +0x3cb120,22, +0x3cb180,1, +0x3cb1a0,6, +0x3cb200,42, +0x3cb2c0,1, +0x3cb2c8,3, +0x3cb300,25, +0x3cb36c,4, 0x3cb380,2, 0x3cb3a0,1, 0x3cb3c0,11, @@ -15069,18 +17780,25 @@ 0x3cb480,6, 0x3cb500,6, 0x3cb520,6, +0x3cb540,3, +0x3cb550,7, +0x3cb570,4, 0x3cb800,410, 0x3cc000,4, 0x3cc020,4, -0x3cc040,3, -0x3cc050,3, -0x3cc080,2, -0x3cc0b0,3, -0x3cc12c,1, -0x3cc140,6, -0x3cc200,20, -0x3cc25c,30, -0x3cc300,24, +0x3cc040,11, +0x3cc070,3, +0x3cc080,4, +0x3cc0b0,22, +0x3cc110,2, +0x3cc120,22, +0x3cc180,1, +0x3cc1a0,6, +0x3cc200,42, +0x3cc2c0,1, +0x3cc2c8,3, +0x3cc300,25, +0x3cc36c,4, 0x3cc380,2, 0x3cc3a0,1, 0x3cc3c0,11, @@ -15089,6 +17807,9 @@ 0x3cc480,6, 0x3cc500,6, 0x3cc520,6, +0x3cc540,3, +0x3cc550,7, +0x3cc570,4, 0x3cc800,410, 0x3cf800,5, 0x3cf818,1, @@ -15115,23 +17836,30 @@ 0x3cfba4,1, 0x3cfbac,2, 0x3d4000,3, -0x3d4018,3, -0x3d4100,25, +0x3d4018,4, +0x3d4100,56, +0x3d41f0,1, 0x3d4400,3, -0x3d4418,3, -0x3d4500,25, -0x3d4800,1, +0x3d4418,4, +0x3d4500,56, +0x3d45f0,1, +0x3d4800,5, +0x3d4820,3, 0x3d5000,3, -0x3d5018,3, -0x3d5100,25, +0x3d5018,4, +0x3d5100,56, +0x3d51f0,1, 0x3d5400,3, -0x3d5418,3, -0x3d5500,25, -0x3d5800,1, +0x3d5418,4, +0x3d5500,56, +0x3d55f0,1, +0x3d5800,5, +0x3d5820,3, 0x3d6004,7, -0x3d6024,3, +0x3d6024,1, +0x3d6034,3, 0x3d6300,5, -0x3d631c,3, +0x3d631c,1, 0x3d6600,10, 0x3d6630,1, 0x3d6680,10, @@ -15141,36 +17869,37 @@ 0x3d6780,10, 0x3d67b0,1, 0x3d6800,47, -0x3d6910,12, -0x3d7000,64, +0x3d6910,14, +0x3d6e00,1, +0x3d7000,65, 0x3d8000,2, -0x3d800c,9, -0x3d8040,6, -0x3d8060,6, -0x3d8080,2, -0x3d808c,5, -0x3d80a4,3, -0x3d80e0,1, -0x3d8500,2, -0x3d8518,5, -0x3d8540,6, +0x3d800c,3, +0x3d8028,2, +0x3d8038,47, +0x3d8500,6, +0x3d8520,6, +0x3d8540,3, 0x3d8580,10, +0x3d85c0,15, +0x3d8600,2, +0x3d8618,5, +0x3d8630,1, 0x3d8800,2, -0x3d880c,9, -0x3d8840,6, -0x3d8860,6, -0x3d8880,2, -0x3d888c,5, -0x3d88a4,3, -0x3d88e0,1, -0x3d8d00,2, -0x3d8d18,5, -0x3d8d40,6, +0x3d880c,3, +0x3d8828,2, +0x3d8838,47, +0x3d8d00,6, +0x3d8d20,6, +0x3d8d40,3, 0x3d8d80,10, -0x3d9800,2, -0x3d9828,2, -0x3d9850,2, -0x3d9878,2, +0x3d8dc0,15, +0x3d8e00,2, +0x3d8e18,5, +0x3d8e30,1, +0x3d9800,3, +0x3d9828,3, +0x3d9850,3, +0x3d9878,3, 0x3d98a0,7, 0x3d99ac,1, 0x3d99d8,4, @@ -15178,191 +17907,253 @@ 0x3d9a20,6, 0x3d9a40,6, 0x3d9a60,6, -0x3d9a80,3, +0x3d9a80,6, +0x3d9aa0,6, +0x3d9ac0,3, 0x3d9c00,6, 0x3d9c20,3, 0x3d9c40,2, 0x3d9c60,1, -0x3e0000,5, -0x3e0020,4, -0x3e0034,17, -0x3e0080,1, +0x3e0000,4, +0x3e0014,1, +0x3e0020,3, +0x3e0030,3, +0x3e0040,8, +0x3e007c,2, 0x3e00a0,6, -0x3e0100,5, -0x3e0120,4, -0x3e0134,17, -0x3e0180,1, +0x3e00c0,6, +0x3e00e0,6, +0x3e0100,4, +0x3e0114,1, +0x3e0120,3, +0x3e0130,3, +0x3e0140,8, +0x3e017c,2, 0x3e01a0,6, -0x3e0200,5, -0x3e0220,4, -0x3e0234,17, -0x3e0280,1, +0x3e01c0,6, +0x3e01e0,6, +0x3e0200,4, +0x3e0214,1, +0x3e0220,3, +0x3e0230,3, +0x3e0240,8, +0x3e027c,2, 0x3e02a0,6, -0x3e0300,5, -0x3e0320,4, -0x3e0334,17, -0x3e0380,1, +0x3e02c0,6, +0x3e02e0,6, +0x3e0300,4, +0x3e0314,1, +0x3e0320,3, +0x3e0330,3, +0x3e0340,8, +0x3e037c,2, 0x3e03a0,6, +0x3e03c0,6, +0x3e03e0,6, 0x3e0400,6, 0x3e0440,6, 0x3e0480,3, 0x3e04c0,3, -0x3e0500,6, -0x3e051c,7, -0x3e0540,1, +0x3e0500,2, +0x3e050c,4, +0x3e0520,2, +0x3e052c,4, +0x3e0540,2, 0x3e0c00,13, 0x3e0c40,12, 0x3e0c80,13, 0x3e0cc0,12, -0x3e0d00,6, -0x3e0d20,6, +0x3e0d00,14, +0x3e0d40,2, 0x3e0d80,14, 0x3e0dc0,2, -0x3e0e40,11, +0x3e0e00,11, +0x3e0e40,6, +0x3e0e60,6, 0x3e0e80,6, 0x3e0ea0,6, 0x3e1000,2, -0x3e1010,5, +0x3e1014,4, 0x3e1040,3, 0x3e1050,3, -0x3e1060,32, -0x3e1100,8, -0x3e1140,8, +0x3e1080,42, +0x3e1140,10, 0x3e1180,3, 0x3e1190,2, -0x3e119c,9, -0x3e1218,9, -0x3e1240,3, -0x3e1250,6, -0x3e1280,1, -0x3e1288,6, -0x3e12a4,1, -0x3e12c0,1, -0x3e12c8,6, -0x3e12e4,1, -0x3e1400,8, -0x3e1424,2, +0x3e119c,15, +0x3e1200,9, +0x3e1300,1, +0x3e1308,6, +0x3e1324,10, +0x3e1380,1, +0x3e1388,6, +0x3e13a4,10, +0x3e1400,6, +0x3e1420,6, 0x3e1500,5, 0x3e1520,4, 0x3e1540,5, 0x3e1560,4, 0x3e1800,24, -0x3e1864,5, +0x3e1864,6, 0x3e1880,8, -0x3e1900,13, -0x3e1980,4, -0x3e19a0,6, -0x3e19c0,6, -0x3e19dc,1, -0x3e1a00,6, -0x3e1a1c,1, -0x3e1a40,1, -0x3e1a60,1, -0x3e1a68,23, +0x3e1900,24, +0x3e1964,6, +0x3e1980,8, +0x3e1a00,17, +0x3e1a48,6, +0x3e1a80,17, 0x3e1ac8,6, -0x3e1b00,17, -0x3e1b48,6, -0x3e1b80,12, +0x3e1b00,6, +0x3e1b20,6, +0x3e1b40,3, +0x3e1b80,6, +0x3e1ba0,6, +0x3e1bc0,3, 0x3e1c00,6, 0x3e1c20,6, -0x3e1c40,6, -0x3e1c60,3, -0x3e1d00,6, -0x3e1d20,6, -0x3e1d40,3, -0x3e1d80,6, -0x3e1da0,6, -0x3e1dc0,3, -0x3e2000,5, -0x3e2020,4, -0x3e2034,17, -0x3e2080,1, +0x3e1c40,3, +0x3e1c80,6, +0x3e1ca0,6, +0x3e1cc0,3, +0x3e1d10,2, +0x3e1d1c,1, +0x3e1d50,2, +0x3e1d5c,1, +0x3e1d80,1, +0x3e1da0,1, +0x3e1da8,7, +0x3e1de0,1, +0x3e1de8,19, +0x3e1e40,6, +0x3e1e60,6, +0x3e1e80,6, +0x3e1ea0,6, +0x3e1ec0,7, +0x3e1ee0,7, +0x3e1f00,12, +0x3e1f40,3, +0x3e1f50,8, +0x3e2000,4, +0x3e2014,1, +0x3e2020,3, +0x3e2030,3, +0x3e2040,8, +0x3e207c,2, 0x3e20a0,6, -0x3e2100,5, -0x3e2120,4, -0x3e2134,17, -0x3e2180,1, +0x3e20c0,6, +0x3e20e0,6, +0x3e2100,4, +0x3e2114,1, +0x3e2120,3, +0x3e2130,3, +0x3e2140,8, +0x3e217c,2, 0x3e21a0,6, -0x3e2200,5, -0x3e2220,4, -0x3e2234,17, -0x3e2280,1, +0x3e21c0,6, +0x3e21e0,6, +0x3e2200,4, +0x3e2214,1, +0x3e2220,3, +0x3e2230,3, +0x3e2240,8, +0x3e227c,2, 0x3e22a0,6, -0x3e2300,5, -0x3e2320,4, -0x3e2334,17, -0x3e2380,1, +0x3e22c0,6, +0x3e22e0,6, +0x3e2300,4, +0x3e2314,1, +0x3e2320,3, +0x3e2330,3, +0x3e2340,8, +0x3e237c,2, 0x3e23a0,6, +0x3e23c0,6, +0x3e23e0,6, 0x3e2400,6, 0x3e2440,6, 0x3e2480,3, 0x3e24c0,3, -0x3e2500,6, -0x3e251c,7, -0x3e2540,1, +0x3e2500,2, +0x3e250c,4, +0x3e2520,2, +0x3e252c,4, +0x3e2540,2, 0x3e2c00,13, 0x3e2c40,12, 0x3e2c80,13, 0x3e2cc0,12, -0x3e2d00,6, -0x3e2d20,6, +0x3e2d00,14, +0x3e2d40,2, 0x3e2d80,14, 0x3e2dc0,2, -0x3e2e40,11, +0x3e2e00,11, +0x3e2e40,6, +0x3e2e60,6, 0x3e2e80,6, 0x3e2ea0,6, 0x3e3000,2, -0x3e3010,5, +0x3e3014,4, 0x3e3040,3, 0x3e3050,3, -0x3e3060,32, -0x3e3100,8, -0x3e3140,8, +0x3e3080,42, +0x3e3140,10, 0x3e3180,3, 0x3e3190,2, -0x3e319c,9, -0x3e3218,9, -0x3e3240,3, -0x3e3250,6, -0x3e3280,1, -0x3e3288,6, -0x3e32a4,1, -0x3e32c0,1, -0x3e32c8,6, -0x3e32e4,1, -0x3e3400,8, -0x3e3424,2, +0x3e319c,15, +0x3e3200,9, +0x3e3300,1, +0x3e3308,6, +0x3e3324,10, +0x3e3380,1, +0x3e3388,6, +0x3e33a4,10, +0x3e3400,6, +0x3e3420,6, 0x3e3500,5, 0x3e3520,4, 0x3e3540,5, 0x3e3560,4, 0x3e3800,24, -0x3e3864,5, +0x3e3864,6, 0x3e3880,8, -0x3e3900,13, -0x3e3980,4, -0x3e39a0,6, -0x3e39c0,6, -0x3e39dc,1, -0x3e3a00,6, -0x3e3a1c,1, -0x3e3a40,1, -0x3e3a60,1, -0x3e3a68,23, +0x3e3900,24, +0x3e3964,6, +0x3e3980,8, +0x3e3a00,17, +0x3e3a48,6, +0x3e3a80,17, 0x3e3ac8,6, -0x3e3b00,17, -0x3e3b48,6, -0x3e3b80,12, +0x3e3b00,6, +0x3e3b20,6, +0x3e3b40,3, +0x3e3b80,6, +0x3e3ba0,6, +0x3e3bc0,3, 0x3e3c00,6, 0x3e3c20,6, -0x3e3c40,6, -0x3e3c60,3, -0x3e3d00,6, -0x3e3d20,6, -0x3e3d40,3, -0x3e3d80,6, -0x3e3da0,6, -0x3e3dc0,3, +0x3e3c40,3, +0x3e3c80,6, +0x3e3ca0,6, +0x3e3cc0,3, +0x3e3d10,2, +0x3e3d1c,1, +0x3e3d50,2, +0x3e3d5c,1, +0x3e3d80,1, +0x3e3da0,1, +0x3e3da8,7, +0x3e3de0,1, +0x3e3de8,19, +0x3e3e40,6, +0x3e3e60,6, +0x3e3e80,6, +0x3e3ea0,6, +0x3e3ec0,7, +0x3e3ee0,7, +0x3e3f00,12, +0x3e3f40,3, +0x3e3f50,8, 0x3e4000,29, 0x3e4078,4, 0x3e4090,2, @@ -15486,8 +18277,10 @@ 0x3e5eac,1, 0x3e5eb4,3, 0x3e6000,14, -0x3e6070,3, +0x3e6040,6, +0x3e6060,6, 0x3e6080,6, +0x3e60a0,3, 0x3e6100,9, 0x3e6204,1, 0x3e620c,6, @@ -15532,18 +18325,29 @@ 0x3e6c94,8, 0x3e6cb8,9, 0x3e6ce0,4, -0x3e7000,6, -0x3e7020,3, -0x3e7040,7, -0x3e7060,6, -0x3e7100,5, -0x3e7138,1, -0x3e7144,1, -0x3e7150,2, +0x3e7000,1, +0x3e7028,1, +0x3e7050,1, +0x3e7078,1, +0x3e70a0,4, +0x3e71ac,1, +0x3e71d8,4, +0x3e7200,6, +0x3e7220,6, +0x3e7240,3, +0x3e7400,5, +0x3e7438,1, +0x3e7444,1, +0x3e7450,4, +0x3e7500,7, +0x3e7520,6, +0x3e7540,6, +0x3e7560,3, +0x3e7570,1, 0x3e8000,6, 0x3e8020,3, -0x3e8030,1, -0x3e8038,7, +0x3e8030,3, +0x3e8050,1, 0x3e8100,6, 0x3e8120,10, 0x3e8150,10, @@ -15577,15 +18381,19 @@ 0x3e89f4,3, 0x3e9000,4, 0x3e9020,4, -0x3e9040,3, -0x3e9050,3, -0x3e9080,2, -0x3e90b0,3, -0x3e912c,1, -0x3e9140,6, -0x3e9200,20, -0x3e925c,30, -0x3e9300,24, +0x3e9040,11, +0x3e9070,3, +0x3e9080,4, +0x3e90b0,22, +0x3e9110,2, +0x3e9120,22, +0x3e9180,1, +0x3e91a0,6, +0x3e9200,42, +0x3e92c0,1, +0x3e92c8,3, +0x3e9300,25, +0x3e936c,4, 0x3e9380,2, 0x3e93a0,1, 0x3e93c0,11, @@ -15594,18 +18402,25 @@ 0x3e9480,6, 0x3e9500,6, 0x3e9520,6, +0x3e9540,3, +0x3e9550,7, +0x3e9570,4, 0x3e9800,410, 0x3ea000,4, 0x3ea020,4, -0x3ea040,3, -0x3ea050,3, -0x3ea080,2, -0x3ea0b0,3, -0x3ea12c,1, -0x3ea140,6, -0x3ea200,20, -0x3ea25c,30, -0x3ea300,24, +0x3ea040,11, +0x3ea070,3, +0x3ea080,4, +0x3ea0b0,22, +0x3ea110,2, +0x3ea120,22, +0x3ea180,1, +0x3ea1a0,6, +0x3ea200,42, +0x3ea2c0,1, +0x3ea2c8,3, +0x3ea300,25, +0x3ea36c,4, 0x3ea380,2, 0x3ea3a0,1, 0x3ea3c0,11, @@ -15614,18 +18429,25 @@ 0x3ea480,6, 0x3ea500,6, 0x3ea520,6, +0x3ea540,3, +0x3ea550,7, +0x3ea570,4, 0x3ea800,410, 0x3eb000,4, 0x3eb020,4, -0x3eb040,3, -0x3eb050,3, -0x3eb080,2, -0x3eb0b0,3, -0x3eb12c,1, -0x3eb140,6, -0x3eb200,20, -0x3eb25c,30, -0x3eb300,24, +0x3eb040,11, +0x3eb070,3, +0x3eb080,4, +0x3eb0b0,22, +0x3eb110,2, +0x3eb120,22, +0x3eb180,1, +0x3eb1a0,6, +0x3eb200,42, +0x3eb2c0,1, +0x3eb2c8,3, +0x3eb300,25, +0x3eb36c,4, 0x3eb380,2, 0x3eb3a0,1, 0x3eb3c0,11, @@ -15634,18 +18456,25 @@ 0x3eb480,6, 0x3eb500,6, 0x3eb520,6, +0x3eb540,3, +0x3eb550,7, +0x3eb570,4, 0x3eb800,410, 0x3ec000,4, 0x3ec020,4, -0x3ec040,3, -0x3ec050,3, -0x3ec080,2, -0x3ec0b0,3, -0x3ec12c,1, -0x3ec140,6, -0x3ec200,20, -0x3ec25c,30, -0x3ec300,24, +0x3ec040,11, +0x3ec070,3, +0x3ec080,4, +0x3ec0b0,22, +0x3ec110,2, +0x3ec120,22, +0x3ec180,1, +0x3ec1a0,6, +0x3ec200,42, +0x3ec2c0,1, +0x3ec2c8,3, +0x3ec300,25, +0x3ec36c,4, 0x3ec380,2, 0x3ec3a0,1, 0x3ec3c0,11, @@ -15654,6 +18483,9 @@ 0x3ec480,6, 0x3ec500,6, 0x3ec520,6, +0x3ec540,3, +0x3ec550,7, +0x3ec570,4, 0x3ec800,410, 0x3ef800,5, 0x3ef818,1, @@ -15680,23 +18512,30 @@ 0x3efba4,1, 0x3efbac,2, 0x3f4000,3, -0x3f4018,3, -0x3f4100,25, +0x3f4018,4, +0x3f4100,56, +0x3f41f0,1, 0x3f4400,3, -0x3f4418,3, -0x3f4500,25, -0x3f4800,1, +0x3f4418,4, +0x3f4500,56, +0x3f45f0,1, +0x3f4800,5, +0x3f4820,3, 0x3f5000,3, -0x3f5018,3, -0x3f5100,25, +0x3f5018,4, +0x3f5100,56, +0x3f51f0,1, 0x3f5400,3, -0x3f5418,3, -0x3f5500,25, -0x3f5800,1, +0x3f5418,4, +0x3f5500,56, +0x3f55f0,1, +0x3f5800,5, +0x3f5820,3, 0x3f6004,7, -0x3f6024,3, +0x3f6024,1, +0x3f6034,3, 0x3f6300,5, -0x3f631c,3, +0x3f631c,1, 0x3f6600,10, 0x3f6630,1, 0x3f6680,10, @@ -15706,36 +18545,37 @@ 0x3f6780,10, 0x3f67b0,1, 0x3f6800,47, -0x3f6910,12, -0x3f7000,64, +0x3f6910,14, +0x3f6e00,1, +0x3f7000,65, 0x3f8000,2, -0x3f800c,9, -0x3f8040,6, -0x3f8060,6, -0x3f8080,2, -0x3f808c,5, -0x3f80a4,3, -0x3f80e0,1, -0x3f8500,2, -0x3f8518,5, -0x3f8540,6, +0x3f800c,3, +0x3f8028,2, +0x3f8038,47, +0x3f8500,6, +0x3f8520,6, +0x3f8540,3, 0x3f8580,10, +0x3f85c0,15, +0x3f8600,2, +0x3f8618,5, +0x3f8630,1, 0x3f8800,2, -0x3f880c,9, -0x3f8840,6, -0x3f8860,6, -0x3f8880,2, -0x3f888c,5, -0x3f88a4,3, -0x3f88e0,1, -0x3f8d00,2, -0x3f8d18,5, -0x3f8d40,6, +0x3f880c,3, +0x3f8828,2, +0x3f8838,47, +0x3f8d00,6, +0x3f8d20,6, +0x3f8d40,3, 0x3f8d80,10, -0x3f9800,2, -0x3f9828,2, -0x3f9850,2, -0x3f9878,2, +0x3f8dc0,15, +0x3f8e00,2, +0x3f8e18,5, +0x3f8e30,1, +0x3f9800,3, +0x3f9828,3, +0x3f9850,3, +0x3f9878,3, 0x3f98a0,7, 0x3f99ac,1, 0x3f99d8,4, @@ -15743,7 +18583,9 @@ 0x3f9a20,6, 0x3f9a40,6, 0x3f9a60,6, -0x3f9a80,3, +0x3f9a80,6, +0x3f9aa0,6, +0x3f9ac0,3, 0x3f9c00,6, 0x3f9c20,3, 0x3f9c40,2, diff --git a/mstflint.spec.in b/mstflint.spec.in index 0d9281b..e415566 100644 --- a/mstflint.spec.in +++ b/mstflint.spec.in @@ -1,6 +1,6 @@ %{!?ibmadlib: %define ibmadlib libibmad-devel} %{!?name: %define name mstflint} -%{!?version: %define version 3.8.0} +%{!?version: %define version 4.0.0} %{!?release: %define release 1} %{!?buildtype: %define buildtype "native"} %{!?noinband: %define noinband 0} @@ -84,6 +84,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/* %changelog +* Thu Feb 05 2015 Adrian Chiris + MFT 4.0.0 Updates + * Sun Dec 07 2014 Tomer Cohen Added support for multiple architectures diff --git a/mtcr_ul/mtcr_int_defs.h b/mtcr_ul/mtcr_int_defs.h index 76ce06a..cad9045 100644 --- a/mtcr_ul/mtcr_int_defs.h +++ b/mtcr_ul/mtcr_int_defs.h @@ -43,12 +43,6 @@ typedef int (*f_mwrite4_block) (mfile *mf, unsigned int offset, u_int32_t* data, typedef int (*f_maccess_reg) (mfile *mf, u_int8_t *data); typedef int (*f_mclose) (mfile* mf); -typedef enum { - AD_ICMD = 1, - AD_CR_SPACE = 2, - AD_SEMAPHORE = 0xa -} address_domain_t; - typedef struct icmd_params_t { int icmd_opened; @@ -61,17 +55,18 @@ typedef struct icmd_params_t { int static_cfg_not_done_offs; }icmd_params; +typedef enum { + AS_ICMD = 1, + AS_CR_SPACE = 2, + AS_SEMAPHORE = 0xa +} address_space_t; + struct mfile_t { char* dev_name; void *ctx; // Access method context int access_type; int fdlock; - // relevant for devices with pci capability: 0x9 - int supp_fw_ifc; // pciconf - supports 0x9 capability - int cap9_pci_offs; // capability offset withing the pci configuration spce - address_domain_t address_domain; // determines on which address domain reads/writes will be performed - f_mread4 mread4; f_mwrite4 mwrite4; f_mread4_block mread4_block; @@ -91,8 +86,10 @@ struct mfile_t { //for ICMD access icmd_params icmd; + int vsec_supp; + u_int32_t vsec_addr; + int address_space; }; - #endif diff --git a/mtcr_ul/mtcr_tools_cif.c b/mtcr_ul/mtcr_tools_cif.c index a387e79..70d6cbb 100644 --- a/mtcr_ul/mtcr_tools_cif.c +++ b/mtcr_ul/mtcr_tools_cif.c @@ -31,7 +31,6 @@ * */ - #include #include #include @@ -410,8 +409,8 @@ int tools_cmdif_send_mbox_command_int(mfile* mf, mpci_change(mf); //take semaphore if (tools_cmdif_flash_lock(mf, 1)) { - rc = ME_SEM_LOCKED; - goto exitrc; + mpci_change(mf); + return ME_SEM_LOCKED; } // write to mailbox if needed @@ -473,7 +472,6 @@ int tools_cmdif_send_mbox_command_int(mfile* mf, cleanup: tools_cmdif_flash_lock(mf, 0); //printf("-D- rc in cmdif: 0x%x\n", rc); -exitrc: mpci_change(mf); return rc; } diff --git a/mtcr_ul/mtcr_ul.c b/mtcr_ul/mtcr_ul.c index 54a2ded..76de970 100644 --- a/mtcr_ul/mtcr_ul.c +++ b/mtcr_ul/mtcr_ul.c @@ -311,35 +311,19 @@ int mtcr_check_signature(mfile *mf) return 1; } - switch (signature & 0xffff) { - case 0x190 : /* 400 */ - case 0x1f5 : - case 0x1f7 : - if (connectx_flush == NULL || strcmp(connectx_flush, "0")) { - if ((signature == 0xa00190 || - (signature & 0xffff) == 0x1f5 || - (signature & 0xffff) == 0x1f7) && mf->access_type == MTCR_ACCESS_MEMORY) { - struct pcicr_context* ctx = mf->ctx; - ctx->connectx_flush = 1; - if (mtcr_connectx_flush(ctx->ptr, mf->fdlock)) { - return -1; - } + if (connectx_flush == NULL || strcmp(connectx_flush, "0")) { + if ((signature == 0xa00190 || + (signature & 0xffff) == 0x1f5 || + (signature & 0xffff) == 0x1f7) && mf->access_type == MTCR_ACCESS_MEMORY) { + struct pcicr_context* ctx = mf->ctx; + ctx->connectx_flush = 1; + if (mtcr_connectx_flush(ctx->ptr, mf->fdlock)) { + return -1; } } - case 0x5a44: /* 23108 */ - case 0x6278: /* 25208 */ - case 0x5e8c: /* 24204 */ - case 0x6274: /* 25204 */ - case 0x1b3: /* 435 */ - case 6100: /* 6100 */ - case 0x245: - case 0x1ff: - return 0; - default: - fprintf(stderr, "-W- Unknown dev id: 0x%x\n", signature); - errno = ENOTTY; - return -1; } + + return 0; } #if CONFIG_ENABLE_MMAP @@ -596,6 +580,7 @@ int mtcr_pcicr_open(mfile *mf, const char *name, char* conf_name, off_t off, int { int rc; struct pcicr_context *ctx; + mf->access_type = MTCR_ACCESS_MEMORY; mf->mread4 = mtcr_pcicr_mread4; @@ -625,16 +610,15 @@ int mtcr_pcicr_open(mfile *mf, const char *name, char* conf_name, off_t off, int end: if (rc) { mtcr_pcicr_mclose(mf); - return rc; - } - if (conf_name != NULL) { + } else if (conf_name != NULL) { mfile* conf_mf = mopen(conf_name); if (conf_mf != NULL) { mf->res_ctx = conf_mf->ctx; mf->res_access_type = conf_mf->access_type; + mf->vsec_addr = conf_mf->vsec_addr; + mf->vsec_supp = conf_mf->vsec_supp; + mf->address_space = conf_mf->address_space; mf->res_fdlock = conf_mf->fdlock; - mf->supp_fw_ifc = conf_mf->supp_fw_ifc; - mf->address_domain = conf_mf->address_domain; mf->res_mread4 = conf_mf->mread4; mf->res_mwrite4 = conf_mf->mwrite4; mf->res_mread4_block = conf_mf->mread4_block; @@ -642,6 +626,7 @@ end: free(conf_mf); } } + return rc; } @@ -652,7 +637,6 @@ end: #if CONFIG_ENABLE_PCICONF - /* PCI address space related enum*/ enum { PCI_CAP_PTR = 0x34, @@ -808,25 +792,25 @@ int mtcr_pciconf_cap9_sem(mfile* mf, int state) u_int32_t counter = 0; int retries = 0; if (!state) {// unlock - WRITE4_PCI(mf, 0, mf->cap9_pci_offs + PCI_SEMAPHORE_OFFSET, "unlock semaphore", return ME_PCI_WRITE_ERROR); + WRITE4_PCI(mf, 0, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "unlock semaphore", return ME_PCI_WRITE_ERROR); } else { // lock do { if (retries > IFC_MAX_RETRIES) { return ME_SEM_LOCKED; } // read semaphore untill 0x0 - READ4_PCI(mf, &lock_val, mf->cap9_pci_offs + PCI_SEMAPHORE_OFFSET, "read counter", return ME_PCI_READ_ERROR); + READ4_PCI(mf, &lock_val, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "read counter", return ME_PCI_READ_ERROR); if (lock_val) { //semaphore is taken retries++; msleep(1); // wait for current op to end continue; } //read ticket - READ4_PCI(mf, &counter, mf->cap9_pci_offs + PCI_COUNTER_OFFSET, "read counter", return ME_PCI_READ_ERROR); + READ4_PCI(mf, &counter, mf->vsec_addr + PCI_COUNTER_OFFSET, "read counter", return ME_PCI_READ_ERROR); //write ticket to semaphore dword - WRITE4_PCI(mf, counter, mf->cap9_pci_offs + PCI_SEMAPHORE_OFFSET, "write counter to semaphore", return ME_PCI_WRITE_ERROR); + WRITE4_PCI(mf, counter, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "write counter to semaphore", return ME_PCI_WRITE_ERROR); // read back semaphore make sure ticket == semaphore else repeat - READ4_PCI(mf, &lock_val, mf->cap9_pci_offs + PCI_SEMAPHORE_OFFSET, "read counter", return ME_PCI_READ_ERROR); + READ4_PCI(mf, &lock_val, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "read counter", return ME_PCI_READ_ERROR); retries++; } while (counter != lock_val); } @@ -841,7 +825,7 @@ int mtcr_pciconf_wait_on_flag(mfile* mf, u_int8_t expected_val) if (retries > IFC_MAX_RETRIES) { return ME_PCI_IFC_TOUT; } - READ4_PCI(mf, &flag, mf->cap9_pci_offs + PCI_ADDR_OFFSET, "read flag", return ME_PCI_READ_ERROR); + READ4_PCI(mf, &flag, mf->vsec_addr + PCI_ADDR_OFFSET, "read flag", return ME_PCI_READ_ERROR); flag = EXTRACT(flag, PCI_FLAG_BIT_OFFS, 1); retries++; if ((retries & 0xf) == 0) {// dont sleep always @@ -855,11 +839,11 @@ int mtcr_pciconf_set_addr_space(mfile* mf, u_int16_t space) { // read modify write u_int32_t val; - READ4_PCI(mf, &val, mf->cap9_pci_offs + PCI_CTRL_OFFSET, "read domain", return ME_PCI_READ_ERROR); + READ4_PCI(mf, &val, mf->vsec_addr + PCI_CTRL_OFFSET, "read domain", return ME_PCI_READ_ERROR); val = MERGE(val, space, PCI_SPACE_BIT_OFFS, PCI_SPACE_BIT_LEN); - WRITE4_PCI(mf, val, mf->cap9_pci_offs + PCI_CTRL_OFFSET, "write domain", return ME_PCI_WRITE_ERROR); + WRITE4_PCI(mf, val, mf->vsec_addr + PCI_CTRL_OFFSET, "write domain", return ME_PCI_WRITE_ERROR); // read status and make sure space is supported - READ4_PCI(mf, &val, mf->cap9_pci_offs + PCI_CTRL_OFFSET, "read status", return ME_PCI_READ_ERROR); + READ4_PCI(mf, &val, mf->vsec_addr + PCI_CTRL_OFFSET, "read status", return ME_PCI_READ_ERROR); if (EXTRACT(val, PCI_STATUS_BIT_OFFS, PCI_STATUS_BIT_LEN) == 0) { return ME_PCI_SPACE_NOT_SUPPORTED; } @@ -879,18 +863,18 @@ int mtcr_pciconf_rw(mfile *mf, unsigned int offset, u_int32_t* data, int rw) address = MERGE(address,(rw ? 1 : 0), PCI_FLAG_BIT_OFFS, 1); if (rw == WRITE_OP) { // write data - WRITE4_PCI(mf, *data, mf->cap9_pci_offs + PCI_DATA_OFFSET, "write value", return ME_PCI_WRITE_ERROR); + WRITE4_PCI(mf, *data, mf->vsec_addr + PCI_DATA_OFFSET, "write value", return ME_PCI_WRITE_ERROR); // write address - WRITE4_PCI(mf, address, mf->cap9_pci_offs + PCI_ADDR_OFFSET, "write offset", return ME_PCI_WRITE_ERROR); + WRITE4_PCI(mf, address, mf->vsec_addr + PCI_ADDR_OFFSET, "write offset", return ME_PCI_WRITE_ERROR); // wait on flag rc = mtcr_pciconf_wait_on_flag(mf, 0); } else { // write address - WRITE4_PCI(mf, address, mf->cap9_pci_offs + PCI_ADDR_OFFSET, "write offset", return ME_PCI_WRITE_ERROR); + WRITE4_PCI(mf, address, mf->vsec_addr + PCI_ADDR_OFFSET, "write offset", return ME_PCI_WRITE_ERROR); // wait on flag rc = mtcr_pciconf_wait_on_flag(mf, 1); // read data - READ4_PCI(mf, data, mf->cap9_pci_offs + PCI_DATA_OFFSET, "read value", return ME_PCI_READ_ERROR); + READ4_PCI(mf, data, mf->vsec_addr + PCI_DATA_OFFSET, "read value", return ME_PCI_READ_ERROR); } return rc; } @@ -923,7 +907,7 @@ cleanup: int mtcr_pciconf_mread4(mfile *mf, unsigned int offset, u_int32_t *value) { int rc; - rc = mtcr_pciconf_send_pci_cmd_int(mf, mf->address_domain, offset, value, READ_OP); + rc = mtcr_pciconf_send_pci_cmd_int(mf, mf->address_space, offset, value, READ_OP); if (rc) { return -1; } @@ -932,7 +916,7 @@ int mtcr_pciconf_mread4(mfile *mf, unsigned int offset, u_int32_t *value) int mtcr_pciconf_mwrite4(mfile *mf, unsigned int offset, u_int32_t value) { int rc; - rc = mtcr_pciconf_send_pci_cmd_int(mf, mf->address_domain, offset, &value, WRITE_OP); + rc = mtcr_pciconf_send_pci_cmd_int(mf, mf->address_space, offset, &value, WRITE_OP); if (rc) { return -1; } @@ -953,7 +937,7 @@ static int block_op_pciconf(mfile *mf, unsigned int offset, u_int32_t* data, int return -1; } // set address space - rc = mtcr_pciconf_set_addr_space(mf, mf->address_domain); + rc = mtcr_pciconf_set_addr_space(mf, mf->address_space); if (rc) { wrote_or_read = -1; goto cleanup; @@ -1083,12 +1067,12 @@ int mtcr_pciconf_open(mfile *mf, const char *name) mf->access_type = MTCR_ACCESS_CONFIG; - if ((mf->cap9_pci_offs = pci_find_capability(mf, CAP_ID))) { - mf->supp_fw_ifc = 1; + if ((mf->vsec_addr = pci_find_capability(mf, CAP_ID))) { + mf->vsec_supp = 1; } - if (mf->supp_fw_ifc) { - mf->address_domain = CR_SPACE_DOMAIN; + if (mf->vsec_supp) { + mf->address_space = CR_SPACE_DOMAIN; mf->mread4 = mtcr_pciconf_mread4; mf->mwrite4 = mtcr_pciconf_mwrite4; mf->mread4_block = mread4_block_pciconf; @@ -1332,9 +1316,17 @@ int mdevices(char *buf, int len, int mask) continue; } sz = strlen(dir->d_name); - if (sz > 4 && strcmp(dir->d_name + sz - 4, "00.0")) { - // Skip virtual functions + if (sz > 2 && strcmp(dir->d_name + sz - 2, ".0")) { continue; + } else if (sz > 4 && strcmp(dir->d_name + sz - 4, "00.0")) { + // Skip virtual functions + char physfn[64]; + DIR* physfndir; + sprintf(physfn, "/sys/bus/pci/devices/%s/physfn", dir->d_name); + if ((physfndir = opendir(physfn)) != NULL) { + closedir(physfndir); + continue; + } } sprintf(fname, "/sys/bus/pci/devices/%s/vendor", dir->d_name); f = fopen(fname, "r"); @@ -1477,7 +1469,6 @@ void mdevices_info_destroy(dev_info* dev_info, int len) free(dev_info); } - mfile *mopen(const char *name) { mfile *mf; @@ -1522,8 +1513,10 @@ mfile *mopen(const char *name) goto open_failed; } } + sprintf(cbuf, "/sys/bus/pci/devices/%4.4x:%2.2x:%2.2x.%1.1x/config", domain, bus, dev, func); + if (force) { switch (access) { case MTCR_ACCESS_CONFIG: @@ -1746,7 +1739,7 @@ int mget_mdevs_type(mfile *mf, u_int32_t *mtype) #define IBDR_MAX_NAME_SIZE 128 #define BDF_NAME_SIZE 12 #define DEV_DIR_MAX_SIZE 128 - +static int get_inband_dev_from_pci(char* inband_dev, char* pci_dev) { unsigned domain = 0, bus = 0, dev = 0, func = 0; @@ -1921,34 +1914,33 @@ int maccess_reg(mfile *mf, u_int32_t w_size_reg, int *reg_status) { - int rc; if (mf == NULL || reg_data == NULL || reg_status == NULL || reg_size <= 0) { return ME_BAD_PARAMS; } // check register size - int max_size = mget_max_reg_size(mf); - if (reg_size > (unsigned int)max_size) { + unsigned int max_size = (unsigned int)mget_max_reg_size(mf); + if ( reg_size > (unsigned int)max_size) { //reg too big return ME_REG_ACCESS_SIZE_EXCCEEDS_LIMIT; } - // TODO: add specific checks for each FW access method where needed #ifndef MST_UL + // TODO: add specific checks for each FW access method where needed if (mf->flags & MDEVS_MLNX_OS){ rc = mos_reg_access_raw(mf, reg_id, reg_method, reg_data, reg_size, reg_status); } else if ((mf->flags & (MDEVS_IB | MDEVS_FWCTX)) || (mf->flags != MDEVS_IB && (supports_icmd(mf) || supports_tools_cmdif_reg(mf)))) { rc = mreg_send_raw(mf, reg_id, reg_method, reg_data, reg_size, r_size_reg, w_size_reg, reg_status); - } else { + }else { return ME_REG_ACCESS_NOT_SUPPORTED; } #else - if (mf->access_type == MTCR_ACCESS_INBAND || supports_icmd(mf) || supports_tools_cmdif_reg(mf)) { - rc = mreg_send_raw(mf, reg_id, reg_method, reg_data, reg_size, r_size_reg, w_size_reg, reg_status); - } else { - return ME_REG_ACCESS_NOT_SUPPORTED; - } + if (mf->access_type == MTCR_ACCESS_INBAND || (supports_icmd(mf) || supports_tools_cmdif_reg(mf)) ) { + rc = mreg_send_raw(mf, reg_id, reg_method, reg_data, reg_size, r_size_reg, w_size_reg, reg_status); + }else { + return ME_REG_ACCESS_NOT_SUPPORTED; + } #endif - //printf("-D- reg_id:0x%x, reg_size 0x%x, reg_status=0x%x, rc=0x%x\n", reg_id, reg_size, (unsigned int)*reg_status, (unsigned int)rc); + if (rc ) { return rc; } else if (*reg_status) { @@ -2012,7 +2004,8 @@ static int mreg_send_wrapper(mfile* mf, u_int8_t *data, int r_icmd_size, int w_i return ME_MAD_SEND_FAILED; } } else if (supports_icmd(mf)) { - if (mf->supp_fw_ifc) { // we support accessing fw via icmd space + #if defined(MST_UL) && !defined(MST_UL_ICMD) + if (mf->vsec_supp) { // we support accessing fw via icmd space rc = icmd_send_command_int(mf, FLASH_REG_ACCESS, data, w_icmd_size, r_icmd_size, 0); if (rc) { return rc; @@ -2024,6 +2017,12 @@ static int mreg_send_wrapper(mfile* mf, u_int8_t *data, int r_icmd_size, int w_i return ME_MAD_SEND_FAILED; } } + #else + rc = icmd_send_command_int(mf, FLASH_REG_ACCESS, data, w_icmd_size, r_icmd_size, 0); + if (rc) { + return rc; + } + #endif } else if (supports_tools_cmdif_reg(mf)) { rc = tools_cmdif_reg_access(mf, data, w_icmd_size, r_icmd_size); if (rc) { @@ -2058,6 +2057,7 @@ static int mreg_send_raw(mfile *mf, u_int16_t reg_id, maccess_reg_method_t metho //put the reg itself into the buffer memcpy(buffer + OP_TLV_SIZE + REG_TLV_HEADER_LEN, reg_data, reg_size); cmdif_size += reg_size; + #ifdef _ENABLE_DEBUG_ fprintf(stdout, "-I-Tlv's of Data Sent:\n"); fprintf(stdout, "\tOperation Tlv\n"); @@ -2103,18 +2103,18 @@ static int mreg_send_raw(mfile *mf, u_int16_t reg_id, maccess_reg_method_t metho #define HW_ID_ADDR 0xf0014 static int supports_icmd(mfile* mf) { - u_int32_t dev_id; - if (mread4(mf,HW_ID_ADDR, &dev_id) !=4) { // cr might be locked and retured 0xbad0cafe but we dont care we search for device that supports icmd - return 1; - } - switch (dev_id & 0xffff) { // that the hw device id - case CIB_HW_ID : - case CX4_HW_ID : - case SW_IB_HW_ID : - return 1; - default: - break; - } + u_int32_t dev_id; + if (mread4(mf,HW_ID_ADDR, &dev_id) !=4) { // cr might be locked and retured 0xbad0cafe but we dont care we search for device that supports icmd + return 1; + } + switch (dev_id & 0xffff) { // that the hw device id + case CIB_HW_ID : + case CX4_HW_ID : + case SW_IB_HW_ID : + return 1; + default: + break; + } return 0; } @@ -2142,7 +2142,7 @@ int mget_max_reg_size(mfile *mf) { return INBAND_MAX_REG_SIZE; } if (supports_icmd(mf)){ // we support icmd and we dont use IB interface -> we use icmd for reg access - if (mf->supp_fw_ifc) { + if (mf->vsec_supp) { return ICMD_MAX_REG_SIZE; } else { // we send via inband @@ -2155,10 +2155,6 @@ int mget_max_reg_size(mfile *mf) { return 0; } -int msupp_fw_ifc_cap(mfile* mf) { - return mf->supp_fw_ifc; -} - /************************************ * Function: m_err2str ************************************/ @@ -2262,10 +2258,10 @@ const char* m_err2str(MError status) return "ME_ICMD_ICM_NOT_AVAIL"; case ME_ICMD_WRITE_PROTECT: return "ME_ICMD_WRITE_PROTECT"; - case ME_ICMD_UNKNOWN_STATUS: - return "ME_ICMD_UNKNOWN_STATUS"; case ME_ICMD_SIZE_EXCEEDS_LIMIT: return "ME_ICMD_SIZE_EXCEEDS_LIMIT"; + case ME_ICMD_UNKNOWN_STATUS: + return "ME_ICMD_UNKNOWN_STATUS"; // TOOLS HCR access errors case ME_CMDIF_BUSY: diff --git a/mtcr_ul/mtcr_ul_icmd_cif.c b/mtcr_ul/mtcr_ul_icmd_cif.c index b5df608..5f351d6 100644 --- a/mtcr_ul/mtcr_ul_icmd_cif.c +++ b/mtcr_ul/mtcr_ul_icmd_cif.c @@ -31,23 +31,16 @@ * */ - #include #include #include +#include +#include #include #include #include "mtcr_icmd_cif.h" -#ifdef __WIN__ -#include -#define getpid() _getpid() -#else -#include -#include -#endif - //#define _DEBUG_MODE // un-comment this to enable debug prints #define IN @@ -66,10 +59,7 @@ #define OPCODE_BITLEN 16 #define STATUS_BITOFF 8 #define STATUS_BITLEN 8 - -/* - * Virtual CR-Space ICMD addresses - */ +#define ICMD_MAX_CMD_SIZE 256 #define VCR_CTRL_ADDR 0x0 #define VCR_SEMAPHORE62 0x0 // semaphore Domain @@ -77,7 +67,7 @@ #define VCR_CMD_SIZE_ADDR 0x1000 // mailbox size /* - * Macros for accessing cr-space + * Macros for accessing CR-Space */ #define MWRITE_BUF(mf, offset, data, byte_len) \ (((unsigned)(mwrite_buffer((mf), (offset), (data), (byte_len))) != (unsigned)(byte_len)) \ @@ -93,54 +83,57 @@ (((unsigned)(mread4((mf), (offset), (ptr))) != 4U) \ ? ME_ICMD_STATUS_CR_FAIL : ME_OK) -//TODO: adrianc: the macros below can be derrived from one common macro SPACE_ACCESS(mf, address_space, access_func, args, exp_rc, action_on_fail) /* - * Macros for accessing Icmd space + * Macros for accessing Icmd Space */ #define SET_SPACE_FOR_ICMD_ACCESS(mf) \ - if (mf->sup_fw_ifc) { \ - mf->address_domain = AD_ICMD; \ + if (mf->vsec_supp) { \ + mf->address_space = AS_ICMD; \ + } +#define SET_SPACE_FOR_SEMAPHORE_ACCESS(mf) \ + if (mf->vsec_supp) { \ + mf->address_space = AS_SEMAPHORE; \ } -#define RESTORE_SPACE(mf) mf->address_domain = AD_CR_SPACE +#define RESTORE_SPACE(mf) mf->address_space = AS_CR_SPACE #define MWRITE4_ICMD(mf, offset, value, action_on_fail)\ do {\ - mf->address_domain = AD_ICMD;\ + SET_SPACE_FOR_ICMD_ACCESS(mf);\ if (mwrite4(mf, offset, value) != 4) {\ - mf->address_domain = AD_CR_SPACE;\ + mf->address_space = AS_CR_SPACE;\ action_on_fail;\ }\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ }while(0) #define MREAD4_ICMD(mf, offset, ptr, action_on_fail)\ do {\ - mf->address_domain = AD_ICMD;\ + SET_SPACE_FOR_ICMD_ACCESS(mf);\ if (mread4(mf, offset, ptr) != 4) {\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ action_on_fail;\ }\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ }while(0) #define MWRITE_BUF_ICMD(mf, offset, data, byte_len, action_on_fail)\ do {\ - mf->address_domain = AD_ICMD;\ + SET_SPACE_FOR_ICMD_ACCESS(mf);\ if ((unsigned)mwrite_buffer(mf, offset, data, byte_len) != (unsigned)byte_len) {\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ action_on_fail;\ }\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ }while(0) #define MREAD_BUF_ICMD(mf, offset, data, byte_len, action_on_fail)\ do {\ - mf->address_domain = AD_ICMD;\ + SET_SPACE_FOR_ICMD_ACCESS(mf);\ if ((unsigned)mread_buffer(mf, offset, data, byte_len) != (unsigned)byte_len) {\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ action_on_fail;\ }\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ }while(0) /* @@ -148,26 +141,27 @@ */ #define MWRITE4_SEMAPHORE(mf, offset, value, action_on_fail)\ do {\ - mf->address_domain = AD_SEMAPHORE;\ + SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\ if (mwrite4(mf, offset, value) != 4) {\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ action_on_fail;\ }\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ }while(0) #define MREAD4_SEMAPHORE(mf, offset, ptr, action_on_fail)\ do {\ - mf->address_domain = AD_SEMAPHORE;\ + SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\ if (mread4(mf, offset, ptr) != 4) {\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ action_on_fail;\ }\ - mf->address_domain = AD_CR_SPACE;\ + RESTORE_SPACE(mf);\ }while(0) -//#define _DEBUG_MODE + + #ifdef _DEBUG_MODE #define DBG_PRINTF(...) fprintf(stderr, __VA_ARGS__) #else @@ -209,8 +203,6 @@ enum { }\ } while(0) -/*************************************************************************************/ - /* * go - Sets the busy bit to 1, wait untill it is 0 again. */ @@ -260,7 +252,7 @@ static int go(mfile *mf) { */ static int set_opcode(mfile *mf, u_int16_t opcode) { u_int32_t reg; - DBG_PRINTF("-D- in set_opcode\n"); + MREAD4_ICMD(mf, mf->icmd.ctrl_addr, ®, return ME_ICMD_STATUS_CR_FAIL); reg = MERGE(reg, opcode, OPCODE_BITOFF, OPCODE_BITLEN); MWRITE4_ICMD(mf, mf->icmd.ctrl_addr, reg, return ME_ICMD_STATUS_CR_FAIL); @@ -296,7 +288,7 @@ static int translate_status(int status) { } static int get_status(mfile *mf) { u_int32_t reg; - DBG_PRINTF("-D- int get_status()"); + MREAD4_ICMD(mf, mf->icmd.ctrl_addr, ®, return ME_ICMD_STATUS_CR_FAIL); return translate_status(EXTRACT(reg, STATUS_BITOFF, STATUS_BITLEN)); } @@ -306,7 +298,6 @@ static int get_status(mfile *mf) { */ static int icmd_is_cmd_ifc_ready(mfile *mf) { u_int32_t reg; - DBG_PRINTF("-D- in icmd_is_cmd_ifc_ready()\n"); if (MREAD4(mf, mf->icmd.static_cfg_not_done_addr, ®)) return ME_ICMD_STATUS_CR_FAIL; u_int32_t bit_val = EXTRACT(reg, mf->icmd.static_cfg_not_done_offs, 1); /* adrianc: for SWITCHIB the polarity of this bit is opposite than CONNECTIB/CONNECTX4 @@ -334,11 +325,15 @@ int icmd_clear_semaphore(mfile *mf) { if ((ret = icmd_open(mf))) { return ret; } + MWRITE4_SEMAPHORE(mf, mf->icmd.semaphore_addr, 0, return ME_ICMD_STATUS_CR_FAIL); mf->icmd.took_semaphore = 0; return ME_OK; } +/* + * icmd_take_semaphore + */ /* * icmd_take_semaphore */ @@ -353,7 +348,7 @@ static int icmd_take_semaphore_com(mfile *mf, u_int32_t expected_read_val) if (++retries > 256) { return ME_ICMD_STATUS_SEMAPHORE_TO; } - if (mf->supp_fw_ifc) { + if (mf->vsec_supp) { //write expected val before reading it MWRITE4_SEMAPHORE(mf, mf->icmd.semaphore_addr, expected_read_val, return ME_ICMD_STATUS_CR_FAIL); } @@ -373,18 +368,19 @@ int icmd_take_semaphore(mfile *mf) { // open icmd interface by demand int ret; + static u_int32_t pid = 0; if ((ret = icmd_open(mf))) { return ret; } - if (!mf->supp_fw_ifc) { - return icmd_take_semaphore_com(mf, 0); - } - static u_int32_t pid = 0; - if (!pid) { - pid = getpid(); + if (mf->vsec_supp) { + if (!pid) { + pid = getpid(); + } + return icmd_take_semaphore_com(mf, pid); + } else { + return icmd_take_semaphore_com(mf, 0); } - return icmd_take_semaphore_com(mf, pid); } int icmd_send_command(mfile *mf, @@ -453,6 +449,13 @@ cleanup: return ret; } + +static int icmd_init_cr(mfile *mf) +{ + (void)mf; + return ME_NOT_IMPLEMENTED; +} + static int icmd_init_vcr(mfile* mf) { mf->icmd.cmd_addr = VCR_CMD_ADDR; @@ -474,23 +477,34 @@ static int icmd_init_vcr(mfile* mf) return ME_OK; } + int icmd_open(mfile *mf) { if (mf->icmd.icmd_opened) { return ME_OK; } + mf->icmd.took_semaphore = 0; - // check if we support icmd in virtual CR-Space - if (mf->supp_fw_ifc) { + // attempt to open via CR-Space +#if defined(MST_UL) && !defined(MST_UL_ICMD) + if (mf->vsec_supp) { return icmd_init_vcr(mf); } + // ugly hack avoid compiler warrnings + if (0) icmd_init_cr(mf); return ME_ICMD_NOT_SUPPORTED; +#else + if (mf->vsec_supp) { + return icmd_init_vcr(mf); + } else { + return icmd_init_cr(mf); + } +#endif } /* * icmd_close */ - void icmd_close(mfile *mf) { if (mf) { if (mf->icmd.took_semaphore) diff --git a/tools_layouts/Makefile.am b/tools_layouts/Makefile.am index 17bdf6c..f085849 100644 --- a/tools_layouts/Makefile.am +++ b/tools_layouts/Makefile.am @@ -35,7 +35,9 @@ INCLUDES = -I$(top_srcdir)/mtcr_ul -I$(top_srcdir)/common AM_CFLAGS = -Wall -W -g -MP -MD -pipe $(COMPILER_FPIC) noinst_LIBRARIES = libtools_layouts.a -libtools_layouts_a_SOURCES = cibfw_layouts.c adb_to_c_utils.c adb_to_c_utils.h cibfw_layouts.h \ - register_access_open_layouts.h register_access_open_layouts.c \ - tools_open_layouts.c tools_open_layouts.h\ - register_access_sib_layouts.h register_access_sib_layouts.c +libtools_layouts_a_SOURCES = adb_to_c_utils.c adb_to_c_utils.h \ + cibfw_layouts.c cibfw_layouts.h \ + register_access_open_layouts.h register_access_open_layouts.c \ + tools_open_layouts.c tools_open_layouts.h\ + register_access_sib_layouts.h register_access_sib_layouts.c \ + cx4fw_layouts.c cx4fw_layouts.h diff --git a/tools_layouts/cibfw_layouts.c b/tools_layouts/cibfw_layouts.c index 0762404..d529bbb 100644 --- a/tools_layouts/cibfw_layouts.c +++ b/tools_layouts/cibfw_layouts.c @@ -1,38 +1,20 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * */ + /*** - *** This file was generated at "2014-11-12 13:19:17" + *** This file was generated at "2015-01-22 18:18:54" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/cibfw/cibfw.adb --file-prefix cibfw --prefix cibfw_ ***/ @@ -785,6 +767,12 @@ void cibfw_mfg_info_pack(const struct cibfw_mfg_info *ptr_struct, u_int8_t* ptr_ offset=255; adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->guids_override_en); + offset=232; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version); + + offset=224; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version); + offset=256; cibfw_guids_pack(&(ptr_struct->guids), ptr_buff + offset/8); @@ -807,6 +795,12 @@ void cibfw_mfg_info_unpack(struct cibfw_mfg_info *ptr_struct, const u_int8_t* pt offset=255; ptr_struct->guids_override_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + offset=232; + ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=224; + ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + offset=256; cibfw_guids_unpack(&(ptr_struct->guids), ptr_buff + offset/8); @@ -824,6 +818,12 @@ void cibfw_mfg_info_print(const struct cibfw_mfg_info *ptr_struct, FILE* file, i adb2c_add_indentation(file, indent_level); fprintf(file, "guids_override_en : "UH_FMT"\n", ptr_struct->guids_override_en); + adb2c_add_indentation(file, indent_level); + fprintf(file, "minor_version : "UH_FMT"\n", ptr_struct->minor_version); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "major_version : "UH_FMT"\n", ptr_struct->major_version); + adb2c_add_indentation(file, indent_level); fprintf(file, "guids:\n"); cibfw_guids_print(&(ptr_struct->guids), file, indent_level + 1); diff --git a/tools_layouts/cibfw_layouts.h b/tools_layouts/cibfw_layouts.h index d7b4ad1..d1683dc 100644 --- a/tools_layouts/cibfw_layouts.h +++ b/tools_layouts/cibfw_layouts.h @@ -1,38 +1,20 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * */ + /*** - *** This file was generated at "2014-11-12 13:19:17" + *** This file was generated at "2015-01-22 18:18:54" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/cibfw/cibfw.adb --file-prefix cibfw --prefix cibfw_ ***/ @@ -263,10 +245,16 @@ struct cibfw_mfg_info { /* 0.24 - 16.23 */ char psid[17]; /*---------------- DWORD[7] (Offset 0x1c) ----------------*/ - /* Description - When this bit is set, the GUIDs should eb taken from the device_info node. + /* Description - When this bit is set, the GUIDs should be taken from the device_info node. When this bit is cleared, the GUIDs should be taken from the mfg_info node. */ /* 28.0 - 28.0 */ u_int8_t guids_override_en; + /* Description - MFG_INFO section minor version */ + /* 28.16 - 28.23 */ + u_int8_t minor_version; + /* Description - MFG_INFO section major version */ + /* 28.24 - 32.31 */ + u_int8_t major_version; /*---------------- DWORD[8] (Offset 0x20) ----------------*/ /* Description - */ /* 32.0 - 96.31 */ diff --git a/tools_layouts/cx4fw_layouts.c b/tools_layouts/cx4fw_layouts.c new file mode 100644 index 0000000..e801fab --- /dev/null +++ b/tools_layouts/cx4fw_layouts.c @@ -0,0 +1,535 @@ + +/* - Mellanox Confidential and Proprietary - + * + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". + * + */ + + +/*** + *** This file was generated at "2015-02-05 17:00:26" + *** by: + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix cx4fw --prefix cx4fw_ + ***/ +#include "cx4fw_layouts.h" + +void cx4fw_uint64_pack(const struct cx4fw_uint64 *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->hi); + + offset=32; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->lo); + +} + +void cx4fw_uint64_unpack(struct cx4fw_uint64 *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + ptr_struct->hi = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + + offset=32; + ptr_struct->lo = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + +} + +void cx4fw_uint64_print(const struct cx4fw_uint64 *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== cx4fw_uint64 ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "hi : "U32H_FMT"\n", ptr_struct->hi); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "lo : "U32H_FMT"\n", ptr_struct->lo); + +} + +int cx4fw_uint64_size(void){ + return 8; +} + +void cx4fw_uint64_dump(const struct cx4fw_uint64 *ptr_struct, FILE* file) { + cx4fw_uint64_print(ptr_struct, file, 0); +} + +void cx4fw_uid_entry_pack(const struct cx4fw_uid_entry *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=24; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->num_allocated); + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->step); + + offset=64; + adb2c_push_integer_to_buff(ptr_buff, offset, 8, ptr_struct->uid); + +} + +void cx4fw_uid_entry_unpack(struct cx4fw_uid_entry *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=24; + ptr_struct->num_allocated = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=16; + ptr_struct->step = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=64; + ptr_struct->uid = adb2c_pop_integer_from_buff(ptr_buff, offset, 8); + +} + +void cx4fw_uid_entry_print(const struct cx4fw_uid_entry *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== cx4fw_uid_entry ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "num_allocated : "UH_FMT"\n", ptr_struct->num_allocated); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "step : "UH_FMT"\n", ptr_struct->step); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "uid : "U64H_FMT"\n", ptr_struct->uid); + +} + +int cx4fw_uid_entry_size(void){ + return 16; +} + +void cx4fw_uid_entry_dump(const struct cx4fw_uid_entry *ptr_struct, FILE* file) { + cx4fw_uid_entry_print(ptr_struct, file, 0); +} + +void cx4fw_guids_pack(const struct cx4fw_guids *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + cx4fw_uid_entry_pack(&(ptr_struct->guids), ptr_buff + offset/8); + + offset=128; + cx4fw_uid_entry_pack(&(ptr_struct->macs), ptr_buff + offset/8); + +} + +void cx4fw_guids_unpack(struct cx4fw_guids *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + cx4fw_uid_entry_unpack(&(ptr_struct->guids), ptr_buff + offset/8); + + offset=128; + cx4fw_uid_entry_unpack(&(ptr_struct->macs), ptr_buff + offset/8); + +} + +void cx4fw_guids_print(const struct cx4fw_guids *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== cx4fw_guids ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "guids:\n"); + cx4fw_uid_entry_print(&(ptr_struct->guids), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "macs:\n"); + cx4fw_uid_entry_print(&(ptr_struct->macs), file, indent_level + 1); + +} + +int cx4fw_guids_size(void){ + return 64; +} + +void cx4fw_guids_dump(const struct cx4fw_guids *ptr_struct, FILE* file) { + cx4fw_guids_print(ptr_struct, file, 0); +} + +void cx4fw_operation_key_pack(const struct cx4fw_operation_key *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->key_modifier); + + offset=64; + adb2c_push_integer_to_buff(ptr_buff, offset, 8, ptr_struct->key); + +} + +void cx4fw_operation_key_unpack(struct cx4fw_operation_key *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + ptr_struct->key_modifier = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=64; + ptr_struct->key = adb2c_pop_integer_from_buff(ptr_buff, offset, 8); + +} + +void cx4fw_operation_key_print(const struct cx4fw_operation_key *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== cx4fw_operation_key ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "key_modifier : "UH_FMT"\n", ptr_struct->key_modifier); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "key : "U64H_FMT"\n", ptr_struct->key); + +} + +int cx4fw_operation_key_size(void){ + return 16; +} + +void cx4fw_operation_key_dump(const struct cx4fw_operation_key *ptr_struct, FILE* file) { + cx4fw_operation_key_print(ptr_struct, file, 0); +} + +void cx4fw_mfg_info_pack(const struct cx4fw_mfg_info *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + for (i=0; i < 16; i++) { + offset=adb2c_calc_array_field_address(24, 8, i, 2560, 1); + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->psid[i]); + } + + offset=255; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->guids_override_en); + + offset=232; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version); + + offset=224; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version); + + offset=256; + cx4fw_guids_pack(&(ptr_struct->guids), ptr_buff + offset/8); + +} + +void cx4fw_mfg_info_unpack(struct cx4fw_mfg_info *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + for (i=0; i < 16; i++) { + offset=adb2c_calc_array_field_address(24, 8, i, 2560, 1); + ptr_struct->psid[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + } + + ptr_struct->psid[16] = '\0'; + offset=255; + ptr_struct->guids_override_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=232; + ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=224; + ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=256; + cx4fw_guids_unpack(&(ptr_struct->guids), ptr_buff + offset/8); + +} + +void cx4fw_mfg_info_print(const struct cx4fw_mfg_info *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== cx4fw_mfg_info ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + fprintf(file, "psid : \"%s\"\n", ptr_struct->psid); + adb2c_add_indentation(file, indent_level); + fprintf(file, "guids_override_en : "UH_FMT"\n", ptr_struct->guids_override_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "minor_version : "UH_FMT"\n", ptr_struct->minor_version); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "major_version : "UH_FMT"\n", ptr_struct->major_version); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "guids:\n"); + cx4fw_guids_print(&(ptr_struct->guids), file, indent_level + 1); + +} + +int cx4fw_mfg_info_size(void){ + return 320; +} + +void cx4fw_mfg_info_dump(const struct cx4fw_mfg_info *ptr_struct, FILE* file) { + cx4fw_mfg_info_print(ptr_struct, file, 0); +} + +void cx4fw_device_info_pack(const struct cx4fw_device_info *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature0); + + offset=32; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature1); + + offset=64; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature2); + + offset=96; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature3); + + offset=152; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version); + + offset=143; + adb2c_push_bits_to_buff(ptr_buff, offset, 9, (u_int32_t)ptr_struct->major_version); + + offset=256; + cx4fw_guids_pack(&(ptr_struct->guids), ptr_buff + offset/8); + + offset=880; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->vsd_vendor_id); + + for (i=0; i < 208; i++) { + offset=adb2c_calc_array_field_address(920, 8, i, 4096, 1); + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->vsd[i]); + } + + for (i=0; i < 4; i++) { + offset=adb2c_calc_array_field_address(2816, 128, i, 4096, 1); + cx4fw_operation_key_pack(&(ptr_struct->keys[i]), ptr_buff + offset/8); + } + +} + +void cx4fw_device_info_unpack(struct cx4fw_device_info *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + u_int8_t val=0; + (void)val; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + ptr_struct->signature0 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + + offset=32; + ptr_struct->signature1 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + + offset=64; + ptr_struct->signature2 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + + offset=96; + ptr_struct->signature3 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + + offset=152; + ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=143; + ptr_struct->major_version = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 9); + + offset=256; + cx4fw_guids_unpack(&(ptr_struct->guids), ptr_buff + offset/8); + + offset=880; + ptr_struct->vsd_vendor_id = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + for (i=0; i < 208; i++) { + offset=adb2c_calc_array_field_address(920, 8, i, 4096, 1); + ptr_struct->vsd[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + } + + ptr_struct->vsd[208] = '\0'; + for (i=0; i < 4; i++) { + offset=adb2c_calc_array_field_address(2816, 128, i, 4096, 1); + cx4fw_operation_key_unpack(&(ptr_struct->keys[i]), ptr_buff + offset/8); + } + +} + +void cx4fw_device_info_print(const struct cx4fw_device_info *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== cx4fw_device_info ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "signature0 : "U32H_FMT"\n", ptr_struct->signature0); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "signature1 : "U32H_FMT"\n", ptr_struct->signature1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "signature2 : "U32H_FMT"\n", ptr_struct->signature2); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "signature3 : "U32H_FMT"\n", ptr_struct->signature3); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "minor_version : "UH_FMT"\n", ptr_struct->minor_version); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "major_version : "UH_FMT"\n", ptr_struct->major_version); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "guids:\n"); + cx4fw_guids_print(&(ptr_struct->guids), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "vsd_vendor_id : "UH_FMT"\n", ptr_struct->vsd_vendor_id); + + fprintf(file, "vsd : \"%s\"\n", ptr_struct->vsd); + for (i=0; i < 4; i++) { + adb2c_add_indentation(file, indent_level); + fprintf(file, "keys_%03d:\n", i); + cx4fw_operation_key_print(&(ptr_struct->keys[i]), file, indent_level + 1); + } + +} + +int cx4fw_device_info_size(void){ + return 512; +} + +void cx4fw_device_info_dump(const struct cx4fw_device_info *ptr_struct, FILE* file) { + cx4fw_device_info_print(ptr_struct, file, 0); +} + +void cx4fw_cx4fw_Nodes_pack(const union cx4fw_cx4fw_Nodes *ptr_struct, u_int8_t* ptr_buff) +{ + cx4fw_guids_pack(&(ptr_struct->guids), ptr_buff); +} + +void cx4fw_cx4fw_Nodes_unpack(union cx4fw_cx4fw_Nodes *ptr_struct, const u_int8_t* ptr_buff) +{ + cx4fw_guids_unpack(&(ptr_struct->guids), ptr_buff); +} + +void cx4fw_cx4fw_Nodes_print(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== cx4fw_cx4fw_Nodes ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "device_info:\n"); + cx4fw_device_info_print(&(ptr_struct->device_info), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mfg_info:\n"); + cx4fw_mfg_info_print(&(ptr_struct->mfg_info), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "guids:\n"); + cx4fw_guids_print(&(ptr_struct->guids), file, indent_level + 1); + +} + +int cx4fw_cx4fw_Nodes_size(void){ + return 512; +} + +void cx4fw_cx4fw_Nodes_dump(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file) { + cx4fw_cx4fw_Nodes_print(ptr_struct, file, 0); +} + diff --git a/tools_layouts/cx4fw_layouts.h b/tools_layouts/cx4fw_layouts.h new file mode 100644 index 0000000..4758938 --- /dev/null +++ b/tools_layouts/cx4fw_layouts.h @@ -0,0 +1,233 @@ + +/* - Mellanox Confidential and Proprietary - + * + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". + * + */ + + +/*** + *** This file was generated at "2015-02-05 17:00:26" + *** by: + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix cx4fw --prefix cx4fw_ + ***/ +#ifndef CX4FW_LAYOUTS_H +#define CX4FW_LAYOUTS_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "adb_to_c_utils.h"/* Description - */ +/* Size in bytes - 8 */ +struct cx4fw_uint64 { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 4.31 */ + u_int32_t hi; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - */ + /* 4.0 - 8.31 */ + u_int32_t lo; +}; + +/* Description - */ +/* Size in bytes - 16 */ +struct cx4fw_uid_entry { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Number of allocated UIDs in this entry */ + /* 0.0 - 0.7 */ + u_int8_t num_allocated; + /* Description - Step size by which to derive the UIDs for this entry +See struct description */ + /* 0.8 - 0.15 */ + u_int8_t step; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - For MACs, the upper 16 bits in the 'hi' dword are reserved */ + /* 8.0 - 16.31 */ + u_int64_t uid; +}; + +/* Description - */ +/* Size in bytes - 64 */ +struct cx4fw_guids { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - UIDs (MACs and GUIDs) Allocation Entry. +guids, is used for system GUID, node GUID and port GUID of port 0. ;/Multiple UIDs can be assigned to a single port, to be used for multiple virtual guests, multi host and managment */ + /* 0.0 - 16.31 */ + struct cx4fw_uid_entry guids; +/*---------------- DWORD[4] (Offset 0x10) ----------------*/ + /* Description - */ + /* 16.0 - 32.31 */ + struct cx4fw_uid_entry macs; +}; + +/* Description - */ +/* Size in bytes - 16 */ +struct cx4fw_operation_key { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 0.15 */ + u_int16_t key_modifier; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - */ + /* 8.0 - 16.31 */ + u_int64_t key; +}; + +/* Description - */ +/* Size in bytes - 320 */ +struct cx4fw_mfg_info { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.24 - 16.23 */ + char psid[17]; +/*---------------- DWORD[7] (Offset 0x1c) ----------------*/ + /* Description - When this bit is set, the GUIDs should be taken from the device_info node. +When this bit is cleared, the GUIDs should be taken from the mfg_info node. */ + /* 28.0 - 28.0 */ + u_int8_t guids_override_en; + /* Description - MFG_INFO section minor version */ + /* 28.16 - 28.23 */ + u_int8_t minor_version; + /* Description - MFG_INFO section major version */ + /* 28.24 - 32.31 */ + u_int8_t major_version; +/*---------------- DWORD[8] (Offset 0x20) ----------------*/ + /* Description - */ + /* 32.0 - 96.31 */ + struct cx4fw_guids guids; +}; + +/* Description - */ +/* Size in bytes - 512 */ +struct cx4fw_device_info { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 4.31 */ + u_int32_t signature0; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - */ + /* 4.0 - 8.31 */ + u_int32_t signature1; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - */ + /* 8.0 - 12.31 */ + u_int32_t signature2; +/*---------------- DWORD[3] (Offset 0xc) ----------------*/ + /* Description - */ + /* 12.0 - 16.31 */ + u_int32_t signature3; +/*---------------- DWORD[4] (Offset 0x10) ----------------*/ + /* Description - Format version for this struct */ + /* 16.0 - 16.7 */ + u_int8_t minor_version; + /* Description - Format version for this struct */ + /* 16.8 - 16.16 */ + u_int16_t major_version; +/*---------------- DWORD[8] (Offset 0x20) ----------------*/ + /* Description - */ + /* 32.0 - 96.31 */ + struct cx4fw_guids guids; +/*---------------- DWORD[27] (Offset 0x6c) ----------------*/ + /* Description - */ + /* 108.0 - 108.15 */ + u_int16_t vsd_vendor_id; +/*---------------- DWORD[28] (Offset 0x70) ----------------*/ + /* Description - */ + /* 112.24 - 320.23 */ + char vsd[209]; +/*---------------- DWORD[88] (Offset 0x160) ----------------*/ + /* Description - */ + /* 352.0 - 416.31 */ + struct cx4fw_operation_key keys[4]; +}; + +/* Description - */ +/* Size in bytes - 512 */ +union cx4fw_cx4fw_Nodes { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 512.31 */ + struct cx4fw_device_info device_info; + /* Description - */ + /* 0.0 - 320.31 */ + struct cx4fw_mfg_info mfg_info; + /* Description - */ + /* 0.0 - 64.31 */ + struct cx4fw_guids guids; +}; + + +/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/ +/* uint64 */ +void cx4fw_uint64_pack(const struct cx4fw_uint64 *ptr_struct, u_int8_t* ptr_buff); +void cx4fw_uint64_unpack(struct cx4fw_uint64 *ptr_struct, const u_int8_t* ptr_buff); +void cx4fw_uint64_print(const struct cx4fw_uint64 *ptr_struct, FILE* file, int indent_level); +int cx4fw_uint64_size(void); +#define CX4FW_UINT64_SIZE (0x8) +void cx4fw_uint64_dump(const struct cx4fw_uint64 *ptr_struct, FILE* file); +; +/* uid_entry */ +void cx4fw_uid_entry_pack(const struct cx4fw_uid_entry *ptr_struct, u_int8_t* ptr_buff); +void cx4fw_uid_entry_unpack(struct cx4fw_uid_entry *ptr_struct, const u_int8_t* ptr_buff); +void cx4fw_uid_entry_print(const struct cx4fw_uid_entry *ptr_struct, FILE* file, int indent_level); +int cx4fw_uid_entry_size(void); +#define CX4FW_UID_ENTRY_SIZE (0x10) +void cx4fw_uid_entry_dump(const struct cx4fw_uid_entry *ptr_struct, FILE* file); +; +/* guids */ +void cx4fw_guids_pack(const struct cx4fw_guids *ptr_struct, u_int8_t* ptr_buff); +void cx4fw_guids_unpack(struct cx4fw_guids *ptr_struct, const u_int8_t* ptr_buff); +void cx4fw_guids_print(const struct cx4fw_guids *ptr_struct, FILE* file, int indent_level); +int cx4fw_guids_size(void); +#define CX4FW_GUIDS_SIZE (0x40) +void cx4fw_guids_dump(const struct cx4fw_guids *ptr_struct, FILE* file); +; +/* operation_key */ +void cx4fw_operation_key_pack(const struct cx4fw_operation_key *ptr_struct, u_int8_t* ptr_buff); +void cx4fw_operation_key_unpack(struct cx4fw_operation_key *ptr_struct, const u_int8_t* ptr_buff); +void cx4fw_operation_key_print(const struct cx4fw_operation_key *ptr_struct, FILE* file, int indent_level); +int cx4fw_operation_key_size(void); +#define CX4FW_OPERATION_KEY_SIZE (0x10) +void cx4fw_operation_key_dump(const struct cx4fw_operation_key *ptr_struct, FILE* file); +; +/* mfg_info */ +void cx4fw_mfg_info_pack(const struct cx4fw_mfg_info *ptr_struct, u_int8_t* ptr_buff); +void cx4fw_mfg_info_unpack(struct cx4fw_mfg_info *ptr_struct, const u_int8_t* ptr_buff); +void cx4fw_mfg_info_print(const struct cx4fw_mfg_info *ptr_struct, FILE* file, int indent_level); +int cx4fw_mfg_info_size(void); +#define CX4FW_MFG_INFO_SIZE (0x140) +void cx4fw_mfg_info_dump(const struct cx4fw_mfg_info *ptr_struct, FILE* file); +; +/* device_info */ +void cx4fw_device_info_pack(const struct cx4fw_device_info *ptr_struct, u_int8_t* ptr_buff); +void cx4fw_device_info_unpack(struct cx4fw_device_info *ptr_struct, const u_int8_t* ptr_buff); +void cx4fw_device_info_print(const struct cx4fw_device_info *ptr_struct, FILE* file, int indent_level); +int cx4fw_device_info_size(void); +#define CX4FW_DEVICE_INFO_SIZE (0x200) +void cx4fw_device_info_dump(const struct cx4fw_device_info *ptr_struct, FILE* file); +; +/* cx4fw_Nodes */ +void cx4fw_cx4fw_Nodes_pack(const union cx4fw_cx4fw_Nodes *ptr_struct, u_int8_t* ptr_buff); +void cx4fw_cx4fw_Nodes_unpack(union cx4fw_cx4fw_Nodes *ptr_struct, const u_int8_t* ptr_buff); +void cx4fw_cx4fw_Nodes_print(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file, int indent_level); +int cx4fw_cx4fw_Nodes_size(void); +#define CX4FW_CX4FW_NODES_SIZE (0x200) +void cx4fw_cx4fw_Nodes_dump(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file); +; + + +#ifdef __cplusplus +} +#endif + +#endif // CX4FW_LAYOUTS_H diff --git a/tools_layouts/register_access_sib_layouts.c b/tools_layouts/register_access_sib_layouts.c index bc742e3..05dcc92 100644 --- a/tools_layouts/register_access_sib_layouts.c +++ b/tools_layouts/register_access_sib_layouts.c @@ -1,37 +1,20 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * */ + + /*** - *** This file was generated at "2014-11-12 13:18:59" + *** This file was generated at "2015-01-22 18:18:34" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access_sib.adb --file-prefix register_access_sib --prefix register_access_sib_ ***/ @@ -462,3 +445,176 @@ void register_access_sib_mgir_dump(const struct register_access_sib_mgir *ptr_st register_access_sib_mgir_print(ptr_struct, file, 0); } +void register_access_sib_mtmp_pack(const struct register_access_sib_mtmp *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=25; + adb2c_push_bits_to_buff(ptr_buff, offset, 7, (u_int32_t)ptr_struct->sensor_index); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->internal_diodes_query); + + offset=48; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->temperature); + + offset=80; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->max_temperture); + + offset=65; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->mtr); + + offset=64; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->mte); + + offset=112; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->temperature_threshold_hi); + + offset=96; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->tee); + + offset=144; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->temperature_threshold_lo); + + offset=160; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->name_lo); + + offset=192; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->name_hi); + +} + +void register_access_sib_mtmp_unpack(struct register_access_sib_mtmp *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=25; + ptr_struct->sensor_index = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 7); + + offset=0; + ptr_struct->internal_diodes_query = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=48; + ptr_struct->temperature = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=80; + ptr_struct->max_temperture = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=65; + ptr_struct->mtr = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=64; + ptr_struct->mte = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=112; + ptr_struct->temperature_threshold_hi = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=96; + ptr_struct->tee = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=144; + ptr_struct->temperature_threshold_lo = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=160; + ptr_struct->name_lo = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + + offset=192; + ptr_struct->name_hi = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + +} + +void register_access_sib_mtmp_print(const struct register_access_sib_mtmp *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== mtmp ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "sensor_index : "UH_FMT"\n", ptr_struct->sensor_index); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "internal_diodes_query : "UH_FMT"\n", ptr_struct->internal_diodes_query); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "temperature : "UH_FMT"\n", ptr_struct->temperature); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "max_temperture : "UH_FMT"\n", ptr_struct->max_temperture); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mtr : "UH_FMT"\n", ptr_struct->mtr); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mte : "UH_FMT"\n", ptr_struct->mte); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "temperature_threshold_hi : "UH_FMT"\n", ptr_struct->temperature_threshold_hi); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "tee : "UH_FMT"\n", ptr_struct->tee); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "temperature_threshold_lo : "UH_FMT"\n", ptr_struct->temperature_threshold_lo); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "name_lo : "U32H_FMT"\n", ptr_struct->name_lo); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "name_hi : "U32H_FMT"\n", ptr_struct->name_hi); + +} + +int register_access_sib_mtmp_size(){ + return 28; +} + +void register_access_sib_mtmp_dump(const struct register_access_sib_mtmp *ptr_struct, FILE* file) { + register_access_sib_mtmp_print(ptr_struct, file, 0); +} + +void register_access_sib_register_access_sib_Nodes_pack(const union register_access_sib_register_access_sib_Nodes *ptr_struct, u_int8_t* ptr_buff) +{ + memcpy(ptr_buff, ptr_struct, 128); +} + +void register_access_sib_register_access_sib_Nodes_unpack(union register_access_sib_register_access_sib_Nodes *ptr_struct, const u_int8_t* ptr_buff) +{ + memcpy(ptr_struct, ptr_buff, 128); +} + +void register_access_sib_register_access_sib_Nodes_print(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== register_access_sib_Nodes ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mtmp:\n"); + register_access_sib_mtmp_print(&(ptr_struct->mtmp), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mgir:\n"); + register_access_sib_mgir_print(&(ptr_struct->mgir), file, indent_level + 1); + +} + +int register_access_sib_register_access_sib_Nodes_size(){ + return 128; +} + +void register_access_sib_register_access_sib_Nodes_dump(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file) { + register_access_sib_register_access_sib_Nodes_print(ptr_struct, file, 0); +} + diff --git a/tools_layouts/register_access_sib_layouts.h b/tools_layouts/register_access_sib_layouts.h index e926b5a..5a9c1f8 100644 --- a/tools_layouts/register_access_sib_layouts.h +++ b/tools_layouts/register_access_sib_layouts.h @@ -1,38 +1,20 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * */ + /*** - *** This file was generated at "2014-11-12 13:18:59" + *** This file was generated at "2015-01-22 18:18:34" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access_sib.adb --file-prefix register_access_sib --prefix register_access_sib_ ***/ @@ -162,6 +144,68 @@ struct register_access_sib_mgir { struct register_access_sib_IB_SWInfo_ SWInfo; }; +/* Description - */ +/* Size in bytes - 28 */ +struct register_access_sib_mtmp { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Sensors index to access */ + /* 0.0 - 0.6 */ + u_int8_t sensor_index; + /* Description - query the internal diodes */ + /* 0.31 - 4.31 */ + u_int8_t internal_diodes_query; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - Temperature reading from the sensor. Reading in 0.125 Celsius degrees. */ + /* 4.0 - 4.15 */ + u_int16_t temperature; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - The highest measured temperature from the sensor. */ + /* 8.0 - 8.15 */ + u_int16_t max_temperture; + /* Description - Max Temperature Reset - clears the value of the max temperature register */ + /* 8.30 - 8.30 */ + u_int8_t mtr; + /* Description - Max Temperature Enable - enables measuring the max temperature on a sensor */ + /* 8.31 - 12.31 */ + u_int8_t mte; +/*---------------- DWORD[3] (Offset 0xc) ----------------*/ + /* Description - If the sensor temperature measurement is above the threshold (and events are enabled), an event +will be generated */ + /* 12.0 - 12.15 */ + u_int16_t temperature_threshold_hi; + /* Description - Temperature Event Enable +00 - Do not generate event +01 - Generate Event +10 - Generate single event */ + /* 12.30 - 16.31 */ + u_int8_t tee; +/*---------------- DWORD[4] (Offset 0x10) ----------------*/ + /* Description - */ + /* 16.0 - 16.15 */ + u_int16_t temperature_threshold_lo; +/*---------------- DWORD[5] (Offset 0x14) ----------------*/ + /* Description - */ + /* 20.0 - 24.31 */ + u_int32_t name_lo; +/*---------------- DWORD[6] (Offset 0x18) ----------------*/ + /* Description - */ + /* 24.0 - 28.31 */ + u_int32_t name_hi; +}; + +/* Description - */ +/* Size in bytes - 128 */ +union register_access_sib_register_access_sib_Nodes { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 28.31 */ + struct register_access_sib_mtmp mtmp; + /* Description - */ + /* 0.0 - 128.31 */ + struct register_access_sib_mgir mgir; +}; + + /*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/ /* IB_PSID_ */ void register_access_sib_IB_PSID__pack(const struct register_access_sib_IB_PSID_ *ptr_struct, u_int8_t* ptr_buff); @@ -198,6 +242,21 @@ void register_access_sib_mgir_print(const struct register_access_sib_mgir *ptr_s int register_access_sib_mgir_size(); #define REGISTER_ACCESS_SIB_MGIR_SIZE (0x80) void register_access_sib_mgir_dump(const struct register_access_sib_mgir *ptr_struct, FILE* file); +/* mtmp */ +void register_access_sib_mtmp_pack(const struct register_access_sib_mtmp *ptr_struct, u_int8_t* ptr_buff); +void register_access_sib_mtmp_unpack(struct register_access_sib_mtmp *ptr_struct, const u_int8_t* ptr_buff); +void register_access_sib_mtmp_print(const struct register_access_sib_mtmp *ptr_struct, FILE* file, int indent_level); +int register_access_sib_mtmp_size(); +#define REGISTER_ACCESS_SIB_MTMP_SIZE (0x1c) +void register_access_sib_mtmp_dump(const struct register_access_sib_mtmp *ptr_struct, FILE* file); +/* register_access_sib_Nodes */ +void register_access_sib_register_access_sib_Nodes_pack(const union register_access_sib_register_access_sib_Nodes *ptr_struct, u_int8_t* ptr_buff); +void register_access_sib_register_access_sib_Nodes_unpack(union register_access_sib_register_access_sib_Nodes *ptr_struct, const u_int8_t* ptr_buff); +void register_access_sib_register_access_sib_Nodes_print(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file, int indent_level); +int register_access_sib_register_access_sib_Nodes_size(); +#define REGISTER_ACCESS_SIB_REGISTER_ACCESS_SIB_NODES_SIZE (0x80) +void register_access_sib_register_access_sib_Nodes_dump(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file); + #ifdef __cplusplus } diff --git a/tools_layouts/tools_open_layouts.c b/tools_layouts/tools_open_layouts.c index 16a938c..25b4b46 100644 --- a/tools_layouts/tools_open_layouts.c +++ b/tools_layouts/tools_open_layouts.c @@ -1,38 +1,20 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * */ + /*** - *** This file was generated at "2014-11-12 13:19:54" + *** This file was generated at "2015-01-22 18:19:26" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ ***/ @@ -825,13 +807,13 @@ void tools_open_query_def_params_global_print(const struct tools_open_query_def_ fprintf(file, "fw_default_config_payload_version : "UH_FMT"\n", ptr_struct->fw_default_config_payload_version); adb2c_add_indentation(file, indent_level); - fprintf(file, "num_vfs : "UH_FMT"\n", ptr_struct->num_vfs); + fprintf(file, "num_vfs : "UH_FMT"\n", ptr_struct->num_vfs); adb2c_add_indentation(file, indent_level); - fprintf(file, "uar_bar_size : "UH_FMT"\n", ptr_struct->uar_bar_size); + fprintf(file, "uar_bar_size : "UH_FMT"\n", ptr_struct->uar_bar_size); adb2c_add_indentation(file, indent_level); - fprintf(file, "max_uar_bar_size : "UH_FMT"\n", ptr_struct->max_uar_bar_size); + fprintf(file, "max_uar_bar_size : "UH_FMT"\n", ptr_struct->max_uar_bar_size); adb2c_add_indentation(file, indent_level); fprintf(file, "sriov_en : "UH_FMT"\n", ptr_struct->sriov_en); @@ -1072,6 +1054,365 @@ void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file tools_open_sriov_print(ptr_struct, file, 0); } +void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=24; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->pfcrx); + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->pfctx); + + offset=2; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pfc_willing); + + offset=1; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pprx); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pptx); + +} + +void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=24; + ptr_struct->pfcrx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=16; + ptr_struct->pfctx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=2; + ptr_struct->pfc_willing = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=1; + ptr_struct->pprx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=0; + ptr_struct->pptx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + +} + +void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== preboot_flow_ctrl ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pfcrx : "UH_FMT"\n", ptr_struct->pfcrx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pfctx : "UH_FMT"\n", ptr_struct->pfctx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pfc_willing : "UH_FMT"\n", ptr_struct->pfc_willing); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pprx : "UH_FMT"\n", ptr_struct->pprx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pptx : "UH_FMT"\n", ptr_struct->pptx); + +} + +int tools_open_preboot_flow_ctrl_size(){ + return 4; +} + +void tools_open_preboot_flow_ctrl_dump(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file) { + tools_open_preboot_flow_ctrl_print(ptr_struct, file, 0); +} + +void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=20; + adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->boot_vlan); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->legacy_boot_protocol); + + offset=5; + adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->boot_retry_conut); + + offset=1; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_vlan_en); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_option_rom_en); + +} + +void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=20; + ptr_struct->boot_vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); + + offset=8; + ptr_struct->legacy_boot_protocol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=5; + ptr_struct->boot_retry_conut = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3); + + offset=1; + ptr_struct->boot_vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=0; + ptr_struct->boot_option_rom_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + +} + +void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== boot_settings ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_vlan : "UH_FMT"\n", ptr_struct->boot_vlan); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "legacy_boot_protocol : "UH_FMT"\n", ptr_struct->legacy_boot_protocol); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_retry_conut : "UH_FMT"\n", ptr_struct->boot_retry_conut); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_vlan_en : "UH_FMT"\n", ptr_struct->boot_vlan_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_option_rom_en : "UH_FMT"\n", ptr_struct->boot_option_rom_en); + +} + +int tools_open_boot_settings_size(){ + return 4; +} + +void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file) { + tools_open_boot_settings_print(ptr_struct, file, 0); +} + +void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->boot_pkey); + +} + +void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + ptr_struct->boot_pkey = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + +} + +void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== infiniband_boot_settings ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_pkey : "UH_FMT"\n", ptr_struct->boot_pkey); + +} + +int tools_open_infiniband_boot_settings_size(){ + return 4; +} + +void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file) { + tools_open_infiniband_boot_settings_print(ptr_struct, file, 0); +} + +void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=10; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->target_as_first_hdd_en); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->boot_to_target); + + offset=7; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv6_auto_config_en); + + offset=5; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->vlan_en); + + offset=4; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->tcp_timestamps_en); + + offset=3; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_mutual_auth_en); + + offset=2; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_auth_en); + + offset=1; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->dhcp_iscsi_en); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv4_dhcp_en); + + offset=52; + adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->vlan); + + offset=88; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->lun_busy_retry_count); + + offset=80; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->link_up_delay_time); + +} + +void tools_open_iscsi_settings_unpack(struct tools_open_iscsi_settings *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=10; + ptr_struct->target_as_first_hdd_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=8; + ptr_struct->boot_to_target = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=7; + ptr_struct->ipv6_auto_config_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=5; + ptr_struct->vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=4; + ptr_struct->tcp_timestamps_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=3; + ptr_struct->chap_mutual_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=2; + ptr_struct->chap_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=1; + ptr_struct->dhcp_iscsi_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=0; + ptr_struct->ipv4_dhcp_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=52; + ptr_struct->vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); + + offset=88; + ptr_struct->lun_busy_retry_count = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=80; + ptr_struct->link_up_delay_time = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_iscsi_settings_print(const struct tools_open_iscsi_settings *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== iscsi_settings ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "target_as_first_hdd_en : "UH_FMT"\n", ptr_struct->target_as_first_hdd_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_to_target : "UH_FMT"\n", ptr_struct->boot_to_target); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "ipv6_auto_config_en : "UH_FMT"\n", ptr_struct->ipv6_auto_config_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "vlan_en : "UH_FMT"\n", ptr_struct->vlan_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "tcp_timestamps_en : "UH_FMT"\n", ptr_struct->tcp_timestamps_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "chap_mutual_auth_en : "UH_FMT"\n", ptr_struct->chap_mutual_auth_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "chap_auth_en : "UH_FMT"\n", ptr_struct->chap_auth_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "dhcp_iscsi_en : "UH_FMT"\n", ptr_struct->dhcp_iscsi_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "ipv4_dhcp_en : "UH_FMT"\n", ptr_struct->ipv4_dhcp_en); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "vlan : "UH_FMT"\n", ptr_struct->vlan); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "lun_busy_retry_count : "UH_FMT"\n", ptr_struct->lun_busy_retry_count); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "link_up_delay_time : "UH_FMT"\n", ptr_struct->link_up_delay_time); + +} + +int tools_open_iscsi_settings_size(){ + return 12; +} + +void tools_open_iscsi_settings_dump(const struct tools_open_iscsi_settings *ptr_struct, FILE* file) { + tools_open_iscsi_settings_print(ptr_struct, file, 0); +} + void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; @@ -1267,6 +1608,22 @@ void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* fi fprintf(file, "wol:\n"); tools_open_wol_print(&(ptr_struct->wol), file, indent_level + 1); + adb2c_add_indentation(file, indent_level); + fprintf(file, "iscsi_settings:\n"); + tools_open_iscsi_settings_print(&(ptr_struct->iscsi_settings), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "infiniband_boot_settings:\n"); + tools_open_infiniband_boot_settings_print(&(ptr_struct->infiniband_boot_settings), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "boot_settings:\n"); + tools_open_boot_settings_print(&(ptr_struct->boot_settings), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "preboot_flow_ctrl:\n"); + tools_open_preboot_flow_ctrl_print(&(ptr_struct->preboot_flow_ctrl), file, indent_level + 1); + adb2c_add_indentation(file, indent_level); fprintf(file, "sriov:\n"); tools_open_sriov_print(&(ptr_struct->sriov), file, indent_level + 1); diff --git a/tools_layouts/tools_open_layouts.h b/tools_layouts/tools_open_layouts.h index 53bfd41..0d5b818 100644 --- a/tools_layouts/tools_open_layouts.h +++ b/tools_layouts/tools_open_layouts.h @@ -1,38 +1,20 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * */ + /*** - *** This file was generated at "2014-11-12 13:19:54" + *** This file was generated at "2015-01-22 18:19:26" *** by: *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ ***/ @@ -354,6 +336,128 @@ struct tools_open_sriov { u_int8_t sriov_en; }; +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_preboot_flow_ctrl { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Per priority bit mask. For each priority: +0 – ignore incoming PFC frames regarding this priority. +1 – respect incoming PFC frames on this priority. + */ + /* 0.0 - 0.7 */ + u_int8_t pfcrx; + /* Description - Per priority bit mask. For each priority: + +0 – no PFC pause frames generation for this priority. +1 – generate PFC pause frames for this priority. +PFC and global pauses are mutually exclusive. + */ + /* 0.8 - 0.15 */ + u_int8_t pfctx; + /* Description - For future DCBX support. */ + /* 0.29 - 0.29 */ + u_int8_t pfc_willing; + /* Description - 0 – ignore received pause frames +1 – respect received pause frames + */ + /* 0.30 - 0.30 */ + u_int8_t pprx; + /* Description - 0 – no pause frame generation. +1 – generate pause frames. +PFC and global pauses are mutually exclusive. + */ + /* 0.31 - 4.31 */ + u_int8_t pptx; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_boot_settings { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - VLAN ID for network boot. */ + /* 0.0 - 0.11 */ + u_int16_t boot_vlan; + /* Description - 0 – None – disable legacy boot. +1 – PXE (DHCP/TFTP boot). +2 – iSCSI +3 – PXE + iSCSI +4-255 – Reserved + */ + /* 0.16 - 0.23 */ + u_int8_t legacy_boot_protocol; + /* Description - Number of retries to attempt in case of boot failure. +7 indicate indefinite retries. + */ + /* 0.24 - 0.26 */ + u_int8_t boot_retry_conut; + /* Description - 1 – Enable VLAN mode for network boot. */ + /* 0.30 - 0.30 */ + u_int8_t boot_vlan_en; + /* Description - 0 – disable boot option ROM: disables installation of the UNDI/16 driver. The option ROM is still required to expose CLP, UEFI and so on. +1 – enable boot option ROM + */ + /* 0.31 - 4.31 */ + u_int8_t boot_option_rom_en; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_infiniband_boot_settings { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - P_Key to be used by PXE boot. */ + /* 0.0 - 0.15 */ + u_int16_t boot_pkey; +}; + +/* Description - */ +/* Size in bytes - 12 */ +struct tools_open_iscsi_settings { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Enable or disable whether the iSCSI target will appear as the first hard disk drive in the system. Currently not supported. */ + /* 0.21 - 0.21 */ + u_int8_t target_as_first_hdd_en; + /* Description - Boot to iSCSI target after connection. +• 0 – Enabled +• 1 – Disabled +• 2 - One time disabled +• 3 - Invalid setting + */ + /* 0.22 - 0.23 */ + u_int8_t boot_to_target; + /* Description - Enable IPv6 auto-configuration through DHCP. Currently not supported. */ + /* 0.24 - 0.24 */ + u_int8_t ipv6_auto_config_en; + /* Description - Enable VLAN mode for iSCSI. */ + /* 0.26 - 0.26 */ + u_int8_t vlan_en; + /* Description - Enable the TCP timestamps option for iSCSI TCP connections. */ + /* 0.27 - 0.27 */ + u_int8_t tcp_timestamps_en; + /* Description - Authenticate the target to the initiator using CHAP. */ + /* 0.28 - 0.28 */ + u_int8_t chap_mutual_auth_en; + /* Description - Authenticate the initiator to the target using CHAP. */ + /* 0.29 - 0.29 */ + u_int8_t chap_auth_en; + /* Description - Retrieve iSCSI parameters through DHCP. */ + /* 0.30 - 0.30 */ + u_int8_t dhcp_iscsi_en; + /* Description - Retrieve IPv4 configuration for iSCSI through DHCP. */ + /* 0.31 - 4.31 */ + u_int8_t ipv4_dhcp_en; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - VLAN number. Only valid when vlan_en is 1 */ + /* 4.0 - 4.11 */ + u_int16_t vlan; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - Number of connection attempts to make if the iSCSI target is busy. Valid values are between 0 and 60. */ + /* 8.0 - 8.7 */ + u_int8_t lun_busy_retry_count; + /* Description - Number of seconds to wait after the link comes up before sending packets over the network. */ + /* 8.8 - 8.15 */ + u_int8_t link_up_delay_time; +}; + /* Description - */ /* Size in bytes - 8 */ struct tools_open_wol { @@ -413,6 +517,18 @@ union tools_open_nv_cfg { /* 0.0 - 8.31 */ struct tools_open_wol wol; /* Description - */ + /* 0.0 - 12.31 */ + struct tools_open_iscsi_settings iscsi_settings; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_infiniband_boot_settings infiniband_boot_settings; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_boot_settings boot_settings; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_preboot_flow_ctrl preboot_flow_ctrl; + /* Description - */ /* 0.0 - 4.31 */ struct tools_open_sriov sriov; /* Description - */ @@ -551,6 +667,34 @@ void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* fil int tools_open_sriov_size(); #define TOOLS_OPEN_SRIOV_SIZE (0x4) void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file); +/* preboot_flow_ctrl */ +void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl *ptr_struct, u_int8_t* ptr_buff); +void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file, int indent_level); +int tools_open_preboot_flow_ctrl_size(); +#define TOOLS_OPEN_PREBOOT_FLOW_CTRL_SIZE (0x4) +void tools_open_preboot_flow_ctrl_dump(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file); +/* boot_settings */ +void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff); +void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level); +int tools_open_boot_settings_size(); +#define TOOLS_OPEN_BOOT_SETTINGS_SIZE (0x4) +void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file); +/* infiniband_boot_settings */ +void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff); +void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level); +int tools_open_infiniband_boot_settings_size(); +#define TOOLS_OPEN_INFINIBAND_BOOT_SETTINGS_SIZE (0x4) +void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file); +/* iscsi_settings */ +void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_struct, u_int8_t* ptr_buff); +void tools_open_iscsi_settings_unpack(struct tools_open_iscsi_settings *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_iscsi_settings_print(const struct tools_open_iscsi_settings *ptr_struct, FILE* file, int indent_level); +int tools_open_iscsi_settings_size(); +#define TOOLS_OPEN_ISCSI_SETTINGS_SIZE (0xc) +void tools_open_iscsi_settings_dump(const struct tools_open_iscsi_settings *ptr_struct, FILE* file); /* wol */ void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff); void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* ptr_buff); -- 2.41.0