]> git.leonardobizzoni.com Git - pioneer-stm32/commitdiff
config periferiche okok, da sistemare STM32Hardware.h
authorFederica Di Lauro <federicadilauro1998@gmail.com>
Wed, 11 Sep 2019 10:11:24 +0000 (12:11 +0200)
committerFederica Di Lauro <federicadilauro1998@gmail.com>
Wed, 11 Sep 2019 10:11:24 +0000 (12:11 +0200)
374 files changed:
rosserial_test/.cproject
rosserial_test/.settings/language.settings.xml
rosserial_test/.settings/org.eclipse.core.runtime.prefs [new file with mode: 0644]
rosserial_test/Debug/Drivers/STM32F7xx_HAL_Driver/Src/subdir.mk
rosserial_test/Debug/Src/subdir.mk
rosserial_test/Debug/Startup/subdir.mk
rosserial_test/Debug/makefile
rosserial_test/Debug/objects.list
rosserial_test/Debug/rosserial_test.list
rosserial_test/Inc/STM32Hardware.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestAction.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestActionResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestRequestAction.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestRequestActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestRequestActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestRequestActionResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestRequestFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestRequestGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestRequestResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TestResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TwoIntsAction.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TwoIntsActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TwoIntsActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TwoIntsActionResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TwoIntsFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TwoIntsGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib/TwoIntsResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_msgs/GoalID.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_msgs/GoalStatus.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_msgs/GoalStatusArray.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/AveragingAction.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/AveragingActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/AveragingActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/AveragingActionResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/AveragingFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/AveragingGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/AveragingResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/FibonacciAction.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/FibonacciActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/FibonacciActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/FibonacciActionResult.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/FibonacciFeedback.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/FibonacciGoal.h [new file with mode: 0644]
rosserial_test/Inc/actionlib_tutorials/FibonacciResult.h [new file with mode: 0644]
rosserial_test/Inc/bond/Constants.h [new file with mode: 0644]
rosserial_test/Inc/bond/Status.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/FollowJointTrajectoryAction.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/FollowJointTrajectoryFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/FollowJointTrajectoryGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/FollowJointTrajectoryResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommand.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommandAction.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommandActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommandActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommandActionResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommandFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommandGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/GripperCommandResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointControllerState.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointJog.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTolerance.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryAction.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryActionResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryControllerState.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/JointTrajectoryResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PidState.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PointHeadAction.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PointHeadActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PointHeadActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PointHeadActionResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PointHeadFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PointHeadGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/PointHeadResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/QueryCalibrationState.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/QueryTrajectoryState.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/SingleJointPositionAction.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/SingleJointPositionActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/SingleJointPositionActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/SingleJointPositionActionResult.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/SingleJointPositionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/SingleJointPositionGoal.h [new file with mode: 0644]
rosserial_test/Inc/control_msgs/SingleJointPositionResult.h [new file with mode: 0644]
rosserial_test/Inc/control_toolbox/SetPidGains.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/ControllerState.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/ControllerStatistics.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/ControllersStatistics.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/HardwareInterfaceResources.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/ListControllerTypes.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/ListControllers.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/LoadController.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/ReloadControllerLibraries.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/SwitchController.h [new file with mode: 0644]
rosserial_test/Inc/controller_manager_msgs/UnloadController.h [new file with mode: 0644]
rosserial_test/Inc/diagnostic_msgs/AddDiagnostics.h [new file with mode: 0644]
rosserial_test/Inc/diagnostic_msgs/DiagnosticArray.h [new file with mode: 0644]
rosserial_test/Inc/diagnostic_msgs/DiagnosticStatus.h [new file with mode: 0644]
rosserial_test/Inc/diagnostic_msgs/KeyValue.h [new file with mode: 0644]
rosserial_test/Inc/diagnostic_msgs/SelfTest.h [new file with mode: 0644]
rosserial_test/Inc/duration.cpp [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/BoolParameter.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/Config.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/ConfigDescription.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/DoubleParameter.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/Group.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/GroupState.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/IntParameter.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/ParamDescription.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/Reconfigure.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/SensorLevels.h [new file with mode: 0644]
rosserial_test/Inc/dynamic_reconfigure/StrParameter.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ApplyBodyWrench.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ApplyJointEffort.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/BodyRequest.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ContactState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ContactsState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/DeleteLight.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/DeleteModel.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetJointProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetLightProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetLinkProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetLinkState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetModelProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetModelState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetPhysicsProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/GetWorldProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/JointRequest.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/LinkState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/LinkStates.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ModelState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ModelStates.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ODEJointProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/ODEPhysics.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetJointProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetJointTrajectory.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetLightProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetLinkProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetLinkState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetModelConfiguration.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetModelState.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SetPhysicsProperties.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/SpawnModel.h [new file with mode: 0644]
rosserial_test/Inc/gazebo_msgs/WorldState.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Accel.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/AccelStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/AccelWithCovariance.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/AccelWithCovarianceStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Inertia.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/InertiaStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Point.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Point32.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/PointStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Polygon.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/PolygonStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Pose.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Pose2D.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/PoseArray.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/PoseStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/PoseWithCovariance.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/PoseWithCovarianceStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Quaternion.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/QuaternionStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Transform.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/TransformStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Twist.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/TwistStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/TwistWithCovariance.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/TwistWithCovarianceStamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Vector3.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Vector3Stamped.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/Wrench.h [new file with mode: 0644]
rosserial_test/Inc/geometry_msgs/WrenchStamped.h [new file with mode: 0644]
rosserial_test/Inc/laser_assembler/AssembleScans.h [new file with mode: 0644]
rosserial_test/Inc/laser_assembler/AssembleScans2.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/GetMapROI.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/GetPointMap.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/GetPointMapROI.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/OccupancyGridUpdate.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/PointCloud2Update.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/ProjectedMap.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/ProjectedMapInfo.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/ProjectedMapsInfo.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/SaveMap.h [new file with mode: 0644]
rosserial_test/Inc/map_msgs/SetMapProjections.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMap.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMapAction.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMapActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMapActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMapActionResult.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMapFeedback.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMapGoal.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetMapResult.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GetPlan.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/GridCells.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/MapMetaData.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/OccupancyGrid.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/Odometry.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/Path.h [new file with mode: 0644]
rosserial_test/Inc/nav_msgs/SetMap.h [new file with mode: 0644]
rosserial_test/Inc/nodelet/NodeletList.h [new file with mode: 0644]
rosserial_test/Inc/nodelet/NodeletLoad.h [new file with mode: 0644]
rosserial_test/Inc/nodelet/NodeletUnload.h [new file with mode: 0644]
rosserial_test/Inc/pcl_msgs/ModelCoefficients.h [new file with mode: 0644]
rosserial_test/Inc/pcl_msgs/PointIndices.h [new file with mode: 0644]
rosserial_test/Inc/pcl_msgs/PolygonMesh.h [new file with mode: 0644]
rosserial_test/Inc/pcl_msgs/Vertices.h [new file with mode: 0644]
rosserial_test/Inc/polled_camera/GetPolledImage.h [new file with mode: 0644]
rosserial_test/Inc/ros.h [new file with mode: 0644]
rosserial_test/Inc/ros/duration.h [new file with mode: 0644]
rosserial_test/Inc/ros/msg.h [new file with mode: 0644]
rosserial_test/Inc/ros/node_handle.h [new file with mode: 0644]
rosserial_test/Inc/ros/publisher.h [new file with mode: 0644]
rosserial_test/Inc/ros/ros_time.h [new file with mode: 0644]
rosserial_test/Inc/ros/service_client.h [new file with mode: 0644]
rosserial_test/Inc/ros/service_server.h [new file with mode: 0644]
rosserial_test/Inc/ros/subscriber.h [new file with mode: 0644]
rosserial_test/Inc/roscpp/Empty.h [new file with mode: 0644]
rosserial_test/Inc/roscpp/GetLoggers.h [new file with mode: 0644]
rosserial_test/Inc/roscpp/Logger.h [new file with mode: 0644]
rosserial_test/Inc/roscpp/SetLoggerLevel.h [new file with mode: 0644]
rosserial_test/Inc/roscpp_tutorials/TwoInts.h [new file with mode: 0644]
rosserial_test/Inc/rosgraph_msgs/Clock.h [new file with mode: 0644]
rosserial_test/Inc/rosgraph_msgs/Log.h [new file with mode: 0644]
rosserial_test/Inc/rosgraph_msgs/TopicStatistics.h [new file with mode: 0644]
rosserial_test/Inc/rospy_tutorials/AddTwoInts.h [new file with mode: 0644]
rosserial_test/Inc/rospy_tutorials/BadTwoInts.h [new file with mode: 0644]
rosserial_test/Inc/rospy_tutorials/Floats.h [new file with mode: 0644]
rosserial_test/Inc/rospy_tutorials/HeaderString.h [new file with mode: 0644]
rosserial_test/Inc/rosserial_msgs/Log.h [new file with mode: 0644]
rosserial_test/Inc/rosserial_msgs/RequestMessageInfo.h [new file with mode: 0644]
rosserial_test/Inc/rosserial_msgs/RequestParam.h [new file with mode: 0644]
rosserial_test/Inc/rosserial_msgs/RequestServiceInfo.h [new file with mode: 0644]
rosserial_test/Inc/rosserial_msgs/TopicInfo.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/BatteryState.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/CameraInfo.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/ChannelFloat32.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/CompressedImage.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/FluidPressure.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/Illuminance.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/Image.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/Imu.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/JointState.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/Joy.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/JoyFeedback.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/JoyFeedbackArray.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/LaserEcho.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/LaserScan.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/MagneticField.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/MultiDOFJointState.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/MultiEchoLaserScan.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/NavSatFix.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/NavSatStatus.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/PointCloud.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/PointCloud2.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/PointField.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/Range.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/RegionOfInterest.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/RelativeHumidity.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/SetCameraInfo.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/Temperature.h [new file with mode: 0644]
rosserial_test/Inc/sensor_msgs/TimeReference.h [new file with mode: 0644]
rosserial_test/Inc/shape_msgs/Mesh.h [new file with mode: 0644]
rosserial_test/Inc/shape_msgs/MeshTriangle.h [new file with mode: 0644]
rosserial_test/Inc/shape_msgs/Plane.h [new file with mode: 0644]
rosserial_test/Inc/shape_msgs/SolidPrimitive.h [new file with mode: 0644]
rosserial_test/Inc/smach_msgs/SmachContainerInitialStatusCmd.h [new file with mode: 0644]
rosserial_test/Inc/smach_msgs/SmachContainerStatus.h [new file with mode: 0644]
rosserial_test/Inc/smach_msgs/SmachContainerStructure.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Bool.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Byte.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/ByteMultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Char.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/ColorRGBA.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Duration.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Empty.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Float32.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Float32MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Float64.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Float64MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Header.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int16.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int16MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int32.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int32MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int64.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int64MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int8.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Int8MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/MultiArrayDimension.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/MultiArrayLayout.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/String.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/Time.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt16.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt16MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt32.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt32MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt64.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt64MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt8.h [new file with mode: 0644]
rosserial_test/Inc/std_msgs/UInt8MultiArray.h [new file with mode: 0644]
rosserial_test/Inc/std_srvs/Empty.h [new file with mode: 0644]
rosserial_test/Inc/std_srvs/SetBool.h [new file with mode: 0644]
rosserial_test/Inc/std_srvs/Trigger.h [new file with mode: 0644]
rosserial_test/Inc/stereo_msgs/DisparityImage.h [new file with mode: 0644]
rosserial_test/Inc/stm32f7xx_hal_conf.h
rosserial_test/Inc/test.hpp
rosserial_test/Inc/tf/FrameGraph.h [new file with mode: 0644]
rosserial_test/Inc/tf/tf.h [new file with mode: 0644]
rosserial_test/Inc/tf/tfMessage.h [new file with mode: 0644]
rosserial_test/Inc/tf/transform_broadcaster.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/FrameGraph.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/LookupTransformAction.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/LookupTransformActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/LookupTransformActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/LookupTransformActionResult.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/LookupTransformFeedback.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/LookupTransformGoal.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/LookupTransformResult.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/TF2Error.h [new file with mode: 0644]
rosserial_test/Inc/tf2_msgs/TFMessage.h [new file with mode: 0644]
rosserial_test/Inc/theora_image_transport/Packet.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/DemuxAdd.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/DemuxDelete.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/DemuxList.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/DemuxSelect.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/MuxAdd.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/MuxDelete.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/MuxList.h [new file with mode: 0644]
rosserial_test/Inc/topic_tools/MuxSelect.h [new file with mode: 0644]
rosserial_test/Inc/trajectory_msgs/JointTrajectory.h [new file with mode: 0644]
rosserial_test/Inc/trajectory_msgs/JointTrajectoryPoint.h [new file with mode: 0644]
rosserial_test/Inc/trajectory_msgs/MultiDOFJointTrajectory.h [new file with mode: 0644]
rosserial_test/Inc/trajectory_msgs/MultiDOFJointTrajectoryPoint.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/ShapeAction.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/ShapeActionFeedback.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/ShapeActionGoal.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/ShapeActionResult.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/ShapeFeedback.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/ShapeGoal.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/ShapeResult.h [new file with mode: 0644]
rosserial_test/Inc/turtle_actionlib/Velocity.h [new file with mode: 0644]
rosserial_test/Inc/turtlesim/Color.h [new file with mode: 0644]
rosserial_test/Inc/turtlesim/Kill.h [new file with mode: 0644]
rosserial_test/Inc/turtlesim/Pose.h [new file with mode: 0644]
rosserial_test/Inc/turtlesim/SetPen.h [new file with mode: 0644]
rosserial_test/Inc/turtlesim/Spawn.h [new file with mode: 0644]
rosserial_test/Inc/turtlesim/TeleportAbsolute.h [new file with mode: 0644]
rosserial_test/Inc/turtlesim/TeleportRelative.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/ImageMarker.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/InteractiveMarker.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/InteractiveMarkerControl.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/InteractiveMarkerFeedback.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/InteractiveMarkerInit.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/InteractiveMarkerPose.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/InteractiveMarkerUpdate.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/Marker.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/MarkerArray.h [new file with mode: 0644]
rosserial_test/Inc/visualization_msgs/MenuEntry.h [new file with mode: 0644]
rosserial_test/STM32F767ZITX_FLASH.ld
rosserial_test/Src/main.cpp
rosserial_test/Src/ros_time.cpp [new file with mode: 0644]
rosserial_test/Src/stm32f7xx_hal_msp.c
rosserial_test/Src/test.cpp
rosserial_test/rosserial_test.ioc

index df4bfd5858a7eca1a401845927cdd00eb3b4f0a3..e68b1917b1fde82319e13f9e33a8cbae4890b3ec 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        <storageModule moduleId="org.eclipse.cdt.core.settings">
-               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095">
-                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246" moduleId="org.eclipse.cdt.core.settings" name="Debug">
                                <externalSettings/>
                                <extensions>
                                        <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
                                </extensions>
                        </storageModule>
                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
-                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
-                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095." name="/" resourcePath="">
-                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.181771798" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.2005976541" name="Internal Toolchain Type" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.2125694003" name="Internal Toolchain Version" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" useByScannerDiscovery="false" value="7-2018-q2-update" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.89082179" name="Mcu" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="false" value="STM32F767ZITx" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1936592400" name="CpuId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1283331995" name="CpuCoreId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1338405230" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.243940022" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.94133437" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.257710338" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.103691051" name="Runtime library" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.value.nano_c_standard_cpp" valueType="enumerated"/>
-                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.405241138" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
-                                                       <builder buildPath="${workspace_loc:/rosserial_test}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1310841206" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.837465815" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1644413690" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.1438925740" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" useByScannerDiscovery="false" valueType="includePath"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.435153277" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
+                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
+                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246." name="/" resourcePath="">
+                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.1235743885" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.1649557231" name="Internal Toolchain Type" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.938820160" name="Internal Toolchain Version" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.985627547" name="Mcu" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.652418242" name="CpuId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.381533972" name="CpuCoreId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1020320664" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.724904261" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.425886289" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1361488801" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.941432903" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.value.standard_c_standard_cpp" valueType="enumerated"/>
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1430742399" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
+                                                       <builder buildPath="${workspace_loc:/rosserial_test}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1401738395" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.752342455" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1273391886" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.1603889327" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="../"/>
+                                                               </option>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1113516996" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.103525243" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.541616440" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1116060984" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.1205738507" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.101636082" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.1716851587" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1160675817" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2008776513" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
                                                                        <listOptionValue builtIn="false" value="STM32F767xx"/>
                                                                        <listOptionValue builtIn="false" value="DEBUG"/>
                                                                </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1037789979" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.869193768" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.234078500" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1659970660" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.92605140" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.204111102" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.713815930" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.1153837480" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
-                                                                       <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
-                                                                       <listOptionValue builtIn="false" value="STM32F767xx"/>
-                                                                       <listOptionValue builtIn="false" value="DEBUG"/>
-                                                               </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.1864928907" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.573995662" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1648824122" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.207700085" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.497001426" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.762137204" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.1987553956" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+                                                                       <listOptionValue builtIn="false" value="STM32F767xx"/>
+                                                                       <listOptionValue builtIn="false" value="DEBUG"/>
+                                                               </option>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1808157565" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1572335855" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.2131289988" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls.1126744132" name="System calls" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.value.minimalimplementation" valueType="enumerated"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.1121246529" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1275115093" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.2081920304" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.1504793776" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1720345710" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.77887759" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" useByScannerDiscovery="false" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.474763358" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1565139484" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.751763727" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.223620698" name="System calls" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls.value.minimalimplementation" valueType="enumerated"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.936169680" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1244811514" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1630807846" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.395528197" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1587865597" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.155762791" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.132010249" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1945213433" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.526822713" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.41922372" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.838809643" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1797065418" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.678559595" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1913910526" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.539390466" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.604269826" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1316994310" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
                                                </toolChain>
                                        </folderInfo>
                                        <sourceEntries>
                        </storageModule>
                        <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
                </cconfiguration>
-               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.831272840">
-                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.831272840" moduleId="org.eclipse.cdt.core.settings" name="Release">
+               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177" moduleId="org.eclipse.cdt.core.settings" name="Release">
                                <externalSettings/>
                                <extensions>
                                        <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
                                </extensions>
                        </storageModule>
                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
-                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.831272840" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
-                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.831272840." name="/" resourcePath="">
-                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.631027101" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.1420860443" name="Internal Toolchain Type" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.1532997460" name="Internal Toolchain Version" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1926378677" name="Mcu" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1059845821" name="CpuId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1276421389" name="CpuCoreId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1159795789" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.140514700" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1793644687" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1166453194" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
-                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.811868198" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
-                                                       <builder buildPath="${workspace_loc:/rosserial_test}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.351540438" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1451987007" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1683356634" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.1744574976" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" valueType="includePath"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1774086221" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
+                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
+                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177." name="/" resourcePath="">
+                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.851608397" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.2079583370" name="Internal Toolchain Type" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.2114431755" name="Internal Toolchain Version" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1280630371" name="Mcu" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.938725040" name="CpuId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.854735963" name="CpuCoreId" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1733224565" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1462808122" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.2019485709" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1418459043" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.795049488" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
+                                                       <builder buildPath="${workspace_loc:/rosserial_test}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1832009400" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.647530436" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.338898279" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.275881175" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="../"/>
+                                                               </option>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1870557161" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.231787141" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.318206656" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.360722495" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.409220822" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.873001624" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.787593002" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.598246412" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.828141580" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
                                                                        <listOptionValue builtIn="false" value="STM32F767xx"/>
                                                                </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.125950714" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1450277692" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1552901374" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1439561519" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1699301827" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.522789114" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.370816538" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.718701217" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
-                                                                       <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
-                                                                       <listOptionValue builtIn="false" value="STM32F767xx"/>
-                                                               </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.1392931623" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.105644411" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.573605373" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1136888759" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.554705507" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1951458697" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.1290928021" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
+                                                                       <listOptionValue builtIn="false" value="STM32F767xx"/>
+                                                               </option>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.930142684" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.2140540420" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.567038233" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls.544112779" name="System calls" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.value.minimalimplementation" valueType="enumerated"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.2084135839" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.389798558" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.1377672154" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.113357705" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.675473468" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.2008217500" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.670787088" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1113951157" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.840911601" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.32080964" name="System calls" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls.value.minimalimplementation" valueType="enumerated"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.1053120963" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1670020610" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1343671826" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1219055772" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.316050557" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.2002687647" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.639361991" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.633348061" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.271106936" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1518282746" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.691924534" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1732901055" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.2128378234" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.566855543" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.112262915" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.494864328" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1620968020" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
                                                </toolChain>
                                        </folderInfo>
                                        <sourceEntries>
                <project id="rosserial_test.null.145871132" name="rosserial_test"/>
        </storageModule>
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+       <storageModule moduleId="refreshScope" versionNumber="2">
+               <configuration configurationName="Debug">
+                       <resource resourceType="PROJECT" workspacePath="/rosserial_test"/>
+               </configuration>
+               <configuration configurationName="Release">
+                       <resource resourceType="PROJECT" workspacePath="/rosserial_test"/>
+               </configuration>
+       </storageModule>
        <storageModule moduleId="scannerConfiguration">
                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.114941087;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.114941087.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1822001342;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.2070183789">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.101636082;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1659970660">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
                <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.831272840;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.831272840.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1699301827;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1951458697">
                        <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
                </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.105644411;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.930142684">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.112863703;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.112863703.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1267752450;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.296136203">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.573995662;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1808157565">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
                <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.103525243;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.234078500">
                        <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
                </scannerConfigBuildInfo>
                <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.92605140;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.762137204">
                        <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
                </scannerConfigBuildInfo>
-       </storageModule>
-       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
-       <storageModule moduleId="refreshScope" versionNumber="2">
-               <configuration configurationName="Debug">
-                       <resource resourceType="PROJECT" workspacePath="/rosserial_test"/>
-               </configuration>
-               <configuration configurationName="Release">
-                       <resource resourceType="PROJECT" workspacePath="/rosserial_test"/>
-               </configuration>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.873001624;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1439561519">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
        </storageModule>
 </cproject>
index 8878d9477043d54c2066e2f153e2f1405f3128f7..7aa498b8022d9ccb8452095fc3075c451bfd3695 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <project>
-       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1344726095" name="Debug">
+       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1770731246" name="Debug">
                <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
                        <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
                        <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
@@ -12,7 +12,7 @@
                        </provider>
                </extension>
        </configuration>
-       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.831272840" name="Release">
+       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1030040177" name="Release">
                <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
                        <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
                        <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
diff --git a/rosserial_test/.settings/org.eclipse.core.runtime.prefs b/rosserial_test/.settings/org.eclipse.core.runtime.prefs
new file mode 100644 (file)
index 0000000..71db4fe
--- /dev/null
@@ -0,0 +1,3 @@
+content-types/enabled=true
+content-types/org.eclipse.cdt.core.cxxHeader/file-extensions=h
+eclipse.preferences.version=1
index 9ae68ba32109197f1adc3861237c0cf6ef41c9d3..e8ba2fbae78a19329638904ab2ceaaad1fa4846d 100644 (file)
@@ -66,39 +66,39 @@ C_DEPS += \
 
 # Each subdirectory must supply rules for building sources it contributes
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.o: ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 
index 881eca42529d617ad8906302bcc48d8e636c2238..024deb1d5f9f42a2d61f6dc00d83411297dfa178 100644 (file)
@@ -12,10 +12,12 @@ C_SRCS += \
 
 CPP_SRCS += \
 ../Src/main.cpp \
+../Src/ros_time.cpp \
 ../Src/test.cpp 
 
 OBJS += \
 ./Src/main.o \
+./Src/ros_time.o \
 ./Src/stm32f7xx_hal_msp.o \
 ./Src/stm32f7xx_it.o \
 ./Src/syscalls.o \
@@ -32,22 +34,25 @@ C_DEPS += \
 
 CPP_DEPS += \
 ./Src/main.d \
+./Src/ros_time.d \
 ./Src/test.d 
 
 
 # Each subdirectory must supply rules for building sources it contributes
 Src/main.o: ../Src/main.cpp
-       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/main.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/main.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+Src/ros_time.o: ../Src/ros_time.cpp
+       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/ros_time.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/stm32f7xx_hal_msp.o: ../Src/stm32f7xx_hal_msp.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/stm32f7xx_hal_msp.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/stm32f7xx_hal_msp.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/stm32f7xx_it.o: ../Src/stm32f7xx_it.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/stm32f7xx_it.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/stm32f7xx_it.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/syscalls.o: ../Src/syscalls.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/syscalls.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/syscalls.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/sysmem.o: ../Src/sysmem.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/sysmem.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/sysmem.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/system_stm32f7xx.o: ../Src/system_stm32f7xx.c
-       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/system_stm32f7xx.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/system_stm32f7xx.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/test.o: ../Src/test.cpp
-       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/test.d" -MT"$@" --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/test.d" -MT"$@"  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 
index a32d88b46418c1da9c8c6c9a7cd6351c2143fef2..c14a1b12c50929bf9d54bf486086cd096e738d7a 100644 (file)
@@ -12,5 +12,5 @@ OBJS += \
 
 # Each subdirectory must supply rules for building sources it contributes
 Startup/%.o: ../Startup/%.s
-       arm-none-eabi-gcc -mcpu=cortex-m7 -g3 -c -x assembler-with-cpp --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@" "$<"
+       arm-none-eabi-gcc -mcpu=cortex-m7 -g3 -c -I../ -x assembler-with-cpp  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@" "$<"
 
index ebdda8a79323cc82d0215aecbdd04a19a7703772..e588334dd394eb91df0ba6bbb0b010f4cf9038c4 100644 (file)
@@ -53,7 +53,7 @@ all: rosserial_test.elf secondary-outputs
 
 # Tool invocations
 rosserial_test.elf: $(OBJS) $(USER_OBJS) /home/fdila/Projects/otto/rosserial_test/STM32F767ZITX_FLASH.ld
-       arm-none-eabi-g++ -o "rosserial_test.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m7 -T"/home/fdila/Projects/otto/rosserial_test/STM32F767ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="rosserial_test.map" -Wl,--gc-sections -static --specs=nano_c_standard_cpp.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group
+       arm-none-eabi-g++ -o "rosserial_test.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m7 -T"/home/fdila/Projects/otto/rosserial_test/STM32F767ZITX_FLASH.ld" -Wl,-Map="rosserial_test.map" -Wl,--gc-sections -static  -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group
        @echo 'Finished building target: $@'
        @echo ' '
 
index 2ea29fa25bc05f507ac16118f5bade3409870086..db8f4f99ef6f788fac25b0b13ab2b04e5cf6bb75 100644 (file)
@@ -17,6 +17,7 @@
 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.o"
 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.o"
 "Src/main.o"
+"Src/ros_time.o"
 "Src/stm32f7xx_hal_msp.o"
 "Src/stm32f7xx_it.o"
 "Src/syscalls.o"
index d3ce79de2cd192711845ae514b9d33af227ca646..444ce02c0006cbf78699a3814be7418e447d86df 100644 (file)
@@ -5,6326 +5,32564 @@ Sections:
 Idx Name          Size      VMA       LMA       File off  Algn
   0 .isr_vector   000001f8  08000000  08000000  00010000  2**0
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
-  1 .text         00002680  080001f8  080001f8  000101f8  2**2
+  1 .text         000117b0  08000200  08000200  00010200  2**4
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
-  2 .rodata       00000018  08002878  08002878  00012878  2**2
+  2 .rodata       000016f0  080119b0  080119b0  000219b0  2**3
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
-  3 .ARM.extab    00000000  08002890  08002890  0002000c  2**0
-                  CONTENTS
-  4 .ARM          00000008  08002890  08002890  00012890  2**2
+  3 .ARM.extab    00000100  080130a0  080130a0  000230a0  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
-  5 .preinit_array 00000000  08002898  08002898  0002000c  2**0
+  4 .ARM          00000188  080131a0  080131a0  000231a0  2**2
+                  CONTENTS, ALLOC, LOAD, READONLY, DATA
+  5 .preinit_array 00000000  08013328  08013328  000309c0  2**0
                   CONTENTS, ALLOC, LOAD, DATA
-  6 .init_array   00000004  08002898  08002898  00012898  2**2
+  6 .init_array   0000000c  08013328  08013328  00023328  2**2
                   CONTENTS, ALLOC, LOAD, DATA
-  7 .fini_array   00000004  0800289c  0800289c  0001289c  2**2
+  7 .fini_array   00000004  08013334  08013334  00023334  2**2
                   CONTENTS, ALLOC, LOAD, DATA
-  8 .data         0000000c  20000000  080028a0  00020000  2**2
+  8 .data         000009c0  20000000  08013338  00030000  2**3
                   CONTENTS, ALLOC, LOAD, DATA
-  9 .bss          000000a0  2000000c  080028ac  0002000c  2**2
+  9 .bss          0000014c  200009c0  08013cf8  000309c0  2**2
                   ALLOC
- 10 ._user_heap_stack 00000604  200000ac  080028ac  000200ac  2**0
+ 10 ._user_heap_stack 00000604  20000b0c  08013cf8  00030b0c  2**0
                   ALLOC
- 11 .ARM.attributes 0000002e  00000000  00000000  0002000c  2**0
+ 11 .ARM.attributes 0000002e  00000000  00000000  000309c0  2**0
                   CONTENTS, READONLY
- 12 .debug_info   00006d60  00000000  00000000  0002003a  2**0
+ 12 .debug_info   00010b10  00000000  00000000  000309ee  2**0
                   CONTENTS, READONLY, DEBUGGING
- 13 .debug_abbrev 00001308  00000000  00000000  00026d9a  2**0
+ 13 .debug_abbrev 0000253c  00000000  00000000  000414fe  2**0
                   CONTENTS, READONLY, DEBUGGING
- 14 .debug_aranges 00000690  00000000  00000000  000280a8  2**3
+ 14 .debug_aranges 00000d70  00000000  00000000  00043a40  2**3
                   CONTENTS, READONLY, DEBUGGING
- 15 .debug_ranges 000005d8  00000000  00000000  00028738  2**3
+ 15 .debug_ranges 00000c90  00000000  00000000  000447b0  2**3
                   CONTENTS, READONLY, DEBUGGING
- 16 .debug_macro  00026fc0  00000000  00000000  00028d10  2**0
+ 16 .debug_macro  0002b117  00000000  00000000  00045440  2**0
                   CONTENTS, READONLY, DEBUGGING
- 17 .debug_line   00006167  00000000  00000000  0004fcd0  2**0
+ 17 .debug_line   0000a042  00000000  00000000  00070557  2**0
                   CONTENTS, READONLY, DEBUGGING
- 18 .debug_str    000e8170  00000000  00000000  00055e37  2**0
+ 18 .debug_str    000f9e37  00000000  00000000  0007a599  2**0
                   CONTENTS, READONLY, DEBUGGING
- 19 .comment      0000007b  00000000  00000000  0013dfa7  2**0
+ 19 .comment      0000007b  00000000  00000000  001743d0  2**0
                   CONTENTS, READONLY
- 20 .debug_frame  0000195c  00000000  00000000  0013e024  2**2
+ 20 .debug_frame  00005e00  00000000  00000000  0017444c  2**2
                   CONTENTS, READONLY, DEBUGGING
 
 Disassembly of section .text:
 
-080001f8 <__do_global_dtors_aux>:
- 80001f8:      b510            push    {r4, lr}
- 80001fa:      4c05            ldr     r4, [pc, #20]   ; (8000210 <__do_global_dtors_aux+0x18>)
- 80001fc:      7823            ldrb    r3, [r4, #0]
- 80001fe:      b933            cbnz    r3, 800020e <__do_global_dtors_aux+0x16>
- 8000200:      4b04            ldr     r3, [pc, #16]   ; (8000214 <__do_global_dtors_aux+0x1c>)
- 8000202:      b113            cbz     r3, 800020a <__do_global_dtors_aux+0x12>
- 8000204:      4804            ldr     r0, [pc, #16]   ; (8000218 <__do_global_dtors_aux+0x20>)
- 8000206:      f3af 8000       nop.w
- 800020a:      2301            movs    r3, #1
- 800020c:      7023            strb    r3, [r4, #0]
- 800020e:      bd10            pop     {r4, pc}
- 8000210:      2000000c        .word   0x2000000c
- 8000214:      00000000        .word   0x00000000
- 8000218:      08002860        .word   0x08002860
-
-0800021c <frame_dummy>:
- 800021c:      b508            push    {r3, lr}
- 800021e:      4b03            ldr     r3, [pc, #12]   ; (800022c <frame_dummy+0x10>)
- 8000220:      b11b            cbz     r3, 800022a <frame_dummy+0xe>
- 8000222:      4903            ldr     r1, [pc, #12]   ; (8000230 <frame_dummy+0x14>)
- 8000224:      4803            ldr     r0, [pc, #12]   ; (8000234 <frame_dummy+0x18>)
- 8000226:      f3af 8000       nop.w
- 800022a:      bd08            pop     {r3, pc}
- 800022c:      00000000        .word   0x00000000
- 8000230:      20000010        .word   0x20000010
- 8000234:      08002860        .word   0x08002860
-
-08000238 <__aeabi_uldivmod>:
- 8000238:      b953            cbnz    r3, 8000250 <__aeabi_uldivmod+0x18>
- 800023a:      b94a            cbnz    r2, 8000250 <__aeabi_uldivmod+0x18>
- 800023c:      2900            cmp     r1, #0
- 800023e:      bf08            it      eq
- 8000240:      2800            cmpeq   r0, #0
- 8000242:      bf1c            itt     ne
- 8000244:      f04f 31ff       movne.w r1, #4294967295 ; 0xffffffff
- 8000248:      f04f 30ff       movne.w r0, #4294967295 ; 0xffffffff
- 800024c:      f000 b972       b.w     8000534 <__aeabi_idiv0>
- 8000250:      f1ad 0c08       sub.w   ip, sp, #8
- 8000254:      e96d ce04       strd    ip, lr, [sp, #-16]!
- 8000258:      f000 f806       bl      8000268 <__udivmoddi4>
- 800025c:      f8dd e004       ldr.w   lr, [sp, #4]
- 8000260:      e9dd 2302       ldrd    r2, r3, [sp, #8]
- 8000264:      b004            add     sp, #16
- 8000266:      4770            bx      lr
-
-08000268 <__udivmoddi4>:
- 8000268:      e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
- 800026c:      9e08            ldr     r6, [sp, #32]
- 800026e:      4604            mov     r4, r0
- 8000270:      4688            mov     r8, r1
- 8000272:      2b00            cmp     r3, #0
- 8000274:      d14b            bne.n   800030e <__udivmoddi4+0xa6>
- 8000276:      428a            cmp     r2, r1
- 8000278:      4615            mov     r5, r2
- 800027a:      d967            bls.n   800034c <__udivmoddi4+0xe4>
- 800027c:      fab2 f282       clz     r2, r2
- 8000280:      b14a            cbz     r2, 8000296 <__udivmoddi4+0x2e>
- 8000282:      f1c2 0720       rsb     r7, r2, #32
- 8000286:      fa01 f302       lsl.w   r3, r1, r2
- 800028a:      fa20 f707       lsr.w   r7, r0, r7
- 800028e:      4095            lsls    r5, r2
- 8000290:      ea47 0803       orr.w   r8, r7, r3
- 8000294:      4094            lsls    r4, r2
- 8000296:      ea4f 4e15       mov.w   lr, r5, lsr #16
- 800029a:      0c23            lsrs    r3, r4, #16
- 800029c:      fbb8 f7fe       udiv    r7, r8, lr
- 80002a0:      fa1f fc85       uxth.w  ip, r5
- 80002a4:      fb0e 8817       mls     r8, lr, r7, r8
- 80002a8:      ea43 4308       orr.w   r3, r3, r8, lsl #16
- 80002ac:      fb07 f10c       mul.w   r1, r7, ip
- 80002b0:      4299            cmp     r1, r3
- 80002b2:      d909            bls.n   80002c8 <__udivmoddi4+0x60>
- 80002b4:      18eb            adds    r3, r5, r3
- 80002b6:      f107 30ff       add.w   r0, r7, #4294967295     ; 0xffffffff
- 80002ba:      f080 811b       bcs.w   80004f4 <__udivmoddi4+0x28c>
- 80002be:      4299            cmp     r1, r3
- 80002c0:      f240 8118       bls.w   80004f4 <__udivmoddi4+0x28c>
- 80002c4:      3f02            subs    r7, #2
- 80002c6:      442b            add     r3, r5
- 80002c8:      1a5b            subs    r3, r3, r1
- 80002ca:      b2a4            uxth    r4, r4
- 80002cc:      fbb3 f0fe       udiv    r0, r3, lr
- 80002d0:      fb0e 3310       mls     r3, lr, r0, r3
- 80002d4:      ea44 4403       orr.w   r4, r4, r3, lsl #16
- 80002d8:      fb00 fc0c       mul.w   ip, r0, ip
- 80002dc:      45a4            cmp     ip, r4
- 80002de:      d909            bls.n   80002f4 <__udivmoddi4+0x8c>
- 80002e0:      192c            adds    r4, r5, r4
- 80002e2:      f100 33ff       add.w   r3, r0, #4294967295     ; 0xffffffff
- 80002e6:      f080 8107       bcs.w   80004f8 <__udivmoddi4+0x290>
- 80002ea:      45a4            cmp     ip, r4
- 80002ec:      f240 8104       bls.w   80004f8 <__udivmoddi4+0x290>
- 80002f0:      3802            subs    r0, #2
- 80002f2:      442c            add     r4, r5
- 80002f4:      ea40 4007       orr.w   r0, r0, r7, lsl #16
- 80002f8:      eba4 040c       sub.w   r4, r4, ip
- 80002fc:      2700            movs    r7, #0
- 80002fe:      b11e            cbz     r6, 8000308 <__udivmoddi4+0xa0>
- 8000300:      40d4            lsrs    r4, r2
- 8000302:      2300            movs    r3, #0
- 8000304:      e9c6 4300       strd    r4, r3, [r6]
- 8000308:      4639            mov     r1, r7
- 800030a:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
- 800030e:      428b            cmp     r3, r1
- 8000310:      d909            bls.n   8000326 <__udivmoddi4+0xbe>
- 8000312:      2e00            cmp     r6, #0
- 8000314:      f000 80eb       beq.w   80004ee <__udivmoddi4+0x286>
- 8000318:      2700            movs    r7, #0
- 800031a:      e9c6 0100       strd    r0, r1, [r6]
- 800031e:      4638            mov     r0, r7
- 8000320:      4639            mov     r1, r7
- 8000322:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
- 8000326:      fab3 f783       clz     r7, r3
- 800032a:      2f00            cmp     r7, #0
- 800032c:      d147            bne.n   80003be <__udivmoddi4+0x156>
- 800032e:      428b            cmp     r3, r1
- 8000330:      d302            bcc.n   8000338 <__udivmoddi4+0xd0>
- 8000332:      4282            cmp     r2, r0
- 8000334:      f200 80fa       bhi.w   800052c <__udivmoddi4+0x2c4>
- 8000338:      1a84            subs    r4, r0, r2
- 800033a:      eb61 0303       sbc.w   r3, r1, r3
- 800033e:      2001            movs    r0, #1
- 8000340:      4698            mov     r8, r3
- 8000342:      2e00            cmp     r6, #0
- 8000344:      d0e0            beq.n   8000308 <__udivmoddi4+0xa0>
- 8000346:      e9c6 4800       strd    r4, r8, [r6]
- 800034a:      e7dd            b.n     8000308 <__udivmoddi4+0xa0>
- 800034c:      b902            cbnz    r2, 8000350 <__udivmoddi4+0xe8>
- 800034e:      deff            udf     #255    ; 0xff
- 8000350:      fab2 f282       clz     r2, r2
- 8000354:      2a00            cmp     r2, #0
- 8000356:      f040 808f       bne.w   8000478 <__udivmoddi4+0x210>
- 800035a:      1b49            subs    r1, r1, r5
- 800035c:      ea4f 4e15       mov.w   lr, r5, lsr #16
- 8000360:      fa1f f885       uxth.w  r8, r5
- 8000364:      2701            movs    r7, #1
- 8000366:      fbb1 fcfe       udiv    ip, r1, lr
- 800036a:      0c23            lsrs    r3, r4, #16
- 800036c:      fb0e 111c       mls     r1, lr, ip, r1
- 8000370:      ea43 4301       orr.w   r3, r3, r1, lsl #16
- 8000374:      fb08 f10c       mul.w   r1, r8, ip
- 8000378:      4299            cmp     r1, r3
- 800037a:      d907            bls.n   800038c <__udivmoddi4+0x124>
- 800037c:      18eb            adds    r3, r5, r3
- 800037e:      f10c 30ff       add.w   r0, ip, #4294967295     ; 0xffffffff
- 8000382:      d202            bcs.n   800038a <__udivmoddi4+0x122>
- 8000384:      4299            cmp     r1, r3
- 8000386:      f200 80cd       bhi.w   8000524 <__udivmoddi4+0x2bc>
- 800038a:      4684            mov     ip, r0
- 800038c:      1a59            subs    r1, r3, r1
- 800038e:      b2a3            uxth    r3, r4
- 8000390:      fbb1 f0fe       udiv    r0, r1, lr
- 8000394:      fb0e 1410       mls     r4, lr, r0, r1
- 8000398:      ea43 4404       orr.w   r4, r3, r4, lsl #16
- 800039c:      fb08 f800       mul.w   r8, r8, r0
- 80003a0:      45a0            cmp     r8, r4
- 80003a2:      d907            bls.n   80003b4 <__udivmoddi4+0x14c>
- 80003a4:      192c            adds    r4, r5, r4
- 80003a6:      f100 33ff       add.w   r3, r0, #4294967295     ; 0xffffffff
- 80003aa:      d202            bcs.n   80003b2 <__udivmoddi4+0x14a>
- 80003ac:      45a0            cmp     r8, r4
- 80003ae:      f200 80b6       bhi.w   800051e <__udivmoddi4+0x2b6>
- 80003b2:      4618            mov     r0, r3
- 80003b4:      eba4 0408       sub.w   r4, r4, r8
- 80003b8:      ea40 400c       orr.w   r0, r0, ip, lsl #16
- 80003bc:      e79f            b.n     80002fe <__udivmoddi4+0x96>
- 80003be:      f1c7 0c20       rsb     ip, r7, #32
- 80003c2:      40bb            lsls    r3, r7
- 80003c4:      fa22 fe0c       lsr.w   lr, r2, ip
- 80003c8:      ea4e 0e03       orr.w   lr, lr, r3
- 80003cc:      fa01 f407       lsl.w   r4, r1, r7
- 80003d0:      fa20 f50c       lsr.w   r5, r0, ip
- 80003d4:      fa21 f30c       lsr.w   r3, r1, ip
- 80003d8:      ea4f 481e       mov.w   r8, lr, lsr #16
- 80003dc:      4325            orrs    r5, r4
- 80003de:      fbb3 f9f8       udiv    r9, r3, r8
- 80003e2:      0c2c            lsrs    r4, r5, #16
- 80003e4:      fb08 3319       mls     r3, r8, r9, r3
- 80003e8:      fa1f fa8e       uxth.w  sl, lr
- 80003ec:      ea44 4303       orr.w   r3, r4, r3, lsl #16
- 80003f0:      fb09 f40a       mul.w   r4, r9, sl
- 80003f4:      429c            cmp     r4, r3
- 80003f6:      fa02 f207       lsl.w   r2, r2, r7
- 80003fa:      fa00 f107       lsl.w   r1, r0, r7
- 80003fe:      d90b            bls.n   8000418 <__udivmoddi4+0x1b0>
- 8000400:      eb1e 0303       adds.w  r3, lr, r3
- 8000404:      f109 30ff       add.w   r0, r9, #4294967295     ; 0xffffffff
- 8000408:      f080 8087       bcs.w   800051a <__udivmoddi4+0x2b2>
- 800040c:      429c            cmp     r4, r3
- 800040e:      f240 8084       bls.w   800051a <__udivmoddi4+0x2b2>
- 8000412:      f1a9 0902       sub.w   r9, r9, #2
- 8000416:      4473            add     r3, lr
- 8000418:      1b1b            subs    r3, r3, r4
- 800041a:      b2ad            uxth    r5, r5
- 800041c:      fbb3 f0f8       udiv    r0, r3, r8
- 8000420:      fb08 3310       mls     r3, r8, r0, r3
- 8000424:      ea45 4403       orr.w   r4, r5, r3, lsl #16
- 8000428:      fb00 fa0a       mul.w   sl, r0, sl
- 800042c:      45a2            cmp     sl, r4
- 800042e:      d908            bls.n   8000442 <__udivmoddi4+0x1da>
- 8000430:      eb1e 0404       adds.w  r4, lr, r4
- 8000434:      f100 33ff       add.w   r3, r0, #4294967295     ; 0xffffffff
- 8000438:      d26b            bcs.n   8000512 <__udivmoddi4+0x2aa>
- 800043a:      45a2            cmp     sl, r4
- 800043c:      d969            bls.n   8000512 <__udivmoddi4+0x2aa>
- 800043e:      3802            subs    r0, #2
- 8000440:      4474            add     r4, lr
- 8000442:      ea40 4009       orr.w   r0, r0, r9, lsl #16
- 8000446:      fba0 8902       umull   r8, r9, r0, r2
- 800044a:      eba4 040a       sub.w   r4, r4, sl
- 800044e:      454c            cmp     r4, r9
- 8000450:      46c2            mov     sl, r8
- 8000452:      464b            mov     r3, r9
- 8000454:      d354            bcc.n   8000500 <__udivmoddi4+0x298>
- 8000456:      d051            beq.n   80004fc <__udivmoddi4+0x294>
- 8000458:      2e00            cmp     r6, #0
- 800045a:      d069            beq.n   8000530 <__udivmoddi4+0x2c8>
- 800045c:      ebb1 050a       subs.w  r5, r1, sl
- 8000460:      eb64 0403       sbc.w   r4, r4, r3
- 8000464:      fa04 fc0c       lsl.w   ip, r4, ip
- 8000468:      40fd            lsrs    r5, r7
- 800046a:      40fc            lsrs    r4, r7
- 800046c:      ea4c 0505       orr.w   r5, ip, r5
- 8000470:      e9c6 5400       strd    r5, r4, [r6]
- 8000474:      2700            movs    r7, #0
- 8000476:      e747            b.n     8000308 <__udivmoddi4+0xa0>
- 8000478:      f1c2 0320       rsb     r3, r2, #32
- 800047c:      fa20 f703       lsr.w   r7, r0, r3
- 8000480:      4095            lsls    r5, r2
- 8000482:      fa01 f002       lsl.w   r0, r1, r2
- 8000486:      fa21 f303       lsr.w   r3, r1, r3
- 800048a:      ea4f 4e15       mov.w   lr, r5, lsr #16
- 800048e:      4338            orrs    r0, r7
- 8000490:      0c01            lsrs    r1, r0, #16
- 8000492:      fbb3 f7fe       udiv    r7, r3, lr
- 8000496:      fa1f f885       uxth.w  r8, r5
- 800049a:      fb0e 3317       mls     r3, lr, r7, r3
- 800049e:      ea41 4103       orr.w   r1, r1, r3, lsl #16
- 80004a2:      fb07 f308       mul.w   r3, r7, r8
- 80004a6:      428b            cmp     r3, r1
- 80004a8:      fa04 f402       lsl.w   r4, r4, r2
- 80004ac:      d907            bls.n   80004be <__udivmoddi4+0x256>
- 80004ae:      1869            adds    r1, r5, r1
- 80004b0:      f107 3cff       add.w   ip, r7, #4294967295     ; 0xffffffff
- 80004b4:      d22f            bcs.n   8000516 <__udivmoddi4+0x2ae>
- 80004b6:      428b            cmp     r3, r1
- 80004b8:      d92d            bls.n   8000516 <__udivmoddi4+0x2ae>
- 80004ba:      3f02            subs    r7, #2
- 80004bc:      4429            add     r1, r5
- 80004be:      1acb            subs    r3, r1, r3
- 80004c0:      b281            uxth    r1, r0
- 80004c2:      fbb3 f0fe       udiv    r0, r3, lr
- 80004c6:      fb0e 3310       mls     r3, lr, r0, r3
- 80004ca:      ea41 4103       orr.w   r1, r1, r3, lsl #16
- 80004ce:      fb00 f308       mul.w   r3, r0, r8
- 80004d2:      428b            cmp     r3, r1
- 80004d4:      d907            bls.n   80004e6 <__udivmoddi4+0x27e>
- 80004d6:      1869            adds    r1, r5, r1
- 80004d8:      f100 3cff       add.w   ip, r0, #4294967295     ; 0xffffffff
- 80004dc:      d217            bcs.n   800050e <__udivmoddi4+0x2a6>
- 80004de:      428b            cmp     r3, r1
- 80004e0:      d915            bls.n   800050e <__udivmoddi4+0x2a6>
- 80004e2:      3802            subs    r0, #2
- 80004e4:      4429            add     r1, r5
- 80004e6:      1ac9            subs    r1, r1, r3
- 80004e8:      ea40 4707       orr.w   r7, r0, r7, lsl #16
- 80004ec:      e73b            b.n     8000366 <__udivmoddi4+0xfe>
- 80004ee:      4637            mov     r7, r6
- 80004f0:      4630            mov     r0, r6
- 80004f2:      e709            b.n     8000308 <__udivmoddi4+0xa0>
- 80004f4:      4607            mov     r7, r0
- 80004f6:      e6e7            b.n     80002c8 <__udivmoddi4+0x60>
- 80004f8:      4618            mov     r0, r3
- 80004fa:      e6fb            b.n     80002f4 <__udivmoddi4+0x8c>
- 80004fc:      4541            cmp     r1, r8
- 80004fe:      d2ab            bcs.n   8000458 <__udivmoddi4+0x1f0>
- 8000500:      ebb8 0a02       subs.w  sl, r8, r2
- 8000504:      eb69 020e       sbc.w   r2, r9, lr
- 8000508:      3801            subs    r0, #1
- 800050a:      4613            mov     r3, r2
- 800050c:      e7a4            b.n     8000458 <__udivmoddi4+0x1f0>
- 800050e:      4660            mov     r0, ip
- 8000510:      e7e9            b.n     80004e6 <__udivmoddi4+0x27e>
- 8000512:      4618            mov     r0, r3
- 8000514:      e795            b.n     8000442 <__udivmoddi4+0x1da>
- 8000516:      4667            mov     r7, ip
- 8000518:      e7d1            b.n     80004be <__udivmoddi4+0x256>
- 800051a:      4681            mov     r9, r0
- 800051c:      e77c            b.n     8000418 <__udivmoddi4+0x1b0>
- 800051e:      3802            subs    r0, #2
- 8000520:      442c            add     r4, r5
- 8000522:      e747            b.n     80003b4 <__udivmoddi4+0x14c>
- 8000524:      f1ac 0c02       sub.w   ip, ip, #2
- 8000528:      442b            add     r3, r5
- 800052a:      e72f            b.n     800038c <__udivmoddi4+0x124>
- 800052c:      4638            mov     r0, r7
- 800052e:      e708            b.n     8000342 <__udivmoddi4+0xda>
- 8000530:      4637            mov     r7, r6
- 8000532:      e6e9            b.n     8000308 <__udivmoddi4+0xa0>
-
-08000534 <__aeabi_idiv0>:
- 8000534:      4770            bx      lr
- 8000536:      bf00            nop
-
-08000538 <HAL_Init>:
+08000200 <__do_global_dtors_aux>:
+ 8000200:      b510            push    {r4, lr}
+ 8000202:      4c05            ldr     r4, [pc, #20]   ; (8000218 <__do_global_dtors_aux+0x18>)
+ 8000204:      7823            ldrb    r3, [r4, #0]
+ 8000206:      b933            cbnz    r3, 8000216 <__do_global_dtors_aux+0x16>
+ 8000208:      4b04            ldr     r3, [pc, #16]   ; (800021c <__do_global_dtors_aux+0x1c>)
+ 800020a:      b113            cbz     r3, 8000212 <__do_global_dtors_aux+0x12>
+ 800020c:      4804            ldr     r0, [pc, #16]   ; (8000220 <__do_global_dtors_aux+0x20>)
+ 800020e:      f3af 8000       nop.w
+ 8000212:      2301            movs    r3, #1
+ 8000214:      7023            strb    r3, [r4, #0]
+ 8000216:      bd10            pop     {r4, pc}
+ 8000218:      200009c0        .word   0x200009c0
+ 800021c:      00000000        .word   0x00000000
+ 8000220:      08011998        .word   0x08011998
+
+08000224 <frame_dummy>:
+ 8000224:      b508            push    {r3, lr}
+ 8000226:      4b03            ldr     r3, [pc, #12]   ; (8000234 <frame_dummy+0x10>)
+ 8000228:      b11b            cbz     r3, 8000232 <frame_dummy+0xe>
+ 800022a:      4903            ldr     r1, [pc, #12]   ; (8000238 <frame_dummy+0x14>)
+ 800022c:      4803            ldr     r0, [pc, #12]   ; (800023c <frame_dummy+0x18>)
+ 800022e:      f3af 8000       nop.w
+ 8000232:      bd08            pop     {r3, pc}
+ 8000234:      00000000        .word   0x00000000
+ 8000238:      200009c4        .word   0x200009c4
+ 800023c:      08011998        .word   0x08011998
+
+08000240 <d_make_comp>:
+ 8000240:      b4f0            push    {r4, r5, r6, r7}
+ 8000242:      1e4c            subs    r4, r1, #1
+ 8000244:      4605            mov     r5, r0
+ 8000246:      2c4e            cmp     r4, #78 ; 0x4e
+ 8000248:      d83f            bhi.n   80002ca <d_make_comp+0x8a>
+ 800024a:      e8df f004       tbb     [pc, r4]
+ 800024e:      3b3b            .short  0x3b3b
+ 8000250:      3e3e3b3b        .word   0x3e3e3b3b
+ 8000254:      28283e3e        .word   0x28283e3e
+ 8000258:      2828283b        .word   0x2828283b
+ 800025c:      28282828        .word   0x28282828
+ 8000260:      28282828        .word   0x28282828
+ 8000264:      29293e28        .word   0x29293e28
+ 8000268:      29292929        .word   0x29292929
+ 800026c:      283b2929        .word   0x283b2929
+ 8000270:      28282828        .word   0x28282828
+ 8000274:      3c29283e        .word   0x3c29283e
+ 8000278:      293b3e3b        .word   0x293b3e3b
+ 800027c:      3e3e3c29        .word   0x3e3e3c29
+ 8000280:      3b282828        .word   0x3b282828
+ 8000284:      3b3b3b3b        .word   0x3b3b3b3b
+ 8000288:      283b3b28        .word   0x283b3b28
+ 800028c:      283e3e3b        .word   0x283e3e3b
+ 8000290:      3e3e2828        .word   0x3e3e2828
+ 8000294:      2828283e        .word   0x2828283e
+ 8000298:      293b293b        .word   0x293b293b
+ 800029c:      29              .byte   0x29
+ 800029d:      00              .byte   0x00
+ 800029e:      b1a2            cbz     r2, 80002ca <d_make_comp+0x8a>
+ 80002a0:      e9d5 4005       ldrd    r4, r0, [r5, #20]
+ 80002a4:      4284            cmp     r4, r0
+ 80002a6:      da10            bge.n   80002ca <d_make_comp+0x8a>
+ 80002a8:      692f            ldr     r7, [r5, #16]
+ 80002aa:      0126            lsls    r6, r4, #4
+ 80002ac:      19b8            adds    r0, r7, r6
+ 80002ae:      3401            adds    r4, #1
+ 80002b0:      f04f 0c00       mov.w   ip, #0
+ 80002b4:      f8c0 c004       str.w   ip, [r0, #4]
+ 80002b8:      616c            str     r4, [r5, #20]
+ 80002ba:      55b9            strb    r1, [r7, r6]
+ 80002bc:      e9c0 2302       strd    r2, r3, [r0, #8]
+ 80002c0:      bcf0            pop     {r4, r5, r6, r7}
+ 80002c2:      4770            bx      lr
+ 80002c4:      b10a            cbz     r2, 80002ca <d_make_comp+0x8a>
+ 80002c6:      2b00            cmp     r3, #0
+ 80002c8:      d1ea            bne.n   80002a0 <d_make_comp+0x60>
+ 80002ca:      2000            movs    r0, #0
+ 80002cc:      bcf0            pop     {r4, r5, r6, r7}
+ 80002ce:      4770            bx      lr
+
+080002d0 <d_ref_qualifier>:
+ 80002d0:      b410            push    {r4}
+ 80002d2:      68c3            ldr     r3, [r0, #12]
+ 80002d4:      781c            ldrb    r4, [r3, #0]
+ 80002d6:      2c52            cmp     r4, #82 ; 0x52
+ 80002d8:      460a            mov     r2, r1
+ 80002da:      d00f            beq.n   80002fc <d_ref_qualifier+0x2c>
+ 80002dc:      2c4f            cmp     r4, #79 ; 0x4f
+ 80002de:      d003            beq.n   80002e8 <d_ref_qualifier+0x18>
+ 80002e0:      4608            mov     r0, r1
+ 80002e2:      f85d 4b04       ldr.w   r4, [sp], #4
+ 80002e6:      4770            bx      lr
+ 80002e8:      6b01            ldr     r1, [r0, #48]   ; 0x30
+ 80002ea:      3103            adds    r1, #3
+ 80002ec:      6301            str     r1, [r0, #48]   ; 0x30
+ 80002ee:      2120            movs    r1, #32
+ 80002f0:      3301            adds    r3, #1
+ 80002f2:      60c3            str     r3, [r0, #12]
+ 80002f4:      f85d 4b04       ldr.w   r4, [sp], #4
+ 80002f8:      2300            movs    r3, #0
+ 80002fa:      e7a1            b.n     8000240 <d_make_comp>
+ 80002fc:      6b01            ldr     r1, [r0, #48]   ; 0x30
+ 80002fe:      3102            adds    r1, #2
+ 8000300:      6301            str     r1, [r0, #48]   ; 0x30
+ 8000302:      211f            movs    r1, #31
+ 8000304:      e7f4            b.n     80002f0 <d_ref_qualifier+0x20>
+ 8000306:      bf00            nop
+
+08000308 <d_count_templates_scopes>:
+ 8000308:      2a00            cmp     r2, #0
+ 800030a:      d04e            beq.n   80003aa <d_count_templates_scopes+0xa2>
+ 800030c:      b570            push    {r4, r5, r6, lr}
+ 800030e:      4605            mov     r5, r0
+ 8000310:      460e            mov     r6, r1
+ 8000312:      4614            mov     r4, r2
+ 8000314:      7823            ldrb    r3, [r4, #0]
+ 8000316:      3b01            subs    r3, #1
+ 8000318:      2b4e            cmp     r3, #78 ; 0x4e
+ 800031a:      d82c            bhi.n   8000376 <d_count_templates_scopes+0x6e>
+ 800031c:      e8df f003       tbb     [pc, r3]
+ 8000320:      40373737        .word   0x40373737
+ 8000324:      28282b2b        .word   0x28282b2b
+ 8000328:      37373737        .word   0x37373737
+ 800032c:      37373737        .word   0x37373737
+ 8000330:      37373737        .word   0x37373737
+ 8000334:      2b373737        .word   0x2b373737
+ 8000338:      37373737        .word   0x37373737
+ 800033c:      37373737        .word   0x37373737
+ 8000340:      30303737        .word   0x30303737
+ 8000344:      372b3737        .word   0x372b3737
+ 8000348:      2c373737        .word   0x2c373737
+ 800034c:      37373737        .word   0x37373737
+ 8000350:      3737282b        .word   0x3737282b
+ 8000354:      37373737        .word   0x37373737
+ 8000358:      37373737        .word   0x37373737
+ 800035c:      2b373737        .word   0x2b373737
+ 8000360:      2c2c372b        .word   0x2c2c372b
+ 8000364:      372b2c2c        .word   0x372b2c2c
+ 8000368:      37373737        .word   0x37373737
+ 800036c:      3737            .short  0x3737
+ 800036e:      37              .byte   0x37
+ 800036f:      00              .byte   0x00
+ 8000370:      68e4            ldr     r4, [r4, #12]
+ 8000372:      2c00            cmp     r4, #0
+ 8000374:      d1ce            bne.n   8000314 <d_count_templates_scopes+0xc>
+ 8000376:      bd70            pop     {r4, r5, r6, pc}
+ 8000378:      68a4            ldr     r4, [r4, #8]
+ 800037a:      2c00            cmp     r4, #0
+ 800037c:      d1ca            bne.n   8000314 <d_count_templates_scopes+0xc>
+ 800037e:      e7fa            b.n     8000376 <d_count_templates_scopes+0x6e>
+ 8000380:      68a2            ldr     r2, [r4, #8]
+ 8000382:      7813            ldrb    r3, [r2, #0]
+ 8000384:      2b05            cmp     r3, #5
+ 8000386:      d103            bne.n   8000390 <d_count_templates_scopes+0x88>
+ 8000388:      6833            ldr     r3, [r6, #0]
+ 800038a:      3301            adds    r3, #1
+ 800038c:      6033            str     r3, [r6, #0]
+ 800038e:      68a2            ldr     r2, [r4, #8]
+ 8000390:      4631            mov     r1, r6
+ 8000392:      4628            mov     r0, r5
+ 8000394:      f7ff ffb8       bl      8000308 <d_count_templates_scopes>
+ 8000398:      68e4            ldr     r4, [r4, #12]
+ 800039a:      2c00            cmp     r4, #0
+ 800039c:      d1ba            bne.n   8000314 <d_count_templates_scopes+0xc>
+ 800039e:      e7ea            b.n     8000376 <d_count_templates_scopes+0x6e>
+ 80003a0:      682b            ldr     r3, [r5, #0]
+ 80003a2:      3301            adds    r3, #1
+ 80003a4:      602b            str     r3, [r5, #0]
+ 80003a6:      68a2            ldr     r2, [r4, #8]
+ 80003a8:      e7f2            b.n     8000390 <d_count_templates_scopes+0x88>
+ 80003aa:      4770            bx      lr
+
+080003ac <d_append_buffer>:
+ 80003ac:      b39a            cbz     r2, 8000416 <d_append_buffer+0x6a>
+ 80003ae:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 80003b2:      188e            adds    r6, r1, r2
+ 80003b4:      4604            mov     r4, r0
+ 80003b6:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 80003ba:      3e01            subs    r6, #1
+ 80003bc:      1e4d            subs    r5, r1, #1
+ 80003be:      2700            movs    r7, #0
+ 80003c0:      e016            b.n     80003f0 <d_append_buffer+0x44>
+ 80003c2:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80003c6:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80003ca:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 80003ce:      4798            blx     r3
+ 80003d0:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80003d4:      2200            movs    r2, #0
+ 80003d6:      3301            adds    r3, #1
+ 80003d8:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80003dc:      42b5            cmp     r5, r6
+ 80003de:      f04f 0301       mov.w   r3, #1
+ 80003e2:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80003e6:      f804 8002       strb.w  r8, [r4, r2]
+ 80003ea:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 80003ee:      d010            beq.n   8000412 <d_append_buffer+0x66>
+ 80003f0:      2bff            cmp     r3, #255        ; 0xff
+ 80003f2:      4619            mov     r1, r3
+ 80003f4:      4620            mov     r0, r4
+ 80003f6:      f815 8f01       ldrb.w  r8, [r5, #1]!
+ 80003fa:      d0e2            beq.n   80003c2 <d_append_buffer+0x16>
+ 80003fc:      461a            mov     r2, r3
+ 80003fe:      42b5            cmp     r5, r6
+ 8000400:      f103 0301       add.w   r3, r3, #1
+ 8000404:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8000408:      f804 8002       strb.w  r8, [r4, r2]
+ 800040c:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8000410:      d1ee            bne.n   80003f0 <d_append_buffer+0x44>
+ 8000412:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8000416:      4770            bx      lr
+
+08000418 <is_fnqual_component_type>:
+ 8000418:      f1a0 031c       sub.w   r3, r0, #28
+ 800041c:      2b04            cmp     r3, #4
+ 800041e:      d907            bls.n   8000430 <is_fnqual_component_type+0x18>
+ 8000420:      284c            cmp     r0, #76 ; 0x4c
+ 8000422:      d005            beq.n   8000430 <is_fnqual_component_type+0x18>
+ 8000424:      384e            subs    r0, #78 ; 0x4e
+ 8000426:      2801            cmp     r0, #1
+ 8000428:      bf8c            ite     hi
+ 800042a:      2000            movhi   r0, #0
+ 800042c:      2001            movls   r0, #1
+ 800042e:      4770            bx      lr
+ 8000430:      2001            movs    r0, #1
+ 8000432:      4770            bx      lr
+
+08000434 <d_number.isra.1>:
+ 8000434:      b470            push    {r4, r5, r6}
+ 8000436:      6802            ldr     r2, [r0, #0]
+ 8000438:      7811            ldrb    r1, [r2, #0]
+ 800043a:      296e            cmp     r1, #110        ; 0x6e
+ 800043c:      d018            beq.n   8000470 <d_number.isra.1+0x3c>
+ 800043e:      f1a1 0330       sub.w   r3, r1, #48     ; 0x30
+ 8000442:      2b09            cmp     r3, #9
+ 8000444:      d81e            bhi.n   8000484 <d_number.isra.1+0x50>
+ 8000446:      2600            movs    r6, #0
+ 8000448:      2300            movs    r3, #0
+ 800044a:      3201            adds    r2, #1
+ 800044c:      eb03 0383       add.w   r3, r3, r3, lsl #2
+ 8000450:      6002            str     r2, [r0, #0]
+ 8000452:      eb01 0443       add.w   r4, r1, r3, lsl #1
+ 8000456:      7811            ldrb    r1, [r2, #0]
+ 8000458:      f1a1 0530       sub.w   r5, r1, #48     ; 0x30
+ 800045c:      2d09            cmp     r5, #9
+ 800045e:      f1a4 0330       sub.w   r3, r4, #48     ; 0x30
+ 8000462:      d9f2            bls.n   800044a <d_number.isra.1+0x16>
+ 8000464:      b10e            cbz     r6, 800046a <d_number.isra.1+0x36>
+ 8000466:      f1c4 0330       rsb     r3, r4, #48     ; 0x30
+ 800046a:      4618            mov     r0, r3
+ 800046c:      bc70            pop     {r4, r5, r6}
+ 800046e:      4770            bx      lr
+ 8000470:      1c53            adds    r3, r2, #1
+ 8000472:      6003            str     r3, [r0, #0]
+ 8000474:      7851            ldrb    r1, [r2, #1]
+ 8000476:      f1a1 0230       sub.w   r2, r1, #48     ; 0x30
+ 800047a:      2a09            cmp     r2, #9
+ 800047c:      d802            bhi.n   8000484 <d_number.isra.1+0x50>
+ 800047e:      461a            mov     r2, r3
+ 8000480:      2601            movs    r6, #1
+ 8000482:      e7e1            b.n     8000448 <d_number.isra.1+0x14>
+ 8000484:      2300            movs    r3, #0
+ 8000486:      4618            mov     r0, r3
+ 8000488:      bc70            pop     {r4, r5, r6}
+ 800048a:      4770            bx      lr
+
+0800048c <d_number_component>:
+ 800048c:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8000490:      4293            cmp     r3, r2
+ 8000492:      b570            push    {r4, r5, r6, lr}
+ 8000494:      da0e            bge.n   80004b4 <d_number_component+0x28>
+ 8000496:      6901            ldr     r1, [r0, #16]
+ 8000498:      011a            lsls    r2, r3, #4
+ 800049a:      188c            adds    r4, r1, r2
+ 800049c:      3301            adds    r3, #1
+ 800049e:      2600            movs    r6, #0
+ 80004a0:      2541            movs    r5, #65 ; 0x41
+ 80004a2:      6066            str     r6, [r4, #4]
+ 80004a4:      300c            adds    r0, #12
+ 80004a6:      6083            str     r3, [r0, #8]
+ 80004a8:      548d            strb    r5, [r1, r2]
+ 80004aa:      f7ff ffc3       bl      8000434 <d_number.isra.1>
+ 80004ae:      60a0            str     r0, [r4, #8]
+ 80004b0:      4620            mov     r0, r4
+ 80004b2:      bd70            pop     {r4, r5, r6, pc}
+ 80004b4:      2400            movs    r4, #0
+ 80004b6:      4620            mov     r0, r4
+ 80004b8:      bd70            pop     {r4, r5, r6, pc}
+ 80004ba:      bf00            nop
+
+080004bc <d_compact_number>:
+ 80004bc:      b510            push    {r4, lr}
+ 80004be:      68c3            ldr     r3, [r0, #12]
+ 80004c0:      781a            ldrb    r2, [r3, #0]
+ 80004c2:      2a5f            cmp     r2, #95 ; 0x5f
+ 80004c4:      4604            mov     r4, r0
+ 80004c6:      d00d            beq.n   80004e4 <d_compact_number+0x28>
+ 80004c8:      2a6e            cmp     r2, #110        ; 0x6e
+ 80004ca:      d00d            beq.n   80004e8 <d_compact_number+0x2c>
+ 80004cc:      300c            adds    r0, #12
+ 80004ce:      f7ff ffb1       bl      8000434 <d_number.isra.1>
+ 80004d2:      3001            adds    r0, #1
+ 80004d4:      d408            bmi.n   80004e8 <d_compact_number+0x2c>
+ 80004d6:      68e3            ldr     r3, [r4, #12]
+ 80004d8:      781a            ldrb    r2, [r3, #0]
+ 80004da:      2a5f            cmp     r2, #95 ; 0x5f
+ 80004dc:      d104            bne.n   80004e8 <d_compact_number+0x2c>
+ 80004de:      3301            adds    r3, #1
+ 80004e0:      60e3            str     r3, [r4, #12]
+ 80004e2:      bd10            pop     {r4, pc}
+ 80004e4:      2000            movs    r0, #0
+ 80004e6:      e7fa            b.n     80004de <d_compact_number+0x22>
+ 80004e8:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 80004ec:      bd10            pop     {r4, pc}
+ 80004ee:      bf00            nop
+
+080004f0 <d_template_param>:
+ 80004f0:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 80004f2:      68c3            ldr     r3, [r0, #12]
+ 80004f4:      781a            ldrb    r2, [r3, #0]
+ 80004f6:      2a54            cmp     r2, #84 ; 0x54
+ 80004f8:      d119            bne.n   800052e <d_template_param+0x3e>
+ 80004fa:      3301            adds    r3, #1
+ 80004fc:      60c3            str     r3, [r0, #12]
+ 80004fe:      4604            mov     r4, r0
+ 8000500:      f7ff ffdc       bl      80004bc <d_compact_number>
+ 8000504:      1e05            subs    r5, r0, #0
+ 8000506:      db12            blt.n   800052e <d_template_param+0x3e>
+ 8000508:      e9d4 3105       ldrd    r3, r1, [r4, #20]
+ 800050c:      6aa2            ldr     r2, [r4, #40]   ; 0x28
+ 800050e:      428b            cmp     r3, r1
+ 8000510:      f102 0201       add.w   r2, r2, #1
+ 8000514:      62a2            str     r2, [r4, #40]   ; 0x28
+ 8000516:      da0a            bge.n   800052e <d_template_param+0x3e>
+ 8000518:      6921            ldr     r1, [r4, #16]
+ 800051a:      011a            lsls    r2, r3, #4
+ 800051c:      1888            adds    r0, r1, r2
+ 800051e:      3301            adds    r3, #1
+ 8000520:      2700            movs    r7, #0
+ 8000522:      2605            movs    r6, #5
+ 8000524:      6047            str     r7, [r0, #4]
+ 8000526:      6163            str     r3, [r4, #20]
+ 8000528:      548e            strb    r6, [r1, r2]
+ 800052a:      6085            str     r5, [r0, #8]
+ 800052c:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 800052e:      2000            movs    r0, #0
+ 8000530:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 8000532:      bf00            nop
+
+08000534 <d_source_name>:
+ 8000534:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8000538:      4604            mov     r4, r0
+ 800053a:      300c            adds    r0, #12
+ 800053c:      f7ff ff7a       bl      8000434 <d_number.isra.1>
+ 8000540:      1e07            subs    r7, r0, #0
+ 8000542:      dd49            ble.n   80005d8 <d_source_name+0xa4>
+ 8000544:      68e5            ldr     r5, [r4, #12]
+ 8000546:      6863            ldr     r3, [r4, #4]
+ 8000548:      1b5b            subs    r3, r3, r5
+ 800054a:      429f            cmp     r7, r3
+ 800054c:      dc42            bgt.n   80005d4 <d_source_name+0xa0>
+ 800054e:      68a2            ldr     r2, [r4, #8]
+ 8000550:      19eb            adds    r3, r5, r7
+ 8000552:      0752            lsls    r2, r2, #29
+ 8000554:      60e3            str     r3, [r4, #12]
+ 8000556:      d504            bpl.n   8000562 <d_source_name+0x2e>
+ 8000558:      5dea            ldrb    r2, [r5, r7]
+ 800055a:      2a24            cmp     r2, #36 ; 0x24
+ 800055c:      bf04            itt     eq
+ 800055e:      3301            addeq   r3, #1
+ 8000560:      60e3            streq   r3, [r4, #12]
+ 8000562:      2f09            cmp     r7, #9
+ 8000564:      e9d4 6805       ldrd    r6, r8, [r4, #20]
+ 8000568:      dc10            bgt.n   800058c <d_source_name+0x58>
+ 800056a:      45b0            cmp     r8, r6
+ 800056c:      dd32            ble.n   80005d4 <d_source_name+0xa0>
+ 800056e:      6921            ldr     r1, [r4, #16]
+ 8000570:      0132            lsls    r2, r6, #4
+ 8000572:      1888            adds    r0, r1, r2
+ 8000574:      3601            adds    r6, #1
+ 8000576:      2300            movs    r3, #0
+ 8000578:      6043            str     r3, [r0, #4]
+ 800057a:      6166            str     r6, [r4, #20]
+ 800057c:      b355            cbz     r5, 80005d4 <d_source_name+0xa0>
+ 800057e:      6043            str     r3, [r0, #4]
+ 8000580:      548b            strb    r3, [r1, r2]
+ 8000582:      e9c0 5702       strd    r5, r7, [r0, #8]
+ 8000586:      62e0            str     r0, [r4, #44]   ; 0x2c
+ 8000588:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800058c:      2208            movs    r2, #8
+ 800058e:      4914            ldr     r1, [pc, #80]   ; (80005e0 <d_source_name+0xac>)
+ 8000590:      4628            mov     r0, r5
+ 8000592:      f00d fee1       bl      800e358 <memcmp>
+ 8000596:      2800            cmp     r0, #0
+ 8000598:      d1e7            bne.n   800056a <d_source_name+0x36>
+ 800059a:      7a2b            ldrb    r3, [r5, #8]
+ 800059c:      2b2e            cmp     r3, #46 ; 0x2e
+ 800059e:      d003            beq.n   80005a8 <d_source_name+0x74>
+ 80005a0:      2b5f            cmp     r3, #95 ; 0x5f
+ 80005a2:      d001            beq.n   80005a8 <d_source_name+0x74>
+ 80005a4:      2b24            cmp     r3, #36 ; 0x24
+ 80005a6:      d1e0            bne.n   800056a <d_source_name+0x36>
+ 80005a8:      7a6b            ldrb    r3, [r5, #9]
+ 80005aa:      2b4e            cmp     r3, #78 ; 0x4e
+ 80005ac:      d1dd            bne.n   800056a <d_source_name+0x36>
+ 80005ae:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 80005b0:      3316            adds    r3, #22
+ 80005b2:      1bdf            subs    r7, r3, r7
+ 80005b4:      45b0            cmp     r8, r6
+ 80005b6:      6327            str     r7, [r4, #48]   ; 0x30
+ 80005b8:      dd0c            ble.n   80005d4 <d_source_name+0xa0>
+ 80005ba:      6922            ldr     r2, [r4, #16]
+ 80005bc:      4d09            ldr     r5, [pc, #36]   ; (80005e4 <d_source_name+0xb0>)
+ 80005be:      0133            lsls    r3, r6, #4
+ 80005c0:      18d0            adds    r0, r2, r3
+ 80005c2:      2100            movs    r1, #0
+ 80005c4:      3601            adds    r6, #1
+ 80005c6:      6166            str     r6, [r4, #20]
+ 80005c8:      6041            str     r1, [r0, #4]
+ 80005ca:      54d1            strb    r1, [r2, r3]
+ 80005cc:      2315            movs    r3, #21
+ 80005ce:      e9c0 5302       strd    r5, r3, [r0, #8]
+ 80005d2:      e7d8            b.n     8000586 <d_source_name+0x52>
+ 80005d4:      2000            movs    r0, #0
+ 80005d6:      e7d6            b.n     8000586 <d_source_name+0x52>
+ 80005d8:      2000            movs    r0, #0
+ 80005da:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 80005de:      bf00            nop
+ 80005e0:      08012550        .word   0x08012550
+ 80005e4:      0801255c        .word   0x0801255c
+
+080005e8 <d_abi_tags>:
+ 80005e8:      b570            push    {r4, r5, r6, lr}
+ 80005ea:      68c3            ldr     r3, [r0, #12]
+ 80005ec:      6ac6            ldr     r6, [r0, #44]   ; 0x2c
+ 80005ee:      781a            ldrb    r2, [r3, #0]
+ 80005f0:      2a42            cmp     r2, #66 ; 0x42
+ 80005f2:      4604            mov     r4, r0
+ 80005f4:      460d            mov     r5, r1
+ 80005f6:      d10f            bne.n   8000618 <d_abi_tags+0x30>
+ 80005f8:      3301            adds    r3, #1
+ 80005fa:      60e3            str     r3, [r4, #12]
+ 80005fc:      4620            mov     r0, r4
+ 80005fe:      f7ff ff99       bl      8000534 <d_source_name>
+ 8000602:      462a            mov     r2, r5
+ 8000604:      4603            mov     r3, r0
+ 8000606:      214b            movs    r1, #75 ; 0x4b
+ 8000608:      4620            mov     r0, r4
+ 800060a:      f7ff fe19       bl      8000240 <d_make_comp>
+ 800060e:      68e3            ldr     r3, [r4, #12]
+ 8000610:      781a            ldrb    r2, [r3, #0]
+ 8000612:      2a42            cmp     r2, #66 ; 0x42
+ 8000614:      4605            mov     r5, r0
+ 8000616:      d0ef            beq.n   80005f8 <d_abi_tags+0x10>
+ 8000618:      62e6            str     r6, [r4, #44]   ; 0x2c
+ 800061a:      4628            mov     r0, r5
+ 800061c:      bd70            pop     {r4, r5, r6, pc}
+ 800061e:      bf00            nop
+
+08000620 <d_substitution>:
+ 8000620:      e92d 43f8       stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
+ 8000624:      4605            mov     r5, r0
+ 8000626:      68c0            ldr     r0, [r0, #12]
+ 8000628:      7803            ldrb    r3, [r0, #0]
+ 800062a:      2b53            cmp     r3, #83 ; 0x53
+ 800062c:      d131            bne.n   8000692 <d_substitution+0x72>
+ 800062e:      1c43            adds    r3, r0, #1
+ 8000630:      60eb            str     r3, [r5, #12]
+ 8000632:      7842            ldrb    r2, [r0, #1]
+ 8000634:      b3a2            cbz     r2, 80006a0 <d_substitution+0x80>
+ 8000636:      1c83            adds    r3, r0, #2
+ 8000638:      60eb            str     r3, [r5, #12]
+ 800063a:      7842            ldrb    r2, [r0, #1]
+ 800063c:      2a5f            cmp     r2, #95 ; 0x5f
+ 800063e:      f000 8089       beq.w   8000754 <d_substitution+0x134>
+ 8000642:      f1a2 0430       sub.w   r4, r2, #48     ; 0x30
+ 8000646:      b2e3            uxtb    r3, r4
+ 8000648:      2b09            cmp     r3, #9
+ 800064a:      d825            bhi.n   8000698 <d_substitution+0x78>
+ 800064c:      2100            movs    r1, #0
+ 800064e:      e00e            b.n     800066e <d_substitution+0x4e>
+ 8000650:      3b30            subs    r3, #48 ; 0x30
+ 8000652:      4299            cmp     r1, r3
+ 8000654:      d81d            bhi.n   8000692 <d_substitution+0x72>
+ 8000656:      68e9            ldr     r1, [r5, #12]
+ 8000658:      780a            ldrb    r2, [r1, #0]
+ 800065a:      1c48            adds    r0, r1, #1
+ 800065c:      b122            cbz     r2, 8000668 <d_substitution+0x48>
+ 800065e:      60e8            str     r0, [r5, #12]
+ 8000660:      780a            ldrb    r2, [r1, #0]
+ 8000662:      2a5f            cmp     r2, #95 ; 0x5f
+ 8000664:      f000 8082       beq.w   800076c <d_substitution+0x14c>
+ 8000668:      f1a2 0430       sub.w   r4, r2, #48     ; 0x30
+ 800066c:      4619            mov     r1, r3
+ 800066e:      b2e4            uxtb    r4, r4
+ 8000670:      eb01 03c1       add.w   r3, r1, r1, lsl #3
+ 8000674:      2c09            cmp     r4, #9
+ 8000676:      f1a2 0041       sub.w   r0, r2, #65     ; 0x41
+ 800067a:      eb02 0383       add.w   r3, r2, r3, lsl #2
+ 800067e:      d9e7            bls.n   8000650 <d_substitution+0x30>
+ 8000680:      2819            cmp     r0, #25
+ 8000682:      d806            bhi.n   8000692 <d_substitution+0x72>
+ 8000684:      eb01 03c1       add.w   r3, r1, r1, lsl #3
+ 8000688:      eb02 0383       add.w   r3, r2, r3, lsl #2
+ 800068c:      3b37            subs    r3, #55 ; 0x37
+ 800068e:      4299            cmp     r1, r3
+ 8000690:      d9e1            bls.n   8000656 <d_substitution+0x36>
+ 8000692:      2000            movs    r0, #0
+ 8000694:      e8bd 83f8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
+ 8000698:      f1a2 0341       sub.w   r3, r2, #65     ; 0x41
+ 800069c:      2b19            cmp     r3, #25
+ 800069e:      d9d5            bls.n   800064c <d_substitution+0x2c>
+ 80006a0:      68ab            ldr     r3, [r5, #8]
+ 80006a2:      f003 0308       and.w   r3, r3, #8
+ 80006a6:      2b00            cmp     r3, #0
+ 80006a8:      bf14            ite     ne
+ 80006aa:      2401            movne   r4, #1
+ 80006ac:      2400            moveq   r4, #0
+ 80006ae:      d101            bne.n   80006b4 <d_substitution+0x94>
+ 80006b0:      2900            cmp     r1, #0
+ 80006b2:      d15d            bne.n   8000770 <d_substitution+0x150>
+ 80006b4:      4b35            ldr     r3, [pc, #212]  ; (800078c <d_substitution+0x16c>)
+ 80006b6:      2174            movs    r1, #116        ; 0x74
+ 80006b8:      4291            cmp     r1, r2
+ 80006ba:      f103 00c4       add.w   r0, r3, #196    ; 0xc4
+ 80006be:      d005            beq.n   80006cc <d_substitution+0xac>
+ 80006c0:      331c            adds    r3, #28
+ 80006c2:      4283            cmp     r3, r0
+ 80006c4:      d2e5            bcs.n   8000692 <d_substitution+0x72>
+ 80006c6:      7819            ldrb    r1, [r3, #0]
+ 80006c8:      4291            cmp     r1, r2
+ 80006ca:      d1f9            bne.n   80006c0 <d_substitution+0xa0>
+ 80006cc:      6958            ldr     r0, [r3, #20]
+ 80006ce:      e9d5 2105       ldrd    r2, r1, [r5, #20]
+ 80006d2:      b1a8            cbz     r0, 8000700 <d_substitution+0xe0>
+ 80006d4:      428a            cmp     r2, r1
+ 80006d6:      da57            bge.n   8000788 <d_substitution+0x168>
+ 80006d8:      f8d5 c010       ldr.w   ip, [r5, #16]
+ 80006dc:      f8d3 e018       ldr.w   lr, [r3, #24]
+ 80006e0:      0117            lsls    r7, r2, #4
+ 80006e2:      eb0c 0607       add.w   r6, ip, r7
+ 80006e6:      3201            adds    r2, #1
+ 80006e8:      f04f 0900       mov.w   r9, #0
+ 80006ec:      f04f 0818       mov.w   r8, #24
+ 80006f0:      f8c6 9004       str.w   r9, [r6, #4]
+ 80006f4:      616a            str     r2, [r5, #20]
+ 80006f6:      f80c 8007       strb.w  r8, [ip, r7]
+ 80006fa:      e9c6 0e02       strd    r0, lr, [r6, #8]
+ 80006fe:      62ee            str     r6, [r5, #44]   ; 0x2c
+ 8000700:      2c00            cmp     r4, #0
+ 8000702:      d13c            bne.n   800077e <d_substitution+0x15e>
+ 8000704:      e9d3 6401       ldrd    r6, r4, [r3, #4]
+ 8000708:      6b2b            ldr     r3, [r5, #48]   ; 0x30
+ 800070a:      4291            cmp     r1, r2
+ 800070c:      4423            add     r3, r4
+ 800070e:      632b            str     r3, [r5, #48]   ; 0x30
+ 8000710:      dd38            ble.n   8000784 <d_substitution+0x164>
+ 8000712:      6929            ldr     r1, [r5, #16]
+ 8000714:      0113            lsls    r3, r2, #4
+ 8000716:      18c8            adds    r0, r1, r3
+ 8000718:      3201            adds    r2, #1
+ 800071a:      f04f 0c00       mov.w   ip, #0
+ 800071e:      2718            movs    r7, #24
+ 8000720:      f8c0 c004       str.w   ip, [r0, #4]
+ 8000724:      616a            str     r2, [r5, #20]
+ 8000726:      54cf            strb    r7, [r1, r3]
+ 8000728:      e9c0 6402       strd    r6, r4, [r0, #8]
+ 800072c:      68eb            ldr     r3, [r5, #12]
+ 800072e:      781b            ldrb    r3, [r3, #0]
+ 8000730:      2b42            cmp     r3, #66 ; 0x42
+ 8000732:      d1af            bne.n   8000694 <d_substitution+0x74>
+ 8000734:      4601            mov     r1, r0
+ 8000736:      4628            mov     r0, r5
+ 8000738:      f7ff ff56       bl      80005e8 <d_abi_tags>
+ 800073c:      2800            cmp     r0, #0
+ 800073e:      d0a8            beq.n   8000692 <d_substitution+0x72>
+ 8000740:      e9d5 3208       ldrd    r3, r2, [r5, #32]
+ 8000744:      4293            cmp     r3, r2
+ 8000746:      daa5            bge.n   8000694 <d_substitution+0x74>
+ 8000748:      69e9            ldr     r1, [r5, #28]
+ 800074a:      1c5a            adds    r2, r3, #1
+ 800074c:      f841 0023       str.w   r0, [r1, r3, lsl #2]
+ 8000750:      622a            str     r2, [r5, #32]
+ 8000752:      e79f            b.n     8000694 <d_substitution+0x74>
+ 8000754:      2300            movs    r3, #0
+ 8000756:      6a2a            ldr     r2, [r5, #32]
+ 8000758:      429a            cmp     r2, r3
+ 800075a:      d99a            bls.n   8000692 <d_substitution+0x72>
+ 800075c:      6aaa            ldr     r2, [r5, #40]   ; 0x28
+ 800075e:      69e9            ldr     r1, [r5, #28]
+ 8000760:      3201            adds    r2, #1
+ 8000762:      62aa            str     r2, [r5, #40]   ; 0x28
+ 8000764:      f851 0023       ldr.w   r0, [r1, r3, lsl #2]
+ 8000768:      e8bd 83f8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
+ 800076c:      3301            adds    r3, #1
+ 800076e:      e7f2            b.n     8000756 <d_substitution+0x136>
+ 8000770:      68eb            ldr     r3, [r5, #12]
+ 8000772:      781b            ldrb    r3, [r3, #0]
+ 8000774:      3b43            subs    r3, #67 ; 0x43
+ 8000776:      2b01            cmp     r3, #1
+ 8000778:      bf98            it      ls
+ 800077a:      460c            movls   r4, r1
+ 800077c:      e79a            b.n     80006b4 <d_substitution+0x94>
+ 800077e:      e9d3 6403       ldrd    r6, r4, [r3, #12]
+ 8000782:      e7c1            b.n     8000708 <d_substitution+0xe8>
+ 8000784:      2000            movs    r0, #0
+ 8000786:      e7d1            b.n     800072c <d_substitution+0x10c>
+ 8000788:      2600            movs    r6, #0
+ 800078a:      e7b8            b.n     80006fe <d_substitution+0xde>
+ 800078c:      08011b0c        .word   0x08011b0c
+
+08000790 <d_discriminator>:
+ 8000790:      68c3            ldr     r3, [r0, #12]
+ 8000792:      781a            ldrb    r2, [r3, #0]
+ 8000794:      2a5f            cmp     r2, #95 ; 0x5f
+ 8000796:      d001            beq.n   800079c <d_discriminator+0xc>
+ 8000798:      2001            movs    r0, #1
+ 800079a:      4770            bx      lr
+ 800079c:      b510            push    {r4, lr}
+ 800079e:      1c5a            adds    r2, r3, #1
+ 80007a0:      4604            mov     r4, r0
+ 80007a2:      f840 2f0c       str.w   r2, [r0, #12]!
+ 80007a6:      785a            ldrb    r2, [r3, #1]
+ 80007a8:      2a5f            cmp     r2, #95 ; 0x5f
+ 80007aa:      d004            beq.n   80007b6 <d_discriminator+0x26>
+ 80007ac:      f7ff fe42       bl      8000434 <d_number.isra.1>
+ 80007b0:      43c0            mvns    r0, r0
+ 80007b2:      0fc0            lsrs    r0, r0, #31
+ 80007b4:      bd10            pop     {r4, pc}
+ 80007b6:      3302            adds    r3, #2
+ 80007b8:      60e3            str     r3, [r4, #12]
+ 80007ba:      f7ff fe3b       bl      8000434 <d_number.isra.1>
+ 80007be:      2800            cmp     r0, #0
+ 80007c0:      db05            blt.n   80007ce <d_discriminator+0x3e>
+ 80007c2:      2809            cmp     r0, #9
+ 80007c4:      dd07            ble.n   80007d6 <d_discriminator+0x46>
+ 80007c6:      68e3            ldr     r3, [r4, #12]
+ 80007c8:      781a            ldrb    r2, [r3, #0]
+ 80007ca:      2a5f            cmp     r2, #95 ; 0x5f
+ 80007cc:      d001            beq.n   80007d2 <d_discriminator+0x42>
+ 80007ce:      2000            movs    r0, #0
+ 80007d0:      bd10            pop     {r4, pc}
+ 80007d2:      3301            adds    r3, #1
+ 80007d4:      60e3            str     r3, [r4, #12]
+ 80007d6:      2001            movs    r0, #1
+ 80007d8:      bd10            pop     {r4, pc}
+ 80007da:      bf00            nop
+
+080007dc <d_index_template_argument.part.9>:
+ 80007dc:      b170            cbz     r0, 80007fc <d_index_template_argument.part.9+0x20>
+ 80007de:      7803            ldrb    r3, [r0, #0]
+ 80007e0:      2b2f            cmp     r3, #47 ; 0x2f
+ 80007e2:      d10f            bne.n   8000804 <d_index_template_argument.part.9+0x28>
+ 80007e4:      2900            cmp     r1, #0
+ 80007e6:      dc04            bgt.n   80007f2 <d_index_template_argument.part.9+0x16>
+ 80007e8:      e009            b.n     80007fe <d_index_template_argument.part.9+0x22>
+ 80007ea:      7803            ldrb    r3, [r0, #0]
+ 80007ec:      2b2f            cmp     r3, #47 ; 0x2f
+ 80007ee:      d109            bne.n   8000804 <d_index_template_argument.part.9+0x28>
+ 80007f0:      b131            cbz     r1, 8000800 <d_index_template_argument.part.9+0x24>
+ 80007f2:      68c0            ldr     r0, [r0, #12]
+ 80007f4:      3901            subs    r1, #1
+ 80007f6:      2800            cmp     r0, #0
+ 80007f8:      d1f7            bne.n   80007ea <d_index_template_argument.part.9+0xe>
+ 80007fa:      4770            bx      lr
+ 80007fc:      4770            bx      lr
+ 80007fe:      d101            bne.n   8000804 <d_index_template_argument.part.9+0x28>
+ 8000800:      6880            ldr     r0, [r0, #8]
+ 8000802:      4770            bx      lr
+ 8000804:      2000            movs    r0, #0
+ 8000806:      4770            bx      lr
+
+08000808 <d_lookup_template_argument.isra.10>:
+ 8000808:      f8d0 3110       ldr.w   r3, [r0, #272]  ; 0x110
+ 800080c:      b133            cbz     r3, 800081c <d_lookup_template_argument.isra.10+0x14>
+ 800080e:      6809            ldr     r1, [r1, #0]
+ 8000810:      685b            ldr     r3, [r3, #4]
+ 8000812:      2900            cmp     r1, #0
+ 8000814:      68db            ldr     r3, [r3, #12]
+ 8000816:      db04            blt.n   8000822 <d_lookup_template_argument.isra.10+0x1a>
+ 8000818:      4618            mov     r0, r3
+ 800081a:      e7df            b.n     80007dc <d_index_template_argument.part.9>
+ 800081c:      2201            movs    r2, #1
+ 800081e:      f8c0 2118       str.w   r2, [r0, #280]  ; 0x118
+ 8000822:      4618            mov     r0, r3
+ 8000824:      4770            bx      lr
+ 8000826:      bf00            nop
+
+08000828 <d_find_pack>:
+ 8000828:      2900            cmp     r1, #0
+ 800082a:      d042            beq.n   80008b2 <d_find_pack+0x8a>
+ 800082c:      b538            push    {r3, r4, r5, lr}
+ 800082e:      4605            mov     r5, r0
+ 8000830:      460c            mov     r4, r1
+ 8000832:      7823            ldrb    r3, [r4, #0]
+ 8000834:      2b4b            cmp     r3, #75 ; 0x4b
+ 8000836:      d827            bhi.n   8000888 <d_find_pack+0x60>
+ 8000838:      e8df f003       tbb     [pc, r3]
+ 800083c:      2626262e        .word   0x2626262e
+ 8000840:      2b2e3026        .word   0x2b2e3026
+ 8000844:      2626262b        .word   0x2626262b
+ 8000848:      26262626        .word   0x26262626
+ 800084c:      26262626        .word   0x26262626
+ 8000850:      26262626        .word   0x26262626
+ 8000854:      2626262e        .word   0x2626262e
+ 8000858:      26262626        .word   0x26262626
+ 800085c:      26262626        .word   0x26262626
+ 8000860:      2e262626        .word   0x2e262626
+ 8000864:      26262626        .word   0x26262626
+ 8000868:      2626262e        .word   0x2626262e
+ 800086c:      262b2e26        .word   0x262b2e26
+ 8000870:      26262626        .word   0x26262626
+ 8000874:      26262626        .word   0x26262626
+ 8000878:      26262626        .word   0x26262626
+ 800087c:      26262e2e        .word   0x26262e2e
+ 8000880:      2e2e2e26        .word   0x2e2e2e26
+ 8000884:      2e2e2626        .word   0x2e2e2626
+ 8000888:      68a1            ldr     r1, [r4, #8]
+ 800088a:      4628            mov     r0, r5
+ 800088c:      f7ff ffcc       bl      8000828 <d_find_pack>
+ 8000890:      b918            cbnz    r0, 800089a <d_find_pack+0x72>
+ 8000892:      68e4            ldr     r4, [r4, #12]
+ 8000894:      2c00            cmp     r4, #0
+ 8000896:      d1cc            bne.n   8000832 <d_find_pack+0xa>
+ 8000898:      2000            movs    r0, #0
+ 800089a:      bd38            pop     {r3, r4, r5, pc}
+ 800089c:      f104 0108       add.w   r1, r4, #8
+ 80008a0:      4628            mov     r0, r5
+ 80008a2:      f7ff ffb1       bl      8000808 <d_lookup_template_argument.isra.10>
+ 80008a6:      2800            cmp     r0, #0
+ 80008a8:      d0f6            beq.n   8000898 <d_find_pack+0x70>
+ 80008aa:      7803            ldrb    r3, [r0, #0]
+ 80008ac:      2b2f            cmp     r3, #47 ; 0x2f
+ 80008ae:      d1f3            bne.n   8000898 <d_find_pack+0x70>
+ 80008b0:      bd38            pop     {r3, r4, r5, pc}
+ 80008b2:      2000            movs    r0, #0
+ 80008b4:      4770            bx      lr
+ 80008b6:      bf00            nop
+
+080008b8 <d_growable_string_callback_adapter>:
+ 80008b8:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 80008bc:      4614            mov     r4, r2
+ 80008be:      e9d4 5702       ldrd    r5, r7, [r4, #8]
+ 80008c2:      6852            ldr     r2, [r2, #4]
+ 80008c4:      1c4b            adds    r3, r1, #1
+ 80008c6:      4413            add     r3, r2
+ 80008c8:      42ab            cmp     r3, r5
+ 80008ca:      b082            sub     sp, #8
+ 80008cc:      460e            mov     r6, r1
+ 80008ce:      4680            mov     r8, r0
+ 80008d0:      d814            bhi.n   80008fc <d_growable_string_callback_adapter+0x44>
+ 80008d2:      b117            cbz     r7, 80008da <d_growable_string_callback_adapter+0x22>
+ 80008d4:      b002            add     sp, #8
+ 80008d6:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 80008da:      e9d4 0300       ldrd    r0, r3, [r4]
+ 80008de:      4632            mov     r2, r6
+ 80008e0:      4641            mov     r1, r8
+ 80008e2:      4418            add     r0, r3
+ 80008e4:      f00d fd47       bl      800e376 <memcpy>
+ 80008e8:      e9d4 3200       ldrd    r3, r2, [r4]
+ 80008ec:      4433            add     r3, r6
+ 80008ee:      549f            strb    r7, [r3, r2]
+ 80008f0:      6863            ldr     r3, [r4, #4]
+ 80008f2:      441e            add     r6, r3
+ 80008f4:      6066            str     r6, [r4, #4]
+ 80008f6:      b002            add     sp, #8
+ 80008f8:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 80008fc:      2f00            cmp     r7, #0
+ 80008fe:      d1e9            bne.n   80008d4 <d_growable_string_callback_adapter+0x1c>
+ 8000900:      b91d            cbnz    r5, 800090a <d_growable_string_callback_adapter+0x52>
+ 8000902:      2b02            cmp     r3, #2
+ 8000904:      f04f 0502       mov.w   r5, #2
+ 8000908:      d902            bls.n   8000910 <d_growable_string_callback_adapter+0x58>
+ 800090a:      006d            lsls    r5, r5, #1
+ 800090c:      42ab            cmp     r3, r5
+ 800090e:      d8fc            bhi.n   800090a <d_growable_string_callback_adapter+0x52>
+ 8000910:      4629            mov     r1, r5
+ 8000912:      6820            ldr     r0, [r4, #0]
+ 8000914:      f00d fd9c       bl      800e450 <realloc>
+ 8000918:      b128            cbz     r0, 8000926 <d_growable_string_callback_adapter+0x6e>
+ 800091a:      68e7            ldr     r7, [r4, #12]
+ 800091c:      6020            str     r0, [r4, #0]
+ 800091e:      60a5            str     r5, [r4, #8]
+ 8000920:      2f00            cmp     r7, #0
+ 8000922:      d1d7            bne.n   80008d4 <d_growable_string_callback_adapter+0x1c>
+ 8000924:      e7d9            b.n     80008da <d_growable_string_callback_adapter+0x22>
+ 8000926:      9001            str     r0, [sp, #4]
+ 8000928:      6820            ldr     r0, [r4, #0]
+ 800092a:      f00d fad7       bl      800dedc <free>
+ 800092e:      9b01            ldr     r3, [sp, #4]
+ 8000930:      2201            movs    r2, #1
+ 8000932:      e9c4 3300       strd    r3, r3, [r4]
+ 8000936:      e9c4 3202       strd    r3, r2, [r4, #8]
+ 800093a:      e7cb            b.n     80008d4 <d_growable_string_callback_adapter+0x1c>
+
+0800093c <d_call_offset>:
+ 800093c:      b538            push    {r3, r4, r5, lr}
+ 800093e:      4604            mov     r4, r0
+ 8000940:      b929            cbnz    r1, 800094e <d_call_offset+0x12>
+ 8000942:      68c3            ldr     r3, [r0, #12]
+ 8000944:      781a            ldrb    r2, [r3, #0]
+ 8000946:      b132            cbz     r2, 8000956 <d_call_offset+0x1a>
+ 8000948:      1c5a            adds    r2, r3, #1
+ 800094a:      60c2            str     r2, [r0, #12]
+ 800094c:      7819            ldrb    r1, [r3, #0]
+ 800094e:      2968            cmp     r1, #104        ; 0x68
+ 8000950:      d012            beq.n   8000978 <d_call_offset+0x3c>
+ 8000952:      2976            cmp     r1, #118        ; 0x76
+ 8000954:      d001            beq.n   800095a <d_call_offset+0x1e>
+ 8000956:      2000            movs    r0, #0
+ 8000958:      bd38            pop     {r3, r4, r5, pc}
+ 800095a:      f104 050c       add.w   r5, r4, #12
+ 800095e:      4628            mov     r0, r5
+ 8000960:      f7ff fd68       bl      8000434 <d_number.isra.1>
+ 8000964:      68e3            ldr     r3, [r4, #12]
+ 8000966:      781a            ldrb    r2, [r3, #0]
+ 8000968:      2a5f            cmp     r2, #95 ; 0x5f
+ 800096a:      d1f4            bne.n   8000956 <d_call_offset+0x1a>
+ 800096c:      3301            adds    r3, #1
+ 800096e:      60e3            str     r3, [r4, #12]
+ 8000970:      4628            mov     r0, r5
+ 8000972:      f7ff fd5f       bl      8000434 <d_number.isra.1>
+ 8000976:      e003            b.n     8000980 <d_call_offset+0x44>
+ 8000978:      f104 000c       add.w   r0, r4, #12
+ 800097c:      f7ff fd5a       bl      8000434 <d_number.isra.1>
+ 8000980:      68e3            ldr     r3, [r4, #12]
+ 8000982:      781a            ldrb    r2, [r3, #0]
+ 8000984:      2a5f            cmp     r2, #95 ; 0x5f
+ 8000986:      d1e6            bne.n   8000956 <d_call_offset+0x1a>
+ 8000988:      3301            adds    r3, #1
+ 800098a:      60e3            str     r3, [r4, #12]
+ 800098c:      2001            movs    r0, #1
+ 800098e:      bd38            pop     {r3, r4, r5, pc}
+
+08000990 <d_append_num>:
+ 8000990:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8000994:      b088            sub     sp, #32
+ 8000996:      460a            mov     r2, r1
+ 8000998:      4604            mov     r4, r0
+ 800099a:      491c            ldr     r1, [pc, #112]  ; (8000a0c <d_append_num+0x7c>)
+ 800099c:      a801            add     r0, sp, #4
+ 800099e:      f00d ff5d       bl      800e85c <sprintf>
+ 80009a2:      a801            add     r0, sp, #4
+ 80009a4:      f006 fa16       bl      8006dd4 <strlen>
+ 80009a8:      b368            cbz     r0, 8000a06 <d_append_num+0x76>
+ 80009aa:      ad01            add     r5, sp, #4
+ 80009ac:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80009b0:      182e            adds    r6, r5, r0
+ 80009b2:      2700            movs    r7, #0
+ 80009b4:      e016            b.n     80009e4 <d_append_num+0x54>
+ 80009b6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80009ba:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80009be:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 80009c2:      4798            blx     r3
+ 80009c4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80009c8:      2200            movs    r2, #0
+ 80009ca:      3301            adds    r3, #1
+ 80009cc:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80009d0:      42ae            cmp     r6, r5
+ 80009d2:      f04f 0301       mov.w   r3, #1
+ 80009d6:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80009da:      f804 8002       strb.w  r8, [r4, r2]
+ 80009de:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 80009e2:      d010            beq.n   8000a06 <d_append_num+0x76>
+ 80009e4:      2bff            cmp     r3, #255        ; 0xff
+ 80009e6:      4619            mov     r1, r3
+ 80009e8:      4620            mov     r0, r4
+ 80009ea:      f815 8b01       ldrb.w  r8, [r5], #1
+ 80009ee:      d0e2            beq.n   80009b6 <d_append_num+0x26>
+ 80009f0:      461a            mov     r2, r3
+ 80009f2:      42ae            cmp     r6, r5
+ 80009f4:      f103 0301       add.w   r3, r3, #1
+ 80009f8:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80009fc:      f804 8002       strb.w  r8, [r4, r2]
+ 8000a00:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8000a04:      d1ee            bne.n   80009e4 <d_append_num+0x54>
+ 8000a06:      b008            add     sp, #32
+ 8000a08:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8000a0c:      08012574        .word   0x08012574
+
+08000a10 <d_exprlist>:
+ 8000a10:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 8000a14:      68c3            ldr     r3, [r0, #12]
+ 8000a16:      781d            ldrb    r5, [r3, #0]
+ 8000a18:      b083            sub     sp, #12
+ 8000a1a:      2200            movs    r2, #0
+ 8000a1c:      428d            cmp     r5, r1
+ 8000a1e:      4604            mov     r4, r0
+ 8000a20:      9201            str     r2, [sp, #4]
+ 8000a22:      f000 8199       beq.w   8000d58 <d_exprlist+0x348>
+ 8000a26:      f8df 94c0       ldr.w   r9, [pc, #1216] ; 8000ee8 <d_exprlist+0x4d8>
+ 8000a2a:      4688            mov     r8, r1
+ 8000a2c:      af01            add     r7, sp, #4
+ 8000a2e:      2501            movs    r5, #1
+ 8000a30:      6b66            ldr     r6, [r4, #52]   ; 0x34
+ 8000a32:      6365            str     r5, [r4, #52]   ; 0x34
+ 8000a34:      781a            ldrb    r2, [r3, #0]
+ 8000a36:      2a4c            cmp     r2, #76 ; 0x4c
+ 8000a38:      d05c            beq.n   8000af4 <d_exprlist+0xe4>
+ 8000a3a:      2a54            cmp     r2, #84 ; 0x54
+ 8000a3c:      d066            beq.n   8000b0c <d_exprlist+0xfc>
+ 8000a3e:      2a73            cmp     r2, #115        ; 0x73
+ 8000a40:      d045            beq.n   8000ace <d_exprlist+0xbe>
+ 8000a42:      2a66            cmp     r2, #102        ; 0x66
+ 8000a44:      d11c            bne.n   8000a80 <d_exprlist+0x70>
+ 8000a46:      785a            ldrb    r2, [r3, #1]
+ 8000a48:      2a70            cmp     r2, #112        ; 0x70
+ 8000a4a:      f000 8087       beq.w   8000b5c <d_exprlist+0x14c>
+ 8000a4e:      4620            mov     r0, r4
+ 8000a50:      f001 fa70       bl      8001f34 <d_operator_name>
+ 8000a54:      4605            mov     r5, r0
+ 8000a56:      2800            cmp     r0, #0
+ 8000a58:      f000 818c       beq.w   8000d74 <d_exprlist+0x364>
+ 8000a5c:      7803            ldrb    r3, [r0, #0]
+ 8000a5e:      2b31            cmp     r3, #49 ; 0x31
+ 8000a60:      f000 8098       beq.w   8000b94 <d_exprlist+0x184>
+ 8000a64:      2b32            cmp     r3, #50 ; 0x32
+ 8000a66:      d056            beq.n   8000b16 <d_exprlist+0x106>
+ 8000a68:      2b33            cmp     r3, #51 ; 0x33
+ 8000a6a:      d171            bne.n   8000b50 <d_exprlist+0x140>
+ 8000a6c:      68e3            ldr     r3, [r4, #12]
+ 8000a6e:      781a            ldrb    r2, [r3, #0]
+ 8000a70:      2a5f            cmp     r2, #95 ; 0x5f
+ 8000a72:      f000 81da       beq.w   8000e2a <d_exprlist+0x41a>
+ 8000a76:      4620            mov     r0, r4
+ 8000a78:      f000 fa38       bl      8000eec <d_expression_1>
+ 8000a7c:      4603            mov     r3, r0
+ 8000a7e:      e0c1            b.n     8000c04 <d_exprlist+0x1f4>
+ 8000a80:      f1a2 0130       sub.w   r1, r2, #48     ; 0x30
+ 8000a84:      2909            cmp     r1, #9
+ 8000a86:      f200 80e7       bhi.w   8000c58 <d_exprlist+0x248>
+ 8000a8a:      4620            mov     r0, r4
+ 8000a8c:      f001 fbfe       bl      800228c <d_unqualified_name>
+ 8000a90:      4605            mov     r5, r0
+ 8000a92:      2800            cmp     r0, #0
+ 8000a94:      f000 816e       beq.w   8000d74 <d_exprlist+0x364>
+ 8000a98:      68e3            ldr     r3, [r4, #12]
+ 8000a9a:      781a            ldrb    r2, [r3, #0]
+ 8000a9c:      2a49            cmp     r2, #73 ; 0x49
+ 8000a9e:      f000 80b8       beq.w   8000c12 <d_exprlist+0x202>
+ 8000aa2:      6366            str     r6, [r4, #52]   ; 0x34
+ 8000aa4:      462a            mov     r2, r5
+ 8000aa6:      2300            movs    r3, #0
+ 8000aa8:      212e            movs    r1, #46 ; 0x2e
+ 8000aaa:      4620            mov     r0, r4
+ 8000aac:      f7ff fbc8       bl      8000240 <d_make_comp>
+ 8000ab0:      6038            str     r0, [r7, #0]
+ 8000ab2:      b330            cbz     r0, 8000b02 <d_exprlist+0xf2>
+ 8000ab4:      68e3            ldr     r3, [r4, #12]
+ 8000ab6:      781a            ldrb    r2, [r3, #0]
+ 8000ab8:      4542            cmp     r2, r8
+ 8000aba:      f100 070c       add.w   r7, r0, #12
+ 8000abe:      d1b6            bne.n   8000a2e <d_exprlist+0x1e>
+ 8000ac0:      3301            adds    r3, #1
+ 8000ac2:      9d01            ldr     r5, [sp, #4]
+ 8000ac4:      60e3            str     r3, [r4, #12]
+ 8000ac6:      4628            mov     r0, r5
+ 8000ac8:      b003            add     sp, #12
+ 8000aca:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8000ace:      785a            ldrb    r2, [r3, #1]
+ 8000ad0:      2a72            cmp     r2, #114        ; 0x72
+ 8000ad2:      f000 80ab       beq.w   8000c2c <d_exprlist+0x21c>
+ 8000ad6:      2a70            cmp     r2, #112        ; 0x70
+ 8000ad8:      d1b9            bne.n   8000a4e <d_exprlist+0x3e>
+ 8000ada:      3302            adds    r3, #2
+ 8000adc:      60e3            str     r3, [r4, #12]
+ 8000ade:      4620            mov     r0, r4
+ 8000ae0:      f000 fa04       bl      8000eec <d_expression_1>
+ 8000ae4:      2300            movs    r3, #0
+ 8000ae6:      4602            mov     r2, r0
+ 8000ae8:      214a            movs    r1, #74 ; 0x4a
+ 8000aea:      4620            mov     r0, r4
+ 8000aec:      f7ff fba8       bl      8000240 <d_make_comp>
+ 8000af0:      4605            mov     r5, r0
+ 8000af2:      e003            b.n     8000afc <d_exprlist+0xec>
+ 8000af4:      4620            mov     r0, r4
+ 8000af6:      f002 f813       bl      8002b20 <d_expr_primary>
+ 8000afa:      4605            mov     r5, r0
+ 8000afc:      6366            str     r6, [r4, #52]   ; 0x34
+ 8000afe:      2d00            cmp     r5, #0
+ 8000b00:      d1d0            bne.n   8000aa4 <d_exprlist+0x94>
+ 8000b02:      2500            movs    r5, #0
+ 8000b04:      4628            mov     r0, r5
+ 8000b06:      b003            add     sp, #12
+ 8000b08:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8000b0c:      4620            mov     r0, r4
+ 8000b0e:      f7ff fcef       bl      80004f0 <d_template_param>
+ 8000b12:      4605            mov     r5, r0
+ 8000b14:      e7f2            b.n     8000afc <d_exprlist+0xec>
+ 8000b16:      6883            ldr     r3, [r0, #8]
+ 8000b18:      2b03            cmp     r3, #3
+ 8000b1a:      d819            bhi.n   8000b50 <d_exprlist+0x140>
+ 8000b1c:      a201            add     r2, pc, #4      ; (adr r2, 8000b24 <d_exprlist+0x114>)
+ 8000b1e:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 8000b22:      bf00            nop
+ 8000b24:      08000cb7        .word   0x08000cb7
+ 8000b28:      08000a77        .word   0x08000a77
+ 8000b2c:      08000b51        .word   0x08000b51
+ 8000b30:      08000b51        .word   0x08000b51
+ 8000b34:      2a74            cmp     r2, #116        ; 0x74
+ 8000b36:      d18a            bne.n   8000a4e <d_exprlist+0x3e>
+ 8000b38:      785b            ldrb    r3, [r3, #1]
+ 8000b3a:      2b6c            cmp     r3, #108        ; 0x6c
+ 8000b3c:      d187            bne.n   8000a4e <d_exprlist+0x3e>
+ 8000b3e:      4620            mov     r0, r4
+ 8000b40:      f000 fdfe       bl      8001740 <d_type>
+ 8000b44:      68e3            ldr     r3, [r4, #12]
+ 8000b46:      785a            ldrb    r2, [r3, #1]
+ 8000b48:      4605            mov     r5, r0
+ 8000b4a:      2a00            cmp     r2, #0
+ 8000b4c:      f040 8123       bne.w   8000d96 <d_exprlist+0x386>
+ 8000b50:      2500            movs    r5, #0
+ 8000b52:      4628            mov     r0, r5
+ 8000b54:      6366            str     r6, [r4, #52]   ; 0x34
+ 8000b56:      b003            add     sp, #12
+ 8000b58:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8000b5c:      1c9a            adds    r2, r3, #2
+ 8000b5e:      60e2            str     r2, [r4, #12]
+ 8000b60:      789a            ldrb    r2, [r3, #2]
+ 8000b62:      2a54            cmp     r2, #84 ; 0x54
+ 8000b64:      f040 8082       bne.w   8000c6c <d_exprlist+0x25c>
+ 8000b68:      3303            adds    r3, #3
+ 8000b6a:      60e3            str     r3, [r4, #12]
+ 8000b6c:      2000            movs    r0, #0
+ 8000b6e:      e9d4 3205       ldrd    r3, r2, [r4, #20]
+ 8000b72:      4293            cmp     r3, r2
+ 8000b74:      daec            bge.n   8000b50 <d_exprlist+0x140>
+ 8000b76:      6921            ldr     r1, [r4, #16]
+ 8000b78:      011a            lsls    r2, r3, #4
+ 8000b7a:      188d            adds    r5, r1, r2
+ 8000b7c:      3301            adds    r3, #1
+ 8000b7e:      f04f 0e00       mov.w   lr, #0
+ 8000b82:      f04f 0c06       mov.w   ip, #6
+ 8000b86:      f8c5 e004       str.w   lr, [r5, #4]
+ 8000b8a:      6163            str     r3, [r4, #20]
+ 8000b8c:      f801 c002       strb.w  ip, [r1, r2]
+ 8000b90:      60a8            str     r0, [r5, #8]
+ 8000b92:      e786            b.n     8000aa2 <d_exprlist+0x92>
+ 8000b94:      f8d0 b008       ldr.w   fp, [r0, #8]
+ 8000b98:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8000b9a:      f8db 2008       ldr.w   r2, [fp, #8]
+ 8000b9e:      f8db a000       ldr.w   sl, [fp]
+ 8000ba2:      3a02            subs    r2, #2
+ 8000ba4:      4413            add     r3, r2
+ 8000ba6:      6323            str     r3, [r4, #48]   ; 0x30
+ 8000ba8:      4650            mov     r0, sl
+ 8000baa:      4649            mov     r1, r9
+ 8000bac:      f006 f908       bl      8006dc0 <strcmp>
+ 8000bb0:      2800            cmp     r0, #0
+ 8000bb2:      f000 80e4       beq.w   8000d7e <d_exprlist+0x36e>
+ 8000bb6:      f8db b00c       ldr.w   fp, [fp, #12]
+ 8000bba:      f1bb 0f03       cmp.w   fp, #3
+ 8000bbe:      d8c7            bhi.n   8000b50 <d_exprlist+0x140>
+ 8000bc0:      e8df f01b       tbh     [pc, fp, lsl #1]
+ 8000bc4:      00040079        .word   0x00040079
+ 8000bc8:      008100f7        .word   0x008100f7
+ 8000bcc:      f89a 3000       ldrb.w  r3, [sl]
+ 8000bd0:      2b70            cmp     r3, #112        ; 0x70
+ 8000bd2:      d065            beq.n   8000ca0 <d_exprlist+0x290>
+ 8000bd4:      2b6d            cmp     r3, #109        ; 0x6d
+ 8000bd6:      d063            beq.n   8000ca0 <d_exprlist+0x290>
+ 8000bd8:      f04f 0b00       mov.w   fp, #0
+ 8000bdc:      4650            mov     r0, sl
+ 8000bde:      49bd            ldr     r1, [pc, #756]  ; (8000ed4 <d_exprlist+0x4c4>)
+ 8000be0:      f006 f8ee       bl      8006dc0 <strcmp>
+ 8000be4:      2800            cmp     r0, #0
+ 8000be6:      f040 80c0       bne.w   8000d6a <d_exprlist+0x35a>
+ 8000bea:      4620            mov     r0, r4
+ 8000bec:      f000 fb90       bl      8001310 <d_template_args_1>
+ 8000bf0:      4603            mov     r3, r0
+ 8000bf2:      f1bb 0f00       cmp.w   fp, #0
+ 8000bf6:      d005            beq.n   8000c04 <d_exprlist+0x1f4>
+ 8000bf8:      461a            mov     r2, r3
+ 8000bfa:      2138            movs    r1, #56 ; 0x38
+ 8000bfc:      4620            mov     r0, r4
+ 8000bfe:      f7ff fb1f       bl      8000240 <d_make_comp>
+ 8000c02:      4603            mov     r3, r0
+ 8000c04:      462a            mov     r2, r5
+ 8000c06:      2136            movs    r1, #54 ; 0x36
+ 8000c08:      4620            mov     r0, r4
+ 8000c0a:      f7ff fb19       bl      8000240 <d_make_comp>
+ 8000c0e:      4605            mov     r5, r0
+ 8000c10:      e774            b.n     8000afc <d_exprlist+0xec>
+ 8000c12:      3301            adds    r3, #1
+ 8000c14:      60e3            str     r3, [r4, #12]
+ 8000c16:      4620            mov     r0, r4
+ 8000c18:      f000 fb7a       bl      8001310 <d_template_args_1>
+ 8000c1c:      462a            mov     r2, r5
+ 8000c1e:      4603            mov     r3, r0
+ 8000c20:      2104            movs    r1, #4
+ 8000c22:      4620            mov     r0, r4
+ 8000c24:      f7ff fb0c       bl      8000240 <d_make_comp>
+ 8000c28:      4605            mov     r5, r0
+ 8000c2a:      e767            b.n     8000afc <d_exprlist+0xec>
+ 8000c2c:      3302            adds    r3, #2
+ 8000c2e:      60e3            str     r3, [r4, #12]
+ 8000c30:      4620            mov     r0, r4
+ 8000c32:      f000 fd85       bl      8001740 <d_type>
+ 8000c36:      4682            mov     sl, r0
+ 8000c38:      4620            mov     r0, r4
+ 8000c3a:      f001 fb27       bl      800228c <d_unqualified_name>
+ 8000c3e:      68e3            ldr     r3, [r4, #12]
+ 8000c40:      781a            ldrb    r2, [r3, #0]
+ 8000c42:      2a49            cmp     r2, #73 ; 0x49
+ 8000c44:      4683            mov     fp, r0
+ 8000c46:      d01e            beq.n   8000c86 <d_exprlist+0x276>
+ 8000c48:      4603            mov     r3, r0
+ 8000c4a:      4629            mov     r1, r5
+ 8000c4c:      4652            mov     r2, sl
+ 8000c4e:      4620            mov     r0, r4
+ 8000c50:      f7ff faf6       bl      8000240 <d_make_comp>
+ 8000c54:      4605            mov     r5, r0
+ 8000c56:      e751            b.n     8000afc <d_exprlist+0xec>
+ 8000c58:      2a6f            cmp     r2, #111        ; 0x6f
+ 8000c5a:      f040 8094       bne.w   8000d86 <d_exprlist+0x376>
+ 8000c5e:      785a            ldrb    r2, [r3, #1]
+ 8000c60:      2a6e            cmp     r2, #110        ; 0x6e
+ 8000c62:      f47f aef4       bne.w   8000a4e <d_exprlist+0x3e>
+ 8000c66:      3302            adds    r3, #2
+ 8000c68:      60e3            str     r3, [r4, #12]
+ 8000c6a:      e70e            b.n     8000a8a <d_exprlist+0x7a>
+ 8000c6c:      4620            mov     r0, r4
+ 8000c6e:      f7ff fc25       bl      80004bc <d_compact_number>
+ 8000c72:      f06f 4300       mvn.w   r3, #2147483648 ; 0x80000000
+ 8000c76:      4298            cmp     r0, r3
+ 8000c78:      f43f af6a       beq.w   8000b50 <d_exprlist+0x140>
+ 8000c7c:      1c43            adds    r3, r0, #1
+ 8000c7e:      f43f af67       beq.w   8000b50 <d_exprlist+0x140>
+ 8000c82:      3001            adds    r0, #1
+ 8000c84:      e773            b.n     8000b6e <d_exprlist+0x15e>
+ 8000c86:      3301            adds    r3, #1
+ 8000c88:      60e3            str     r3, [r4, #12]
+ 8000c8a:      4620            mov     r0, r4
+ 8000c8c:      f000 fb40       bl      8001310 <d_template_args_1>
+ 8000c90:      465a            mov     r2, fp
+ 8000c92:      4603            mov     r3, r0
+ 8000c94:      2104            movs    r1, #4
+ 8000c96:      4620            mov     r0, r4
+ 8000c98:      f7ff fad2       bl      8000240 <d_make_comp>
+ 8000c9c:      4603            mov     r3, r0
+ 8000c9e:      e7d4            b.n     8000c4a <d_exprlist+0x23a>
+ 8000ca0:      f89a 2001       ldrb.w  r2, [sl, #1]
+ 8000ca4:      429a            cmp     r2, r3
+ 8000ca6:      d197            bne.n   8000bd8 <d_exprlist+0x1c8>
+ 8000ca8:      68e3            ldr     r3, [r4, #12]
+ 8000caa:      781a            ldrb    r2, [r3, #0]
+ 8000cac:      2a5f            cmp     r2, #95 ; 0x5f
+ 8000cae:      d195            bne.n   8000bdc <d_exprlist+0x1cc>
+ 8000cb0:      3301            adds    r3, #1
+ 8000cb2:      60e3            str     r3, [r4, #12]
+ 8000cb4:      e790            b.n     8000bd8 <d_exprlist+0x1c8>
+ 8000cb6:      462a            mov     r2, r5
+ 8000cb8:      2300            movs    r3, #0
+ 8000cba:      2135            movs    r1, #53 ; 0x35
+ 8000cbc:      4620            mov     r0, r4
+ 8000cbe:      f7ff fabf       bl      8000240 <d_make_comp>
+ 8000cc2:      4605            mov     r5, r0
+ 8000cc4:      e71a            b.n     8000afc <d_exprlist+0xec>
+ 8000cc6:      f1ba 0f00       cmp.w   sl, #0
+ 8000cca:      f43f af41       beq.w   8000b50 <d_exprlist+0x140>
+ 8000cce:      4982            ldr     r1, [pc, #520]  ; (8000ed8 <d_exprlist+0x4c8>)
+ 8000cd0:      4650            mov     r0, sl
+ 8000cd2:      f006 f875       bl      8006dc0 <strcmp>
+ 8000cd6:      2800            cmp     r0, #0
+ 8000cd8:      f000 80c7       beq.w   8000e6a <d_exprlist+0x45a>
+ 8000cdc:      f89a 3000       ldrb.w  r3, [sl]
+ 8000ce0:      2b66            cmp     r3, #102        ; 0x66
+ 8000ce2:      f000 80ed       beq.w   8000ec0 <d_exprlist+0x4b0>
+ 8000ce6:      2b6e            cmp     r3, #110        ; 0x6e
+ 8000ce8:      f47f af32       bne.w   8000b50 <d_exprlist+0x140>
+ 8000cec:      f89a 3001       ldrb.w  r3, [sl, #1]
+ 8000cf0:      2b77            cmp     r3, #119        ; 0x77
+ 8000cf2:      d002            beq.n   8000cfa <d_exprlist+0x2ea>
+ 8000cf4:      2b61            cmp     r3, #97 ; 0x61
+ 8000cf6:      f47f af2b       bne.w   8000b50 <d_exprlist+0x140>
+ 8000cfa:      215f            movs    r1, #95 ; 0x5f
+ 8000cfc:      4620            mov     r0, r4
+ 8000cfe:      f7ff fe87       bl      8000a10 <d_exprlist>
+ 8000d02:      4682            mov     sl, r0
+ 8000d04:      4620            mov     r0, r4
+ 8000d06:      f000 fd1b       bl      8001740 <d_type>
+ 8000d0a:      68e3            ldr     r3, [r4, #12]
+ 8000d0c:      781a            ldrb    r2, [r3, #0]
+ 8000d0e:      2a45            cmp     r2, #69 ; 0x45
+ 8000d10:      4683            mov     fp, r0
+ 8000d12:      f000 8086       beq.w   8000e22 <d_exprlist+0x412>
+ 8000d16:      2a70            cmp     r2, #112        ; 0x70
+ 8000d18:      f000 80c6       beq.w   8000ea8 <d_exprlist+0x498>
+ 8000d1c:      2a69            cmp     r2, #105        ; 0x69
+ 8000d1e:      f47f af17       bne.w   8000b50 <d_exprlist+0x140>
+ 8000d22:      785b            ldrb    r3, [r3, #1]
+ 8000d24:      2b6c            cmp     r3, #108        ; 0x6c
+ 8000d26:      f47f af13       bne.w   8000b50 <d_exprlist+0x140>
+ 8000d2a:      4620            mov     r0, r4
+ 8000d2c:      f000 f8de       bl      8000eec <d_expression_1>
+ 8000d30:      4603            mov     r3, r0
+ 8000d32:      465a            mov     r2, fp
+ 8000d34:      213b            movs    r1, #59 ; 0x3b
+ 8000d36:      4620            mov     r0, r4
+ 8000d38:      f7ff fa82       bl      8000240 <d_make_comp>
+ 8000d3c:      4652            mov     r2, sl
+ 8000d3e:      4603            mov     r3, r0
+ 8000d40:      213a            movs    r1, #58 ; 0x3a
+ 8000d42:      4620            mov     r0, r4
+ 8000d44:      f7ff fa7c       bl      8000240 <d_make_comp>
+ 8000d48:      462a            mov     r2, r5
+ 8000d4a:      4603            mov     r3, r0
+ 8000d4c:      2139            movs    r1, #57 ; 0x39
+ 8000d4e:      4620            mov     r0, r4
+ 8000d50:      f7ff fa76       bl      8000240 <d_make_comp>
+ 8000d54:      4605            mov     r5, r0
+ 8000d56:      e6d1            b.n     8000afc <d_exprlist+0xec>
+ 8000d58:      3301            adds    r3, #1
+ 8000d5a:      60c3            str     r3, [r0, #12]
+ 8000d5c:      212e            movs    r1, #46 ; 0x2e
+ 8000d5e:      4613            mov     r3, r2
+ 8000d60:      b003            add     sp, #12
+ 8000d62:      e8bd 4ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 8000d66:      f7ff ba6b       b.w     8000240 <d_make_comp>
+ 8000d6a:      4620            mov     r0, r4
+ 8000d6c:      f000 f8be       bl      8000eec <d_expression_1>
+ 8000d70:      4603            mov     r3, r0
+ 8000d72:      e73e            b.n     8000bf2 <d_exprlist+0x1e2>
+ 8000d74:      4628            mov     r0, r5
+ 8000d76:      6366            str     r6, [r4, #52]   ; 0x34
+ 8000d78:      b003            add     sp, #12
+ 8000d7a:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8000d7e:      4620            mov     r0, r4
+ 8000d80:      f000 fcde       bl      8001740 <d_type>
+ 8000d84:      e73d            b.n     8000c02 <d_exprlist+0x1f2>
+ 8000d86:      2a69            cmp     r2, #105        ; 0x69
+ 8000d88:      f47f aed4       bne.w   8000b34 <d_exprlist+0x124>
+ 8000d8c:      785a            ldrb    r2, [r3, #1]
+ 8000d8e:      2a6c            cmp     r2, #108        ; 0x6c
+ 8000d90:      f47f ae5d       bne.w   8000a4e <d_exprlist+0x3e>
+ 8000d94:      2500            movs    r5, #0
+ 8000d96:      3302            adds    r3, #2
+ 8000d98:      60e3            str     r3, [r4, #12]
+ 8000d9a:      2145            movs    r1, #69 ; 0x45
+ 8000d9c:      4620            mov     r0, r4
+ 8000d9e:      f7ff fe37       bl      8000a10 <d_exprlist>
+ 8000da2:      462a            mov     r2, r5
+ 8000da4:      4603            mov     r3, r0
+ 8000da6:      2130            movs    r1, #48 ; 0x30
+ 8000da8:      4620            mov     r0, r4
+ 8000daa:      f7ff fa49       bl      8000240 <d_make_comp>
+ 8000dae:      4605            mov     r5, r0
+ 8000db0:      e6a4            b.n     8000afc <d_exprlist+0xec>
+ 8000db2:      f1ba 0f00       cmp.w   sl, #0
+ 8000db6:      f43f aecb       beq.w   8000b50 <d_exprlist+0x140>
+ 8000dba:      68ab            ldr     r3, [r5, #8]
+ 8000dbc:      681b            ldr     r3, [r3, #0]
+ 8000dbe:      785a            ldrb    r2, [r3, #1]
+ 8000dc0:      2a63            cmp     r2, #99 ; 0x63
+ 8000dc2:      d03a            beq.n   8000e3a <d_exprlist+0x42a>
+ 8000dc4:      f89a 3000       ldrb.w  r3, [sl]
+ 8000dc8:      2b66            cmp     r3, #102        ; 0x66
+ 8000dca:      d149            bne.n   8000e60 <d_exprlist+0x450>
+ 8000dcc:      4620            mov     r0, r4
+ 8000dce:      f001 f8b1       bl      8001f34 <d_operator_name>
+ 8000dd2:      4683            mov     fp, r0
+ 8000dd4:      4941            ldr     r1, [pc, #260]  ; (8000edc <d_exprlist+0x4cc>)
+ 8000dd6:      4650            mov     r0, sl
+ 8000dd8:      f005 fff2       bl      8006dc0 <strcmp>
+ 8000ddc:      2800            cmp     r0, #0
+ 8000dde:      d039            beq.n   8000e54 <d_exprlist+0x444>
+ 8000de0:      493f            ldr     r1, [pc, #252]  ; (8000ee0 <d_exprlist+0x4d0>)
+ 8000de2:      4650            mov     r0, sl
+ 8000de4:      f005 ffec       bl      8006dc0 <strcmp>
+ 8000de8:      b128            cbz     r0, 8000df6 <d_exprlist+0x3e6>
+ 8000dea:      4650            mov     r0, sl
+ 8000dec:      493d            ldr     r1, [pc, #244]  ; (8000ee4 <d_exprlist+0x4d4>)
+ 8000dee:      f005 ffe7       bl      8006dc0 <strcmp>
+ 8000df2:      2800            cmp     r0, #0
+ 8000df4:      d168            bne.n   8000ec8 <d_exprlist+0x4b8>
+ 8000df6:      4620            mov     r0, r4
+ 8000df8:      f001 fa48       bl      800228c <d_unqualified_name>
+ 8000dfc:      68e3            ldr     r3, [r4, #12]
+ 8000dfe:      781a            ldrb    r2, [r3, #0]
+ 8000e00:      2a49            cmp     r2, #73 ; 0x49
+ 8000e02:      4682            mov     sl, r0
+ 8000e04:      d043            beq.n   8000e8e <d_exprlist+0x47e>
+ 8000e06:      4653            mov     r3, sl
+ 8000e08:      465a            mov     r2, fp
+ 8000e0a:      2138            movs    r1, #56 ; 0x38
+ 8000e0c:      4620            mov     r0, r4
+ 8000e0e:      f7ff fa17       bl      8000240 <d_make_comp>
+ 8000e12:      462a            mov     r2, r5
+ 8000e14:      4603            mov     r3, r0
+ 8000e16:      2137            movs    r1, #55 ; 0x37
+ 8000e18:      4620            mov     r0, r4
+ 8000e1a:      f7ff fa11       bl      8000240 <d_make_comp>
+ 8000e1e:      4605            mov     r5, r0
+ 8000e20:      e66c            b.n     8000afc <d_exprlist+0xec>
+ 8000e22:      3301            adds    r3, #1
+ 8000e24:      60e3            str     r3, [r4, #12]
+ 8000e26:      2300            movs    r3, #0
+ 8000e28:      e783            b.n     8000d32 <d_exprlist+0x322>
+ 8000e2a:      3301            adds    r3, #1
+ 8000e2c:      60e3            str     r3, [r4, #12]
+ 8000e2e:      2145            movs    r1, #69 ; 0x45
+ 8000e30:      4620            mov     r0, r4
+ 8000e32:      f7ff fded       bl      8000a10 <d_exprlist>
+ 8000e36:      4603            mov     r3, r0
+ 8000e38:      e6e4            b.n     8000c04 <d_exprlist+0x1f4>
+ 8000e3a:      781b            ldrb    r3, [r3, #0]
+ 8000e3c:      f1a3 0263       sub.w   r2, r3, #99     ; 0x63
+ 8000e40:      2a01            cmp     r2, #1
+ 8000e42:      d902            bls.n   8000e4a <d_exprlist+0x43a>
+ 8000e44:      3b72            subs    r3, #114        ; 0x72
+ 8000e46:      2b01            cmp     r3, #1
+ 8000e48:      d8bc            bhi.n   8000dc4 <d_exprlist+0x3b4>
+ 8000e4a:      4620            mov     r0, r4
+ 8000e4c:      f000 fc78       bl      8001740 <d_type>
+ 8000e50:      4683            mov     fp, r0
+ 8000e52:      e7bf            b.n     8000dd4 <d_exprlist+0x3c4>
+ 8000e54:      2145            movs    r1, #69 ; 0x45
+ 8000e56:      4620            mov     r0, r4
+ 8000e58:      f7ff fdda       bl      8000a10 <d_exprlist>
+ 8000e5c:      4682            mov     sl, r0
+ 8000e5e:      e7d2            b.n     8000e06 <d_exprlist+0x3f6>
+ 8000e60:      4620            mov     r0, r4
+ 8000e62:      f000 f843       bl      8000eec <d_expression_1>
+ 8000e66:      4683            mov     fp, r0
+ 8000e68:      e7b4            b.n     8000dd4 <d_exprlist+0x3c4>
+ 8000e6a:      4620            mov     r0, r4
+ 8000e6c:      f000 f83e       bl      8000eec <d_expression_1>
+ 8000e70:      4682            mov     sl, r0
+ 8000e72:      4620            mov     r0, r4
+ 8000e74:      f000 f83a       bl      8000eec <d_expression_1>
+ 8000e78:      4683            mov     fp, r0
+ 8000e7a:      4620            mov     r0, r4
+ 8000e7c:      f000 f836       bl      8000eec <d_expression_1>
+ 8000e80:      4603            mov     r3, r0
+ 8000e82:      2800            cmp     r0, #0
+ 8000e84:      f47f af55       bne.w   8000d32 <d_exprlist+0x322>
+ 8000e88:      6366            str     r6, [r4, #52]   ; 0x34
+ 8000e8a:      4605            mov     r5, r0
+ 8000e8c:      e61b            b.n     8000ac6 <d_exprlist+0xb6>
+ 8000e8e:      3301            adds    r3, #1
+ 8000e90:      60e3            str     r3, [r4, #12]
+ 8000e92:      4620            mov     r0, r4
+ 8000e94:      f000 fa3c       bl      8001310 <d_template_args_1>
+ 8000e98:      4652            mov     r2, sl
+ 8000e9a:      4603            mov     r3, r0
+ 8000e9c:      2104            movs    r1, #4
+ 8000e9e:      4620            mov     r0, r4
+ 8000ea0:      f7ff f9ce       bl      8000240 <d_make_comp>
+ 8000ea4:      4682            mov     sl, r0
+ 8000ea6:      e7ae            b.n     8000e06 <d_exprlist+0x3f6>
+ 8000ea8:      785a            ldrb    r2, [r3, #1]
+ 8000eaa:      2a69            cmp     r2, #105        ; 0x69
+ 8000eac:      f47f ae50       bne.w   8000b50 <d_exprlist+0x140>
+ 8000eb0:      3302            adds    r3, #2
+ 8000eb2:      60e3            str     r3, [r4, #12]
+ 8000eb4:      2145            movs    r1, #69 ; 0x45
+ 8000eb6:      4620            mov     r0, r4
+ 8000eb8:      f7ff fdaa       bl      8000a10 <d_exprlist>
+ 8000ebc:      4603            mov     r3, r0
+ 8000ebe:      e738            b.n     8000d32 <d_exprlist+0x322>
+ 8000ec0:      4620            mov     r0, r4
+ 8000ec2:      f001 f837       bl      8001f34 <d_operator_name>
+ 8000ec6:      e7d3            b.n     8000e70 <d_exprlist+0x460>
+ 8000ec8:      4620            mov     r0, r4
+ 8000eca:      f000 f80f       bl      8000eec <d_expression_1>
+ 8000ece:      4682            mov     sl, r0
+ 8000ed0:      e799            b.n     8000e06 <d_exprlist+0x3f6>
+ 8000ed2:      bf00            nop
+ 8000ed4:      08012578        .word   0x08012578
+ 8000ed8:      08012588        .word   0x08012588
+ 8000edc:      0801257c        .word   0x0801257c
+ 8000ee0:      08012580        .word   0x08012580
+ 8000ee4:      08012584        .word   0x08012584
+ 8000ee8:      08012a94        .word   0x08012a94
+
+08000eec <d_expression_1>:
+ 8000eec:      68c1            ldr     r1, [r0, #12]
+ 8000eee:      780b            ldrb    r3, [r1, #0]
+ 8000ef0:      2b4c            cmp     r3, #76 ; 0x4c
+ 8000ef2:      d067            beq.n   8000fc4 <d_expression_1+0xd8>
+ 8000ef4:      2b54            cmp     r3, #84 ; 0x54
+ 8000ef6:      d067            beq.n   8000fc8 <d_expression_1+0xdc>
+ 8000ef8:      2b73            cmp     r3, #115        ; 0x73
+ 8000efa:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8000efe:      4604            mov     r4, r0
+ 8000f00:      d01c            beq.n   8000f3c <d_expression_1+0x50>
+ 8000f02:      2b66            cmp     r3, #102        ; 0x66
+ 8000f04:      d13d            bne.n   8000f82 <d_expression_1+0x96>
+ 8000f06:      784b            ldrb    r3, [r1, #1]
+ 8000f08:      2b70            cmp     r3, #112        ; 0x70
+ 8000f0a:      d11d            bne.n   8000f48 <d_expression_1+0x5c>
+ 8000f0c:      1c8b            adds    r3, r1, #2
+ 8000f0e:      60c3            str     r3, [r0, #12]
+ 8000f10:      788b            ldrb    r3, [r1, #2]
+ 8000f12:      2b54            cmp     r3, #84 ; 0x54
+ 8000f14:      f040 809a       bne.w   800104c <d_expression_1+0x160>
+ 8000f18:      3103            adds    r1, #3
+ 8000f1a:      60c1            str     r1, [r0, #12]
+ 8000f1c:      2000            movs    r0, #0
+ 8000f1e:      e9d4 3205       ldrd    r3, r2, [r4, #20]
+ 8000f22:      4293            cmp     r3, r2
+ 8000f24:      da4a            bge.n   8000fbc <d_expression_1+0xd0>
+ 8000f26:      6921            ldr     r1, [r4, #16]
+ 8000f28:      011a            lsls    r2, r3, #4
+ 8000f2a:      188d            adds    r5, r1, r2
+ 8000f2c:      3301            adds    r3, #1
+ 8000f2e:      2700            movs    r7, #0
+ 8000f30:      2606            movs    r6, #6
+ 8000f32:      606f            str     r7, [r5, #4]
+ 8000f34:      6163            str     r3, [r4, #20]
+ 8000f36:      548e            strb    r6, [r1, r2]
+ 8000f38:      60a8            str     r0, [r5, #8]
+ 8000f3a:      e02f            b.n     8000f9c <d_expression_1+0xb0>
+ 8000f3c:      784b            ldrb    r3, [r1, #1]
+ 8000f3e:      2b72            cmp     r3, #114        ; 0x72
+ 8000f40:      d06e            beq.n   8001020 <d_expression_1+0x134>
+ 8000f42:      2b70            cmp     r3, #112        ; 0x70
+ 8000f44:      f000 8160       beq.w   8001208 <d_expression_1+0x31c>
+ 8000f48:      4620            mov     r0, r4
+ 8000f4a:      f000 fff3       bl      8001f34 <d_operator_name>
+ 8000f4e:      4605            mov     r5, r0
+ 8000f50:      b3a0            cbz     r0, 8000fbc <d_expression_1+0xd0>
+ 8000f52:      7803            ldrb    r3, [r0, #0]
+ 8000f54:      2b31            cmp     r3, #49 ; 0x31
+ 8000f56:      d039            beq.n   8000fcc <d_expression_1+0xe0>
+ 8000f58:      2b32            cmp     r3, #50 ; 0x32
+ 8000f5a:      f000 8127       beq.w   80011ac <d_expression_1+0x2c0>
+ 8000f5e:      2b33            cmp     r3, #51 ; 0x33
+ 8000f60:      d12c            bne.n   8000fbc <d_expression_1+0xd0>
+ 8000f62:      68e3            ldr     r3, [r4, #12]
+ 8000f64:      781a            ldrb    r2, [r3, #0]
+ 8000f66:      2a5f            cmp     r2, #95 ; 0x5f
+ 8000f68:      f000 8176       beq.w   8001258 <d_expression_1+0x36c>
+ 8000f6c:      4620            mov     r0, r4
+ 8000f6e:      f7ff ffbd       bl      8000eec <d_expression_1>
+ 8000f72:      4603            mov     r3, r0
+ 8000f74:      462a            mov     r2, r5
+ 8000f76:      4620            mov     r0, r4
+ 8000f78:      2136            movs    r1, #54 ; 0x36
+ 8000f7a:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 8000f7e:      f7ff b95f       b.w     8000240 <d_make_comp>
+ 8000f82:      f1a3 0230       sub.w   r2, r3, #48     ; 0x30
+ 8000f86:      2a09            cmp     r2, #9
+ 8000f88:      d841            bhi.n   800100e <d_expression_1+0x122>
+ 8000f8a:      4620            mov     r0, r4
+ 8000f8c:      f001 f97e       bl      800228c <d_unqualified_name>
+ 8000f90:      4605            mov     r5, r0
+ 8000f92:      b198            cbz     r0, 8000fbc <d_expression_1+0xd0>
+ 8000f94:      68e3            ldr     r3, [r4, #12]
+ 8000f96:      781a            ldrb    r2, [r3, #0]
+ 8000f98:      2a49            cmp     r2, #73 ; 0x49
+ 8000f9a:      d02b            beq.n   8000ff4 <d_expression_1+0x108>
+ 8000f9c:      4628            mov     r0, r5
+ 8000f9e:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8000fa2:      2b74            cmp     r3, #116        ; 0x74
+ 8000fa4:      d1d0            bne.n   8000f48 <d_expression_1+0x5c>
+ 8000fa6:      784b            ldrb    r3, [r1, #1]
+ 8000fa8:      2b6c            cmp     r3, #108        ; 0x6c
+ 8000faa:      d1cd            bne.n   8000f48 <d_expression_1+0x5c>
+ 8000fac:      f000 fbc8       bl      8001740 <d_type>
+ 8000fb0:      68e1            ldr     r1, [r4, #12]
+ 8000fb2:      784b            ldrb    r3, [r1, #1]
+ 8000fb4:      4605            mov     r5, r0
+ 8000fb6:      2b00            cmp     r3, #0
+ 8000fb8:      f040 8190       bne.w   80012dc <d_expression_1+0x3f0>
+ 8000fbc:      2500            movs    r5, #0
+ 8000fbe:      4628            mov     r0, r5
+ 8000fc0:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8000fc4:      f001 bdac       b.w     8002b20 <d_expr_primary>
+ 8000fc8:      f7ff ba92       b.w     80004f0 <d_template_param>
+ 8000fcc:      6887            ldr     r7, [r0, #8]
+ 8000fce:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8000fd0:      68ba            ldr     r2, [r7, #8]
+ 8000fd2:      683e            ldr     r6, [r7, #0]
+ 8000fd4:      49c8            ldr     r1, [pc, #800]  ; (80012f8 <d_expression_1+0x40c>)
+ 8000fd6:      3a02            subs    r2, #2
+ 8000fd8:      4413            add     r3, r2
+ 8000fda:      6323            str     r3, [r4, #48]   ; 0x30
+ 8000fdc:      4630            mov     r0, r6
+ 8000fde:      f005 feef       bl      8006dc0 <strcmp>
+ 8000fe2:      2800            cmp     r0, #0
+ 8000fe4:      d05b            beq.n   800109e <d_expression_1+0x1b2>
+ 8000fe6:      68ff            ldr     r7, [r7, #12]
+ 8000fe8:      2f03            cmp     r7, #3
+ 8000fea:      d8e7            bhi.n   8000fbc <d_expression_1+0xd0>
+ 8000fec:      e8df f007       tbb     [pc, r7]
+ 8000ff0:      64a7385c        .word   0x64a7385c
+ 8000ff4:      3301            adds    r3, #1
+ 8000ff6:      60e3            str     r3, [r4, #12]
+ 8000ff8:      4620            mov     r0, r4
+ 8000ffa:      f000 f989       bl      8001310 <d_template_args_1>
+ 8000ffe:      462a            mov     r2, r5
+ 8001000:      4603            mov     r3, r0
+ 8001002:      2104            movs    r1, #4
+ 8001004:      4620            mov     r0, r4
+ 8001006:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 800100a:      f7ff b919       b.w     8000240 <d_make_comp>
+ 800100e:      2b6f            cmp     r3, #111        ; 0x6f
+ 8001010:      f040 815c       bne.w   80012cc <d_expression_1+0x3e0>
+ 8001014:      784b            ldrb    r3, [r1, #1]
+ 8001016:      2b6e            cmp     r3, #110        ; 0x6e
+ 8001018:      d196            bne.n   8000f48 <d_expression_1+0x5c>
+ 800101a:      3102            adds    r1, #2
+ 800101c:      60c1            str     r1, [r0, #12]
+ 800101e:      e7b4            b.n     8000f8a <d_expression_1+0x9e>
+ 8001020:      3102            adds    r1, #2
+ 8001022:      60c1            str     r1, [r0, #12]
+ 8001024:      f000 fb8c       bl      8001740 <d_type>
+ 8001028:      4605            mov     r5, r0
+ 800102a:      4620            mov     r0, r4
+ 800102c:      f001 f92e       bl      800228c <d_unqualified_name>
+ 8001030:      68e3            ldr     r3, [r4, #12]
+ 8001032:      7819            ldrb    r1, [r3, #0]
+ 8001034:      2949            cmp     r1, #73 ; 0x49
+ 8001036:      4606            mov     r6, r0
+ 8001038:      f000 80d9       beq.w   80011ee <d_expression_1+0x302>
+ 800103c:      4603            mov     r3, r0
+ 800103e:      462a            mov     r2, r5
+ 8001040:      4620            mov     r0, r4
+ 8001042:      2101            movs    r1, #1
+ 8001044:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 8001048:      f7ff b8fa       b.w     8000240 <d_make_comp>
+ 800104c:      f7ff fa36       bl      80004bc <d_compact_number>
+ 8001050:      43c3            mvns    r3, r0
+ 8001052:      f033 4300       bics.w  r3, r3, #2147483648     ; 0x80000000
+ 8001056:      bf18            it      ne
+ 8001058:      3001            addne   r0, #1
+ 800105a:      f47f af60       bne.w   8000f1e <d_expression_1+0x32>
+ 800105e:      e7ad            b.n     8000fbc <d_expression_1+0xd0>
+ 8001060:      2e00            cmp     r6, #0
+ 8001062:      d083            beq.n   8000f6c <d_expression_1+0x80>
+ 8001064:      7833            ldrb    r3, [r6, #0]
+ 8001066:      2b70            cmp     r3, #112        ; 0x70
+ 8001068:      f000 80b0       beq.w   80011cc <d_expression_1+0x2e0>
+ 800106c:      2b6d            cmp     r3, #109        ; 0x6d
+ 800106e:      f000 80ad       beq.w   80011cc <d_expression_1+0x2e0>
+ 8001072:      2700            movs    r7, #0
+ 8001074:      4630            mov     r0, r6
+ 8001076:      49a1            ldr     r1, [pc, #644]  ; (80012fc <d_expression_1+0x410>)
+ 8001078:      f005 fea2       bl      8006dc0 <strcmp>
+ 800107c:      2800            cmp     r0, #0
+ 800107e:      f040 80b1       bne.w   80011e4 <d_expression_1+0x2f8>
+ 8001082:      4620            mov     r0, r4
+ 8001084:      f000 f944       bl      8001310 <d_template_args_1>
+ 8001088:      4603            mov     r3, r0
+ 800108a:      2f00            cmp     r7, #0
+ 800108c:      f43f af72       beq.w   8000f74 <d_expression_1+0x88>
+ 8001090:      461a            mov     r2, r3
+ 8001092:      2138            movs    r1, #56 ; 0x38
+ 8001094:      4620            mov     r0, r4
+ 8001096:      f7ff f8d3       bl      8000240 <d_make_comp>
+ 800109a:      4603            mov     r3, r0
+ 800109c:      e76a            b.n     8000f74 <d_expression_1+0x88>
+ 800109e:      4620            mov     r0, r4
+ 80010a0:      f000 fb4e       bl      8001740 <d_type>
+ 80010a4:      4603            mov     r3, r0
+ 80010a6:      e765            b.n     8000f74 <d_expression_1+0x88>
+ 80010a8:      462a            mov     r2, r5
+ 80010aa:      4620            mov     r0, r4
+ 80010ac:      2300            movs    r3, #0
+ 80010ae:      2135            movs    r1, #53 ; 0x35
+ 80010b0:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 80010b4:      f7ff b8c4       b.w     8000240 <d_make_comp>
+ 80010b8:      4991            ldr     r1, [pc, #580]  ; (8001300 <d_expression_1+0x414>)
+ 80010ba:      4630            mov     r0, r6
+ 80010bc:      f005 fe80       bl      8006dc0 <strcmp>
+ 80010c0:      2800            cmp     r0, #0
+ 80010c2:      f000 80d1       beq.w   8001268 <d_expression_1+0x37c>
+ 80010c6:      7833            ldrb    r3, [r6, #0]
+ 80010c8:      2b66            cmp     r3, #102        ; 0x66
+ 80010ca:      f000 80f6       beq.w   80012ba <d_expression_1+0x3ce>
+ 80010ce:      2b6e            cmp     r3, #110        ; 0x6e
+ 80010d0:      f47f af74       bne.w   8000fbc <d_expression_1+0xd0>
+ 80010d4:      7873            ldrb    r3, [r6, #1]
+ 80010d6:      2b77            cmp     r3, #119        ; 0x77
+ 80010d8:      d002            beq.n   80010e0 <d_expression_1+0x1f4>
+ 80010da:      2b61            cmp     r3, #97 ; 0x61
+ 80010dc:      f47f af6e       bne.w   8000fbc <d_expression_1+0xd0>
+ 80010e0:      215f            movs    r1, #95 ; 0x5f
+ 80010e2:      4620            mov     r0, r4
+ 80010e4:      f7ff fc94       bl      8000a10 <d_exprlist>
+ 80010e8:      4606            mov     r6, r0
+ 80010ea:      4620            mov     r0, r4
+ 80010ec:      f000 fb28       bl      8001740 <d_type>
+ 80010f0:      68e3            ldr     r3, [r4, #12]
+ 80010f2:      7819            ldrb    r1, [r3, #0]
+ 80010f4:      2945            cmp     r1, #69 ; 0x45
+ 80010f6:      4607            mov     r7, r0
+ 80010f8:      f000 80aa       beq.w   8001250 <d_expression_1+0x364>
+ 80010fc:      2970            cmp     r1, #112        ; 0x70
+ 80010fe:      f000 80d0       beq.w   80012a2 <d_expression_1+0x3b6>
+ 8001102:      2969            cmp     r1, #105        ; 0x69
+ 8001104:      f47f af5a       bne.w   8000fbc <d_expression_1+0xd0>
+ 8001108:      785b            ldrb    r3, [r3, #1]
+ 800110a:      2b6c            cmp     r3, #108        ; 0x6c
+ 800110c:      f47f af56       bne.w   8000fbc <d_expression_1+0xd0>
+ 8001110:      4620            mov     r0, r4
+ 8001112:      f7ff feeb       bl      8000eec <d_expression_1>
+ 8001116:      4603            mov     r3, r0
+ 8001118:      463a            mov     r2, r7
+ 800111a:      213b            movs    r1, #59 ; 0x3b
+ 800111c:      4620            mov     r0, r4
+ 800111e:      f7ff f88f       bl      8000240 <d_make_comp>
+ 8001122:      4632            mov     r2, r6
+ 8001124:      4603            mov     r3, r0
+ 8001126:      213a            movs    r1, #58 ; 0x3a
+ 8001128:      4620            mov     r0, r4
+ 800112a:      f7ff f889       bl      8000240 <d_make_comp>
+ 800112e:      462a            mov     r2, r5
+ 8001130:      4603            mov     r3, r0
+ 8001132:      2139            movs    r1, #57 ; 0x39
+ 8001134:      4620            mov     r0, r4
+ 8001136:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 800113a:      f7ff b881       b.w     8000240 <d_make_comp>
+ 800113e:      2e00            cmp     r6, #0
+ 8001140:      f43f af3c       beq.w   8000fbc <d_expression_1+0xd0>
+ 8001144:      68ab            ldr     r3, [r5, #8]
+ 8001146:      681b            ldr     r3, [r3, #0]
+ 8001148:      785a            ldrb    r2, [r3, #1]
+ 800114a:      2a63            cmp     r2, #99 ; 0x63
+ 800114c:      d068            beq.n   8001220 <d_expression_1+0x334>
+ 800114e:      7833            ldrb    r3, [r6, #0]
+ 8001150:      2b66            cmp     r3, #102        ; 0x66
+ 8001152:      d178            bne.n   8001246 <d_expression_1+0x35a>
+ 8001154:      4620            mov     r0, r4
+ 8001156:      f000 feed       bl      8001f34 <d_operator_name>
+ 800115a:      4607            mov     r7, r0
+ 800115c:      4969            ldr     r1, [pc, #420]  ; (8001304 <d_expression_1+0x418>)
+ 800115e:      4630            mov     r0, r6
+ 8001160:      f005 fe2e       bl      8006dc0 <strcmp>
+ 8001164:      2800            cmp     r0, #0
+ 8001166:      d068            beq.n   800123a <d_expression_1+0x34e>
+ 8001168:      4967            ldr     r1, [pc, #412]  ; (8001308 <d_expression_1+0x41c>)
+ 800116a:      4630            mov     r0, r6
+ 800116c:      f005 fe28       bl      8006dc0 <strcmp>
+ 8001170:      b130            cbz     r0, 8001180 <d_expression_1+0x294>
+ 8001172:      4630            mov     r0, r6
+ 8001174:      4965            ldr     r1, [pc, #404]  ; (800130c <d_expression_1+0x420>)
+ 8001176:      f005 fe23       bl      8006dc0 <strcmp>
+ 800117a:      2800            cmp     r0, #0
+ 800117c:      f040 80a1       bne.w   80012c2 <d_expression_1+0x3d6>
+ 8001180:      4620            mov     r0, r4
+ 8001182:      f001 f883       bl      800228c <d_unqualified_name>
+ 8001186:      68e3            ldr     r3, [r4, #12]
+ 8001188:      781a            ldrb    r2, [r3, #0]
+ 800118a:      2a49            cmp     r2, #73 ; 0x49
+ 800118c:      4606            mov     r6, r0
+ 800118e:      d07b            beq.n   8001288 <d_expression_1+0x39c>
+ 8001190:      4633            mov     r3, r6
+ 8001192:      463a            mov     r2, r7
+ 8001194:      2138            movs    r1, #56 ; 0x38
+ 8001196:      4620            mov     r0, r4
+ 8001198:      f7ff f852       bl      8000240 <d_make_comp>
+ 800119c:      462a            mov     r2, r5
+ 800119e:      4603            mov     r3, r0
+ 80011a0:      2137            movs    r1, #55 ; 0x37
+ 80011a2:      4620            mov     r0, r4
+ 80011a4:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 80011a8:      f7ff b84a       b.w     8000240 <d_make_comp>
+ 80011ac:      6883            ldr     r3, [r0, #8]
+ 80011ae:      2b03            cmp     r3, #3
+ 80011b0:      f63f af04       bhi.w   8000fbc <d_expression_1+0xd0>
+ 80011b4:      a201            add     r2, pc, #4      ; (adr r2, 80011bc <d_expression_1+0x2d0>)
+ 80011b6:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 80011ba:      bf00            nop
+ 80011bc:      080010a9        .word   0x080010a9
+ 80011c0:      08000f6d        .word   0x08000f6d
+ 80011c4:      08000fbd        .word   0x08000fbd
+ 80011c8:      08000fbd        .word   0x08000fbd
+ 80011cc:      7872            ldrb    r2, [r6, #1]
+ 80011ce:      429a            cmp     r2, r3
+ 80011d0:      f47f af4f       bne.w   8001072 <d_expression_1+0x186>
+ 80011d4:      68e3            ldr     r3, [r4, #12]
+ 80011d6:      781a            ldrb    r2, [r3, #0]
+ 80011d8:      2a5f            cmp     r2, #95 ; 0x5f
+ 80011da:      f47f af4b       bne.w   8001074 <d_expression_1+0x188>
+ 80011de:      3301            adds    r3, #1
+ 80011e0:      60e3            str     r3, [r4, #12]
+ 80011e2:      e746            b.n     8001072 <d_expression_1+0x186>
+ 80011e4:      4620            mov     r0, r4
+ 80011e6:      f7ff fe81       bl      8000eec <d_expression_1>
+ 80011ea:      4603            mov     r3, r0
+ 80011ec:      e74d            b.n     800108a <d_expression_1+0x19e>
+ 80011ee:      3301            adds    r3, #1
+ 80011f0:      60e3            str     r3, [r4, #12]
+ 80011f2:      4620            mov     r0, r4
+ 80011f4:      f000 f88c       bl      8001310 <d_template_args_1>
+ 80011f8:      4632            mov     r2, r6
+ 80011fa:      4603            mov     r3, r0
+ 80011fc:      2104            movs    r1, #4
+ 80011fe:      4620            mov     r0, r4
+ 8001200:      f7ff f81e       bl      8000240 <d_make_comp>
+ 8001204:      4603            mov     r3, r0
+ 8001206:      e71a            b.n     800103e <d_expression_1+0x152>
+ 8001208:      3102            adds    r1, #2
+ 800120a:      60e1            str     r1, [r4, #12]
+ 800120c:      f7ff fe6e       bl      8000eec <d_expression_1>
+ 8001210:      2300            movs    r3, #0
+ 8001212:      4602            mov     r2, r0
+ 8001214:      214a            movs    r1, #74 ; 0x4a
+ 8001216:      4620            mov     r0, r4
+ 8001218:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 800121c:      f7ff b810       b.w     8000240 <d_make_comp>
+ 8001220:      781b            ldrb    r3, [r3, #0]
+ 8001222:      f1a3 0263       sub.w   r2, r3, #99     ; 0x63
+ 8001226:      2a01            cmp     r2, #1
+ 8001228:      d902            bls.n   8001230 <d_expression_1+0x344>
+ 800122a:      3b72            subs    r3, #114        ; 0x72
+ 800122c:      2b01            cmp     r3, #1
+ 800122e:      d88e            bhi.n   800114e <d_expression_1+0x262>
+ 8001230:      4620            mov     r0, r4
+ 8001232:      f000 fa85       bl      8001740 <d_type>
+ 8001236:      4607            mov     r7, r0
+ 8001238:      e790            b.n     800115c <d_expression_1+0x270>
+ 800123a:      2145            movs    r1, #69 ; 0x45
+ 800123c:      4620            mov     r0, r4
+ 800123e:      f7ff fbe7       bl      8000a10 <d_exprlist>
+ 8001242:      4606            mov     r6, r0
+ 8001244:      e7a4            b.n     8001190 <d_expression_1+0x2a4>
+ 8001246:      4620            mov     r0, r4
+ 8001248:      f7ff fe50       bl      8000eec <d_expression_1>
+ 800124c:      4607            mov     r7, r0
+ 800124e:      e785            b.n     800115c <d_expression_1+0x270>
+ 8001250:      3301            adds    r3, #1
+ 8001252:      60e3            str     r3, [r4, #12]
+ 8001254:      2300            movs    r3, #0
+ 8001256:      e75f            b.n     8001118 <d_expression_1+0x22c>
+ 8001258:      3301            adds    r3, #1
+ 800125a:      60e3            str     r3, [r4, #12]
+ 800125c:      2145            movs    r1, #69 ; 0x45
+ 800125e:      4620            mov     r0, r4
+ 8001260:      f7ff fbd6       bl      8000a10 <d_exprlist>
+ 8001264:      4603            mov     r3, r0
+ 8001266:      e685            b.n     8000f74 <d_expression_1+0x88>
+ 8001268:      4620            mov     r0, r4
+ 800126a:      f7ff fe3f       bl      8000eec <d_expression_1>
+ 800126e:      4606            mov     r6, r0
+ 8001270:      4620            mov     r0, r4
+ 8001272:      f7ff fe3b       bl      8000eec <d_expression_1>
+ 8001276:      4607            mov     r7, r0
+ 8001278:      4620            mov     r0, r4
+ 800127a:      f7ff fe37       bl      8000eec <d_expression_1>
+ 800127e:      4603            mov     r3, r0
+ 8001280:      2800            cmp     r0, #0
+ 8001282:      f47f af49       bne.w   8001118 <d_expression_1+0x22c>
+ 8001286:      e699            b.n     8000fbc <d_expression_1+0xd0>
+ 8001288:      3301            adds    r3, #1
+ 800128a:      60e3            str     r3, [r4, #12]
+ 800128c:      4620            mov     r0, r4
+ 800128e:      f000 f83f       bl      8001310 <d_template_args_1>
+ 8001292:      4632            mov     r2, r6
+ 8001294:      4603            mov     r3, r0
+ 8001296:      2104            movs    r1, #4
+ 8001298:      4620            mov     r0, r4
+ 800129a:      f7fe ffd1       bl      8000240 <d_make_comp>
+ 800129e:      4606            mov     r6, r0
+ 80012a0:      e776            b.n     8001190 <d_expression_1+0x2a4>
+ 80012a2:      785a            ldrb    r2, [r3, #1]
+ 80012a4:      2a69            cmp     r2, #105        ; 0x69
+ 80012a6:      f47f ae89       bne.w   8000fbc <d_expression_1+0xd0>
+ 80012aa:      3302            adds    r3, #2
+ 80012ac:      60e3            str     r3, [r4, #12]
+ 80012ae:      2145            movs    r1, #69 ; 0x45
+ 80012b0:      4620            mov     r0, r4
+ 80012b2:      f7ff fbad       bl      8000a10 <d_exprlist>
+ 80012b6:      4603            mov     r3, r0
+ 80012b8:      e72e            b.n     8001118 <d_expression_1+0x22c>
+ 80012ba:      4620            mov     r0, r4
+ 80012bc:      f000 fe3a       bl      8001f34 <d_operator_name>
+ 80012c0:      e7d5            b.n     800126e <d_expression_1+0x382>
+ 80012c2:      4620            mov     r0, r4
+ 80012c4:      f7ff fe12       bl      8000eec <d_expression_1>
+ 80012c8:      4606            mov     r6, r0
+ 80012ca:      e761            b.n     8001190 <d_expression_1+0x2a4>
+ 80012cc:      2b69            cmp     r3, #105        ; 0x69
+ 80012ce:      f47f ae68       bne.w   8000fa2 <d_expression_1+0xb6>
+ 80012d2:      784b            ldrb    r3, [r1, #1]
+ 80012d4:      2b6c            cmp     r3, #108        ; 0x6c
+ 80012d6:      f47f ae37       bne.w   8000f48 <d_expression_1+0x5c>
+ 80012da:      2500            movs    r5, #0
+ 80012dc:      3102            adds    r1, #2
+ 80012de:      60e1            str     r1, [r4, #12]
+ 80012e0:      4620            mov     r0, r4
+ 80012e2:      2145            movs    r1, #69 ; 0x45
+ 80012e4:      f7ff fb94       bl      8000a10 <d_exprlist>
+ 80012e8:      462a            mov     r2, r5
+ 80012ea:      4603            mov     r3, r0
+ 80012ec:      2130            movs    r1, #48 ; 0x30
+ 80012ee:      4620            mov     r0, r4
+ 80012f0:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 80012f4:      f7fe bfa4       b.w     8000240 <d_make_comp>
+ 80012f8:      08012a94        .word   0x08012a94
+ 80012fc:      08012578        .word   0x08012578
+ 8001300:      08012588        .word   0x08012588
+ 8001304:      0801257c        .word   0x0801257c
+ 8001308:      08012580        .word   0x08012580
+ 800130c:      08012584        .word   0x08012584
+
+08001310 <d_template_args_1>:
+ 8001310:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8001314:      68c2            ldr     r2, [r0, #12]
+ 8001316:      6ac7            ldr     r7, [r0, #44]   ; 0x2c
+ 8001318:      7813            ldrb    r3, [r2, #0]
+ 800131a:      2b45            cmp     r3, #69 ; 0x45
+ 800131c:      b082            sub     sp, #8
+ 800131e:      4604            mov     r4, r0
+ 8001320:      d04e            beq.n   80013c0 <d_template_args_1+0xb0>
+ 8001322:      ad02            add     r5, sp, #8
+ 8001324:      2100            movs    r1, #0
+ 8001326:      f845 1d04       str.w   r1, [r5, #-4]!
+ 800132a:      2601            movs    r6, #1
+ 800132c:      3b49            subs    r3, #73 ; 0x49
+ 800132e:      2b0f            cmp     r3, #15
+ 8001330:      d83d            bhi.n   80013ae <d_template_args_1+0x9e>
+ 8001332:      e8df f003       tbb     [pc, r3]
+ 8001336:      3737            .short  0x3737
+ 8001338:      3c3c323c        .word   0x3c3c323c
+ 800133c:      3c3c3c3c        .word   0x3c3c3c3c
+ 8001340:      3c3c3c3c        .word   0x3c3c3c3c
+ 8001344:      083c            .short  0x083c
+ 8001346:      3201            adds    r2, #1
+ 8001348:      f8d4 8034       ldr.w   r8, [r4, #52]   ; 0x34
+ 800134c:      60e2            str     r2, [r4, #12]
+ 800134e:      6366            str     r6, [r4, #52]   ; 0x34
+ 8001350:      4620            mov     r0, r4
+ 8001352:      f7ff fdcb       bl      8000eec <d_expression_1>
+ 8001356:      68e3            ldr     r3, [r4, #12]
+ 8001358:      f8c4 8034       str.w   r8, [r4, #52]   ; 0x34
+ 800135c:      781a            ldrb    r2, [r3, #0]
+ 800135e:      2a45            cmp     r2, #69 ; 0x45
+ 8001360:      4684            mov     ip, r0
+ 8001362:      f103 0301       add.w   r3, r3, #1
+ 8001366:      d127            bne.n   80013b8 <d_template_args_1+0xa8>
+ 8001368:      60e3            str     r3, [r4, #12]
+ 800136a:      2300            movs    r3, #0
+ 800136c:      212f            movs    r1, #47 ; 0x2f
+ 800136e:      4662            mov     r2, ip
+ 8001370:      4620            mov     r0, r4
+ 8001372:      f1bc 0f00       cmp.w   ip, #0
+ 8001376:      d01f            beq.n   80013b8 <d_template_args_1+0xa8>
+ 8001378:      f7fe ff62       bl      8000240 <d_make_comp>
+ 800137c:      6028            str     r0, [r5, #0]
+ 800137e:      f100 050c       add.w   r5, r0, #12
+ 8001382:      b1c8            cbz     r0, 80013b8 <d_template_args_1+0xa8>
+ 8001384:      68e2            ldr     r2, [r4, #12]
+ 8001386:      7813            ldrb    r3, [r2, #0]
+ 8001388:      2b45            cmp     r3, #69 ; 0x45
+ 800138a:      d1cf            bne.n   800132c <d_template_args_1+0x1c>
+ 800138c:      9801            ldr     r0, [sp, #4]
+ 800138e:      62e7            str     r7, [r4, #44]   ; 0x2c
+ 8001390:      3201            adds    r2, #1
+ 8001392:      60e2            str     r2, [r4, #12]
+ 8001394:      b002            add     sp, #8
+ 8001396:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800139a:      4620            mov     r0, r4
+ 800139c:      f001 fbc0       bl      8002b20 <d_expr_primary>
+ 80013a0:      4684            mov     ip, r0
+ 80013a2:      e7e2            b.n     800136a <d_template_args_1+0x5a>
+ 80013a4:      4620            mov     r0, r4
+ 80013a6:      f000 f815       bl      80013d4 <d_template_args>
+ 80013aa:      4684            mov     ip, r0
+ 80013ac:      e7dd            b.n     800136a <d_template_args_1+0x5a>
+ 80013ae:      4620            mov     r0, r4
+ 80013b0:      f000 f9c6       bl      8001740 <d_type>
+ 80013b4:      4684            mov     ip, r0
+ 80013b6:      e7d8            b.n     800136a <d_template_args_1+0x5a>
+ 80013b8:      2000            movs    r0, #0
+ 80013ba:      b002            add     sp, #8
+ 80013bc:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 80013c0:      3201            adds    r2, #1
+ 80013c2:      2300            movs    r3, #0
+ 80013c4:      60c2            str     r2, [r0, #12]
+ 80013c6:      212f            movs    r1, #47 ; 0x2f
+ 80013c8:      461a            mov     r2, r3
+ 80013ca:      b002            add     sp, #8
+ 80013cc:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 80013d0:      f7fe bf36       b.w     8000240 <d_make_comp>
+
+080013d4 <d_template_args>:
+ 80013d4:      68c3            ldr     r3, [r0, #12]
+ 80013d6:      781a            ldrb    r2, [r3, #0]
+ 80013d8:      3a49            subs    r2, #73 ; 0x49
+ 80013da:      2a01            cmp     r2, #1
+ 80013dc:      d802            bhi.n   80013e4 <d_template_args+0x10>
+ 80013de:      3301            adds    r3, #1
+ 80013e0:      60c3            str     r3, [r0, #12]
+ 80013e2:      e795            b.n     8001310 <d_template_args_1>
+ 80013e4:      2000            movs    r0, #0
+ 80013e6:      4770            bx      lr
+
+080013e8 <d_name>:
+ 80013e8:      e92d 43f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, lr}
+ 80013ec:      68c2            ldr     r2, [r0, #12]
+ 80013ee:      7813            ldrb    r3, [r2, #0]
+ 80013f0:      3b4e            subs    r3, #78 ; 0x4e
+ 80013f2:      b083            sub     sp, #12
+ 80013f4:      4604            mov     r4, r0
+ 80013f6:      2b0c            cmp     r3, #12
+ 80013f8:      d846            bhi.n   8001488 <d_name+0xa0>
+ 80013fa:      e8df f003       tbb     [pc, r3]
+ 80013fe:      4567            .short  0x4567
+ 8001400:      0e454545        .word   0x0e454545
+ 8001404:      45450745        .word   0x45450745
+ 8001408:      4545            .short  0x4545
+ 800140a:      a4              .byte   0xa4
+ 800140b:      00              .byte   0x00
+ 800140c:      f000 ff3e       bl      800228c <d_unqualified_name>
+ 8001410:      4605            mov     r5, r0
+ 8001412:      4628            mov     r0, r5
+ 8001414:      b003            add     sp, #12
+ 8001416:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 800141a:      7853            ldrb    r3, [r2, #1]
+ 800141c:      2b74            cmp     r3, #116        ; 0x74
+ 800141e:      f040 80d7       bne.w   80015d0 <d_name+0x1e8>
+ 8001422:      e9d0 3105       ldrd    r3, r1, [r0, #20]
+ 8001426:      3202            adds    r2, #2
+ 8001428:      428b            cmp     r3, r1
+ 800142a:      60c2            str     r2, [r0, #12]
+ 800142c:      f280 8127       bge.w   800167e <d_name+0x296>
+ 8001430:      6901            ldr     r1, [r0, #16]
+ 8001432:      48c0            ldr     r0, [pc, #768]  ; (8001734 <d_name+0x34c>)
+ 8001434:      011a            lsls    r2, r3, #4
+ 8001436:      188d            adds    r5, r1, r2
+ 8001438:      3301            adds    r3, #1
+ 800143a:      6163            str     r3, [r4, #20]
+ 800143c:      2300            movs    r3, #0
+ 800143e:      606b            str     r3, [r5, #4]
+ 8001440:      548b            strb    r3, [r1, r2]
+ 8001442:      2303            movs    r3, #3
+ 8001444:      e9c5 0302       strd    r0, r3, [r5, #8]
+ 8001448:      4620            mov     r0, r4
+ 800144a:      f000 ff1f       bl      800228c <d_unqualified_name>
+ 800144e:      462a            mov     r2, r5
+ 8001450:      4603            mov     r3, r0
+ 8001452:      2101            movs    r1, #1
+ 8001454:      4620            mov     r0, r4
+ 8001456:      f7fe fef3       bl      8000240 <d_make_comp>
+ 800145a:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 800145c:      68e2            ldr     r2, [r4, #12]
+ 800145e:      3303            adds    r3, #3
+ 8001460:      6323            str     r3, [r4, #48]   ; 0x30
+ 8001462:      7813            ldrb    r3, [r2, #0]
+ 8001464:      2b49            cmp     r3, #73 ; 0x49
+ 8001466:      4605            mov     r5, r0
+ 8001468:      d1d3            bne.n   8001412 <d_name+0x2a>
+ 800146a:      2800            cmp     r0, #0
+ 800146c:      f000 80ba       beq.w   80015e4 <d_name+0x1fc>
+ 8001470:      e9d4 3208       ldrd    r3, r2, [r4, #32]
+ 8001474:      4293            cmp     r3, r2
+ 8001476:      f280 80b5       bge.w   80015e4 <d_name+0x1fc>
+ 800147a:      69e1            ldr     r1, [r4, #28]
+ 800147c:      1c5a            adds    r2, r3, #1
+ 800147e:      f841 0023       str.w   r0, [r1, r3, lsl #2]
+ 8001482:      6222            str     r2, [r4, #32]
+ 8001484:      4620            mov     r0, r4
+ 8001486:      e014            b.n     80014b2 <d_name+0xca>
+ 8001488:      f000 ff00       bl      800228c <d_unqualified_name>
+ 800148c:      68e3            ldr     r3, [r4, #12]
+ 800148e:      781b            ldrb    r3, [r3, #0]
+ 8001490:      2b49            cmp     r3, #73 ; 0x49
+ 8001492:      4605            mov     r5, r0
+ 8001494:      d1bd            bne.n   8001412 <d_name+0x2a>
+ 8001496:      2800            cmp     r0, #0
+ 8001498:      f000 80a4       beq.w   80015e4 <d_name+0x1fc>
+ 800149c:      e9d4 3208       ldrd    r3, r2, [r4, #32]
+ 80014a0:      4293            cmp     r3, r2
+ 80014a2:      f280 809f       bge.w   80015e4 <d_name+0x1fc>
+ 80014a6:      69e1            ldr     r1, [r4, #28]
+ 80014a8:      1c5a            adds    r2, r3, #1
+ 80014aa:      f841 0023       str.w   r0, [r1, r3, lsl #2]
+ 80014ae:      4620            mov     r0, r4
+ 80014b0:      6222            str     r2, [r4, #32]
+ 80014b2:      f7ff ff8f       bl      80013d4 <d_template_args>
+ 80014b6:      462a            mov     r2, r5
+ 80014b8:      4603            mov     r3, r0
+ 80014ba:      2104            movs    r1, #4
+ 80014bc:      4620            mov     r0, r4
+ 80014be:      f7fe febf       bl      8000240 <d_make_comp>
+ 80014c2:      4605            mov     r5, r0
+ 80014c4:      4628            mov     r0, r5
+ 80014c6:      b003            add     sp, #12
+ 80014c8:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 80014cc:      3201            adds    r2, #1
+ 80014ce:      60c2            str     r2, [r0, #12]
+ 80014d0:      a901            add     r1, sp, #4
+ 80014d2:      2201            movs    r2, #1
+ 80014d4:      f000 fde6       bl      80020a4 <d_cv_qualifiers>
+ 80014d8:      4680            mov     r8, r0
+ 80014da:      2800            cmp     r0, #0
+ 80014dc:      f000 8082       beq.w   80015e4 <d_name+0x1fc>
+ 80014e0:      2100            movs    r1, #0
+ 80014e2:      4620            mov     r0, r4
+ 80014e4:      f7fe fef4       bl      80002d0 <d_ref_qualifier>
+ 80014e8:      68e2            ldr     r2, [r4, #12]
+ 80014ea:      4e93            ldr     r6, [pc, #588]  ; (8001738 <d_name+0x350>)
+ 80014ec:      7815            ldrb    r5, [r2, #0]
+ 80014ee:      4681            mov     r9, r0
+ 80014f0:      2700            movs    r7, #0
+ 80014f2:      2d00            cmp     r5, #0
+ 80014f4:      f000 80b3       beq.w   800165e <d_name+0x276>
+ 80014f8:      2d44            cmp     r5, #68 ; 0x44
+ 80014fa:      f000 8096       beq.w   800162a <d_name+0x242>
+ 80014fe:      f1a5 0330       sub.w   r3, r5, #48     ; 0x30
+ 8001502:      b2db            uxtb    r3, r3
+ 8001504:      2b1c            cmp     r3, #28
+ 8001506:      d96f            bls.n   80015e8 <d_name+0x200>
+ 8001508:      f1a5 0361       sub.w   r3, r5, #97     ; 0x61
+ 800150c:      b2db            uxtb    r3, r3
+ 800150e:      2b19            cmp     r3, #25
+ 8001510:      d96e            bls.n   80015f0 <d_name+0x208>
+ 8001512:      2d55            cmp     r5, #85 ; 0x55
+ 8001514:      f000 80a1       beq.w   800165a <d_name+0x272>
+ 8001518:      2d53            cmp     r5, #83 ; 0x53
+ 800151a:      f000 80b2       beq.w   8001682 <d_name+0x29a>
+ 800151e:      2d49            cmp     r5, #73 ; 0x49
+ 8001520:      f000 80a4       beq.w   800166c <d_name+0x284>
+ 8001524:      2d54            cmp     r5, #84 ; 0x54
+ 8001526:      f000 80e6       beq.w   80016f6 <d_name+0x30e>
+ 800152a:      2d45            cmp     r5, #69 ; 0x45
+ 800152c:      f000 80e9       beq.w   8001702 <d_name+0x31a>
+ 8001530:      2d4d            cmp     r5, #77 ; 0x4d
+ 8001532:      f040 8094       bne.w   800165e <d_name+0x276>
+ 8001536:      2f00            cmp     r7, #0
+ 8001538:      f000 8091       beq.w   800165e <d_name+0x276>
+ 800153c:      1c53            adds    r3, r2, #1
+ 800153e:      60e3            str     r3, [r4, #12]
+ 8001540:      7855            ldrb    r5, [r2, #1]
+ 8001542:      461a            mov     r2, r3
+ 8001544:      e7d5            b.n     80014f2 <d_name+0x10a>
+ 8001546:      3201            adds    r2, #1
+ 8001548:      60c2            str     r2, [r0, #12]
+ 800154a:      2100            movs    r1, #0
+ 800154c:      f001 f83a       bl      80025c4 <d_encoding>
+ 8001550:      68e3            ldr     r3, [r4, #12]
+ 8001552:      781a            ldrb    r2, [r3, #0]
+ 8001554:      2a45            cmp     r2, #69 ; 0x45
+ 8001556:      4606            mov     r6, r0
+ 8001558:      d144            bne.n   80015e4 <d_name+0x1fc>
+ 800155a:      1c5a            adds    r2, r3, #1
+ 800155c:      60e2            str     r2, [r4, #12]
+ 800155e:      785a            ldrb    r2, [r3, #1]
+ 8001560:      2a73            cmp     r2, #115        ; 0x73
+ 8001562:      f000 80b0       beq.w   80016c6 <d_name+0x2de>
+ 8001566:      2a64            cmp     r2, #100        ; 0x64
+ 8001568:      f000 8095       beq.w   8001696 <d_name+0x2ae>
+ 800156c:      4620            mov     r0, r4
+ 800156e:      f7ff ff3b       bl      80013e8 <d_name>
+ 8001572:      4605            mov     r5, r0
+ 8001574:      b308            cbz     r0, 80015ba <d_name+0x1d2>
+ 8001576:      7803            ldrb    r3, [r0, #0]
+ 8001578:      2b45            cmp     r3, #69 ; 0x45
+ 800157a:      d01e            beq.n   80015ba <d_name+0x1d2>
+ 800157c:      2b47            cmp     r3, #71 ; 0x47
+ 800157e:      d01c            beq.n   80015ba <d_name+0x1d2>
+ 8001580:      f04f 37ff       mov.w   r7, #4294967295 ; 0xffffffff
+ 8001584:      4620            mov     r0, r4
+ 8001586:      f7ff f903       bl      8000790 <d_discriminator>
+ 800158a:      b358            cbz     r0, 80015e4 <d_name+0x1fc>
+ 800158c:      1c7b            adds    r3, r7, #1
+ 800158e:      d014            beq.n   80015ba <d_name+0x1d2>
+ 8001590:      e9d4 3205       ldrd    r3, r2, [r4, #20]
+ 8001594:      4293            cmp     r3, r2
+ 8001596:      f280 8094       bge.w   80016c2 <d_name+0x2da>
+ 800159a:      6920            ldr     r0, [r4, #16]
+ 800159c:      0119            lsls    r1, r3, #4
+ 800159e:      1842            adds    r2, r0, r1
+ 80015a0:      3301            adds    r3, #1
+ 80015a2:      f04f 0e00       mov.w   lr, #0
+ 80015a6:      f04f 0c46       mov.w   ip, #70 ; 0x46
+ 80015aa:      f8c2 e004       str.w   lr, [r2, #4]
+ 80015ae:      6163            str     r3, [r4, #20]
+ 80015b0:      f800 c001       strb.w  ip, [r0, r1]
+ 80015b4:      e9c2 5702       strd    r5, r7, [r2, #8]
+ 80015b8:      4615            mov     r5, r2
+ 80015ba:      462b            mov     r3, r5
+ 80015bc:      4632            mov     r2, r6
+ 80015be:      4620            mov     r0, r4
+ 80015c0:      2102            movs    r1, #2
+ 80015c2:      f7fe fe3d       bl      8000240 <d_make_comp>
+ 80015c6:      4605            mov     r5, r0
+ 80015c8:      4628            mov     r0, r5
+ 80015ca:      b003            add     sp, #12
+ 80015cc:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 80015d0:      2100            movs    r1, #0
+ 80015d2:      f7ff f825       bl      8000620 <d_substitution>
+ 80015d6:      68e3            ldr     r3, [r4, #12]
+ 80015d8:      781b            ldrb    r3, [r3, #0]
+ 80015da:      2b49            cmp     r3, #73 ; 0x49
+ 80015dc:      4605            mov     r5, r0
+ 80015de:      f47f af18       bne.w   8001412 <d_name+0x2a>
+ 80015e2:      e74f            b.n     8001484 <d_name+0x9c>
+ 80015e4:      2500            movs    r5, #0
+ 80015e6:      e714            b.n     8001412 <d_name+0x2a>
+ 80015e8:      fa26 f303       lsr.w   r3, r6, r3
+ 80015ec:      07d9            lsls    r1, r3, #31
+ 80015ee:      d58b            bpl.n   8001508 <d_name+0x120>
+ 80015f0:      4620            mov     r0, r4
+ 80015f2:      f000 fe4b       bl      800228c <d_unqualified_name>
+ 80015f6:      b35f            cbz     r7, 8001650 <d_name+0x268>
+ 80015f8:      2101            movs    r1, #1
+ 80015fa:      4603            mov     r3, r0
+ 80015fc:      463a            mov     r2, r7
+ 80015fe:      4620            mov     r0, r4
+ 8001600:      f7fe fe1e       bl      8000240 <d_make_comp>
+ 8001604:      4607            mov     r7, r0
+ 8001606:      68e2            ldr     r2, [r4, #12]
+ 8001608:      2d53            cmp     r5, #83 ; 0x53
+ 800160a:      7813            ldrb    r3, [r2, #0]
+ 800160c:      d01e            beq.n   800164c <d_name+0x264>
+ 800160e:      2b45            cmp     r3, #69 ; 0x45
+ 8001610:      d01a            beq.n   8001648 <d_name+0x260>
+ 8001612:      b327            cbz     r7, 800165e <d_name+0x276>
+ 8001614:      e9d4 3108       ldrd    r3, r1, [r4, #32]
+ 8001618:      428b            cmp     r3, r1
+ 800161a:      da20            bge.n   800165e <d_name+0x276>
+ 800161c:      69e1            ldr     r1, [r4, #28]
+ 800161e:      f841 7023       str.w   r7, [r1, r3, lsl #2]
+ 8001622:      3301            adds    r3, #1
+ 8001624:      6223            str     r3, [r4, #32]
+ 8001626:      7815            ldrb    r5, [r2, #0]
+ 8001628:      e763            b.n     80014f2 <d_name+0x10a>
+ 800162a:      7853            ldrb    r3, [r2, #1]
+ 800162c:      f003 03df       and.w   r3, r3, #223    ; 0xdf
+ 8001630:      2b54            cmp     r3, #84 ; 0x54
+ 8001632:      4620            mov     r0, r4
+ 8001634:      d00e            beq.n   8001654 <d_name+0x26c>
+ 8001636:      f000 fe29       bl      800228c <d_unqualified_name>
+ 800163a:      2f00            cmp     r7, #0
+ 800163c:      d1dc            bne.n   80015f8 <d_name+0x210>
+ 800163e:      68e2            ldr     r2, [r4, #12]
+ 8001640:      7813            ldrb    r3, [r2, #0]
+ 8001642:      2b45            cmp     r3, #69 ; 0x45
+ 8001644:      4607            mov     r7, r0
+ 8001646:      d1e4            bne.n   8001612 <d_name+0x22a>
+ 8001648:      461d            mov     r5, r3
+ 800164a:      e758            b.n     80014fe <d_name+0x116>
+ 800164c:      461d            mov     r5, r3
+ 800164e:      e750            b.n     80014f2 <d_name+0x10a>
+ 8001650:      4607            mov     r7, r0
+ 8001652:      e7d8            b.n     8001606 <d_name+0x21e>
+ 8001654:      f000 f874       bl      8001740 <d_type>
+ 8001658:      e7ef            b.n     800163a <d_name+0x252>
+ 800165a:      4620            mov     r0, r4
+ 800165c:      e7eb            b.n     8001636 <d_name+0x24e>
+ 800165e:      2500            movs    r5, #0
+ 8001660:      4628            mov     r0, r5
+ 8001662:      f8c8 5000       str.w   r5, [r8]
+ 8001666:      b003            add     sp, #12
+ 8001668:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 800166c:      2f00            cmp     r7, #0
+ 800166e:      d0f6            beq.n   800165e <d_name+0x276>
+ 8001670:      3201            adds    r2, #1
+ 8001672:      60e2            str     r2, [r4, #12]
+ 8001674:      4620            mov     r0, r4
+ 8001676:      f7ff fe4b       bl      8001310 <d_template_args_1>
+ 800167a:      2104            movs    r1, #4
+ 800167c:      e7bd            b.n     80015fa <d_name+0x212>
+ 800167e:      2500            movs    r5, #0
+ 8001680:      e6e2            b.n     8001448 <d_name+0x60>
+ 8001682:      2101            movs    r1, #1
+ 8001684:      4620            mov     r0, r4
+ 8001686:      f7fe ffcb       bl      8000620 <d_substitution>
+ 800168a:      2f00            cmp     r7, #0
+ 800168c:      d1b4            bne.n   80015f8 <d_name+0x210>
+ 800168e:      68e2            ldr     r2, [r4, #12]
+ 8001690:      4607            mov     r7, r0
+ 8001692:      7815            ldrb    r5, [r2, #0]
+ 8001694:      e72d            b.n     80014f2 <d_name+0x10a>
+ 8001696:      3302            adds    r3, #2
+ 8001698:      60e3            str     r3, [r4, #12]
+ 800169a:      4620            mov     r0, r4
+ 800169c:      f7fe ff0e       bl      80004bc <d_compact_number>
+ 80016a0:      1e07            subs    r7, r0, #0
+ 80016a2:      db9f            blt.n   80015e4 <d_name+0x1fc>
+ 80016a4:      4620            mov     r0, r4
+ 80016a6:      f7ff fe9f       bl      80013e8 <d_name>
+ 80016aa:      4605            mov     r5, r0
+ 80016ac:      2800            cmp     r0, #0
+ 80016ae:      f43f af6f       beq.w   8001590 <d_name+0x1a8>
+ 80016b2:      7803            ldrb    r3, [r0, #0]
+ 80016b4:      2b45            cmp     r3, #69 ; 0x45
+ 80016b6:      f43f af69       beq.w   800158c <d_name+0x1a4>
+ 80016ba:      2b47            cmp     r3, #71 ; 0x47
+ 80016bc:      f43f af66       beq.w   800158c <d_name+0x1a4>
+ 80016c0:      e760            b.n     8001584 <d_name+0x19c>
+ 80016c2:      2500            movs    r5, #0
+ 80016c4:      e779            b.n     80015ba <d_name+0x1d2>
+ 80016c6:      3302            adds    r3, #2
+ 80016c8:      60e3            str     r3, [r4, #12]
+ 80016ca:      4620            mov     r0, r4
+ 80016cc:      f7ff f860       bl      8000790 <d_discriminator>
+ 80016d0:      2800            cmp     r0, #0
+ 80016d2:      d087            beq.n   80015e4 <d_name+0x1fc>
+ 80016d4:      e9d4 2305       ldrd    r2, r3, [r4, #20]
+ 80016d8:      429a            cmp     r2, r3
+ 80016da:      da10            bge.n   80016fe <d_name+0x316>
+ 80016dc:      6920            ldr     r0, [r4, #16]
+ 80016de:      4d17            ldr     r5, [pc, #92]   ; (800173c <d_name+0x354>)
+ 80016e0:      0111            lsls    r1, r2, #4
+ 80016e2:      1843            adds    r3, r0, r1
+ 80016e4:      3201            adds    r2, #1
+ 80016e6:      6162            str     r2, [r4, #20]
+ 80016e8:      2200            movs    r2, #0
+ 80016ea:      605a            str     r2, [r3, #4]
+ 80016ec:      5442            strb    r2, [r0, r1]
+ 80016ee:      220e            movs    r2, #14
+ 80016f0:      e9c3 5202       strd    r5, r2, [r3, #8]
+ 80016f4:      e762            b.n     80015bc <d_name+0x1d4>
+ 80016f6:      4620            mov     r0, r4
+ 80016f8:      f7fe fefa       bl      80004f0 <d_template_param>
+ 80016fc:      e79d            b.n     800163a <d_name+0x252>
+ 80016fe:      2300            movs    r3, #0
+ 8001700:      e75c            b.n     80015bc <d_name+0x1d4>
+ 8001702:      f8c8 7000       str.w   r7, [r8]
+ 8001706:      2f00            cmp     r7, #0
+ 8001708:      f43f af6c       beq.w   80015e4 <d_name+0x1fc>
+ 800170c:      f1b9 0f00       cmp.w   r9, #0
+ 8001710:      d004            beq.n   800171c <d_name+0x334>
+ 8001712:      9b01            ldr     r3, [sp, #4]
+ 8001714:      f8c9 3008       str.w   r3, [r9, #8]
+ 8001718:      f8cd 9004       str.w   r9, [sp, #4]
+ 800171c:      7813            ldrb    r3, [r2, #0]
+ 800171e:      2b45            cmp     r3, #69 ; 0x45
+ 8001720:      f47f af60       bne.w   80015e4 <d_name+0x1fc>
+ 8001724:      9d01            ldr     r5, [sp, #4]
+ 8001726:      3201            adds    r2, #1
+ 8001728:      4628            mov     r0, r5
+ 800172a:      60e2            str     r2, [r4, #12]
+ 800172c:      b003            add     sp, #12
+ 800172e:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 8001732:      bf00            nop
+ 8001734:      0801259c        .word   0x0801259c
+ 8001738:      100803ff        .word   0x100803ff
+ 800173c:      0801258c        .word   0x0801258c
+
+08001740 <d_type>:
+ 8001740:      e92d 43f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, lr}
+ 8001744:      68c2            ldr     r2, [r0, #12]
+ 8001746:      7813            ldrb    r3, [r2, #0]
+ 8001748:      2b72            cmp     r3, #114        ; 0x72
+ 800174a:      b083            sub     sp, #12
+ 800174c:      4604            mov     r4, r0
+ 800174e:      d05f            beq.n   8001810 <d_type+0xd0>
+ 8001750:      2b56            cmp     r3, #86 ; 0x56
+ 8001752:      d05d            beq.n   8001810 <d_type+0xd0>
+ 8001754:      2b4b            cmp     r3, #75 ; 0x4b
+ 8001756:      d05b            beq.n   8001810 <d_type+0xd0>
+ 8001758:      2b44            cmp     r3, #68 ; 0x44
+ 800175a:      d051            beq.n   8001800 <d_type+0xc0>
+ 800175c:      f1a3 0130       sub.w   r1, r3, #48     ; 0x30
+ 8001760:      294a            cmp     r1, #74 ; 0x4a
+ 8001762:      f200 809e       bhi.w   80018a2 <d_type+0x162>
+ 8001766:      e8df f011       tbh     [pc, r1, lsl #1]
+ 800176a:      0111            .short  0x0111
+ 800176c:      01110111        .word   0x01110111
+ 8001770:      01110111        .word   0x01110111
+ 8001774:      01110111        .word   0x01110111
+ 8001778:      01110111        .word   0x01110111
+ 800177c:      009c0111        .word   0x009c0111
+ 8001780:      009c009c        .word   0x009c009c
+ 8001784:      009c009c        .word   0x009c009c
+ 8001788:      009c009c        .word   0x009c009c
+ 800178c:      009c021e        .word   0x009c021e
+ 8001790:      009c013b        .word   0x009c013b
+ 8001794:      0135009c        .word   0x0135009c
+ 8001798:      009c0149        .word   0x009c0149
+ 800179c:      009c009c        .word   0x009c009c
+ 80017a0:      009c009c        .word   0x009c009c
+ 80017a4:      01110206        .word   0x01110206
+ 80017a8:      01650157        .word   0x01650157
+ 80017ac:      0173009c        .word   0x0173009c
+ 80017b0:      01a50181        .word   0x01a50181
+ 80017b4:      009c01cc        .word   0x009c01cc
+ 80017b8:      009c009c        .word   0x009c009c
+ 80017bc:      0111009c        .word   0x0111009c
+ 80017c0:      009c009c        .word   0x009c009c
+ 80017c4:      009c009c        .word   0x009c009c
+ 80017c8:      009c009c        .word   0x009c009c
+ 80017cc:      01e401e4        .word   0x01e401e4
+ 80017d0:      01e401e4        .word   0x01e401e4
+ 80017d4:      01e401e4        .word   0x01e401e4
+ 80017d8:      01e401e4        .word   0x01e401e4
+ 80017dc:      01e401e4        .word   0x01e401e4
+ 80017e0:      01e4009c        .word   0x01e4009c
+ 80017e4:      01e401e4        .word   0x01e401e4
+ 80017e8:      009c01e4        .word   0x009c01e4
+ 80017ec:      009c009c        .word   0x009c009c
+ 80017f0:      01e401e4        .word   0x01e401e4
+ 80017f4:      01e40127        .word   0x01e40127
+ 80017f8:      01e401e4        .word   0x01e401e4
+ 80017fc:      01e401e4        .word   0x01e401e4
+ 8001800:      7853            ldrb    r3, [r2, #1]
+ 8001802:      f003 01df       and.w   r1, r3, #223    ; 0xdf
+ 8001806:      294f            cmp     r1, #79 ; 0x4f
+ 8001808:      d002            beq.n   8001810 <d_type+0xd0>
+ 800180a:      3b77            subs    r3, #119        ; 0x77
+ 800180c:      2b01            cmp     r3, #1
+ 800180e:      d84d            bhi.n   80018ac <d_type+0x16c>
+ 8001810:      2200            movs    r2, #0
+ 8001812:      a901            add     r1, sp, #4
+ 8001814:      4620            mov     r0, r4
+ 8001816:      f000 fc45       bl      80020a4 <d_cv_qualifiers>
+ 800181a:      4605            mov     r5, r0
+ 800181c:      2800            cmp     r0, #0
+ 800181e:      d040            beq.n   80018a2 <d_type+0x162>
+ 8001820:      68e3            ldr     r3, [r4, #12]
+ 8001822:      781b            ldrb    r3, [r3, #0]
+ 8001824:      2b46            cmp     r3, #70 ; 0x46
+ 8001826:      4620            mov     r0, r4
+ 8001828:      d119            bne.n   800185e <d_type+0x11e>
+ 800182a:      f000 fd0f       bl      800224c <d_function_type>
+ 800182e:      6028            str     r0, [r5, #0]
+ 8001830:      2800            cmp     r0, #0
+ 8001832:      d036            beq.n   80018a2 <d_type+0x162>
+ 8001834:      7803            ldrb    r3, [r0, #0]
+ 8001836:      9a01            ldr     r2, [sp, #4]
+ 8001838:      3b1f            subs    r3, #31
+ 800183a:      2b01            cmp     r3, #1
+ 800183c:      d913            bls.n   8001866 <d_type+0x126>
+ 800183e:      2a00            cmp     r2, #0
+ 8001840:      d02f            beq.n   80018a2 <d_type+0x162>
+ 8001842:      e9d4 3108       ldrd    r3, r1, [r4, #32]
+ 8001846:      428b            cmp     r3, r1
+ 8001848:      da2b            bge.n   80018a2 <d_type+0x162>
+ 800184a:      69e0            ldr     r0, [r4, #28]
+ 800184c:      f840 2023       str.w   r2, [r0, r3, lsl #2]
+ 8001850:      1c59            adds    r1, r3, #1
+ 8001852:      9d01            ldr     r5, [sp, #4]
+ 8001854:      6221            str     r1, [r4, #32]
+ 8001856:      4628            mov     r0, r5
+ 8001858:      b003            add     sp, #12
+ 800185a:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 800185e:      f7ff ff6f       bl      8001740 <d_type>
+ 8001862:      6028            str     r0, [r5, #0]
+ 8001864:      e7e4            b.n     8001830 <d_type+0xf0>
+ 8001866:      6883            ldr     r3, [r0, #8]
+ 8001868:      6082            str     r2, [r0, #8]
+ 800186a:      682a            ldr     r2, [r5, #0]
+ 800186c:      9201            str     r2, [sp, #4]
+ 800186e:      602b            str     r3, [r5, #0]
+ 8001870:      9a01            ldr     r2, [sp, #4]
+ 8001872:      e7e4            b.n     800183e <d_type+0xfe>
+ 8001874:      2301            movs    r3, #1
+ 8001876:      6b45            ldr     r5, [r0, #52]   ; 0x34
+ 8001878:      6343            str     r3, [r0, #52]   ; 0x34
+ 800187a:      f7ff fb37       bl      8000eec <d_expression_1>
+ 800187e:      6365            str     r5, [r4, #52]   ; 0x34
+ 8001880:      4602            mov     r2, r0
+ 8001882:      2300            movs    r3, #0
+ 8001884:      2142            movs    r1, #66 ; 0x42
+ 8001886:      4620            mov     r0, r4
+ 8001888:      f7fe fcda       bl      8000240 <d_make_comp>
+ 800188c:      4605            mov     r5, r0
+ 800188e:      9001            str     r0, [sp, #4]
+ 8001890:      b138            cbz     r0, 80018a2 <d_type+0x162>
+ 8001892:      68e3            ldr     r3, [r4, #12]
+ 8001894:      781a            ldrb    r2, [r3, #0]
+ 8001896:      b122            cbz     r2, 80018a2 <d_type+0x162>
+ 8001898:      1c5a            adds    r2, r3, #1
+ 800189a:      60e2            str     r2, [r4, #12]
+ 800189c:      781b            ldrb    r3, [r3, #0]
+ 800189e:      2b45            cmp     r3, #69 ; 0x45
+ 80018a0:      d07b            beq.n   800199a <d_type+0x25a>
+ 80018a2:      2500            movs    r5, #0
+ 80018a4:      4628            mov     r0, r5
+ 80018a6:      b003            add     sp, #12
+ 80018a8:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 80018ac:      1c53            adds    r3, r2, #1
+ 80018ae:      60c3            str     r3, [r0, #12]
+ 80018b0:      7853            ldrb    r3, [r2, #1]
+ 80018b2:      2b00            cmp     r3, #0
+ 80018b4:      d0f5            beq.n   80018a2 <d_type+0x162>
+ 80018b6:      1c93            adds    r3, r2, #2
+ 80018b8:      60c3            str     r3, [r0, #12]
+ 80018ba:      7853            ldrb    r3, [r2, #1]
+ 80018bc:      3b46            subs    r3, #70 ; 0x46
+ 80018be:      2b30            cmp     r3, #48 ; 0x30
+ 80018c0:      d8ef            bhi.n   80018a2 <d_type+0x162>
+ 80018c2:      a101            add     r1, pc, #4      ; (adr r1, 80018c8 <d_type+0x188>)
+ 80018c4:      f851 f023       ldr.w   pc, [r1, r3, lsl #2]
+ 80018c8:      08001d85        .word   0x08001d85
+ 80018cc:      080018a3        .word   0x080018a3
+ 80018d0:      080018a3        .word   0x080018a3
+ 80018d4:      080018a3        .word   0x080018a3
+ 80018d8:      080018a3        .word   0x080018a3
+ 80018dc:      080018a3        .word   0x080018a3
+ 80018e0:      080018a3        .word   0x080018a3
+ 80018e4:      080018a3        .word   0x080018a3
+ 80018e8:      080018a3        .word   0x080018a3
+ 80018ec:      080018a3        .word   0x080018a3
+ 80018f0:      080018a3        .word   0x080018a3
+ 80018f4:      080018a3        .word   0x080018a3
+ 80018f8:      080018a3        .word   0x080018a3
+ 80018fc:      080018a3        .word   0x080018a3
+ 8001900:      08001875        .word   0x08001875
+ 8001904:      080018a3        .word   0x080018a3
+ 8001908:      080018a3        .word   0x080018a3
+ 800190c:      080018a3        .word   0x080018a3
+ 8001910:      080018a3        .word   0x080018a3
+ 8001914:      080018a3        .word   0x080018a3
+ 8001918:      080018a3        .word   0x080018a3
+ 800191c:      080018a3        .word   0x080018a3
+ 8001920:      080018a3        .word   0x080018a3
+ 8001924:      080018a3        .word   0x080018a3
+ 8001928:      080018a3        .word   0x080018a3
+ 800192c:      080018a3        .word   0x080018a3
+ 8001930:      080018a3        .word   0x080018a3
+ 8001934:      08001d61        .word   0x08001d61
+ 8001938:      080018a3        .word   0x080018a3
+ 800193c:      08001d3d        .word   0x08001d3d
+ 8001940:      08001d15        .word   0x08001d15
+ 8001944:      08001ced        .word   0x08001ced
+ 8001948:      08001cc5        .word   0x08001cc5
+ 800194c:      080018a3        .word   0x080018a3
+ 8001950:      08001c9d        .word   0x08001c9d
+ 8001954:      08001e39        .word   0x08001e39
+ 8001958:      080018a3        .word   0x080018a3
+ 800195c:      080018a3        .word   0x080018a3
+ 8001960:      080018a3        .word   0x080018a3
+ 8001964:      080018a3        .word   0x080018a3
+ 8001968:      08001ded        .word   0x08001ded
+ 800196c:      080018a3        .word   0x080018a3
+ 8001970:      08001c87        .word   0x08001c87
+ 8001974:      080018a3        .word   0x080018a3
+ 8001978:      080018a3        .word   0x080018a3
+ 800197c:      08001c5f        .word   0x08001c5f
+ 8001980:      08001875        .word   0x08001875
+ 8001984:      080018a3        .word   0x080018a3
+ 8001988:      08001c25        .word   0x08001c25
+ 800198c:      4620            mov     r0, r4
+ 800198e:      f7ff fd2b       bl      80013e8 <d_name>
+ 8001992:      4605            mov     r5, r0
+ 8001994:      9001            str     r0, [sp, #4]
+ 8001996:      2d00            cmp     r5, #0
+ 8001998:      d083            beq.n   80018a2 <d_type+0x162>
+ 800199a:      e9d4 3208       ldrd    r3, r2, [r4, #32]
+ 800199e:      4293            cmp     r3, r2
+ 80019a0:      f6bf af7f       bge.w   80018a2 <d_type+0x162>
+ 80019a4:      69e1            ldr     r1, [r4, #28]
+ 80019a6:      f841 5023       str.w   r5, [r1, r3, lsl #2]
+ 80019aa:      9d01            ldr     r5, [sp, #4]
+ 80019ac:      1c5a            adds    r2, r3, #1
+ 80019ae:      4628            mov     r0, r5
+ 80019b0:      6222            str     r2, [r4, #32]
+ 80019b2:      b003            add     sp, #12
+ 80019b4:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 80019b8:      3201            adds    r2, #1
+ 80019ba:      60e2            str     r2, [r4, #12]
+ 80019bc:      4620            mov     r0, r4
+ 80019be:      f7fe fdb9       bl      8000534 <d_source_name>
+ 80019c2:      2300            movs    r3, #0
+ 80019c4:      4602            mov     r2, r0
+ 80019c6:      2128            movs    r1, #40 ; 0x28
+ 80019c8:      4620            mov     r0, r4
+ 80019ca:      f7fe fc39       bl      8000240 <d_make_comp>
+ 80019ce:      4605            mov     r5, r0
+ 80019d0:      9001            str     r0, [sp, #4]
+ 80019d2:      e7e0            b.n     8001996 <d_type+0x256>
+ 80019d4:      4620            mov     r0, r4
+ 80019d6:      f000 fc39       bl      800224c <d_function_type>
+ 80019da:      4605            mov     r5, r0
+ 80019dc:      9001            str     r0, [sp, #4]
+ 80019de:      e7da            b.n     8001996 <d_type+0x256>
+ 80019e0:      3201            adds    r2, #1
+ 80019e2:      60e2            str     r2, [r4, #12]
+ 80019e4:      4620            mov     r0, r4
+ 80019e6:      f7ff feab       bl      8001740 <d_type>
+ 80019ea:      2300            movs    r3, #0
+ 80019ec:      4602            mov     r2, r0
+ 80019ee:      2125            movs    r1, #37 ; 0x25
+ 80019f0:      4620            mov     r0, r4
+ 80019f2:      f7fe fc25       bl      8000240 <d_make_comp>
+ 80019f6:      4605            mov     r5, r0
+ 80019f8:      9001            str     r0, [sp, #4]
+ 80019fa:      e7cc            b.n     8001996 <d_type+0x256>
+ 80019fc:      3201            adds    r2, #1
+ 80019fe:      60e2            str     r2, [r4, #12]
+ 8001a00:      4620            mov     r0, r4
+ 8001a02:      f7ff fe9d       bl      8001740 <d_type>
+ 8001a06:      2300            movs    r3, #0
+ 8001a08:      4602            mov     r2, r0
+ 8001a0a:      2126            movs    r1, #38 ; 0x26
+ 8001a0c:      4620            mov     r0, r4
+ 8001a0e:      f7fe fc17       bl      8000240 <d_make_comp>
+ 8001a12:      4605            mov     r5, r0
+ 8001a14:      9001            str     r0, [sp, #4]
+ 8001a16:      e7be            b.n     8001996 <d_type+0x256>
+ 8001a18:      3201            adds    r2, #1
+ 8001a1a:      60e2            str     r2, [r4, #12]
+ 8001a1c:      4620            mov     r0, r4
+ 8001a1e:      f7ff fe8f       bl      8001740 <d_type>
+ 8001a22:      2300            movs    r3, #0
+ 8001a24:      4602            mov     r2, r0
+ 8001a26:      2124            movs    r1, #36 ; 0x24
+ 8001a28:      4620            mov     r0, r4
+ 8001a2a:      f7fe fc09       bl      8000240 <d_make_comp>
+ 8001a2e:      4605            mov     r5, r0
+ 8001a30:      9001            str     r0, [sp, #4]
+ 8001a32:      e7b0            b.n     8001996 <d_type+0x256>
+ 8001a34:      3201            adds    r2, #1
+ 8001a36:      60e2            str     r2, [r4, #12]
+ 8001a38:      4620            mov     r0, r4
+ 8001a3a:      f7ff fe81       bl      8001740 <d_type>
+ 8001a3e:      2300            movs    r3, #0
+ 8001a40:      4602            mov     r2, r0
+ 8001a42:      2122            movs    r1, #34 ; 0x22
+ 8001a44:      4620            mov     r0, r4
+ 8001a46:      f7fe fbfb       bl      8000240 <d_make_comp>
+ 8001a4a:      4605            mov     r5, r0
+ 8001a4c:      9001            str     r0, [sp, #4]
+ 8001a4e:      e7a2            b.n     8001996 <d_type+0x256>
+ 8001a50:      3201            adds    r2, #1
+ 8001a52:      60e2            str     r2, [r4, #12]
+ 8001a54:      4620            mov     r0, r4
+ 8001a56:      f7ff fe73       bl      8001740 <d_type>
+ 8001a5a:      2300            movs    r3, #0
+ 8001a5c:      4602            mov     r2, r0
+ 8001a5e:      2123            movs    r1, #35 ; 0x23
+ 8001a60:      4620            mov     r0, r4
+ 8001a62:      f7fe fbed       bl      8000240 <d_make_comp>
+ 8001a66:      4605            mov     r5, r0
+ 8001a68:      9001            str     r0, [sp, #4]
+ 8001a6a:      e794            b.n     8001996 <d_type+0x256>
+ 8001a6c:      7853            ldrb    r3, [r2, #1]
+ 8001a6e:      f1a3 0230       sub.w   r2, r3, #48     ; 0x30
+ 8001a72:      2a09            cmp     r2, #9
+ 8001a74:      d905            bls.n   8001a82 <d_type+0x342>
+ 8001a76:      2b5f            cmp     r3, #95 ; 0x5f
+ 8001a78:      d003            beq.n   8001a82 <d_type+0x342>
+ 8001a7a:      3b41            subs    r3, #65 ; 0x41
+ 8001a7c:      2b19            cmp     r3, #25
+ 8001a7e:      f200 820f       bhi.w   8001ea0 <d_type+0x760>
+ 8001a82:      2100            movs    r1, #0
+ 8001a84:      4620            mov     r0, r4
+ 8001a86:      f7fe fdcb       bl      8000620 <d_substitution>
+ 8001a8a:      68e3            ldr     r3, [r4, #12]
+ 8001a8c:      9001            str     r0, [sp, #4]
+ 8001a8e:      781a            ldrb    r2, [r3, #0]
+ 8001a90:      2a49            cmp     r2, #73 ; 0x49
+ 8001a92:      4605            mov     r5, r0
+ 8001a94:      f47f aedf       bne.w   8001856 <d_type+0x116>
+ 8001a98:      3301            adds    r3, #1
+ 8001a9a:      60e3            str     r3, [r4, #12]
+ 8001a9c:      4620            mov     r0, r4
+ 8001a9e:      f7ff fc37       bl      8001310 <d_template_args_1>
+ 8001aa2:      4603            mov     r3, r0
+ 8001aa4:      462a            mov     r2, r5
+ 8001aa6:      2104            movs    r1, #4
+ 8001aa8:      4620            mov     r0, r4
+ 8001aaa:      f7fe fbc9       bl      8000240 <d_make_comp>
+ 8001aae:      4605            mov     r5, r0
+ 8001ab0:      9001            str     r0, [sp, #4]
+ 8001ab2:      e770            b.n     8001996 <d_type+0x256>
+ 8001ab4:      4620            mov     r0, r4
+ 8001ab6:      f7fe fd1b       bl      80004f0 <d_template_param>
+ 8001aba:      68e6            ldr     r6, [r4, #12]
+ 8001abc:      9001            str     r0, [sp, #4]
+ 8001abe:      7833            ldrb    r3, [r6, #0]
+ 8001ac0:      2b49            cmp     r3, #73 ; 0x49
+ 8001ac2:      4605            mov     r5, r0
+ 8001ac4:      f47f af67       bne.w   8001996 <d_type+0x256>
+ 8001ac8:      6ba3            ldr     r3, [r4, #56]   ; 0x38
+ 8001aca:      2b00            cmp     r3, #0
+ 8001acc:      f040 81f5       bne.w   8001eba <d_type+0x77a>
+ 8001ad0:      2800            cmp     r0, #0
+ 8001ad2:      f43f aee6       beq.w   80018a2 <d_type+0x162>
+ 8001ad6:      e9d4 2108       ldrd    r2, r1, [r4, #32]
+ 8001ada:      428a            cmp     r2, r1
+ 8001adc:      f6bf aee1       bge.w   80018a2 <d_type+0x162>
+ 8001ae0:      69e1            ldr     r1, [r4, #28]
+ 8001ae2:      f841 0022       str.w   r0, [r1, r2, lsl #2]
+ 8001ae6:      3201            adds    r2, #1
+ 8001ae8:      6222            str     r2, [r4, #32]
+ 8001aea:      7831            ldrb    r1, [r6, #0]
+ 8001aec:      9d01            ldr     r5, [sp, #4]
+ 8001aee:      3949            subs    r1, #73 ; 0x49
+ 8001af0:      2901            cmp     r1, #1
+ 8001af2:      d8d7            bhi.n   8001aa4 <d_type+0x364>
+ 8001af4:      3601            adds    r6, #1
+ 8001af6:      60e6            str     r6, [r4, #12]
+ 8001af8:      4620            mov     r0, r4
+ 8001afa:      f7ff fc09       bl      8001310 <d_template_args_1>
+ 8001afe:      4603            mov     r3, r0
+ 8001b00:      e7d0            b.n     8001aa4 <d_type+0x364>
+ 8001b02:      3201            adds    r2, #1
+ 8001b04:      60e2            str     r2, [r4, #12]
+ 8001b06:      4620            mov     r0, r4
+ 8001b08:      f7fe fd14       bl      8000534 <d_source_name>
+ 8001b0c:      68e3            ldr     r3, [r4, #12]
+ 8001b0e:      9001            str     r0, [sp, #4]
+ 8001b10:      781a            ldrb    r2, [r3, #0]
+ 8001b12:      2a49            cmp     r2, #73 ; 0x49
+ 8001b14:      4605            mov     r5, r0
+ 8001b16:      f000 81a8       beq.w   8001e6a <d_type+0x72a>
+ 8001b1a:      4620            mov     r0, r4
+ 8001b1c:      f7ff fe10       bl      8001740 <d_type>
+ 8001b20:      9b01            ldr     r3, [sp, #4]
+ 8001b22:      4602            mov     r2, r0
+ 8001b24:      2121            movs    r1, #33 ; 0x21
+ 8001b26:      4620            mov     r0, r4
+ 8001b28:      f7fe fb8a       bl      8000240 <d_make_comp>
+ 8001b2c:      4605            mov     r5, r0
+ 8001b2e:      9001            str     r0, [sp, #4]
+ 8001b30:      e731            b.n     8001996 <d_type+0x256>
+ 8001b32:      e9d4 1005       ldrd    r1, r0, [r4, #20]
+ 8001b36:      3b61            subs    r3, #97 ; 0x61
+ 8001b38:      4db6            ldr     r5, [pc, #728]  ; (8001e14 <d_type+0x6d4>)
+ 8001b3a:      eb03 0383       add.w   r3, r3, r3, lsl #2
+ 8001b3e:      4281            cmp     r1, r0
+ 8001b40:      eb05 0383       add.w   r3, r5, r3, lsl #2
+ 8001b44:      f280 818b       bge.w   8001e5e <d_type+0x71e>
+ 8001b48:      6858            ldr     r0, [r3, #4]
+ 8001b4a:      6b26            ldr     r6, [r4, #48]   ; 0x30
+ 8001b4c:      f8d4 c010       ldr.w   ip, [r4, #16]
+ 8001b50:      010f            lsls    r7, r1, #4
+ 8001b52:      eb0c 0507       add.w   r5, ip, r7
+ 8001b56:      4406            add     r6, r0
+ 8001b58:      4630            mov     r0, r6
+ 8001b5a:      3201            adds    r2, #1
+ 8001b5c:      3101            adds    r1, #1
+ 8001b5e:      f04f 0e00       mov.w   lr, #0
+ 8001b62:      2627            movs    r6, #39 ; 0x27
+ 8001b64:      f8c5 e004       str.w   lr, [r5, #4]
+ 8001b68:      6161            str     r1, [r4, #20]
+ 8001b6a:      f80c 6007       strb.w  r6, [ip, r7]
+ 8001b6e:      60ab            str     r3, [r5, #8]
+ 8001b70:      60e2            str     r2, [r4, #12]
+ 8001b72:      6320            str     r0, [r4, #48]   ; 0x30
+ 8001b74:      e66f            b.n     8001856 <d_type+0x116>
+ 8001b76:      3201            adds    r2, #1
+ 8001b78:      60e2            str     r2, [r4, #12]
+ 8001b7a:      4620            mov     r0, r4
+ 8001b7c:      f7ff fde0       bl      8001740 <d_type>
+ 8001b80:      4605            mov     r5, r0
+ 8001b82:      2800            cmp     r0, #0
+ 8001b84:      f43f ae8d       beq.w   80018a2 <d_type+0x162>
+ 8001b88:      4620            mov     r0, r4
+ 8001b8a:      f7ff fdd9       bl      8001740 <d_type>
+ 8001b8e:      4603            mov     r3, r0
+ 8001b90:      2800            cmp     r0, #0
+ 8001b92:      f43f ae86       beq.w   80018a2 <d_type+0x162>
+ 8001b96:      462a            mov     r2, r5
+ 8001b98:      212b            movs    r1, #43 ; 0x2b
+ 8001b9a:      4620            mov     r0, r4
+ 8001b9c:      f7fe fb50       bl      8000240 <d_make_comp>
+ 8001ba0:      4605            mov     r5, r0
+ 8001ba2:      9001            str     r0, [sp, #4]
+ 8001ba4:      e6f7            b.n     8001996 <d_type+0x256>
+ 8001ba6:      1c55            adds    r5, r2, #1
+ 8001ba8:      60e5            str     r5, [r4, #12]
+ 8001baa:      7853            ldrb    r3, [r2, #1]
+ 8001bac:      2b5f            cmp     r3, #95 ; 0x5f
+ 8001bae:      f000 815a       beq.w   8001e66 <d_type+0x726>
+ 8001bb2:      3b30            subs    r3, #48 ; 0x30
+ 8001bb4:      2b09            cmp     r3, #9
+ 8001bb6:      f200 8165       bhi.w   8001e84 <d_type+0x744>
+ 8001bba:      4628            mov     r0, r5
+ 8001bbc:      e000            b.n     8001bc0 <d_type+0x480>
+ 8001bbe:      4608            mov     r0, r1
+ 8001bc0:      1c41            adds    r1, r0, #1
+ 8001bc2:      60e1            str     r1, [r4, #12]
+ 8001bc4:      7843            ldrb    r3, [r0, #1]
+ 8001bc6:      3b30            subs    r3, #48 ; 0x30
+ 8001bc8:      2b09            cmp     r3, #9
+ 8001bca:      d9f8            bls.n   8001bbe <d_type+0x47e>
+ 8001bcc:      e9d4 3205       ldrd    r3, r2, [r4, #20]
+ 8001bd0:      4293            cmp     r3, r2
+ 8001bd2:      eba1 0705       sub.w   r7, r1, r5
+ 8001bd6:      f6bf ae64       bge.w   80018a2 <d_type+0x162>
+ 8001bda:      f8d4 e010       ldr.w   lr, [r4, #16]
+ 8001bde:      ea4f 1c03       mov.w   ip, r3, lsl #4
+ 8001be2:      eb0e 060c       add.w   r6, lr, ip
+ 8001be6:      3301            adds    r3, #1
+ 8001be8:      2200            movs    r2, #0
+ 8001bea:      6072            str     r2, [r6, #4]
+ 8001bec:      6163            str     r3, [r4, #20]
+ 8001bee:      2f00            cmp     r7, #0
+ 8001bf0:      f43f ae57       beq.w   80018a2 <d_type+0x162>
+ 8001bf4:      6072            str     r2, [r6, #4]
+ 8001bf6:      f80e 200c       strb.w  r2, [lr, ip]
+ 8001bfa:      e9c6 5702       strd    r5, r7, [r6, #8]
+ 8001bfe:      7843            ldrb    r3, [r0, #1]
+ 8001c00:      460d            mov     r5, r1
+ 8001c02:      2b5f            cmp     r3, #95 ; 0x5f
+ 8001c04:      f47f ae4d       bne.w   80018a2 <d_type+0x162>
+ 8001c08:      3501            adds    r5, #1
+ 8001c0a:      60e5            str     r5, [r4, #12]
+ 8001c0c:      4620            mov     r0, r4
+ 8001c0e:      f7ff fd97       bl      8001740 <d_type>
+ 8001c12:      4632            mov     r2, r6
+ 8001c14:      4603            mov     r3, r0
+ 8001c16:      212a            movs    r1, #42 ; 0x2a
+ 8001c18:      4620            mov     r0, r4
+ 8001c1a:      f7fe fb11       bl      8000240 <d_make_comp>
+ 8001c1e:      4605            mov     r5, r0
+ 8001c20:      9001            str     r0, [sp, #4]
+ 8001c22:      e6b8            b.n     8001996 <d_type+0x256>
+ 8001c24:      7893            ldrb    r3, [r2, #2]
+ 8001c26:      2b5f            cmp     r3, #95 ; 0x5f
+ 8001c28:      f000 8178       beq.w   8001f1c <d_type+0x7dc>
+ 8001c2c:      f7fe fc2e       bl      800048c <d_number_component>
+ 8001c30:      4605            mov     r5, r0
+ 8001c32:      2d00            cmp     r5, #0
+ 8001c34:      f43f ae35       beq.w   80018a2 <d_type+0x162>
+ 8001c38:      68e3            ldr     r3, [r4, #12]
+ 8001c3a:      781a            ldrb    r2, [r3, #0]
+ 8001c3c:      2a5f            cmp     r2, #95 ; 0x5f
+ 8001c3e:      f47f ae30       bne.w   80018a2 <d_type+0x162>
+ 8001c42:      3301            adds    r3, #1
+ 8001c44:      60e3            str     r3, [r4, #12]
+ 8001c46:      4620            mov     r0, r4
+ 8001c48:      f7ff fd7a       bl      8001740 <d_type>
+ 8001c4c:      462a            mov     r2, r5
+ 8001c4e:      4603            mov     r3, r0
+ 8001c50:      212d            movs    r1, #45 ; 0x2d
+ 8001c52:      4620            mov     r0, r4
+ 8001c54:      f7fe faf4       bl      8000240 <d_make_comp>
+ 8001c58:      4605            mov     r5, r0
+ 8001c5a:      9001            str     r0, [sp, #4]
+ 8001c5c:      e69b            b.n     8001996 <d_type+0x256>
+ 8001c5e:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001c62:      4293            cmp     r3, r2
+ 8001c64:      f280 80fb       bge.w   8001e5e <d_type+0x71e>
+ 8001c68:      6900            ldr     r0, [r0, #16]
+ 8001c6a:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8001c6c:      0119            lsls    r1, r3, #4
+ 8001c6e:      1845            adds    r5, r0, r1
+ 8001c70:      3301            adds    r3, #1
+ 8001c72:      2600            movs    r6, #0
+ 8001c74:      606e            str     r6, [r5, #4]
+ 8001c76:      3208            adds    r2, #8
+ 8001c78:      6163            str     r3, [r4, #20]
+ 8001c7a:      2627            movs    r6, #39 ; 0x27
+ 8001c7c:      4b66            ldr     r3, [pc, #408]  ; (8001e18 <d_type+0x6d8>)
+ 8001c7e:      5446            strb    r6, [r0, r1]
+ 8001c80:      60ab            str     r3, [r5, #8]
+ 8001c82:      6322            str     r2, [r4, #48]   ; 0x30
+ 8001c84:      e5e7            b.n     8001856 <d_type+0x116>
+ 8001c86:      f7ff fd5b       bl      8001740 <d_type>
+ 8001c8a:      2300            movs    r3, #0
+ 8001c8c:      4602            mov     r2, r0
+ 8001c8e:      214a            movs    r1, #74 ; 0x4a
+ 8001c90:      4620            mov     r0, r4
+ 8001c92:      f7fe fad5       bl      8000240 <d_make_comp>
+ 8001c96:      4605            mov     r5, r0
+ 8001c98:      9001            str     r0, [sp, #4]
+ 8001c9a:      e67c            b.n     8001996 <d_type+0x256>
+ 8001c9c:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001ca0:      4293            cmp     r3, r2
+ 8001ca2:      f280 80dc       bge.w   8001e5e <d_type+0x71e>
+ 8001ca6:      6900            ldr     r0, [r0, #16]
+ 8001ca8:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8001caa:      0119            lsls    r1, r3, #4
+ 8001cac:      1845            adds    r5, r0, r1
+ 8001cae:      3301            adds    r3, #1
+ 8001cb0:      2600            movs    r6, #0
+ 8001cb2:      606e            str     r6, [r5, #4]
+ 8001cb4:      3204            adds    r2, #4
+ 8001cb6:      6163            str     r3, [r4, #20]
+ 8001cb8:      2627            movs    r6, #39 ; 0x27
+ 8001cba:      4b58            ldr     r3, [pc, #352]  ; (8001e1c <d_type+0x6dc>)
+ 8001cbc:      5446            strb    r6, [r0, r1]
+ 8001cbe:      60ab            str     r3, [r5, #8]
+ 8001cc0:      6322            str     r2, [r4, #48]   ; 0x30
+ 8001cc2:      e5c8            b.n     8001856 <d_type+0x116>
+ 8001cc4:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001cc8:      4293            cmp     r3, r2
+ 8001cca:      f280 80c8       bge.w   8001e5e <d_type+0x71e>
+ 8001cce:      6900            ldr     r0, [r0, #16]
+ 8001cd0:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8001cd2:      0119            lsls    r1, r3, #4
+ 8001cd4:      1845            adds    r5, r0, r1
+ 8001cd6:      3301            adds    r3, #1
+ 8001cd8:      2600            movs    r6, #0
+ 8001cda:      606e            str     r6, [r5, #4]
+ 8001cdc:      3209            adds    r2, #9
+ 8001cde:      6163            str     r3, [r4, #20]
+ 8001ce0:      2627            movs    r6, #39 ; 0x27
+ 8001ce2:      4b4f            ldr     r3, [pc, #316]  ; (8001e20 <d_type+0x6e0>)
+ 8001ce4:      5446            strb    r6, [r0, r1]
+ 8001ce6:      60ab            str     r3, [r5, #8]
+ 8001ce8:      6322            str     r2, [r4, #48]   ; 0x30
+ 8001cea:      e5b4            b.n     8001856 <d_type+0x116>
+ 8001cec:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001cf0:      4293            cmp     r3, r2
+ 8001cf2:      f280 80b4       bge.w   8001e5e <d_type+0x71e>
+ 8001cf6:      6900            ldr     r0, [r0, #16]
+ 8001cf8:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8001cfa:      0119            lsls    r1, r3, #4
+ 8001cfc:      1845            adds    r5, r0, r1
+ 8001cfe:      3301            adds    r3, #1
+ 8001d00:      2600            movs    r6, #0
+ 8001d02:      606e            str     r6, [r5, #4]
+ 8001d04:      320a            adds    r2, #10
+ 8001d06:      6163            str     r3, [r4, #20]
+ 8001d08:      2627            movs    r6, #39 ; 0x27
+ 8001d0a:      4b46            ldr     r3, [pc, #280]  ; (8001e24 <d_type+0x6e4>)
+ 8001d0c:      5446            strb    r6, [r0, r1]
+ 8001d0e:      60ab            str     r3, [r5, #8]
+ 8001d10:      6322            str     r2, [r4, #48]   ; 0x30
+ 8001d12:      e5a0            b.n     8001856 <d_type+0x116>
+ 8001d14:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001d18:      4293            cmp     r3, r2
+ 8001d1a:      f280 80a0       bge.w   8001e5e <d_type+0x71e>
+ 8001d1e:      6900            ldr     r0, [r0, #16]
+ 8001d20:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8001d22:      0119            lsls    r1, r3, #4
+ 8001d24:      1845            adds    r5, r0, r1
+ 8001d26:      3301            adds    r3, #1
+ 8001d28:      2600            movs    r6, #0
+ 8001d2a:      606e            str     r6, [r5, #4]
+ 8001d2c:      3209            adds    r2, #9
+ 8001d2e:      6163            str     r3, [r4, #20]
+ 8001d30:      2627            movs    r6, #39 ; 0x27
+ 8001d32:      4b3d            ldr     r3, [pc, #244]  ; (8001e28 <d_type+0x6e8>)
+ 8001d34:      5446            strb    r6, [r0, r1]
+ 8001d36:      60ab            str     r3, [r5, #8]
+ 8001d38:      6322            str     r2, [r4, #48]   ; 0x30
+ 8001d3a:      e58c            b.n     8001856 <d_type+0x116>
+ 8001d3c:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001d40:      4293            cmp     r3, r2
+ 8001d42:      f6bf adae       bge.w   80018a2 <d_type+0x162>
+ 8001d46:      6901            ldr     r1, [r0, #16]
+ 8001d48:      4e38            ldr     r6, [pc, #224]  ; (8001e2c <d_type+0x6ec>)
+ 8001d4a:      011a            lsls    r2, r3, #4
+ 8001d4c:      188d            adds    r5, r1, r2
+ 8001d4e:      3301            adds    r3, #1
+ 8001d50:      6143            str     r3, [r0, #20]
+ 8001d52:      2300            movs    r3, #0
+ 8001d54:      200e            movs    r0, #14
+ 8001d56:      606b            str     r3, [r5, #4]
+ 8001d58:      548b            strb    r3, [r1, r2]
+ 8001d5a:      e9c5 6002       strd    r6, r0, [r5, #8]
+ 8001d5e:      e57a            b.n     8001856 <d_type+0x116>
+ 8001d60:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001d64:      4293            cmp     r3, r2
+ 8001d66:      f6bf ad9c       bge.w   80018a2 <d_type+0x162>
+ 8001d6a:      6901            ldr     r1, [r0, #16]
+ 8001d6c:      4e30            ldr     r6, [pc, #192]  ; (8001e30 <d_type+0x6f0>)
+ 8001d6e:      011a            lsls    r2, r3, #4
+ 8001d70:      188d            adds    r5, r1, r2
+ 8001d72:      3301            adds    r3, #1
+ 8001d74:      6143            str     r3, [r0, #20]
+ 8001d76:      2300            movs    r3, #0
+ 8001d78:      2004            movs    r0, #4
+ 8001d7a:      606b            str     r3, [r5, #4]
+ 8001d7c:      548b            strb    r3, [r1, r2]
+ 8001d7e:      e9c5 6002       strd    r6, r0, [r5, #8]
+ 8001d82:      e568            b.n     8001856 <d_type+0x116>
+ 8001d84:      e9d0 3105       ldrd    r3, r1, [r0, #20]
+ 8001d88:      428b            cmp     r3, r1
+ 8001d8a:      f280 80af       bge.w   8001eec <d_type+0x7ac>
+ 8001d8e:      6905            ldr     r5, [r0, #16]
+ 8001d90:      0118            lsls    r0, r3, #4
+ 8001d92:      1829            adds    r1, r5, r0
+ 8001d94:      3301            adds    r3, #1
+ 8001d96:      2700            movs    r7, #0
+ 8001d98:      262c            movs    r6, #44 ; 0x2c
+ 8001d9a:      604f            str     r7, [r1, #4]
+ 8001d9c:      9101            str     r1, [sp, #4]
+ 8001d9e:      6163            str     r3, [r4, #20]
+ 8001da0:      542e            strb    r6, [r5, r0]
+ 8001da2:      7893            ldrb    r3, [r2, #2]
+ 8001da4:      3b30            subs    r3, #48 ; 0x30
+ 8001da6:      b2db            uxtb    r3, r3
+ 8001da8:      2b09            cmp     r3, #9
+ 8001daa:      bf94            ite     ls
+ 8001dac:      2301            movls   r3, #1
+ 8001dae:      463b            movhi   r3, r7
+ 8001db0:      818b            strh    r3, [r1, #12]
+ 8001db2:      f240 80ae       bls.w   8001f12 <d_type+0x7d2>
+ 8001db6:      4620            mov     r0, r4
+ 8001db8:      9d01            ldr     r5, [sp, #4]
+ 8001dba:      f7ff fcc1       bl      8001740 <d_type>
+ 8001dbe:      9b01            ldr     r3, [sp, #4]
+ 8001dc0:      60a8            str     r0, [r5, #8]
+ 8001dc2:      689b            ldr     r3, [r3, #8]
+ 8001dc4:      2b00            cmp     r3, #0
+ 8001dc6:      f43f ad6c       beq.w   80018a2 <d_type+0x162>
+ 8001dca:      f104 000c       add.w   r0, r4, #12
+ 8001dce:      f7fe fb31       bl      8000434 <d_number.isra.1>
+ 8001dd2:      68e2            ldr     r2, [r4, #12]
+ 8001dd4:      7813            ldrb    r3, [r2, #0]
+ 8001dd6:      b113            cbz     r3, 8001dde <d_type+0x69e>
+ 8001dd8:      1c53            adds    r3, r2, #1
+ 8001dda:      60e3            str     r3, [r4, #12]
+ 8001ddc:      7813            ldrb    r3, [r2, #0]
+ 8001dde:      9d01            ldr     r5, [sp, #4]
+ 8001de0:      f1a3 0273       sub.w   r2, r3, #115    ; 0x73
+ 8001de4:      4253            negs    r3, r2
+ 8001de6:      4153            adcs    r3, r2
+ 8001de8:      81eb            strh    r3, [r5, #14]
+ 8001dea:      e534            b.n     8001856 <d_type+0x116>
+ 8001dec:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001df0:      4293            cmp     r3, r2
+ 8001df2:      da34            bge.n   8001e5e <d_type+0x71e>
+ 8001df4:      6900            ldr     r0, [r0, #16]
+ 8001df6:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8001df8:      0119            lsls    r1, r3, #4
+ 8001dfa:      1845            adds    r5, r0, r1
+ 8001dfc:      3301            adds    r3, #1
+ 8001dfe:      2600            movs    r6, #0
+ 8001e00:      606e            str     r6, [r5, #4]
+ 8001e02:      3211            adds    r2, #17
+ 8001e04:      6163            str     r3, [r4, #20]
+ 8001e06:      2627            movs    r6, #39 ; 0x27
+ 8001e08:      4b0a            ldr     r3, [pc, #40]   ; (8001e34 <d_type+0x6f4>)
+ 8001e0a:      5446            strb    r6, [r0, r1]
+ 8001e0c:      60ab            str     r3, [r5, #8]
+ 8001e0e:      6322            str     r2, [r4, #48]   ; 0x30
+ 8001e10:      e521            b.n     8001856 <d_type+0x116>
+ 8001e12:      bf00            nop
+ 8001e14:      08011bd0        .word   0x08011bd0
+ 8001e18:      08011e28        .word   0x08011e28
+ 8001e1c:      08011e14        .word   0x08011e14
+ 8001e20:      08011dd8        .word   0x08011dd8
+ 8001e24:      08011e00        .word   0x08011e00
+ 8001e28:      08011dec        .word   0x08011dec
+ 8001e2c:      080125a8        .word   0x080125a8
+ 8001e30:      080125a0        .word   0x080125a0
+ 8001e34:      08011e50        .word   0x08011e50
+ 8001e38:      e9d0 3205       ldrd    r3, r2, [r0, #20]
+ 8001e3c:      4293            cmp     r3, r2
+ 8001e3e:      da0e            bge.n   8001e5e <d_type+0x71e>
+ 8001e40:      6900            ldr     r0, [r0, #16]
+ 8001e42:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8001e44:      0119            lsls    r1, r3, #4
+ 8001e46:      1845            adds    r5, r0, r1
+ 8001e48:      3301            adds    r3, #1
+ 8001e4a:      2600            movs    r6, #0
+ 8001e4c:      606e            str     r6, [r5, #4]
+ 8001e4e:      3208            adds    r2, #8
+ 8001e50:      6163            str     r3, [r4, #20]
+ 8001e52:      2627            movs    r6, #39 ; 0x27
+ 8001e54:      4b36            ldr     r3, [pc, #216]  ; (8001f30 <d_type+0x7f0>)
+ 8001e56:      5446            strb    r6, [r0, r1]
+ 8001e58:      60ab            str     r3, [r5, #8]
+ 8001e5a:      6322            str     r2, [r4, #48]   ; 0x30
+ 8001e5c:      e4fb            b.n     8001856 <d_type+0x116>
+ 8001e5e:      2300            movs    r3, #0
+ 8001e60:      9301            str     r3, [sp, #4]
+ 8001e62:      689b            ldr     r3, [r3, #8]
+ 8001e64:      deff            udf     #255    ; 0xff
+ 8001e66:      2600            movs    r6, #0
+ 8001e68:      e6ce            b.n     8001c08 <d_type+0x4c8>
+ 8001e6a:      3301            adds    r3, #1
+ 8001e6c:      60e3            str     r3, [r4, #12]
+ 8001e6e:      4620            mov     r0, r4
+ 8001e70:      f7ff fa4e       bl      8001310 <d_template_args_1>
+ 8001e74:      462a            mov     r2, r5
+ 8001e76:      4603            mov     r3, r0
+ 8001e78:      2104            movs    r1, #4
+ 8001e7a:      4620            mov     r0, r4
+ 8001e7c:      f7fe f9e0       bl      8000240 <d_make_comp>
+ 8001e80:      9001            str     r0, [sp, #4]
+ 8001e82:      e64a            b.n     8001b1a <d_type+0x3da>
+ 8001e84:      2301            movs    r3, #1
+ 8001e86:      6b65            ldr     r5, [r4, #52]   ; 0x34
+ 8001e88:      6363            str     r3, [r4, #52]   ; 0x34
+ 8001e8a:      4620            mov     r0, r4
+ 8001e8c:      f7ff f82e       bl      8000eec <d_expression_1>
+ 8001e90:      6365            str     r5, [r4, #52]   ; 0x34
+ 8001e92:      4606            mov     r6, r0
+ 8001e94:      2800            cmp     r0, #0
+ 8001e96:      f43f ad04       beq.w   80018a2 <d_type+0x162>
+ 8001e9a:      68e5            ldr     r5, [r4, #12]
+ 8001e9c:      782b            ldrb    r3, [r5, #0]
+ 8001e9e:      e6b0            b.n     8001c02 <d_type+0x4c2>
+ 8001ea0:      4620            mov     r0, r4
+ 8001ea2:      f7ff faa1       bl      80013e8 <d_name>
+ 8001ea6:      4605            mov     r5, r0
+ 8001ea8:      9001            str     r0, [sp, #4]
+ 8001eaa:      2800            cmp     r0, #0
+ 8001eac:      f43f acf9       beq.w   80018a2 <d_type+0x162>
+ 8001eb0:      7803            ldrb    r3, [r0, #0]
+ 8001eb2:      2b18            cmp     r3, #24
+ 8001eb4:      f47f ad71       bne.w   800199a <d_type+0x25a>
+ 8001eb8:      e4cd            b.n     8001856 <d_type+0x116>
+ 8001eba:      1c73            adds    r3, r6, #1
+ 8001ebc:      60e3            str     r3, [r4, #12]
+ 8001ebe:      4620            mov     r0, r4
+ 8001ec0:      f8d4 9014       ldr.w   r9, [r4, #20]
+ 8001ec4:      f8d4 8020       ldr.w   r8, [r4, #32]
+ 8001ec8:      6aa7            ldr     r7, [r4, #40]   ; 0x28
+ 8001eca:      6b25            ldr     r5, [r4, #48]   ; 0x30
+ 8001ecc:      f7ff fa20       bl      8001310 <d_template_args_1>
+ 8001ed0:      68e2            ldr     r2, [r4, #12]
+ 8001ed2:      7812            ldrb    r2, [r2, #0]
+ 8001ed4:      2a49            cmp     r2, #73 ; 0x49
+ 8001ed6:      4603            mov     r3, r0
+ 8001ed8:      d00b            beq.n   8001ef2 <d_type+0x7b2>
+ 8001eda:      6325            str     r5, [r4, #48]   ; 0x30
+ 8001edc:      60e6            str     r6, [r4, #12]
+ 8001ede:      f8c4 9014       str.w   r9, [r4, #20]
+ 8001ee2:      f8c4 8020       str.w   r8, [r4, #32]
+ 8001ee6:      62a7            str     r7, [r4, #40]   ; 0x28
+ 8001ee8:      9d01            ldr     r5, [sp, #4]
+ 8001eea:      e554            b.n     8001996 <d_type+0x256>
+ 8001eec:      2300            movs    r3, #0
+ 8001eee:      701b            strb    r3, [r3, #0]
+ 8001ef0:      deff            udf     #255    ; 0xff
+ 8001ef2:      9901            ldr     r1, [sp, #4]
+ 8001ef4:      2900            cmp     r1, #0
+ 8001ef6:      f43f acd4       beq.w   80018a2 <d_type+0x162>
+ 8001efa:      e9d4 2008       ldrd    r2, r0, [r4, #32]
+ 8001efe:      4282            cmp     r2, r0
+ 8001f00:      f6bf accf       bge.w   80018a2 <d_type+0x162>
+ 8001f04:      69e0            ldr     r0, [r4, #28]
+ 8001f06:      f840 1022       str.w   r1, [r0, r2, lsl #2]
+ 8001f0a:      3201            adds    r2, #1
+ 8001f0c:      6222            str     r2, [r4, #32]
+ 8001f0e:      9a01            ldr     r2, [sp, #4]
+ 8001f10:      e5c9            b.n     8001aa6 <d_type+0x366>
+ 8001f12:      f104 000c       add.w   r0, r4, #12
+ 8001f16:      f7fe fa8d       bl      8000434 <d_number.isra.1>
+ 8001f1a:      e74c            b.n     8001db6 <d_type+0x676>
+ 8001f1c:      3203            adds    r2, #3
+ 8001f1e:      2301            movs    r3, #1
+ 8001f20:      6b46            ldr     r6, [r0, #52]   ; 0x34
+ 8001f22:      60c2            str     r2, [r0, #12]
+ 8001f24:      6343            str     r3, [r0, #52]   ; 0x34
+ 8001f26:      f7fe ffe1       bl      8000eec <d_expression_1>
+ 8001f2a:      6366            str     r6, [r4, #52]   ; 0x34
+ 8001f2c:      4605            mov     r5, r0
+ 8001f2e:      e680            b.n     8001c32 <d_type+0x4f2>
+ 8001f30:      08011e3c        .word   0x08011e3c
+
+08001f34 <d_operator_name>:
+ 8001f34:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 8001f36:      68c3            ldr     r3, [r0, #12]
+ 8001f38:      781e            ldrb    r6, [r3, #0]
+ 8001f3a:      4686            mov     lr, r0
+ 8001f3c:      b336            cbz     r6, 8001f8c <d_operator_name+0x58>
+ 8001f3e:      1c5a            adds    r2, r3, #1
+ 8001f40:      60c2            str     r2, [r0, #12]
+ 8001f42:      785a            ldrb    r2, [r3, #1]
+ 8001f44:      781e            ldrb    r6, [r3, #0]
+ 8001f46:      2a00            cmp     r2, #0
+ 8001f48:      d04a            beq.n   8001fe0 <d_operator_name+0xac>
+ 8001f4a:      1c9a            adds    r2, r3, #2
+ 8001f4c:      60c2            str     r2, [r0, #12]
+ 8001f4e:      2e76            cmp     r6, #118        ; 0x76
+ 8001f50:      4604            mov     r4, r0
+ 8001f52:      f893 c001       ldrb.w  ip, [r3, #1]
+ 8001f56:      d145            bne.n   8001fe4 <d_operator_name+0xb0>
+ 8001f58:      f1ac 0530       sub.w   r5, ip, #48     ; 0x30
+ 8001f5c:      b2eb            uxtb    r3, r5
+ 8001f5e:      2b09            cmp     r3, #9
+ 8001f60:      d815            bhi.n   8001f8e <d_operator_name+0x5a>
+ 8001f62:      f7fe fae7       bl      8000534 <d_source_name>
+ 8001f66:      e9d4 3105       ldrd    r3, r1, [r4, #20]
+ 8001f6a:      428b            cmp     r3, r1
+ 8001f6c:      4602            mov     r2, r0
+ 8001f6e:      da21            bge.n   8001fb4 <d_operator_name+0x80>
+ 8001f70:      6926            ldr     r6, [r4, #16]
+ 8001f72:      0119            lsls    r1, r3, #4
+ 8001f74:      1870            adds    r0, r6, r1
+ 8001f76:      3301            adds    r3, #1
+ 8001f78:      2700            movs    r7, #0
+ 8001f7a:      6047            str     r7, [r0, #4]
+ 8001f7c:      6163            str     r3, [r4, #20]
+ 8001f7e:      b1ca            cbz     r2, 8001fb4 <d_operator_name+0x80>
+ 8001f80:      2332            movs    r3, #50 ; 0x32
+ 8001f82:      6047            str     r7, [r0, #4]
+ 8001f84:      5473            strb    r3, [r6, r1]
+ 8001f86:      e9c0 5202       strd    r5, r2, [r0, #8]
+ 8001f8a:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 8001f8c:      46b4            mov     ip, r6
+ 8001f8e:      4c23            ldr     r4, [pc, #140]  ; (800201c <d_operator_name+0xe8>)
+ 8001f90:      2043            movs    r0, #67 ; 0x43
+ 8001f92:      2200            movs    r2, #0
+ 8001f94:      1a83            subs    r3, r0, r2
+ 8001f96:      eb03 73d3       add.w   r3, r3, r3, lsr #31
+ 8001f9a:      eb02 0363       add.w   r3, r2, r3, asr #1
+ 8001f9e:      0119            lsls    r1, r3, #4
+ 8001fa0:      1867            adds    r7, r4, r1
+ 8001fa2:      5861            ldr     r1, [r4, r1]
+ 8001fa4:      780d            ldrb    r5, [r1, #0]
+ 8001fa6:      42b5            cmp     r5, r6
+ 8001fa8:      d006            beq.n   8001fb8 <d_operator_name+0x84>
+ 8001faa:      bf94            ite     ls
+ 8001fac:      1c5a            addls   r2, r3, #1
+ 8001fae:      4618            movhi   r0, r3
+ 8001fb0:      4282            cmp     r2, r0
+ 8001fb2:      d1ef            bne.n   8001f94 <d_operator_name+0x60>
+ 8001fb4:      2000            movs    r0, #0
+ 8001fb6:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 8001fb8:      7849            ldrb    r1, [r1, #1]
+ 8001fba:      4561            cmp     r1, ip
+ 8001fbc:      d1f5            bne.n   8001faa <d_operator_name+0x76>
+ 8001fbe:      e9de 3205       ldrd    r3, r2, [lr, #20]
+ 8001fc2:      4293            cmp     r3, r2
+ 8001fc4:      daf6            bge.n   8001fb4 <d_operator_name+0x80>
+ 8001fc6:      f8de 1010       ldr.w   r1, [lr, #16]
+ 8001fca:      011a            lsls    r2, r3, #4
+ 8001fcc:      1888            adds    r0, r1, r2
+ 8001fce:      3301            adds    r3, #1
+ 8001fd0:      2500            movs    r5, #0
+ 8001fd2:      2431            movs    r4, #49 ; 0x31
+ 8001fd4:      6045            str     r5, [r0, #4]
+ 8001fd6:      f8ce 3014       str.w   r3, [lr, #20]
+ 8001fda:      548c            strb    r4, [r1, r2]
+ 8001fdc:      6087            str     r7, [r0, #8]
+ 8001fde:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 8001fe0:      4694            mov     ip, r2
+ 8001fe2:      e7d4            b.n     8001f8e <d_operator_name+0x5a>
+ 8001fe4:      2e63            cmp     r6, #99 ; 0x63
+ 8001fe6:      d1d2            bne.n   8001f8e <d_operator_name+0x5a>
+ 8001fe8:      f1bc 0f76       cmp.w   ip, #118        ; 0x76
+ 8001fec:      d1cf            bne.n   8001f8e <d_operator_name+0x5a>
+ 8001fee:      e9d0 350d       ldrd    r3, r5, [r0, #52]       ; 0x34
+ 8001ff2:      fab3 f383       clz     r3, r3
+ 8001ff6:      095b            lsrs    r3, r3, #5
+ 8001ff8:      6383            str     r3, [r0, #56]   ; 0x38
+ 8001ffa:      f7ff fba1       bl      8001740 <d_type>
+ 8001ffe:      6ba3            ldr     r3, [r4, #56]   ; 0x38
+ 8002000:      4602            mov     r2, r0
+ 8002002:      b92b            cbnz    r3, 8002010 <d_operator_name+0xdc>
+ 8002004:      2133            movs    r1, #51 ; 0x33
+ 8002006:      4620            mov     r0, r4
+ 8002008:      f7fe f91a       bl      8000240 <d_make_comp>
+ 800200c:      63a5            str     r5, [r4, #56]   ; 0x38
+ 800200e:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 8002010:      2300            movs    r3, #0
+ 8002012:      2134            movs    r1, #52 ; 0x34
+ 8002014:      4620            mov     r0, r4
+ 8002016:      f7fe f913       bl      8000240 <d_make_comp>
+ 800201a:      e7f7            b.n     800200c <d_operator_name+0xd8>
+ 800201c:      08011e64        .word   0x08011e64
+
+08002020 <d_parmlist>:
+ 8002020:      b530            push    {r4, r5, lr}
+ 8002022:      68c2            ldr     r2, [r0, #12]
+ 8002024:      b083            sub     sp, #12
+ 8002026:      2300            movs    r3, #0
+ 8002028:      9301            str     r3, [sp, #4]
+ 800202a:      7813            ldrb    r3, [r2, #0]
+ 800202c:      2b00            cmp     r3, #0
+ 800202e:      d036            beq.n   800209e <d_parmlist+0x7e>
+ 8002030:      2b45            cmp     r3, #69 ; 0x45
+ 8002032:      d034            beq.n   800209e <d_parmlist+0x7e>
+ 8002034:      2b2e            cmp     r3, #46 ; 0x2e
+ 8002036:      d032            beq.n   800209e <d_parmlist+0x7e>
+ 8002038:      4604            mov     r4, r0
+ 800203a:      ad01            add     r5, sp, #4
+ 800203c:      e015            b.n     800206a <d_parmlist+0x4a>
+ 800203e:      2b4f            cmp     r3, #79 ; 0x4f
+ 8002040:      d016            beq.n   8002070 <d_parmlist+0x50>
+ 8002042:      f7ff fb7d       bl      8001740 <d_type>
+ 8002046:      2300            movs    r3, #0
+ 8002048:      4602            mov     r2, r0
+ 800204a:      212e            movs    r1, #46 ; 0x2e
+ 800204c:      b338            cbz     r0, 800209e <d_parmlist+0x7e>
+ 800204e:      4620            mov     r0, r4
+ 8002050:      f7fe f8f6       bl      8000240 <d_make_comp>
+ 8002054:      6028            str     r0, [r5, #0]
+ 8002056:      b310            cbz     r0, 800209e <d_parmlist+0x7e>
+ 8002058:      68e2            ldr     r2, [r4, #12]
+ 800205a:      7813            ldrb    r3, [r2, #0]
+ 800205c:      f100 050c       add.w   r5, r0, #12
+ 8002060:      b14b            cbz     r3, 8002076 <d_parmlist+0x56>
+ 8002062:      2b45            cmp     r3, #69 ; 0x45
+ 8002064:      d007            beq.n   8002076 <d_parmlist+0x56>
+ 8002066:      2b2e            cmp     r3, #46 ; 0x2e
+ 8002068:      d005            beq.n   8002076 <d_parmlist+0x56>
+ 800206a:      2b52            cmp     r3, #82 ; 0x52
+ 800206c:      4620            mov     r0, r4
+ 800206e:      d1e6            bne.n   800203e <d_parmlist+0x1e>
+ 8002070:      7853            ldrb    r3, [r2, #1]
+ 8002072:      2b45            cmp     r3, #69 ; 0x45
+ 8002074:      d1e5            bne.n   8002042 <d_parmlist+0x22>
+ 8002076:      9801            ldr     r0, [sp, #4]
+ 8002078:      b188            cbz     r0, 800209e <d_parmlist+0x7e>
+ 800207a:      68c3            ldr     r3, [r0, #12]
+ 800207c:      b10b            cbz     r3, 8002082 <d_parmlist+0x62>
+ 800207e:      b003            add     sp, #12
+ 8002080:      bd30            pop     {r4, r5, pc}
+ 8002082:      6882            ldr     r2, [r0, #8]
+ 8002084:      7811            ldrb    r1, [r2, #0]
+ 8002086:      2927            cmp     r1, #39 ; 0x27
+ 8002088:      d1f9            bne.n   800207e <d_parmlist+0x5e>
+ 800208a:      6892            ldr     r2, [r2, #8]
+ 800208c:      7c11            ldrb    r1, [r2, #16]
+ 800208e:      2909            cmp     r1, #9
+ 8002090:      d1f5            bne.n   800207e <d_parmlist+0x5e>
+ 8002092:      6851            ldr     r1, [r2, #4]
+ 8002094:      6b22            ldr     r2, [r4, #48]   ; 0x30
+ 8002096:      1a52            subs    r2, r2, r1
+ 8002098:      6322            str     r2, [r4, #48]   ; 0x30
+ 800209a:      6083            str     r3, [r0, #8]
+ 800209c:      e7ef            b.n     800207e <d_parmlist+0x5e>
+ 800209e:      2000            movs    r0, #0
+ 80020a0:      b003            add     sp, #12
+ 80020a2:      bd30            pop     {r4, r5, pc}
+
+080020a4 <d_cv_qualifiers>:
+ 80020a4:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 80020a8:      4689            mov     r9, r1
+ 80020aa:      b083            sub     sp, #12
+ 80020ac:      68c1            ldr     r1, [r0, #12]
+ 80020ae:      1e13            subs    r3, r2, #0
+ 80020b0:      9301            str     r3, [sp, #4]
+ 80020b2:      4604            mov     r4, r0
+ 80020b4:      780b            ldrb    r3, [r1, #0]
+ 80020b6:      bf15            itete   ne
+ 80020b8:      f04f 081e       movne.w r8, #30
+ 80020bc:      f04f 081b       moveq.w r8, #27
+ 80020c0:      271d            movne   r7, #29
+ 80020c2:      271a            moveq   r7, #26
+ 80020c4:      bf14            ite     ne
+ 80020c6:      261c            movne   r6, #28
+ 80020c8:      2619            moveq   r6, #25
+ 80020ca:      464d            mov     r5, r9
+ 80020cc:      f04f 0a01       mov.w   sl, #1
+ 80020d0:      e01c            b.n     800210c <d_cv_qualifiers+0x68>
+ 80020d2:      2b56            cmp     r3, #86 ; 0x56
+ 80020d4:      d03f            beq.n   8002156 <d_cv_qualifiers+0xb2>
+ 80020d6:      2b4b            cmp     r3, #75 ; 0x4b
+ 80020d8:      d043            beq.n   8002162 <d_cv_qualifiers+0xbe>
+ 80020da:      784b            ldrb    r3, [r1, #1]
+ 80020dc:      2b00            cmp     r3, #0
+ 80020de:      d035            beq.n   800214c <d_cv_qualifiers+0xa8>
+ 80020e0:      1c8b            adds    r3, r1, #2
+ 80020e2:      60e3            str     r3, [r4, #12]
+ 80020e4:      784b            ldrb    r3, [r1, #1]
+ 80020e6:      2b78            cmp     r3, #120        ; 0x78
+ 80020e8:      d041            beq.n   800216e <d_cv_qualifiers+0xca>
+ 80020ea:      2b6f            cmp     r3, #111        ; 0x6f
+ 80020ec:      d145            bne.n   800217a <d_cv_qualifiers+0xd6>
+ 80020ee:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 80020f0:      3309            adds    r3, #9
+ 80020f2:      6323            str     r3, [r4, #48]   ; 0x30
+ 80020f4:      214e            movs    r1, #78 ; 0x4e
+ 80020f6:      2300            movs    r3, #0
+ 80020f8:      2200            movs    r2, #0
+ 80020fa:      4620            mov     r0, r4
+ 80020fc:      f7fe f8a0       bl      8000240 <d_make_comp>
+ 8002100:      6028            str     r0, [r5, #0]
+ 8002102:      b318            cbz     r0, 800214c <d_cv_qualifiers+0xa8>
+ 8002104:      68e1            ldr     r1, [r4, #12]
+ 8002106:      780b            ldrb    r3, [r1, #0]
+ 8002108:      f100 0508       add.w   r5, r0, #8
+ 800210c:      2b72            cmp     r3, #114        ; 0x72
+ 800210e:      d00d            beq.n   800212c <d_cv_qualifiers+0x88>
+ 8002110:      2b56            cmp     r3, #86 ; 0x56
+ 8002112:      d00b            beq.n   800212c <d_cv_qualifiers+0x88>
+ 8002114:      2b4b            cmp     r3, #75 ; 0x4b
+ 8002116:      d009            beq.n   800212c <d_cv_qualifiers+0x88>
+ 8002118:      2b44            cmp     r3, #68 ; 0x44
+ 800211a:      d146            bne.n   80021aa <d_cv_qualifiers+0x106>
+ 800211c:      784a            ldrb    r2, [r1, #1]
+ 800211e:      f002 00df       and.w   r0, r2, #223    ; 0xdf
+ 8002122:      284f            cmp     r0, #79 ; 0x4f
+ 8002124:      d002            beq.n   800212c <d_cv_qualifiers+0x88>
+ 8002126:      3a77            subs    r2, #119        ; 0x77
+ 8002128:      2a01            cmp     r2, #1
+ 800212a:      d83e            bhi.n   80021aa <d_cv_qualifiers+0x106>
+ 800212c:      1c4a            adds    r2, r1, #1
+ 800212e:      2b72            cmp     r3, #114        ; 0x72
+ 8002130:      60e2            str     r2, [r4, #12]
+ 8002132:      d1ce            bne.n   80020d2 <d_cv_qualifiers+0x2e>
+ 8002134:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8002136:      3309            adds    r3, #9
+ 8002138:      6323            str     r3, [r4, #48]   ; 0x30
+ 800213a:      4631            mov     r1, r6
+ 800213c:      2300            movs    r3, #0
+ 800213e:      2200            movs    r2, #0
+ 8002140:      4620            mov     r0, r4
+ 8002142:      f7fe f87d       bl      8000240 <d_make_comp>
+ 8002146:      6028            str     r0, [r5, #0]
+ 8002148:      2800            cmp     r0, #0
+ 800214a:      d1db            bne.n   8002104 <d_cv_qualifiers+0x60>
+ 800214c:      2500            movs    r5, #0
+ 800214e:      4628            mov     r0, r5
+ 8002150:      b003            add     sp, #12
+ 8002152:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8002156:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8002158:      3309            adds    r3, #9
+ 800215a:      6323            str     r3, [r4, #48]   ; 0x30
+ 800215c:      4639            mov     r1, r7
+ 800215e:      2300            movs    r3, #0
+ 8002160:      e7ca            b.n     80020f8 <d_cv_qualifiers+0x54>
+ 8002162:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8002164:      3306            adds    r3, #6
+ 8002166:      6323            str     r3, [r4, #48]   ; 0x30
+ 8002168:      4641            mov     r1, r8
+ 800216a:      2300            movs    r3, #0
+ 800216c:      e7c4            b.n     80020f8 <d_cv_qualifiers+0x54>
+ 800216e:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8002170:      3311            adds    r3, #17
+ 8002172:      6323            str     r3, [r4, #48]   ; 0x30
+ 8002174:      214c            movs    r1, #76 ; 0x4c
+ 8002176:      2300            movs    r3, #0
+ 8002178:      e7be            b.n     80020f8 <d_cv_qualifiers+0x54>
+ 800217a:      2b4f            cmp     r3, #79 ; 0x4f
+ 800217c:      d132            bne.n   80021e4 <d_cv_qualifiers+0x140>
+ 800217e:      e9d4 3b0c       ldrd    r3, fp, [r4, #48]       ; 0x30
+ 8002182:      3309            adds    r3, #9
+ 8002184:      6323            str     r3, [r4, #48]   ; 0x30
+ 8002186:      f8c4 a034       str.w   sl, [r4, #52]   ; 0x34
+ 800218a:      4620            mov     r0, r4
+ 800218c:      f7fe feae       bl      8000eec <d_expression_1>
+ 8002190:      f8c4 b034       str.w   fp, [r4, #52]   ; 0x34
+ 8002194:      4603            mov     r3, r0
+ 8002196:      2800            cmp     r0, #0
+ 8002198:      d0d8            beq.n   800214c <d_cv_qualifiers+0xa8>
+ 800219a:      68e2            ldr     r2, [r4, #12]
+ 800219c:      7811            ldrb    r1, [r2, #0]
+ 800219e:      2945            cmp     r1, #69 ; 0x45
+ 80021a0:      d1d4            bne.n   800214c <d_cv_qualifiers+0xa8>
+ 80021a2:      3201            adds    r2, #1
+ 80021a4:      60e2            str     r2, [r4, #12]
+ 80021a6:      214e            movs    r1, #78 ; 0x4e
+ 80021a8:      e7a6            b.n     80020f8 <d_cv_qualifiers+0x54>
+ 80021aa:      9a01            ldr     r2, [sp, #4]
+ 80021ac:      2a00            cmp     r2, #0
+ 80021ae:      d1ce            bne.n   800214e <d_cv_qualifiers+0xaa>
+ 80021b0:      2b46            cmp     r3, #70 ; 0x46
+ 80021b2:      d1cc            bne.n   800214e <d_cv_qualifiers+0xaa>
+ 80021b4:      454d            cmp     r5, r9
+ 80021b6:      d0ca            beq.n   800214e <d_cv_qualifiers+0xaa>
+ 80021b8:      241d            movs    r4, #29
+ 80021ba:      201e            movs    r0, #30
+ 80021bc:      211c            movs    r1, #28
+ 80021be:      e008            b.n     80021d2 <d_cv_qualifiers+0x12e>
+ 80021c0:      2a1b            cmp     r2, #27
+ 80021c2:      d00d            beq.n   80021e0 <d_cv_qualifiers+0x13c>
+ 80021c4:      2a19            cmp     r2, #25
+ 80021c6:      d100            bne.n   80021ca <d_cv_qualifiers+0x126>
+ 80021c8:      7019            strb    r1, [r3, #0]
+ 80021ca:      f103 0908       add.w   r9, r3, #8
+ 80021ce:      454d            cmp     r5, r9
+ 80021d0:      d0bd            beq.n   800214e <d_cv_qualifiers+0xaa>
+ 80021d2:      f8d9 3000       ldr.w   r3, [r9]
+ 80021d6:      781a            ldrb    r2, [r3, #0]
+ 80021d8:      2a1a            cmp     r2, #26
+ 80021da:      d1f1            bne.n   80021c0 <d_cv_qualifiers+0x11c>
+ 80021dc:      701c            strb    r4, [r3, #0]
+ 80021de:      e7f4            b.n     80021ca <d_cv_qualifiers+0x126>
+ 80021e0:      7018            strb    r0, [r3, #0]
+ 80021e2:      e7f2            b.n     80021ca <d_cv_qualifiers+0x126>
+ 80021e4:      2b77            cmp     r3, #119        ; 0x77
+ 80021e6:      d1b1            bne.n   800214c <d_cv_qualifiers+0xa8>
+ 80021e8:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 80021ea:      3306            adds    r3, #6
+ 80021ec:      6323            str     r3, [r4, #48]   ; 0x30
+ 80021ee:      4620            mov     r0, r4
+ 80021f0:      f7ff ff16       bl      8002020 <d_parmlist>
+ 80021f4:      4603            mov     r3, r0
+ 80021f6:      2800            cmp     r0, #0
+ 80021f8:      d0a8            beq.n   800214c <d_cv_qualifiers+0xa8>
+ 80021fa:      68e2            ldr     r2, [r4, #12]
+ 80021fc:      7811            ldrb    r1, [r2, #0]
+ 80021fe:      2945            cmp     r1, #69 ; 0x45
+ 8002200:      d1a4            bne.n   800214c <d_cv_qualifiers+0xa8>
+ 8002202:      3201            adds    r2, #1
+ 8002204:      60e2            str     r2, [r4, #12]
+ 8002206:      214f            movs    r1, #79 ; 0x4f
+ 8002208:      e776            b.n     80020f8 <d_cv_qualifiers+0x54>
+ 800220a:      bf00            nop
+
+0800220c <d_bare_function_type>:
+ 800220c:      b570            push    {r4, r5, r6, lr}
+ 800220e:      68c3            ldr     r3, [r0, #12]
+ 8002210:      781a            ldrb    r2, [r3, #0]
+ 8002212:      2a4a            cmp     r2, #74 ; 0x4a
+ 8002214:      4604            mov     r4, r0
+ 8002216:      d013            beq.n   8002240 <d_bare_function_type+0x34>
+ 8002218:      b181            cbz     r1, 800223c <d_bare_function_type+0x30>
+ 800221a:      4620            mov     r0, r4
+ 800221c:      f7ff fa90       bl      8001740 <d_type>
+ 8002220:      4605            mov     r5, r0
+ 8002222:      b180            cbz     r0, 8002246 <d_bare_function_type+0x3a>
+ 8002224:      4620            mov     r0, r4
+ 8002226:      f7ff fefb       bl      8002020 <d_parmlist>
+ 800222a:      b160            cbz     r0, 8002246 <d_bare_function_type+0x3a>
+ 800222c:      4603            mov     r3, r0
+ 800222e:      462a            mov     r2, r5
+ 8002230:      4620            mov     r0, r4
+ 8002232:      2129            movs    r1, #41 ; 0x29
+ 8002234:      e8bd 4070       ldmia.w sp!, {r4, r5, r6, lr}
+ 8002238:      f7fe b802       b.w     8000240 <d_make_comp>
+ 800223c:      460d            mov     r5, r1
+ 800223e:      e7f1            b.n     8002224 <d_bare_function_type+0x18>
+ 8002240:      3301            adds    r3, #1
+ 8002242:      60c3            str     r3, [r0, #12]
+ 8002244:      e7e9            b.n     800221a <d_bare_function_type+0xe>
+ 8002246:      2000            movs    r0, #0
+ 8002248:      bd70            pop     {r4, r5, r6, pc}
+ 800224a:      bf00            nop
+
+0800224c <d_function_type>:
+ 800224c:      68c3            ldr     r3, [r0, #12]
+ 800224e:      781a            ldrb    r2, [r3, #0]
+ 8002250:      2a46            cmp     r2, #70 ; 0x46
+ 8002252:      d118            bne.n   8002286 <d_function_type+0x3a>
+ 8002254:      b510            push    {r4, lr}
+ 8002256:      1c5a            adds    r2, r3, #1
+ 8002258:      60c2            str     r2, [r0, #12]
+ 800225a:      785a            ldrb    r2, [r3, #1]
+ 800225c:      2a59            cmp     r2, #89 ; 0x59
+ 800225e:      bf04            itt     eq
+ 8002260:      3302            addeq   r3, #2
+ 8002262:      60c3            streq   r3, [r0, #12]
+ 8002264:      2101            movs    r1, #1
+ 8002266:      4604            mov     r4, r0
+ 8002268:      f7ff ffd0       bl      800220c <d_bare_function_type>
+ 800226c:      4601            mov     r1, r0
+ 800226e:      4620            mov     r0, r4
+ 8002270:      f7fe f82e       bl      80002d0 <d_ref_qualifier>
+ 8002274:      68e3            ldr     r3, [r4, #12]
+ 8002276:      781a            ldrb    r2, [r3, #0]
+ 8002278:      2a45            cmp     r2, #69 ; 0x45
+ 800227a:      d102            bne.n   8002282 <d_function_type+0x36>
+ 800227c:      3301            adds    r3, #1
+ 800227e:      60e3            str     r3, [r4, #12]
+ 8002280:      bd10            pop     {r4, pc}
+ 8002282:      2000            movs    r0, #0
+ 8002284:      bd10            pop     {r4, pc}
+ 8002286:      2000            movs    r0, #0
+ 8002288:      4770            bx      lr
+ 800228a:      bf00            nop
+
+0800228c <d_unqualified_name>:
+ 800228c:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8002290:      68c1            ldr     r1, [r0, #12]
+ 8002292:      780b            ldrb    r3, [r1, #0]
+ 8002294:      f1a3 0230       sub.w   r2, r3, #48     ; 0x30
+ 8002298:      2a09            cmp     r2, #9
+ 800229a:      4604            mov     r4, r0
+ 800229c:      d93c            bls.n   8002318 <d_unqualified_name+0x8c>
+ 800229e:      f1a3 0261       sub.w   r2, r3, #97     ; 0x61
+ 80022a2:      2a19            cmp     r2, #25
+ 80022a4:      d922            bls.n   80022ec <d_unqualified_name+0x60>
+ 80022a6:      f1a3 0243       sub.w   r2, r3, #67     ; 0x43
+ 80022aa:      2a01            cmp     r2, #1
+ 80022ac:      d969            bls.n   8002382 <d_unqualified_name+0xf6>
+ 80022ae:      2b4c            cmp     r3, #76 ; 0x4c
+ 80022b0:      d056            beq.n   8002360 <d_unqualified_name+0xd4>
+ 80022b2:      2b55            cmp     r3, #85 ; 0x55
+ 80022b4:      d15f            bne.n   8002376 <d_unqualified_name+0xea>
+ 80022b6:      784b            ldrb    r3, [r1, #1]
+ 80022b8:      2b6c            cmp     r3, #108        ; 0x6c
+ 80022ba:      f000 80e5       beq.w   8002488 <d_unqualified_name+0x1fc>
+ 80022be:      2b74            cmp     r3, #116        ; 0x74
+ 80022c0:      d159            bne.n   8002376 <d_unqualified_name+0xea>
+ 80022c2:      1c4b            adds    r3, r1, #1
+ 80022c4:      60c3            str     r3, [r0, #12]
+ 80022c6:      784b            ldrb    r3, [r1, #1]
+ 80022c8:      2b74            cmp     r3, #116        ; 0x74
+ 80022ca:      d158            bne.n   800237e <d_unqualified_name+0xf2>
+ 80022cc:      3102            adds    r1, #2
+ 80022ce:      60c1            str     r1, [r0, #12]
+ 80022d0:      f7fe f8f4       bl      80004bc <d_compact_number>
+ 80022d4:      2800            cmp     r0, #0
+ 80022d6:      f2c0 8155       blt.w   8002584 <d_unqualified_name+0x2f8>
+ 80022da:      e9d4 3205       ldrd    r3, r2, [r4, #20]
+ 80022de:      4293            cmp     r3, r2
+ 80022e0:      68e7            ldr     r7, [r4, #12]
+ 80022e2:      f2c0 80f3       blt.w   80024cc <d_unqualified_name+0x240>
+ 80022e6:      783b            ldrb    r3, [r7, #0]
+ 80022e8:      2500            movs    r5, #0
+ 80022ea:      e010            b.n     800230e <d_unqualified_name+0x82>
+ 80022ec:      2b6f            cmp     r3, #111        ; 0x6f
+ 80022ee:      d104            bne.n   80022fa <d_unqualified_name+0x6e>
+ 80022f0:      784b            ldrb    r3, [r1, #1]
+ 80022f2:      2b6e            cmp     r3, #110        ; 0x6e
+ 80022f4:      bf04            itt     eq
+ 80022f6:      3102            addeq   r1, #2
+ 80022f8:      60c1            streq   r1, [r0, #12]
+ 80022fa:      4620            mov     r0, r4
+ 80022fc:      f7ff fe1a       bl      8001f34 <d_operator_name>
+ 8002300:      4605            mov     r5, r0
+ 8002302:      b110            cbz     r0, 800230a <d_unqualified_name+0x7e>
+ 8002304:      7803            ldrb    r3, [r0, #0]
+ 8002306:      2b31            cmp     r3, #49 ; 0x31
+ 8002308:      d013            beq.n   8002332 <d_unqualified_name+0xa6>
+ 800230a:      68e3            ldr     r3, [r4, #12]
+ 800230c:      781b            ldrb    r3, [r3, #0]
+ 800230e:      2b42            cmp     r3, #66 ; 0x42
+ 8002310:      d009            beq.n   8002326 <d_unqualified_name+0x9a>
+ 8002312:      4628            mov     r0, r5
+ 8002314:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8002318:      f7fe f90c       bl      8000534 <d_source_name>
+ 800231c:      68e3            ldr     r3, [r4, #12]
+ 800231e:      781b            ldrb    r3, [r3, #0]
+ 8002320:      2b42            cmp     r3, #66 ; 0x42
+ 8002322:      4605            mov     r5, r0
+ 8002324:      d1f5            bne.n   8002312 <d_unqualified_name+0x86>
+ 8002326:      4629            mov     r1, r5
+ 8002328:      4620            mov     r0, r4
+ 800232a:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 800232e:      f7fe b95b       b.w     80005e8 <d_abi_tags>
+ 8002332:      6882            ldr     r2, [r0, #8]
+ 8002334:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8002336:      6896            ldr     r6, [r2, #8]
+ 8002338:      6810            ldr     r0, [r2, #0]
+ 800233a:      49a1            ldr     r1, [pc, #644]  ; (80025c0 <d_unqualified_name+0x334>)
+ 800233c:      3307            adds    r3, #7
+ 800233e:      4433            add     r3, r6
+ 8002340:      6323            str     r3, [r4, #48]   ; 0x30
+ 8002342:      f004 fd3d       bl      8006dc0 <strcmp>
+ 8002346:      2800            cmp     r0, #0
+ 8002348:      d1df            bne.n   800230a <d_unqualified_name+0x7e>
+ 800234a:      4620            mov     r0, r4
+ 800234c:      f7fe f8f2       bl      8000534 <d_source_name>
+ 8002350:      462a            mov     r2, r5
+ 8002352:      4603            mov     r3, r0
+ 8002354:      2136            movs    r1, #54 ; 0x36
+ 8002356:      4620            mov     r0, r4
+ 8002358:      f7fd ff72       bl      8000240 <d_make_comp>
+ 800235c:      4605            mov     r5, r0
+ 800235e:      e7d4            b.n     800230a <d_unqualified_name+0x7e>
+ 8002360:      3101            adds    r1, #1
+ 8002362:      60c1            str     r1, [r0, #12]
+ 8002364:      f7fe f8e6       bl      8000534 <d_source_name>
+ 8002368:      4605            mov     r5, r0
+ 800236a:      b120            cbz     r0, 8002376 <d_unqualified_name+0xea>
+ 800236c:      4620            mov     r0, r4
+ 800236e:      f7fe fa0f       bl      8000790 <d_discriminator>
+ 8002372:      2800            cmp     r0, #0
+ 8002374:      d1c9            bne.n   800230a <d_unqualified_name+0x7e>
+ 8002376:      2500            movs    r5, #0
+ 8002378:      4628            mov     r0, r5
+ 800237a:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800237e:      2500            movs    r5, #0
+ 8002380:      e7c5            b.n     800230e <d_unqualified_name+0x82>
+ 8002382:      6ac2            ldr     r2, [r0, #44]   ; 0x2c
+ 8002384:      b132            cbz     r2, 8002394 <d_unqualified_name+0x108>
+ 8002386:      7810            ldrb    r0, [r2, #0]
+ 8002388:      b9e0            cbnz    r0, 80023c4 <d_unqualified_name+0x138>
+ 800238a:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 800238c:      68d0            ldr     r0, [r2, #12]
+ 800238e:      4403            add     r3, r0
+ 8002390:      6323            str     r3, [r4, #48]   ; 0x30
+ 8002392:      780b            ldrb    r3, [r1, #0]
+ 8002394:      2b43            cmp     r3, #67 ; 0x43
+ 8002396:      d018            beq.n   80023ca <d_unqualified_name+0x13e>
+ 8002398:      2b44            cmp     r3, #68 ; 0x44
+ 800239a:      d1f0            bne.n   800237e <d_unqualified_name+0xf2>
+ 800239c:      784b            ldrb    r3, [r1, #1]
+ 800239e:      3b30            subs    r3, #48 ; 0x30
+ 80023a0:      2b05            cmp     r3, #5
+ 80023a2:      d8e8            bhi.n   8002376 <d_unqualified_name+0xea>
+ 80023a4:      a001            add     r0, pc, #4      ; (adr r0, 80023ac <d_unqualified_name+0x120>)
+ 80023a6:      f850 f023       ldr.w   pc, [r0, r3, lsl #2]
+ 80023aa:      bf00            nop
+ 80023ac:      0800241d        .word   0x0800241d
+ 80023b0:      080023e7        .word   0x080023e7
+ 80023b4:      0800242f        .word   0x0800242f
+ 80023b8:      08002377        .word   0x08002377
+ 80023bc:      08002429        .word   0x08002429
+ 80023c0:      08002423        .word   0x08002423
+ 80023c4:      2818            cmp     r0, #24
+ 80023c6:      d1e5            bne.n   8002394 <d_unqualified_name+0x108>
+ 80023c8:      e7df            b.n     800238a <d_unqualified_name+0xfe>
+ 80023ca:      784b            ldrb    r3, [r1, #1]
+ 80023cc:      2b49            cmp     r3, #73 ; 0x49
+ 80023ce:      f000 80b0       beq.w   8002532 <d_unqualified_name+0x2a6>
+ 80023d2:      3b31            subs    r3, #49 ; 0x31
+ 80023d4:      2b04            cmp     r3, #4
+ 80023d6:      d8ce            bhi.n   8002376 <d_unqualified_name+0xea>
+ 80023d8:      e8df f013       tbh     [pc, r3, lsl #1]
+ 80023dc:      005100ed        .word   0x005100ed
+ 80023e0:      0047004c        .word   0x0047004c
+ 80023e4:      002c            .short  0x002c
+ 80023e6:      f04f 0c02       mov.w   ip, #2
+ 80023ea:      e9d4 3005       ldrd    r3, r0, [r4, #20]
+ 80023ee:      1c8d            adds    r5, r1, #2
+ 80023f0:      4283            cmp     r3, r0
+ 80023f2:      60e5            str     r5, [r4, #12]
+ 80023f4:      f280 80d0       bge.w   8002598 <d_unqualified_name+0x30c>
+ 80023f8:      6926            ldr     r6, [r4, #16]
+ 80023fa:      0118            lsls    r0, r3, #4
+ 80023fc:      1835            adds    r5, r6, r0
+ 80023fe:      3301            adds    r3, #1
+ 8002400:      2700            movs    r7, #0
+ 8002402:      606f            str     r7, [r5, #4]
+ 8002404:      6163            str     r3, [r4, #20]
+ 8002406:      2a00            cmp     r2, #0
+ 8002408:      f000 80cf       beq.w   80025aa <d_unqualified_name+0x31e>
+ 800240c:      2308            movs    r3, #8
+ 800240e:      606f            str     r7, [r5, #4]
+ 8002410:      5433            strb    r3, [r6, r0]
+ 8002412:      f885 c008       strb.w  ip, [r5, #8]
+ 8002416:      60ea            str     r2, [r5, #12]
+ 8002418:      788b            ldrb    r3, [r1, #2]
+ 800241a:      e778            b.n     800230e <d_unqualified_name+0x82>
+ 800241c:      f04f 0c01       mov.w   ip, #1
+ 8002420:      e7e3            b.n     80023ea <d_unqualified_name+0x15e>
+ 8002422:      f04f 0c05       mov.w   ip, #5
+ 8002426:      e7e0            b.n     80023ea <d_unqualified_name+0x15e>
+ 8002428:      f04f 0c04       mov.w   ip, #4
+ 800242c:      e7dd            b.n     80023ea <d_unqualified_name+0x15e>
+ 800242e:      f04f 0c03       mov.w   ip, #3
+ 8002432:      e7da            b.n     80023ea <d_unqualified_name+0x15e>
+ 8002434:      3102            adds    r1, #2
+ 8002436:      60e1            str     r1, [r4, #12]
+ 8002438:      f04f 0805       mov.w   r8, #5
+ 800243c:      e9d4 3005       ldrd    r3, r0, [r4, #20]
+ 8002440:      4283            cmp     r3, r0
+ 8002442:      f280 80ac       bge.w   800259e <d_unqualified_name+0x312>
+ 8002446:      6926            ldr     r6, [r4, #16]
+ 8002448:      0118            lsls    r0, r3, #4
+ 800244a:      1835            adds    r5, r6, r0
+ 800244c:      3301            adds    r3, #1
+ 800244e:      2700            movs    r7, #0
+ 8002450:      606f            str     r7, [r5, #4]
+ 8002452:      6163            str     r3, [r4, #20]
+ 8002454:      2a00            cmp     r2, #0
+ 8002456:      f000 80ab       beq.w   80025b0 <d_unqualified_name+0x324>
+ 800245a:      2307            movs    r3, #7
+ 800245c:      606f            str     r7, [r5, #4]
+ 800245e:      5433            strb    r3, [r6, r0]
+ 8002460:      f885 8008       strb.w  r8, [r5, #8]
+ 8002464:      60ea            str     r2, [r5, #12]
+ 8002466:      780b            ldrb    r3, [r1, #0]
+ 8002468:      e751            b.n     800230e <d_unqualified_name+0x82>
+ 800246a:      3102            adds    r1, #2
+ 800246c:      60e1            str     r1, [r4, #12]
+ 800246e:      f04f 0804       mov.w   r8, #4
+ 8002472:      e7e3            b.n     800243c <d_unqualified_name+0x1b0>
+ 8002474:      3102            adds    r1, #2
+ 8002476:      60e1            str     r1, [r4, #12]
+ 8002478:      f04f 0803       mov.w   r8, #3
+ 800247c:      e7de            b.n     800243c <d_unqualified_name+0x1b0>
+ 800247e:      3102            adds    r1, #2
+ 8002480:      60e1            str     r1, [r4, #12]
+ 8002482:      f04f 0802       mov.w   r8, #2
+ 8002486:      e7d9            b.n     800243c <d_unqualified_name+0x1b0>
+ 8002488:      1c4b            adds    r3, r1, #1
+ 800248a:      60c3            str     r3, [r0, #12]
+ 800248c:      784b            ldrb    r3, [r1, #1]
+ 800248e:      2b6c            cmp     r3, #108        ; 0x6c
+ 8002490:      f47f af75       bne.w   800237e <d_unqualified_name+0xf2>
+ 8002494:      3102            adds    r1, #2
+ 8002496:      60c1            str     r1, [r0, #12]
+ 8002498:      f7ff fdc2       bl      8002020 <d_parmlist>
+ 800249c:      4606            mov     r6, r0
+ 800249e:      2800            cmp     r0, #0
+ 80024a0:      d070            beq.n   8002584 <d_unqualified_name+0x2f8>
+ 80024a2:      68e2            ldr     r2, [r4, #12]
+ 80024a4:      7813            ldrb    r3, [r2, #0]
+ 80024a6:      2b45            cmp     r3, #69 ; 0x45
+ 80024a8:      f47f af69       bne.w   800237e <d_unqualified_name+0xf2>
+ 80024ac:      3201            adds    r2, #1
+ 80024ae:      60e2            str     r2, [r4, #12]
+ 80024b0:      4620            mov     r0, r4
+ 80024b2:      f7fe f803       bl      80004bc <d_compact_number>
+ 80024b6:      f1b0 0e00       subs.w  lr, r0, #0
+ 80024ba:      db63            blt.n   8002584 <d_unqualified_name+0x2f8>
+ 80024bc:      e9d4 3205       ldrd    r3, r2, [r4, #20]
+ 80024c0:      4293            cmp     r3, r2
+ 80024c2:      68e0            ldr     r0, [r4, #12]
+ 80024c4:      db1b            blt.n   80024fe <d_unqualified_name+0x272>
+ 80024c6:      7803            ldrb    r3, [r0, #0]
+ 80024c8:      2500            movs    r5, #0
+ 80024ca:      e720            b.n     800230e <d_unqualified_name+0x82>
+ 80024cc:      6926            ldr     r6, [r4, #16]
+ 80024ce:      6a22            ldr     r2, [r4, #32]
+ 80024d0:      f8d4 e024       ldr.w   lr, [r4, #36]   ; 0x24
+ 80024d4:      0119            lsls    r1, r3, #4
+ 80024d6:      1875            adds    r5, r6, r1
+ 80024d8:      3301            adds    r3, #1
+ 80024da:      f04f 0c00       mov.w   ip, #0
+ 80024de:      f8c5 c004       str.w   ip, [r5, #4]
+ 80024e2:      4572            cmp     r2, lr
+ 80024e4:      6163            str     r3, [r4, #20]
+ 80024e6:      f04f 0347       mov.w   r3, #71 ; 0x47
+ 80024ea:      5473            strb    r3, [r6, r1]
+ 80024ec:      60a8            str     r0, [r5, #8]
+ 80024ee:      da4d            bge.n   800258c <d_unqualified_name+0x300>
+ 80024f0:      69e3            ldr     r3, [r4, #28]
+ 80024f2:      f843 5022       str.w   r5, [r3, r2, lsl #2]
+ 80024f6:      3201            adds    r2, #1
+ 80024f8:      6222            str     r2, [r4, #32]
+ 80024fa:      783b            ldrb    r3, [r7, #0]
+ 80024fc:      e707            b.n     800230e <d_unqualified_name+0x82>
+ 80024fe:      6927            ldr     r7, [r4, #16]
+ 8002500:      6a22            ldr     r2, [r4, #32]
+ 8002502:      f8d4 8024       ldr.w   r8, [r4, #36]   ; 0x24
+ 8002506:      0119            lsls    r1, r3, #4
+ 8002508:      187d            adds    r5, r7, r1
+ 800250a:      3301            adds    r3, #1
+ 800250c:      f04f 0c00       mov.w   ip, #0
+ 8002510:      f8c5 c004       str.w   ip, [r5, #4]
+ 8002514:      4542            cmp     r2, r8
+ 8002516:      6163            str     r3, [r4, #20]
+ 8002518:      f04f 0345       mov.w   r3, #69 ; 0x45
+ 800251c:      547b            strb    r3, [r7, r1]
+ 800251e:      e9c5 6e02       strd    r6, lr, [r5, #8]
+ 8002522:      da36            bge.n   8002592 <d_unqualified_name+0x306>
+ 8002524:      69e3            ldr     r3, [r4, #28]
+ 8002526:      f843 5022       str.w   r5, [r3, r2, lsl #2]
+ 800252a:      3201            adds    r2, #1
+ 800252c:      6222            str     r2, [r4, #32]
+ 800252e:      7803            ldrb    r3, [r0, #0]
+ 8002530:      e6ed            b.n     800230e <d_unqualified_name+0x82>
+ 8002532:      1c4b            adds    r3, r1, #1
+ 8002534:      60e3            str     r3, [r4, #12]
+ 8002536:      788b            ldrb    r3, [r1, #2]
+ 8002538:      3b31            subs    r3, #49 ; 0x31
+ 800253a:      2b04            cmp     r3, #4
+ 800253c:      d832            bhi.n   80025a4 <d_unqualified_name+0x318>
+ 800253e:      e8df f003       tbb     [pc, r3]
+ 8002542:      1c03            .short  0x1c03
+ 8002544:      1217            .short  0x1217
+ 8002546:      0d              .byte   0x0d
+ 8002547:      00              .byte   0x00
+ 8002548:      3103            adds    r1, #3
+ 800254a:      60e1            str     r1, [r4, #12]
+ 800254c:      f04f 0801       mov.w   r8, #1
+ 8002550:      4620            mov     r0, r4
+ 8002552:      f7ff f8f5       bl      8001740 <d_type>
+ 8002556:      6ae2            ldr     r2, [r4, #44]   ; 0x2c
+ 8002558:      68e1            ldr     r1, [r4, #12]
+ 800255a:      e76f            b.n     800243c <d_unqualified_name+0x1b0>
+ 800255c:      3103            adds    r1, #3
+ 800255e:      60e1            str     r1, [r4, #12]
+ 8002560:      f04f 0805       mov.w   r8, #5
+ 8002564:      e7f4            b.n     8002550 <d_unqualified_name+0x2c4>
+ 8002566:      3103            adds    r1, #3
+ 8002568:      60e1            str     r1, [r4, #12]
+ 800256a:      f04f 0804       mov.w   r8, #4
+ 800256e:      e7ef            b.n     8002550 <d_unqualified_name+0x2c4>
+ 8002570:      3103            adds    r1, #3
+ 8002572:      60e1            str     r1, [r4, #12]
+ 8002574:      f04f 0803       mov.w   r8, #3
+ 8002578:      e7ea            b.n     8002550 <d_unqualified_name+0x2c4>
+ 800257a:      3103            adds    r1, #3
+ 800257c:      60e1            str     r1, [r4, #12]
+ 800257e:      f04f 0802       mov.w   r8, #2
+ 8002582:      e7e5            b.n     8002550 <d_unqualified_name+0x2c4>
+ 8002584:      68e3            ldr     r3, [r4, #12]
+ 8002586:      2500            movs    r5, #0
+ 8002588:      781b            ldrb    r3, [r3, #0]
+ 800258a:      e6c0            b.n     800230e <d_unqualified_name+0x82>
+ 800258c:      783b            ldrb    r3, [r7, #0]
+ 800258e:      4665            mov     r5, ip
+ 8002590:      e6bd            b.n     800230e <d_unqualified_name+0x82>
+ 8002592:      7803            ldrb    r3, [r0, #0]
+ 8002594:      4665            mov     r5, ip
+ 8002596:      e6ba            b.n     800230e <d_unqualified_name+0x82>
+ 8002598:      788b            ldrb    r3, [r1, #2]
+ 800259a:      2500            movs    r5, #0
+ 800259c:      e6b7            b.n     800230e <d_unqualified_name+0x82>
+ 800259e:      780b            ldrb    r3, [r1, #0]
+ 80025a0:      2500            movs    r5, #0
+ 80025a2:      e6b4            b.n     800230e <d_unqualified_name+0x82>
+ 80025a4:      784b            ldrb    r3, [r1, #1]
+ 80025a6:      2500            movs    r5, #0
+ 80025a8:      e6b1            b.n     800230e <d_unqualified_name+0x82>
+ 80025aa:      788b            ldrb    r3, [r1, #2]
+ 80025ac:      4615            mov     r5, r2
+ 80025ae:      e6ae            b.n     800230e <d_unqualified_name+0x82>
+ 80025b0:      780b            ldrb    r3, [r1, #0]
+ 80025b2:      4615            mov     r5, r2
+ 80025b4:      e6ab            b.n     800230e <d_unqualified_name+0x82>
+ 80025b6:      3102            adds    r1, #2
+ 80025b8:      60e1            str     r1, [r4, #12]
+ 80025ba:      f04f 0801       mov.w   r8, #1
+ 80025be:      e73d            b.n     800243c <d_unqualified_name+0x1b0>
+ 80025c0:      080125b8        .word   0x080125b8
+
+080025c4 <d_encoding>:
+ 80025c4:      e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80025c8:      68c3            ldr     r3, [r0, #12]
+ 80025ca:      781a            ldrb    r2, [r3, #0]
+ 80025cc:      2a47            cmp     r2, #71 ; 0x47
+ 80025ce:      4604            mov     r4, r0
+ 80025d0:      d019            beq.n   8002606 <d_encoding+0x42>
+ 80025d2:      2a54            cmp     r2, #84 ; 0x54
+ 80025d4:      d017            beq.n   8002606 <d_encoding+0x42>
+ 80025d6:      460e            mov     r6, r1
+ 80025d8:      f7fe ff06       bl      80013e8 <d_name>
+ 80025dc:      4605            mov     r5, r0
+ 80025de:      2800            cmp     r0, #0
+ 80025e0:      d07d            beq.n   80026de <d_encoding+0x11a>
+ 80025e2:      2e00            cmp     r6, #0
+ 80025e4:      d057            beq.n   8002696 <d_encoding+0xd2>
+ 80025e6:      68a3            ldr     r3, [r4, #8]
+ 80025e8:      07db            lsls    r3, r3, #31
+ 80025ea:      d454            bmi.n   8002696 <d_encoding+0xd2>
+ 80025ec:      e000            b.n     80025f0 <d_encoding+0x2c>
+ 80025ee:      68ad            ldr     r5, [r5, #8]
+ 80025f0:      782b            ldrb    r3, [r5, #0]
+ 80025f2:      f1a3 021c       sub.w   r2, r3, #28
+ 80025f6:      2a04            cmp     r2, #4
+ 80025f8:      d9f9            bls.n   80025ee <d_encoding+0x2a>
+ 80025fa:      2b02            cmp     r3, #2
+ 80025fc:      f000 8186       beq.w   800290c <d_encoding+0x348>
+ 8002600:      4628            mov     r0, r5
+ 8002602:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8002606:      6b21            ldr     r1, [r4, #48]   ; 0x30
+ 8002608:      f101 0214       add.w   r2, r1, #20
+ 800260c:      6322            str     r2, [r4, #48]   ; 0x30
+ 800260e:      781a            ldrb    r2, [r3, #0]
+ 8002610:      2a54            cmp     r2, #84 ; 0x54
+ 8002612:      d068            beq.n   80026e6 <d_encoding+0x122>
+ 8002614:      2a47            cmp     r2, #71 ; 0x47
+ 8002616:      d162            bne.n   80026de <d_encoding+0x11a>
+ 8002618:      1c5a            adds    r2, r3, #1
+ 800261a:      60e2            str     r2, [r4, #12]
+ 800261c:      785a            ldrb    r2, [r3, #1]
+ 800261e:      2a00            cmp     r2, #0
+ 8002620:      d05d            beq.n   80026de <d_encoding+0x11a>
+ 8002622:      1c9a            adds    r2, r3, #2
+ 8002624:      60e2            str     r2, [r4, #12]
+ 8002626:      785a            ldrb    r2, [r3, #1]
+ 8002628:      3a41            subs    r2, #65 ; 0x41
+ 800262a:      2a31            cmp     r2, #49 ; 0x31
+ 800262c:      d857            bhi.n   80026de <d_encoding+0x11a>
+ 800262e:      e8df f012       tbh     [pc, r2, lsl #1]
+ 8002632:      013e            .short  0x013e
+ 8002634:      00560056        .word   0x00560056
+ 8002638:      00560056        .word   0x00560056
+ 800263c:      00560056        .word   0x00560056
+ 8002640:      00560056        .word   0x00560056
+ 8002644:      00560056        .word   0x00560056
+ 8002648:      00560056        .word   0x00560056
+ 800264c:      00560056        .word   0x00560056
+ 8002650:      00560056        .word   0x00560056
+ 8002654:      0056014a        .word   0x0056014a
+ 8002658:      00560159        .word   0x00560159
+ 800265c:      005600e0        .word   0x005600e0
+ 8002660:      00560056        .word   0x00560056
+ 8002664:      00560056        .word   0x00560056
+ 8002668:      00560056        .word   0x00560056
+ 800266c:      00560056        .word   0x00560056
+ 8002670:      00560056        .word   0x00560056
+ 8002674:      00560056        .word   0x00560056
+ 8002678:      00560056        .word   0x00560056
+ 800267c:      00560056        .word   0x00560056
+ 8002680:      00560056        .word   0x00560056
+ 8002684:      00560056        .word   0x00560056
+ 8002688:      00560056        .word   0x00560056
+ 800268c:      00560056        .word   0x00560056
+ 8002690:      00560056        .word   0x00560056
+ 8002694:      00eb            .short  0x00eb
+ 8002696:      68e3            ldr     r3, [r4, #12]
+ 8002698:      781b            ldrb    r3, [r3, #0]
+ 800269a:      2b00            cmp     r3, #0
+ 800269c:      d0b0            beq.n   8002600 <d_encoding+0x3c>
+ 800269e:      2b45            cmp     r3, #69 ; 0x45
+ 80026a0:      d0ae            beq.n   8002600 <d_encoding+0x3c>
+ 80026a2:      4629            mov     r1, r5
+ 80026a4:      780b            ldrb    r3, [r1, #0]
+ 80026a6:      2b20            cmp     r3, #32
+ 80026a8:      f200 8218       bhi.w   8002adc <d_encoding+0x518>
+ 80026ac:      2b1c            cmp     r3, #28
+ 80026ae:      f080 821e       bcs.w   8002aee <d_encoding+0x52a>
+ 80026b2:      2b04            cmp     r3, #4
+ 80026b4:      f040 8091       bne.w   80027da <d_encoding+0x216>
+ 80026b8:      688a            ldr     r2, [r1, #8]
+ 80026ba:      b16a            cbz     r2, 80026d8 <d_encoding+0x114>
+ 80026bc:      7813            ldrb    r3, [r2, #0]
+ 80026be:      2b08            cmp     r3, #8
+ 80026c0:      f103 31ff       add.w   r1, r3, #4294967295     ; 0xffffffff
+ 80026c4:      f200 8086       bhi.w   80027d4 <d_encoding+0x210>
+ 80026c8:      2b07            cmp     r3, #7
+ 80026ca:      f080 8086       bcs.w   80027da <d_encoding+0x216>
+ 80026ce:      2901            cmp     r1, #1
+ 80026d0:      d802            bhi.n   80026d8 <d_encoding+0x114>
+ 80026d2:      68d2            ldr     r2, [r2, #12]
+ 80026d4:      2a00            cmp     r2, #0
+ 80026d6:      d1f1            bne.n   80026bc <d_encoding+0xf8>
+ 80026d8:      2101            movs    r1, #1
+ 80026da:      e07f            b.n     80027dc <d_encoding+0x218>
+ 80026dc:      60e7            str     r7, [r4, #12]
+ 80026de:      2500            movs    r5, #0
+ 80026e0:      4628            mov     r0, r5
+ 80026e2:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 80026e6:      1c5a            adds    r2, r3, #1
+ 80026e8:      60e2            str     r2, [r4, #12]
+ 80026ea:      785a            ldrb    r2, [r3, #1]
+ 80026ec:      2a00            cmp     r2, #0
+ 80026ee:      d0f6            beq.n   80026de <d_encoding+0x11a>
+ 80026f0:      1c9a            adds    r2, r3, #2
+ 80026f2:      60e2            str     r2, [r4, #12]
+ 80026f4:      785b            ldrb    r3, [r3, #1]
+ 80026f6:      3b43            subs    r3, #67 ; 0x43
+ 80026f8:      2b33            cmp     r3, #51 ; 0x33
+ 80026fa:      d8f0            bhi.n   80026de <d_encoding+0x11a>
+ 80026fc:      a201            add     r2, pc, #4      ; (adr r2, 8002704 <d_encoding+0x140>)
+ 80026fe:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 8002702:      bf00            nop
+ 8002704:      08002a59        .word   0x08002a59
+ 8002708:      080026df        .word   0x080026df
+ 800270c:      080026df        .word   0x080026df
+ 8002710:      08002a43        .word   0x08002a43
+ 8002714:      080026df        .word   0x080026df
+ 8002718:      08002a2d        .word   0x08002a2d
+ 800271c:      08002a17        .word   0x08002a17
+ 8002720:      08002a01        .word   0x08002a01
+ 8002724:      080026df        .word   0x080026df
+ 8002728:      080026df        .word   0x080026df
+ 800272c:      080026df        .word   0x080026df
+ 8002730:      080026df        .word   0x080026df
+ 8002734:      080026df        .word   0x080026df
+ 8002738:      080026df        .word   0x080026df
+ 800273c:      080026df        .word   0x080026df
+ 8002740:      080026df        .word   0x080026df
+ 8002744:      080029eb        .word   0x080029eb
+ 8002748:      080029d1        .word   0x080029d1
+ 800274c:      080026df        .word   0x080026df
+ 8002750:      080029b7        .word   0x080029b7
+ 8002754:      080029a1        .word   0x080029a1
+ 8002758:      080026df        .word   0x080026df
+ 800275c:      080026df        .word   0x080026df
+ 8002760:      080026df        .word   0x080026df
+ 8002764:      080026df        .word   0x080026df
+ 8002768:      080026df        .word   0x080026df
+ 800276c:      080026df        .word   0x080026df
+ 8002770:      080026df        .word   0x080026df
+ 8002774:      080026df        .word   0x080026df
+ 8002778:      080026df        .word   0x080026df
+ 800277c:      080026df        .word   0x080026df
+ 8002780:      080026df        .word   0x080026df
+ 8002784:      0800296d        .word   0x0800296d
+ 8002788:      080026df        .word   0x080026df
+ 800278c:      080026df        .word   0x080026df
+ 8002790:      080026df        .word   0x080026df
+ 8002794:      080026df        .word   0x080026df
+ 8002798:      08002947        .word   0x08002947
+ 800279c:      080026df        .word   0x080026df
+ 80027a0:      080026df        .word   0x080026df
+ 80027a4:      080026df        .word   0x080026df
+ 80027a8:      080026df        .word   0x080026df
+ 80027ac:      080026df        .word   0x080026df
+ 80027b0:      080026df        .word   0x080026df
+ 80027b4:      080026df        .word   0x080026df
+ 80027b8:      080026df        .word   0x080026df
+ 80027bc:      080026df        .word   0x080026df
+ 80027c0:      080026df        .word   0x080026df
+ 80027c4:      080026df        .word   0x080026df
+ 80027c8:      080026df        .word   0x080026df
+ 80027cc:      080026df        .word   0x080026df
+ 80027d0:      08002921        .word   0x08002921
+ 80027d4:      2b34            cmp     r3, #52 ; 0x34
+ 80027d6:      f47f af7f       bne.w   80026d8 <d_encoding+0x114>
+ 80027da:      2100            movs    r1, #0
+ 80027dc:      4620            mov     r0, r4
+ 80027de:      f7ff fd15       bl      800220c <d_bare_function_type>
+ 80027e2:      462a            mov     r2, r5
+ 80027e4:      4603            mov     r3, r0
+ 80027e6:      2103            movs    r1, #3
+ 80027e8:      4620            mov     r0, r4
+ 80027ea:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80027ee:      f7fd bd27       b.w     8000240 <d_make_comp>
+ 80027f2:      4620            mov     r0, r4
+ 80027f4:      f7fe fdf8       bl      80013e8 <d_name>
+ 80027f8:      2300            movs    r3, #0
+ 80027fa:      4602            mov     r2, r0
+ 80027fc:      2113            movs    r1, #19
+ 80027fe:      4620            mov     r0, r4
+ 8002800:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002804:      f7fd bd1c       b.w     8000240 <d_make_comp>
+ 8002808:      f104 000c       add.w   r0, r4, #12
+ 800280c:      f7fd fe12       bl      8000434 <d_number.isra.1>
+ 8002810:      2801            cmp     r0, #1
+ 8002812:      f77f af64       ble.w   80026de <d_encoding+0x11a>
+ 8002816:      68e3            ldr     r3, [r4, #12]
+ 8002818:      781a            ldrb    r2, [r3, #0]
+ 800281a:      2a00            cmp     r2, #0
+ 800281c:      f43f af5f       beq.w   80026de <d_encoding+0x11a>
+ 8002820:      1c5f            adds    r7, r3, #1
+ 8002822:      60e7            str     r7, [r4, #12]
+ 8002824:      781b            ldrb    r3, [r3, #0]
+ 8002826:      2b5f            cmp     r3, #95 ; 0x5f
+ 8002828:      f47f af59       bne.w   80026de <d_encoding+0x11a>
+ 800282c:      2200            movs    r2, #0
+ 800282e:      1e45            subs    r5, r0, #1
+ 8002830:      4690            mov     r8, r2
+ 8002832:      f04f 0940       mov.w   r9, #64 ; 0x40
+ 8002836:      783b            ldrb    r3, [r7, #0]
+ 8002838:      2b00            cmp     r3, #0
+ 800283a:      f43f af50       beq.w   80026de <d_encoding+0x11a>
+ 800283e:      2b24            cmp     r3, #36 ; 0x24
+ 8002840:      f040 812a       bne.w   8002a98 <d_encoding+0x4d4>
+ 8002844:      787b            ldrb    r3, [r7, #1]
+ 8002846:      2b53            cmp     r3, #83 ; 0x53
+ 8002848:      f000 8156       beq.w   8002af8 <d_encoding+0x534>
+ 800284c:      2b5f            cmp     r3, #95 ; 0x5f
+ 800284e:      f000 8155       beq.w   8002afc <d_encoding+0x538>
+ 8002852:      2b24            cmp     r3, #36 ; 0x24
+ 8002854:      f47f af43       bne.w   80026de <d_encoding+0x11a>
+ 8002858:      4619            mov     r1, r3
+ 800285a:      e9d4 0305       ldrd    r0, r3, [r4, #20]
+ 800285e:      68e7            ldr     r7, [r4, #12]
+ 8002860:      4298            cmp     r0, r3
+ 8002862:      f107 0702       add.w   r7, r7, #2
+ 8002866:      f6bf af39       bge.w   80026dc <d_encoding+0x118>
+ 800286a:      f8d4 c010       ldr.w   ip, [r4, #16]
+ 800286e:      0106            lsls    r6, r0, #4
+ 8002870:      eb0c 0306       add.w   r3, ip, r6
+ 8002874:      3001            adds    r0, #1
+ 8002876:      f8c3 8004       str.w   r8, [r3, #4]
+ 800287a:      3d02            subs    r5, #2
+ 800287c:      6160            str     r0, [r4, #20]
+ 800287e:      f80c 9006       strb.w  r9, [ip, r6]
+ 8002882:      6099            str     r1, [r3, #8]
+ 8002884:      60e7            str     r7, [r4, #12]
+ 8002886:      2a00            cmp     r2, #0
+ 8002888:      f000 8126       beq.w   8002ad8 <d_encoding+0x514>
+ 800288c:      213f            movs    r1, #63 ; 0x3f
+ 800288e:      4620            mov     r0, r4
+ 8002890:      f7fd fcd6       bl      8000240 <d_make_comp>
+ 8002894:      4602            mov     r2, r0
+ 8002896:      2800            cmp     r0, #0
+ 8002898:      f43f af21       beq.w   80026de <d_encoding+0x11a>
+ 800289c:      2d00            cmp     r5, #0
+ 800289e:      dcca            bgt.n   8002836 <d_encoding+0x272>
+ 80028a0:      4620            mov     r0, r4
+ 80028a2:      2300            movs    r3, #0
+ 80028a4:      213e            movs    r1, #62 ; 0x3e
+ 80028a6:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80028aa:      f7fd bcc9       b.w     8000240 <d_make_comp>
+ 80028ae:      2100            movs    r1, #0
+ 80028b0:      4620            mov     r0, r4
+ 80028b2:      f7ff fe87       bl      80025c4 <d_encoding>
+ 80028b6:      2300            movs    r3, #0
+ 80028b8:      4602            mov     r2, r0
+ 80028ba:      2117            movs    r1, #23
+ 80028bc:      4620            mov     r0, r4
+ 80028be:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80028c2:      f7fd bcbd       b.w     8000240 <d_make_comp>
+ 80028c6:      4620            mov     r0, r4
+ 80028c8:      f7fe fd8e       bl      80013e8 <d_name>
+ 80028cc:      4605            mov     r5, r0
+ 80028ce:      4620            mov     r0, r4
+ 80028d0:      f7fd fddc       bl      800048c <d_number_component>
+ 80028d4:      462a            mov     r2, r5
+ 80028d6:      4603            mov     r3, r0
+ 80028d8:      2116            movs    r1, #22
+ 80028da:      4620            mov     r0, r4
+ 80028dc:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80028e0:      f7fd bcae       b.w     8000240 <d_make_comp>
+ 80028e4:      789a            ldrb    r2, [r3, #2]
+ 80028e6:      2100            movs    r1, #0
+ 80028e8:      4620            mov     r0, r4
+ 80028ea:      b12a            cbz     r2, 80028f8 <d_encoding+0x334>
+ 80028ec:      1cda            adds    r2, r3, #3
+ 80028ee:      60e2            str     r2, [r4, #12]
+ 80028f0:      789b            ldrb    r3, [r3, #2]
+ 80028f2:      2b6e            cmp     r3, #110        ; 0x6e
+ 80028f4:      f000 8109       beq.w   8002b0a <d_encoding+0x546>
+ 80028f8:      f7ff fe64       bl      80025c4 <d_encoding>
+ 80028fc:      2300            movs    r3, #0
+ 80028fe:      4602            mov     r2, r0
+ 8002900:      2148            movs    r1, #72 ; 0x48
+ 8002902:      4620            mov     r0, r4
+ 8002904:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002908:      f7fd bc9a       b.w     8000240 <d_make_comp>
+ 800290c:      68ea            ldr     r2, [r5, #12]
+ 800290e:      e000            b.n     8002912 <d_encoding+0x34e>
+ 8002910:      6892            ldr     r2, [r2, #8]
+ 8002912:      7810            ldrb    r0, [r2, #0]
+ 8002914:      f7fd fd80       bl      8000418 <is_fnqual_component_type>
+ 8002918:      2800            cmp     r0, #0
+ 800291a:      d1f9            bne.n   8002910 <d_encoding+0x34c>
+ 800291c:      60ea            str     r2, [r5, #12]
+ 800291e:      e66f            b.n     8002600 <d_encoding+0x3c>
+ 8002920:      2176            movs    r1, #118        ; 0x76
+ 8002922:      4620            mov     r0, r4
+ 8002924:      f7fe f80a       bl      800093c <d_call_offset>
+ 8002928:      2800            cmp     r0, #0
+ 800292a:      f43f aed8       beq.w   80026de <d_encoding+0x11a>
+ 800292e:      2100            movs    r1, #0
+ 8002930:      4620            mov     r0, r4
+ 8002932:      f7ff fe47       bl      80025c4 <d_encoding>
+ 8002936:      2300            movs    r3, #0
+ 8002938:      4602            mov     r2, r0
+ 800293a:      2110            movs    r1, #16
+ 800293c:      4620            mov     r0, r4
+ 800293e:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002942:      f7fd bc7d       b.w     8000240 <d_make_comp>
+ 8002946:      2168            movs    r1, #104        ; 0x68
+ 8002948:      4620            mov     r0, r4
+ 800294a:      f7fd fff7       bl      800093c <d_call_offset>
+ 800294e:      2800            cmp     r0, #0
+ 8002950:      f43f aec5       beq.w   80026de <d_encoding+0x11a>
+ 8002954:      2100            movs    r1, #0
+ 8002956:      4620            mov     r0, r4
+ 8002958:      f7ff fe34       bl      80025c4 <d_encoding>
+ 800295c:      2300            movs    r3, #0
+ 800295e:      4602            mov     r2, r0
+ 8002960:      210f            movs    r1, #15
+ 8002962:      4620            mov     r0, r4
+ 8002964:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002968:      f7fd bc6a       b.w     8000240 <d_make_comp>
+ 800296c:      2100            movs    r1, #0
+ 800296e:      4620            mov     r0, r4
+ 8002970:      f7fd ffe4       bl      800093c <d_call_offset>
+ 8002974:      2800            cmp     r0, #0
+ 8002976:      f43f aeb2       beq.w   80026de <d_encoding+0x11a>
+ 800297a:      2100            movs    r1, #0
+ 800297c:      4620            mov     r0, r4
+ 800297e:      f7fd ffdd       bl      800093c <d_call_offset>
+ 8002982:      2800            cmp     r0, #0
+ 8002984:      f43f aeab       beq.w   80026de <d_encoding+0x11a>
+ 8002988:      2100            movs    r1, #0
+ 800298a:      4620            mov     r0, r4
+ 800298c:      f7ff fe1a       bl      80025c4 <d_encoding>
+ 8002990:      2300            movs    r3, #0
+ 8002992:      4602            mov     r2, r0
+ 8002994:      2111            movs    r1, #17
+ 8002996:      4620            mov     r0, r4
+ 8002998:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 800299c:      f7fd bc50       b.w     8000240 <d_make_comp>
+ 80029a0:      4620            mov     r0, r4
+ 80029a2:      f7fe fd21       bl      80013e8 <d_name>
+ 80029a6:      2300            movs    r3, #0
+ 80029a8:      4602            mov     r2, r0
+ 80029aa:      2115            movs    r1, #21
+ 80029ac:      4620            mov     r0, r4
+ 80029ae:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80029b2:      f7fd bc45       b.w     8000240 <d_make_comp>
+ 80029b6:      310f            adds    r1, #15
+ 80029b8:      6321            str     r1, [r4, #48]   ; 0x30
+ 80029ba:      4620            mov     r0, r4
+ 80029bc:      f7fe fec0       bl      8001740 <d_type>
+ 80029c0:      2300            movs    r3, #0
+ 80029c2:      4602            mov     r2, r0
+ 80029c4:      2109            movs    r1, #9
+ 80029c6:      4620            mov     r0, r4
+ 80029c8:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80029cc:      f7fd bc38       b.w     8000240 <d_make_comp>
+ 80029d0:      310a            adds    r1, #10
+ 80029d2:      6321            str     r1, [r4, #48]   ; 0x30
+ 80029d4:      4620            mov     r0, r4
+ 80029d6:      f7fe feb3       bl      8001740 <d_type>
+ 80029da:      2300            movs    r3, #0
+ 80029dc:      4602            mov     r2, r0
+ 80029de:      210a            movs    r1, #10
+ 80029e0:      4620            mov     r0, r4
+ 80029e2:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80029e6:      f7fd bc2b       b.w     8000240 <d_make_comp>
+ 80029ea:      4620            mov     r0, r4
+ 80029ec:      f7fe fea8       bl      8001740 <d_type>
+ 80029f0:      2300            movs    r3, #0
+ 80029f2:      4602            mov     r2, r0
+ 80029f4:      210d            movs    r1, #13
+ 80029f6:      4620            mov     r0, r4
+ 80029f8:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80029fc:      f7fd bc20       b.w     8000240 <d_make_comp>
+ 8002a00:      4620            mov     r0, r4
+ 8002a02:      f7fe fe9d       bl      8001740 <d_type>
+ 8002a06:      2300            movs    r3, #0
+ 8002a08:      4602            mov     r2, r0
+ 8002a0a:      2112            movs    r1, #18
+ 8002a0c:      4620            mov     r0, r4
+ 8002a0e:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002a12:      f7fd bc15       b.w     8000240 <d_make_comp>
+ 8002a16:      4620            mov     r0, r4
+ 8002a18:      f7fe fe92       bl      8001740 <d_type>
+ 8002a1c:      2300            movs    r3, #0
+ 8002a1e:      4602            mov     r2, r0
+ 8002a20:      210c            movs    r1, #12
+ 8002a22:      4620            mov     r0, r4
+ 8002a24:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002a28:      f7fd bc0a       b.w     8000240 <d_make_comp>
+ 8002a2c:      4620            mov     r0, r4
+ 8002a2e:      f7fe fcdb       bl      80013e8 <d_name>
+ 8002a32:      2300            movs    r3, #0
+ 8002a34:      4602            mov     r2, r0
+ 8002a36:      2114            movs    r1, #20
+ 8002a38:      4620            mov     r0, r4
+ 8002a3a:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002a3e:      f7fd bbff       b.w     8000240 <d_make_comp>
+ 8002a42:      4620            mov     r0, r4
+ 8002a44:      f7fe fe7c       bl      8001740 <d_type>
+ 8002a48:      2300            movs    r3, #0
+ 8002a4a:      4602            mov     r2, r0
+ 8002a4c:      210e            movs    r1, #14
+ 8002a4e:      4620            mov     r0, r4
+ 8002a50:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002a54:      f7fd bbf4       b.w     8000240 <d_make_comp>
+ 8002a58:      4620            mov     r0, r4
+ 8002a5a:      f7fe fe71       bl      8001740 <d_type>
+ 8002a5e:      4605            mov     r5, r0
+ 8002a60:      f104 000c       add.w   r0, r4, #12
+ 8002a64:      f7fd fce6       bl      8000434 <d_number.isra.1>
+ 8002a68:      2800            cmp     r0, #0
+ 8002a6a:      f6ff ae38       blt.w   80026de <d_encoding+0x11a>
+ 8002a6e:      68e3            ldr     r3, [r4, #12]
+ 8002a70:      781a            ldrb    r2, [r3, #0]
+ 8002a72:      2a5f            cmp     r2, #95 ; 0x5f
+ 8002a74:      f47f ae33       bne.w   80026de <d_encoding+0x11a>
+ 8002a78:      3301            adds    r3, #1
+ 8002a7a:      60e3            str     r3, [r4, #12]
+ 8002a7c:      4620            mov     r0, r4
+ 8002a7e:      f7fe fe5f       bl      8001740 <d_type>
+ 8002a82:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8002a84:      1d59            adds    r1, r3, #5
+ 8002a86:      6321            str     r1, [r4, #48]   ; 0x30
+ 8002a88:      4602            mov     r2, r0
+ 8002a8a:      462b            mov     r3, r5
+ 8002a8c:      4620            mov     r0, r4
+ 8002a8e:      210b            movs    r1, #11
+ 8002a90:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002a94:      f7fd bbd4       b.w     8000240 <d_make_comp>
+ 8002a98:      463e            mov     r6, r7
+ 8002a9a:      2100            movs    r1, #0
+ 8002a9c:      e004            b.n     8002aa8 <d_encoding+0x4e4>
+ 8002a9e:      f816 3f01       ldrb.w  r3, [r6, #1]!
+ 8002aa2:      b123            cbz     r3, 8002aae <d_encoding+0x4ea>
+ 8002aa4:      2b24            cmp     r3, #36 ; 0x24
+ 8002aa6:      d002            beq.n   8002aae <d_encoding+0x4ea>
+ 8002aa8:      3101            adds    r1, #1
+ 8002aaa:      42a9            cmp     r1, r5
+ 8002aac:      dbf7            blt.n   8002a9e <d_encoding+0x4da>
+ 8002aae:      e9d4 3005       ldrd    r3, r0, [r4, #20]
+ 8002ab2:      4283            cmp     r3, r0
+ 8002ab4:      da24            bge.n   8002b00 <d_encoding+0x53c>
+ 8002ab6:      e9d4 c603       ldrd    ip, r6, [r4, #12]
+ 8002aba:      0118            lsls    r0, r3, #4
+ 8002abc:      3301            adds    r3, #1
+ 8002abe:      6163            str     r3, [r4, #20]
+ 8002ac0:      1833            adds    r3, r6, r0
+ 8002ac2:      1a6d            subs    r5, r5, r1
+ 8002ac4:      f8c3 8004       str.w   r8, [r3, #4]
+ 8002ac8:      f806 8000       strb.w  r8, [r6, r0]
+ 8002acc:      609f            str     r7, [r3, #8]
+ 8002ace:      eb0c 0701       add.w   r7, ip, r1
+ 8002ad2:      60d9            str     r1, [r3, #12]
+ 8002ad4:      60e7            str     r7, [r4, #12]
+ 8002ad6:      e6d6            b.n     8002886 <d_encoding+0x2c2>
+ 8002ad8:      461a            mov     r2, r3
+ 8002ada:      e6df            b.n     800289c <d_encoding+0x2d8>
+ 8002adc:      2b4c            cmp     r3, #76 ; 0x4c
+ 8002ade:      f1a3 024e       sub.w   r2, r3, #78     ; 0x4e
+ 8002ae2:      d004            beq.n   8002aee <d_encoding+0x52a>
+ 8002ae4:      f4ff ae79       bcc.w   80027da <d_encoding+0x216>
+ 8002ae8:      2a01            cmp     r2, #1
+ 8002aea:      f63f ae76       bhi.w   80027da <d_encoding+0x216>
+ 8002aee:      6889            ldr     r1, [r1, #8]
+ 8002af0:      2900            cmp     r1, #0
+ 8002af2:      f47f add7       bne.w   80026a4 <d_encoding+0xe0>
+ 8002af6:      e671            b.n     80027dc <d_encoding+0x218>
+ 8002af8:      212f            movs    r1, #47 ; 0x2f
+ 8002afa:      e6ae            b.n     800285a <d_encoding+0x296>
+ 8002afc:      212e            movs    r1, #46 ; 0x2e
+ 8002afe:      e6ac            b.n     800285a <d_encoding+0x296>
+ 8002b00:      68e3            ldr     r3, [r4, #12]
+ 8002b02:      440b            add     r3, r1
+ 8002b04:      60e3            str     r3, [r4, #12]
+ 8002b06:      2500            movs    r5, #0
+ 8002b08:      e57a            b.n     8002600 <d_encoding+0x3c>
+ 8002b0a:      f7ff fd5b       bl      80025c4 <d_encoding>
+ 8002b0e:      2300            movs    r3, #0
+ 8002b10:      4602            mov     r2, r0
+ 8002b12:      2149            movs    r1, #73 ; 0x49
+ 8002b14:      4620            mov     r0, r4
+ 8002b16:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8002b1a:      f7fd bb91       b.w     8000240 <d_make_comp>
+ 8002b1e:      bf00            nop
+
+08002b20 <d_expr_primary>:
+ 8002b20:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 8002b22:      68c2            ldr     r2, [r0, #12]
+ 8002b24:      7813            ldrb    r3, [r2, #0]
+ 8002b26:      2b4c            cmp     r3, #76 ; 0x4c
+ 8002b28:      d144            bne.n   8002bb4 <d_expr_primary+0x94>
+ 8002b2a:      1c53            adds    r3, r2, #1
+ 8002b2c:      60c3            str     r3, [r0, #12]
+ 8002b2e:      7851            ldrb    r1, [r2, #1]
+ 8002b30:      295f            cmp     r1, #95 ; 0x5f
+ 8002b32:      4604            mov     r4, r0
+ 8002b34:      d040            beq.n   8002bb8 <d_expr_primary+0x98>
+ 8002b36:      295a            cmp     r1, #90 ; 0x5a
+ 8002b38:      d10c            bne.n   8002b54 <d_expr_primary+0x34>
+ 8002b3a:      3301            adds    r3, #1
+ 8002b3c:      60e3            str     r3, [r4, #12]
+ 8002b3e:      2100            movs    r1, #0
+ 8002b40:      4620            mov     r0, r4
+ 8002b42:      f7ff fd3f       bl      80025c4 <d_encoding>
+ 8002b46:      68e3            ldr     r3, [r4, #12]
+ 8002b48:      781a            ldrb    r2, [r3, #0]
+ 8002b4a:      2a45            cmp     r2, #69 ; 0x45
+ 8002b4c:      d132            bne.n   8002bb4 <d_expr_primary+0x94>
+ 8002b4e:      3301            adds    r3, #1
+ 8002b50:      60e3            str     r3, [r4, #12]
+ 8002b52:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 8002b54:      f7fe fdf4       bl      8001740 <d_type>
+ 8002b58:      b360            cbz     r0, 8002bb4 <d_expr_primary+0x94>
+ 8002b5a:      7803            ldrb    r3, [r0, #0]
+ 8002b5c:      2b27            cmp     r3, #39 ; 0x27
+ 8002b5e:      d032            beq.n   8002bc6 <d_expr_primary+0xa6>
+ 8002b60:      68e6            ldr     r6, [r4, #12]
+ 8002b62:      7833            ldrb    r3, [r6, #0]
+ 8002b64:      2b6e            cmp     r3, #110        ; 0x6e
+ 8002b66:      d037            beq.n   8002bd8 <d_expr_primary+0xb8>
+ 8002b68:      213c            movs    r1, #60 ; 0x3c
+ 8002b6a:      2b45            cmp     r3, #69 ; 0x45
+ 8002b6c:      d040            beq.n   8002bf0 <d_expr_primary+0xd0>
+ 8002b6e:      b30b            cbz     r3, 8002bb4 <d_expr_primary+0x94>
+ 8002b70:      4633            mov     r3, r6
+ 8002b72:      e000            b.n     8002b76 <d_expr_primary+0x56>
+ 8002b74:      b1f5            cbz     r5, 8002bb4 <d_expr_primary+0x94>
+ 8002b76:      3301            adds    r3, #1
+ 8002b78:      60e3            str     r3, [r4, #12]
+ 8002b7a:      781d            ldrb    r5, [r3, #0]
+ 8002b7c:      2d45            cmp     r5, #69 ; 0x45
+ 8002b7e:      d1f9            bne.n   8002b74 <d_expr_primary+0x54>
+ 8002b80:      1b9d            subs    r5, r3, r6
+ 8002b82:      e9d4 2305       ldrd    r2, r3, [r4, #20]
+ 8002b86:      429a            cmp     r2, r3
+ 8002b88:      da0b            bge.n   8002ba2 <d_expr_primary+0x82>
+ 8002b8a:      f8d4 e010       ldr.w   lr, [r4, #16]
+ 8002b8e:      ea4f 1c02       mov.w   ip, r2, lsl #4
+ 8002b92:      eb0e 030c       add.w   r3, lr, ip
+ 8002b96:      3201            adds    r2, #1
+ 8002b98:      2700            movs    r7, #0
+ 8002b9a:      605f            str     r7, [r3, #4]
+ 8002b9c:      6162            str     r2, [r4, #20]
+ 8002b9e:      b106            cbz     r6, 8002ba2 <d_expr_primary+0x82>
+ 8002ba0:      bb05            cbnz    r5, 8002be4 <d_expr_primary+0xc4>
+ 8002ba2:      2300            movs    r3, #0
+ 8002ba4:      4602            mov     r2, r0
+ 8002ba6:      4620            mov     r0, r4
+ 8002ba8:      f7fd fb4a       bl      8000240 <d_make_comp>
+ 8002bac:      68e3            ldr     r3, [r4, #12]
+ 8002bae:      781a            ldrb    r2, [r3, #0]
+ 8002bb0:      2a45            cmp     r2, #69 ; 0x45
+ 8002bb2:      d0cc            beq.n   8002b4e <d_expr_primary+0x2e>
+ 8002bb4:      2000            movs    r0, #0
+ 8002bb6:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 8002bb8:      1c93            adds    r3, r2, #2
+ 8002bba:      60c3            str     r3, [r0, #12]
+ 8002bbc:      7892            ldrb    r2, [r2, #2]
+ 8002bbe:      2a5a            cmp     r2, #90 ; 0x5a
+ 8002bc0:      d0bb            beq.n   8002b3a <d_expr_primary+0x1a>
+ 8002bc2:      2000            movs    r0, #0
+ 8002bc4:      e7c1            b.n     8002b4a <d_expr_primary+0x2a>
+ 8002bc6:      6883            ldr     r3, [r0, #8]
+ 8002bc8:      7c1a            ldrb    r2, [r3, #16]
+ 8002bca:      2a00            cmp     r2, #0
+ 8002bcc:      d0c8            beq.n   8002b60 <d_expr_primary+0x40>
+ 8002bce:      685a            ldr     r2, [r3, #4]
+ 8002bd0:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8002bd2:      1a9b            subs    r3, r3, r2
+ 8002bd4:      6323            str     r3, [r4, #48]   ; 0x30
+ 8002bd6:      e7c3            b.n     8002b60 <d_expr_primary+0x40>
+ 8002bd8:      1c72            adds    r2, r6, #1
+ 8002bda:      60e2            str     r2, [r4, #12]
+ 8002bdc:      7873            ldrb    r3, [r6, #1]
+ 8002bde:      213d            movs    r1, #61 ; 0x3d
+ 8002be0:      4616            mov     r6, r2
+ 8002be2:      e7c2            b.n     8002b6a <d_expr_primary+0x4a>
+ 8002be4:      605f            str     r7, [r3, #4]
+ 8002be6:      f80e 700c       strb.w  r7, [lr, ip]
+ 8002bea:      e9c3 6502       strd    r6, r5, [r3, #8]
+ 8002bee:      e7d9            b.n     8002ba4 <d_expr_primary+0x84>
+ 8002bf0:      2500            movs    r5, #0
+ 8002bf2:      e7c6            b.n     8002b82 <d_expr_primary+0x62>
+
+08002bf4 <d_print_comp>:
+ 8002bf4:      b112            cbz     r2, 8002bfc <d_print_comp+0x8>
+ 8002bf6:      6853            ldr     r3, [r2, #4]
+ 8002bf8:      2b01            cmp     r3, #1
+ 8002bfa:      dd03            ble.n   8002c04 <d_print_comp+0x10>
+ 8002bfc:      2301            movs    r3, #1
+ 8002bfe:      f8c0 3118       str.w   r3, [r0, #280]  ; 0x118
+ 8002c02:      4770            bx      lr
+ 8002c04:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 8002c08:      4615            mov     r5, r2
+ 8002c0a:      1c5a            adds    r2, r3, #1
+ 8002c0c:      606a            str     r2, [r5, #4]
+ 8002c0e:      b099            sub     sp, #100        ; 0x64
+ 8002c10:      f8d0 7118       ldr.w   r7, [r0, #280]  ; 0x118
+ 8002c14:      9504            str     r5, [sp, #16]
+ 8002c16:      460e            mov     r6, r1
+ 8002c18:      ab04            add     r3, sp, #16
+ 8002c1a:      f8d0 1128       ldr.w   r1, [r0, #296]  ; 0x128
+ 8002c1e:      9105            str     r1, [sp, #20]
+ 8002c20:      4604            mov     r4, r0
+ 8002c22:      f8c0 3128       str.w   r3, [r0, #296]  ; 0x128
+ 8002c26:      2f00            cmp     r7, #0
+ 8002c28:      f040 80d7       bne.w   8002dda <d_print_comp+0x1e6>
+ 8002c2c:      7828            ldrb    r0, [r5, #0]
+ 8002c2e:      284f            cmp     r0, #79 ; 0x4f
+ 8002c30:      f201 82ef       bhi.w   8004212 <d_print_comp+0x161e>
+ 8002c34:      e8df f010       tbh     [pc, r0, lsl #1]
+ 8002c38:      0ab80a87        .word   0x0ab80a87
+ 8002c3c:      0a4f0ab8        .word   0x0a4f0ab8
+ 8002c40:      079407c6        .word   0x079407c6
+ 8002c44:      075e0767        .word   0x075e0767
+ 8002c48:      070f0737        .word   0x070f0737
+ 8002c4c:      06bf06e7        .word   0x06bf06e7
+ 8002c50:      066f0697        .word   0x066f0697
+ 8002c54:      061f0647        .word   0x061f0647
+ 8002c58:      091f0947        .word   0x091f0947
+ 8002c5c:      08cf08f7        .word   0x08cf08f7
+ 8002c60:      087f08a7        .word   0x087f08a7
+ 8002c64:      082f0857        .word   0x082f0857
+ 8002c68:      09bf09d6        .word   0x09bf09d6
+ 8002c6c:      09bf09bf        .word   0x09bf09bf
+ 8002c70:      09990999        .word   0x09990999
+ 8002c74:      09990999        .word   0x09990999
+ 8002c78:      09990999        .word   0x09990999
+ 8002c7c:      096f0999        .word   0x096f0999
+ 8002c80:      0999096f        .word   0x0999096f
+ 8002c84:      0a1d0999        .word   0x0a1d0999
+ 8002c88:      06060a14        .word   0x06060a14
+ 8002c8c:      05720592        .word   0x05720592
+ 8002c90:      0572051b        .word   0x0572051b
+ 8002c94:      04d304d3        .word   0x04d304d3
+ 8002c98:      045c0488        .word   0x045c0488
+ 8002c9c:      0aed0434        .word   0x0aed0434
+ 8002ca0:      0404040c        .word   0x0404040c
+ 8002ca4:      039c03b0        .word   0x039c03b0
+ 8002ca8:      038d0397        .word   0x038d0397
+ 8002cac:      03880388        .word   0x03880388
+ 8002cb0:      03330333        .word   0x03330333
+ 8002cb4:      02fe030b        .word   0x02fe030b
+ 8002cb8:      02aa02dc        .word   0x02aa02dc
+ 8002cbc:      025a0282        .word   0x025a0282
+ 8002cc0:      01f80232        .word   0x01f80232
+ 8002cc4:      01d00aed        .word   0x01d00aed
+ 8002cc8:      015301a8        .word   0x015301a8
+ 8002ccc:      017b0105        .word   0x017b0105
+ 8002cd0:      00d80999        .word   0x00d80999
+ 8002cd4:      09990999        .word   0x09990999
+ 8002cd8:      68aa            ldr     r2, [r5, #8]
+ 8002cda:      6893            ldr     r3, [r2, #8]
+ 8002cdc:      681b            ldr     r3, [r3, #0]
+ 8002cde:      7859            ldrb    r1, [r3, #1]
+ 8002ce0:      2963            cmp     r1, #99 ; 0x63
+ 8002ce2:      d109            bne.n   8002cf8 <d_print_comp+0x104>
+ 8002ce4:      781b            ldrb    r3, [r3, #0]
+ 8002ce6:      f1a3 0163       sub.w   r1, r3, #99     ; 0x63
+ 8002cea:      2901            cmp     r1, #1
+ 8002cec:      f242 8319       bls.w   8005322 <d_print_comp+0x272e>
+ 8002cf0:      3b72            subs    r3, #114        ; 0x72
+ 8002cf2:      2b01            cmp     r3, #1
+ 8002cf4:      f242 8315       bls.w   8005322 <d_print_comp+0x272e>
+ 8002cf8:      f105 030c       add.w   r3, r5, #12
+ 8002cfc:      4631            mov     r1, r6
+ 8002cfe:      4620            mov     r0, r4
+ 8002d00:      f003 fcd2       bl      80066a8 <d_maybe_print_fold_expression.isra.20>
+ 8002d04:      4680            mov     r8, r0
+ 8002d06:      2800            cmp     r0, #0
+ 8002d08:      f042 8400       bne.w   800550c <d_print_comp+0x2918>
+ 8002d0c:      68ab            ldr     r3, [r5, #8]
+ 8002d0e:      781a            ldrb    r2, [r3, #0]
+ 8002d10:      2a31            cmp     r2, #49 ; 0x31
+ 8002d12:      f002 8592       beq.w   800583a <d_print_comp+0x2c46>
+ 8002d16:      689b            ldr     r3, [r3, #8]
+ 8002d18:      49d7            ldr     r1, [pc, #860]  ; (8003078 <d_print_comp+0x484>)
+ 8002d1a:      6818            ldr     r0, [r3, #0]
+ 8002d1c:      f004 f850       bl      8006dc0 <strcmp>
+ 8002d20:      68eb            ldr     r3, [r5, #12]
+ 8002d22:      689a            ldr     r2, [r3, #8]
+ 8002d24:      b918            cbnz    r0, 8002d2e <d_print_comp+0x13a>
+ 8002d26:      7813            ldrb    r3, [r2, #0]
+ 8002d28:      2b03            cmp     r3, #3
+ 8002d2a:      f002 85d4       beq.w   80058d6 <d_print_comp+0x2ce2>
+ 8002d2e:      4631            mov     r1, r6
+ 8002d30:      4620            mov     r0, r4
+ 8002d32:      f003 fc67       bl      8006604 <d_print_subexpr>
+ 8002d36:      68af            ldr     r7, [r5, #8]
+ 8002d38:      49d0            ldr     r1, [pc, #832]  ; (800307c <d_print_comp+0x488>)
+ 8002d3a:      68bb            ldr     r3, [r7, #8]
+ 8002d3c:      f8d3 8000       ldr.w   r8, [r3]
+ 8002d40:      4640            mov     r0, r8
+ 8002d42:      f004 f83d       bl      8006dc0 <strcmp>
+ 8002d46:      4681            mov     r9, r0
+ 8002d48:      2800            cmp     r0, #0
+ 8002d4a:      f042 83d0       bne.w   80054ee <d_print_comp+0x28fa>
+ 8002d4e:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8002d52:      2fff            cmp     r7, #255        ; 0xff
+ 8002d54:      d110            bne.n   8002d78 <d_print_comp+0x184>
+ 8002d56:      f884 00ff       strb.w  r0, [r4, #255]  ; 0xff
+ 8002d5a:      4639            mov     r1, r7
+ 8002d5c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002d60:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002d64:      4620            mov     r0, r4
+ 8002d66:      4798            blx     r3
+ 8002d68:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002d6c:      f8c4 9100       str.w   r9, [r4, #256]  ; 0x100
+ 8002d70:      3301            adds    r3, #1
+ 8002d72:      464f            mov     r7, r9
+ 8002d74:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8002d78:      1c7a            adds    r2, r7, #1
+ 8002d7a:      235b            movs    r3, #91 ; 0x5b
+ 8002d7c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8002d80:      55e3            strb    r3, [r4, r7]
+ 8002d82:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8002d86:      68eb            ldr     r3, [r5, #12]
+ 8002d88:      4631            mov     r1, r6
+ 8002d8a:      68da            ldr     r2, [r3, #12]
+ 8002d8c:      4620            mov     r0, r4
+ 8002d8e:      f7ff ff31       bl      8002bf4 <d_print_comp>
+ 8002d92:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8002d96:      2fff            cmp     r7, #255        ; 0xff
+ 8002d98:      d111            bne.n   8002dbe <d_print_comp+0x1ca>
+ 8002d9a:      2600            movs    r6, #0
+ 8002d9c:      4639            mov     r1, r7
+ 8002d9e:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002da2:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8002da6:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002daa:      4620            mov     r0, r4
+ 8002dac:      4798            blx     r3
+ 8002dae:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002db2:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8002db6:      3301            adds    r3, #1
+ 8002db8:      4637            mov     r7, r6
+ 8002dba:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8002dbe:      235d            movs    r3, #93 ; 0x5d
+ 8002dc0:      1c7a            adds    r2, r7, #1
+ 8002dc2:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8002dc6:      55e3            strb    r3, [r4, r7]
+ 8002dc8:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8002dcc:      68ab            ldr     r3, [r5, #8]
+ 8002dce:      781a            ldrb    r2, [r3, #0]
+ 8002dd0:      2a31            cmp     r2, #49 ; 0x31
+ 8002dd2:      f002 83ad       beq.w   8005530 <d_print_comp+0x293c>
+ 8002dd6:      9905            ldr     r1, [sp, #20]
+ 8002dd8:      686a            ldr     r2, [r5, #4]
+ 8002dda:      f8c4 1128       str.w   r1, [r4, #296]  ; 0x128
+ 8002dde:      3a01            subs    r2, #1
+ 8002de0:      606a            str     r2, [r5, #4]
+ 8002de2:      b019            add     sp, #100        ; 0x64
+ 8002de4:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8002de8:      4fa5            ldr     r7, [pc, #660]  ; (8003080 <d_print_comp+0x48c>)
+ 8002dea:      68aa            ldr     r2, [r5, #8]
+ 8002dec:      4631            mov     r1, r6
+ 8002dee:      4620            mov     r0, r4
+ 8002df0:      f7ff ff00       bl      8002bf4 <d_print_comp>
+ 8002df4:      f107 0808       add.w   r8, r7, #8
+ 8002df8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8002dfc:      f04f 0900       mov.w   r9, #0
+ 8002e00:      e016            b.n     8002e30 <d_print_comp+0x23c>
+ 8002e02:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002e06:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002e0a:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8002e0e:      4798            blx     r3
+ 8002e10:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002e14:      3301            adds    r3, #1
+ 8002e16:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8002e1a:      2200            movs    r2, #0
+ 8002e1c:      2301            movs    r3, #1
+ 8002e1e:      45b8            cmp     r8, r7
+ 8002e20:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8002e24:      f804 a002       strb.w  sl, [r4, r2]
+ 8002e28:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8002e2c:      f001 82f9       beq.w   8004422 <d_print_comp+0x182e>
+ 8002e30:      2bff            cmp     r3, #255        ; 0xff
+ 8002e32:      4619            mov     r1, r3
+ 8002e34:      4620            mov     r0, r4
+ 8002e36:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8002e3a:      d0e2            beq.n   8002e02 <d_print_comp+0x20e>
+ 8002e3c:      461a            mov     r2, r3
+ 8002e3e:      3301            adds    r3, #1
+ 8002e40:      e7ed            b.n     8002e1e <d_print_comp+0x22a>
+ 8002e42:      68a9            ldr     r1, [r5, #8]
+ 8002e44:      4620            mov     r0, r4
+ 8002e46:      f7fd fcef       bl      8000828 <d_find_pack>
+ 8002e4a:      2800            cmp     r0, #0
+ 8002e4c:      f002 81e1       beq.w   8005212 <d_print_comp+0x261e>
+ 8002e50:      2300            movs    r3, #0
+ 8002e52:      7802            ldrb    r2, [r0, #0]
+ 8002e54:      2a2f            cmp     r2, #47 ; 0x2f
+ 8002e56:      f041 85df       bne.w   8004a18 <d_print_comp+0x1e24>
+ 8002e5a:      6882            ldr     r2, [r0, #8]
+ 8002e5c:      2a00            cmp     r2, #0
+ 8002e5e:      f001 85db       beq.w   8004a18 <d_print_comp+0x1e24>
+ 8002e62:      68c0            ldr     r0, [r0, #12]
+ 8002e64:      3301            adds    r3, #1
+ 8002e66:      2800            cmp     r0, #0
+ 8002e68:      d1f3            bne.n   8002e52 <d_print_comp+0x25e>
+ 8002e6a:      4619            mov     r1, r3
+ 8002e6c:      68ab            ldr     r3, [r5, #8]
+ 8002e6e:      9301            str     r3, [sp, #4]
+ 8002e70:      1e4a            subs    r2, r1, #1
+ 8002e72:      9202            str     r2, [sp, #8]
+ 8002e74:      f04f 0a00       mov.w   sl, #0
+ 8002e78:      4689            mov     r9, r1
+ 8002e7a:      9503            str     r5, [sp, #12]
+ 8002e7c:      f8c4 7120       str.w   r7, [r4, #288]  ; 0x120
+ 8002e80:      9a01            ldr     r2, [sp, #4]
+ 8002e82:      4631            mov     r1, r6
+ 8002e84:      4620            mov     r0, r4
+ 8002e86:      f7ff feb5       bl      8002bf4 <d_print_comp>
+ 8002e8a:      9b02            ldr     r3, [sp, #8]
+ 8002e8c:      429f            cmp     r7, r3
+ 8002e8e:      f281 81c6       bge.w   800421e <d_print_comp+0x162a>
+ 8002e92:      4d7c            ldr     r5, [pc, #496]  ; (8003084 <d_print_comp+0x490>)
+ 8002e94:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8002e98:      f105 0802       add.w   r8, r5, #2
+ 8002e9c:      e016            b.n     8002ecc <d_print_comp+0x2d8>
+ 8002e9e:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002ea2:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002ea6:      f884 a0ff       strb.w  sl, [r4, #255]  ; 0xff
+ 8002eaa:      4798            blx     r3
+ 8002eac:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002eb0:      3301            adds    r3, #1
+ 8002eb2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8002eb6:      2200            movs    r2, #0
+ 8002eb8:      2301            movs    r3, #1
+ 8002eba:      45a8            cmp     r8, r5
+ 8002ebc:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8002ec0:      f804 b002       strb.w  fp, [r4, r2]
+ 8002ec4:      f884 b104       strb.w  fp, [r4, #260]  ; 0x104
+ 8002ec8:      f001 81a9       beq.w   800421e <d_print_comp+0x162a>
+ 8002ecc:      2bff            cmp     r3, #255        ; 0xff
+ 8002ece:      4619            mov     r1, r3
+ 8002ed0:      4620            mov     r0, r4
+ 8002ed2:      f815 bb01       ldrb.w  fp, [r5], #1
+ 8002ed6:      d0e2            beq.n   8002e9e <d_print_comp+0x2aa>
+ 8002ed8:      461a            mov     r2, r3
+ 8002eda:      3301            adds    r3, #1
+ 8002edc:      e7ed            b.n     8002eba <d_print_comp+0x2c6>
+ 8002ede:      4f6a            ldr     r7, [pc, #424]  ; (8003088 <d_print_comp+0x494>)
+ 8002ee0:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8002ee4:      f107 081a       add.w   r8, r7, #26
+ 8002ee8:      f04f 0900       mov.w   r9, #0
+ 8002eec:      e016            b.n     8002f1c <d_print_comp+0x328>
+ 8002eee:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002ef2:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002ef6:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8002efa:      4798            blx     r3
+ 8002efc:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002f00:      3301            adds    r3, #1
+ 8002f02:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8002f06:      2200            movs    r2, #0
+ 8002f08:      2301            movs    r3, #1
+ 8002f0a:      45b8            cmp     r8, r7
+ 8002f0c:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8002f10:      f804 a002       strb.w  sl, [r4, r2]
+ 8002f14:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8002f18:      f001 82f1       beq.w   80044fe <d_print_comp+0x190a>
+ 8002f1c:      2bff            cmp     r3, #255        ; 0xff
+ 8002f1e:      4619            mov     r1, r3
+ 8002f20:      4620            mov     r0, r4
+ 8002f22:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8002f26:      d0e2            beq.n   8002eee <d_print_comp+0x2fa>
+ 8002f28:      461a            mov     r2, r3
+ 8002f2a:      3301            adds    r3, #1
+ 8002f2c:      e7ed            b.n     8002f0a <d_print_comp+0x316>
+ 8002f2e:      4f57            ldr     r7, [pc, #348]  ; (800308c <d_print_comp+0x498>)
+ 8002f30:      68aa            ldr     r2, [r5, #8]
+ 8002f32:      4631            mov     r1, r6
+ 8002f34:      4620            mov     r0, r4
+ 8002f36:      f7ff fe5d       bl      8002bf4 <d_print_comp>
+ 8002f3a:      f107 0805       add.w   r8, r7, #5
+ 8002f3e:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8002f42:      f04f 0900       mov.w   r9, #0
+ 8002f46:      e016            b.n     8002f76 <d_print_comp+0x382>
+ 8002f48:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002f4c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002f50:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8002f54:      4798            blx     r3
+ 8002f56:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002f5a:      3301            adds    r3, #1
+ 8002f5c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8002f60:      2200            movs    r2, #0
+ 8002f62:      2301            movs    r3, #1
+ 8002f64:      45b8            cmp     r8, r7
+ 8002f66:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8002f6a:      f804 a002       strb.w  sl, [r4, r2]
+ 8002f6e:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8002f72:      f001 827c       beq.w   800446e <d_print_comp+0x187a>
+ 8002f76:      2bff            cmp     r3, #255        ; 0xff
+ 8002f78:      4619            mov     r1, r3
+ 8002f7a:      4620            mov     r0, r4
+ 8002f7c:      f817 ab01       ldrb.w  sl, [r7], #1
+ 8002f80:      d0e2            beq.n   8002f48 <d_print_comp+0x354>
+ 8002f82:      461a            mov     r2, r3
+ 8002f84:      3301            adds    r3, #1
+ 8002f86:      e7ed            b.n     8002f64 <d_print_comp+0x370>
+ 8002f88:      4f41            ldr     r7, [pc, #260]  ; (8003090 <d_print_comp+0x49c>)
+ 8002f8a:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8002f8e:      f107 0816       add.w   r8, r7, #22
+ 8002f92:      f04f 0900       mov.w   r9, #0
+ 8002f96:      e016            b.n     8002fc6 <d_print_comp+0x3d2>
+ 8002f98:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002f9c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002fa0:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8002fa4:      4798            blx     r3
+ 8002fa6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002faa:      3301            adds    r3, #1
+ 8002fac:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8002fb0:      2200            movs    r2, #0
+ 8002fb2:      2301            movs    r3, #1
+ 8002fb4:      45b8            cmp     r8, r7
+ 8002fb6:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8002fba:      f804 a002       strb.w  sl, [r4, r2]
+ 8002fbe:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8002fc2:      f001 81f4       beq.w   80043ae <d_print_comp+0x17ba>
+ 8002fc6:      2bff            cmp     r3, #255        ; 0xff
+ 8002fc8:      4619            mov     r1, r3
+ 8002fca:      4620            mov     r0, r4
+ 8002fcc:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8002fd0:      d0e2            beq.n   8002f98 <d_print_comp+0x3a4>
+ 8002fd2:      461a            mov     r2, r3
+ 8002fd4:      3301            adds    r3, #1
+ 8002fd6:      e7ed            b.n     8002fb4 <d_print_comp+0x3c0>
+ 8002fd8:      4e2e            ldr     r6, [pc, #184]  ; (8003094 <d_print_comp+0x4a0>)
+ 8002fda:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8002fde:      f106 070e       add.w   r7, r6, #14
+ 8002fe2:      f04f 0800       mov.w   r8, #0
+ 8002fe6:      e016            b.n     8003016 <d_print_comp+0x422>
+ 8002fe8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8002fec:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8002ff0:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8002ff4:      4798            blx     r3
+ 8002ff6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8002ffa:      3301            adds    r3, #1
+ 8002ffc:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003000:      2200            movs    r2, #0
+ 8003002:      2301            movs    r3, #1
+ 8003004:      42b7            cmp     r7, r6
+ 8003006:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800300a:      f804 9002       strb.w  r9, [r4, r2]
+ 800300e:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 8003012:      f001 81d5       beq.w   80043c0 <d_print_comp+0x17cc>
+ 8003016:      2bff            cmp     r3, #255        ; 0xff
+ 8003018:      4619            mov     r1, r3
+ 800301a:      4620            mov     r0, r4
+ 800301c:      f816 9f01       ldrb.w  r9, [r6, #1]!
+ 8003020:      d0e2            beq.n   8002fe8 <d_print_comp+0x3f4>
+ 8003022:      461a            mov     r2, r3
+ 8003024:      3301            adds    r3, #1
+ 8003026:      e7ed            b.n     8003004 <d_print_comp+0x410>
+ 8003028:      4f1b            ldr     r7, [pc, #108]  ; (8003098 <d_print_comp+0x4a4>)
+ 800302a:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800302e:      f107 0808       add.w   r8, r7, #8
+ 8003032:      f04f 0900       mov.w   r9, #0
+ 8003036:      e016            b.n     8003066 <d_print_comp+0x472>
+ 8003038:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800303c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003040:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003044:      4798            blx     r3
+ 8003046:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800304a:      3301            adds    r3, #1
+ 800304c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003050:      2200            movs    r2, #0
+ 8003052:      2301            movs    r3, #1
+ 8003054:      45b8            cmp     r8, r7
+ 8003056:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800305a:      f804 a002       strb.w  sl, [r4, r2]
+ 800305e:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003062:      f001 8114       beq.w   800428e <d_print_comp+0x169a>
+ 8003066:      2bff            cmp     r3, #255        ; 0xff
+ 8003068:      4619            mov     r1, r3
+ 800306a:      4620            mov     r0, r4
+ 800306c:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003070:      d0e2            beq.n   8003038 <d_print_comp+0x444>
+ 8003072:      461a            mov     r2, r3
+ 8003074:      3301            adds    r3, #1
+ 8003076:      e7ed            b.n     8003054 <d_print_comp+0x460>
+ 8003078:      0801257c        .word   0x0801257c
+ 800307c:      0801277c        .word   0x0801277c
+ 8003080:      08012837        .word   0x08012837
+ 8003084:      08012750        .word   0x08012750
+ 8003088:      0801271b        .word   0x0801271b
+ 800308c:      080125bc        .word   0x080125bc
+ 8003090:      0801271f        .word   0x0801271f
+ 8003094:      08012827        .word   0x08012827
+ 8003098:      08012817        .word   0x08012817
+ 800309c:      4fb9            ldr     r7, [pc, #740]  ; (8003384 <d_print_comp+0x790>)
+ 800309e:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80030a2:      f107 081c       add.w   r8, r7, #28
+ 80030a6:      f04f 0900       mov.w   r9, #0
+ 80030aa:      e016            b.n     80030da <d_print_comp+0x4e6>
+ 80030ac:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80030b0:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80030b4:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80030b8:      4798            blx     r3
+ 80030ba:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80030be:      3301            adds    r3, #1
+ 80030c0:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80030c4:      2200            movs    r2, #0
+ 80030c6:      2301            movs    r3, #1
+ 80030c8:      45b8            cmp     r8, r7
+ 80030ca:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80030ce:      f804 a002       strb.w  sl, [r4, r2]
+ 80030d2:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 80030d6:      f001 810f       beq.w   80042f8 <d_print_comp+0x1704>
+ 80030da:      2bff            cmp     r3, #255        ; 0xff
+ 80030dc:      4619            mov     r1, r3
+ 80030de:      4620            mov     r0, r4
+ 80030e0:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 80030e4:      d0e2            beq.n   80030ac <d_print_comp+0x4b8>
+ 80030e6:      461a            mov     r2, r3
+ 80030e8:      3301            adds    r3, #1
+ 80030ea:      e7ed            b.n     80030c8 <d_print_comp+0x4d4>
+ 80030ec:      4fa6            ldr     r7, [pc, #664]  ; (8003388 <d_print_comp+0x794>)
+ 80030ee:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80030f2:      f107 081d       add.w   r8, r7, #29
+ 80030f6:      f04f 0900       mov.w   r9, #0
+ 80030fa:      e016            b.n     800312a <d_print_comp+0x536>
+ 80030fc:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003100:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003104:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003108:      4798            blx     r3
+ 800310a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800310e:      3301            adds    r3, #1
+ 8003110:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003114:      2200            movs    r2, #0
+ 8003116:      2301            movs    r3, #1
+ 8003118:      4547            cmp     r7, r8
+ 800311a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800311e:      f804 a002       strb.w  sl, [r4, r2]
+ 8003122:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003126:      f001 8083       beq.w   8004230 <d_print_comp+0x163c>
+ 800312a:      2bff            cmp     r3, #255        ; 0xff
+ 800312c:      4619            mov     r1, r3
+ 800312e:      4620            mov     r0, r4
+ 8003130:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003134:      d0e2            beq.n   80030fc <d_print_comp+0x508>
+ 8003136:      461a            mov     r2, r3
+ 8003138:      3301            adds    r3, #1
+ 800313a:      e7ed            b.n     8003118 <d_print_comp+0x524>
+ 800313c:      4f93            ldr     r7, [pc, #588]  ; (800338c <d_print_comp+0x798>)
+ 800313e:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003142:      f107 080a       add.w   r8, r7, #10
+ 8003146:      f04f 0900       mov.w   r9, #0
+ 800314a:      e016            b.n     800317a <d_print_comp+0x586>
+ 800314c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003150:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003154:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003158:      4798            blx     r3
+ 800315a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800315e:      3301            adds    r3, #1
+ 8003160:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003164:      2200            movs    r2, #0
+ 8003166:      2301            movs    r3, #1
+ 8003168:      45b8            cmp     r8, r7
+ 800316a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800316e:      f804 a002       strb.w  sl, [r4, r2]
+ 8003172:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003176:      f001 8064       beq.w   8004242 <d_print_comp+0x164e>
+ 800317a:      2bff            cmp     r3, #255        ; 0xff
+ 800317c:      4619            mov     r1, r3
+ 800317e:      4620            mov     r0, r4
+ 8003180:      f817 ab01       ldrb.w  sl, [r7], #1
+ 8003184:      d0e2            beq.n   800314c <d_print_comp+0x558>
+ 8003186:      461a            mov     r2, r3
+ 8003188:      3301            adds    r3, #1
+ 800318a:      e7ed            b.n     8003168 <d_print_comp+0x574>
+ 800318c:      a808            add     r0, sp, #32
+ 800318e:      68aa            ldr     r2, [r5, #8]
+ 8003190:      497f            ldr     r1, [pc, #508]  ; (8003390 <d_print_comp+0x79c>)
+ 8003192:      f00b fb63       bl      800e85c <sprintf>
+ 8003196:      a808            add     r0, sp, #32
+ 8003198:      f003 fe1c       bl      8006dd4 <strlen>
+ 800319c:      2800            cmp     r0, #0
+ 800319e:      f001 81b7       beq.w   8004510 <d_print_comp+0x191c>
+ 80031a2:      ae08            add     r6, sp, #32
+ 80031a4:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80031a8:      1837            adds    r7, r6, r0
+ 80031aa:      f04f 0800       mov.w   r8, #0
+ 80031ae:      e016            b.n     80031de <d_print_comp+0x5ea>
+ 80031b0:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80031b4:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80031b8:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80031bc:      4798            blx     r3
+ 80031be:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80031c2:      3301            adds    r3, #1
+ 80031c4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80031c8:      2200            movs    r2, #0
+ 80031ca:      2301            movs    r3, #1
+ 80031cc:      42be            cmp     r6, r7
+ 80031ce:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80031d2:      f804 9002       strb.w  r9, [r4, r2]
+ 80031d6:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 80031da:      f001 8199       beq.w   8004510 <d_print_comp+0x191c>
+ 80031de:      2bff            cmp     r3, #255        ; 0xff
+ 80031e0:      4619            mov     r1, r3
+ 80031e2:      4620            mov     r0, r4
+ 80031e4:      f816 9b01       ldrb.w  r9, [r6], #1
+ 80031e8:      d0e2            beq.n   80031b0 <d_print_comp+0x5bc>
+ 80031ea:      461a            mov     r2, r3
+ 80031ec:      3301            adds    r3, #1
+ 80031ee:      e7ed            b.n     80031cc <d_print_comp+0x5d8>
+ 80031f0:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80031f4:      f895 8008       ldrb.w  r8, [r5, #8]
+ 80031f8:      2fff            cmp     r7, #255        ; 0xff
+ 80031fa:      d111            bne.n   8003220 <d_print_comp+0x62c>
+ 80031fc:      2600            movs    r6, #0
+ 80031fe:      4639            mov     r1, r7
+ 8003200:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003204:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8003208:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800320c:      4620            mov     r0, r4
+ 800320e:      4798            blx     r3
+ 8003210:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003214:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8003218:      3301            adds    r3, #1
+ 800321a:      4637            mov     r7, r6
+ 800321c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003220:      1c7b            adds    r3, r7, #1
+ 8003222:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003226:      f804 8007       strb.w  r8, [r4, r7]
+ 800322a:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 800322e:      686a            ldr     r2, [r5, #4]
+ 8003230:      9905            ldr     r1, [sp, #20]
+ 8003232:      e5d2            b.n     8002dda <d_print_comp+0x1e6>
+ 8003234:      68aa            ldr     r2, [r5, #8]
+ 8003236:      4631            mov     r1, r6
+ 8003238:      4620            mov     r0, r4
+ 800323a:      f7ff fcdb       bl      8002bf4 <d_print_comp>
+ 800323e:      4631            mov     r1, r6
+ 8003240:      68ea            ldr     r2, [r5, #12]
+ 8003242:      4620            mov     r0, r4
+ 8003244:      f7ff fcd6       bl      8002bf4 <d_print_comp>
+ 8003248:      9905            ldr     r1, [sp, #20]
+ 800324a:      686a            ldr     r2, [r5, #4]
+ 800324c:      e5c5            b.n     8002dda <d_print_comp+0x1e6>
+ 800324e:      4f51            ldr     r7, [pc, #324]  ; (8003394 <d_print_comp+0x7a0>)
+ 8003250:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003254:      f107 080e       add.w   r8, r7, #14
+ 8003258:      f04f 0900       mov.w   r9, #0
+ 800325c:      e016            b.n     800328c <d_print_comp+0x698>
+ 800325e:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003262:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003266:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 800326a:      4798            blx     r3
+ 800326c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003270:      3301            adds    r3, #1
+ 8003272:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003276:      2200            movs    r2, #0
+ 8003278:      2301            movs    r3, #1
+ 800327a:      45b8            cmp     r8, r7
+ 800327c:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003280:      f804 a002       strb.w  sl, [r4, r2]
+ 8003284:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003288:      f001 8146       beq.w   8004518 <d_print_comp+0x1924>
+ 800328c:      2bff            cmp     r3, #255        ; 0xff
+ 800328e:      4619            mov     r1, r3
+ 8003290:      4620            mov     r0, r4
+ 8003292:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003296:      d0e2            beq.n   800325e <d_print_comp+0x66a>
+ 8003298:      461a            mov     r2, r3
+ 800329a:      3301            adds    r3, #1
+ 800329c:      e7ed            b.n     800327a <d_print_comp+0x686>
+ 800329e:      68ab            ldr     r3, [r5, #8]
+ 80032a0:      781a            ldrb    r2, [r3, #0]
+ 80032a2:      2a27            cmp     r2, #39 ; 0x27
+ 80032a4:      f001 8572       beq.w   8004d8c <d_print_comp+0x2198>
+ 80032a8:      f04f 0800       mov.w   r8, #0
+ 80032ac:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80032b0:      2fff            cmp     r7, #255        ; 0xff
+ 80032b2:      d112            bne.n   80032da <d_print_comp+0x6e6>
+ 80032b4:      f04f 0900       mov.w   r9, #0
+ 80032b8:      4639            mov     r1, r7
+ 80032ba:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80032be:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80032c2:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80032c6:      4620            mov     r0, r4
+ 80032c8:      4798            blx     r3
+ 80032ca:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80032ce:      f8c4 9100       str.w   r9, [r4, #256]  ; 0x100
+ 80032d2:      3301            adds    r3, #1
+ 80032d4:      464f            mov     r7, r9
+ 80032d6:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80032da:      2328            movs    r3, #40 ; 0x28
+ 80032dc:      1c7a            adds    r2, r7, #1
+ 80032de:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80032e2:      55e3            strb    r3, [r4, r7]
+ 80032e4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80032e8:      68aa            ldr     r2, [r5, #8]
+ 80032ea:      4631            mov     r1, r6
+ 80032ec:      4620            mov     r0, r4
+ 80032ee:      f7ff fc81       bl      8002bf4 <d_print_comp>
+ 80032f2:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80032f6:      2bff            cmp     r3, #255        ; 0xff
+ 80032f8:      f041 85b8       bne.w   8004e6c <d_print_comp+0x2278>
+ 80032fc:      2200            movs    r2, #0
+ 80032fe:      4619            mov     r1, r3
+ 8003300:      f884 20ff       strb.w  r2, [r4, #255]  ; 0xff
+ 8003304:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003308:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800330c:      4620            mov     r0, r4
+ 800330e:      4798            blx     r3
+ 8003310:      2329            movs    r3, #41 ; 0x29
+ 8003312:      7023            strb    r3, [r4, #0]
+ 8003314:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8003318:      782a            ldrb    r2, [r5, #0]
+ 800331a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800331e:      2101            movs    r1, #1
+ 8003320:      3301            adds    r3, #1
+ 8003322:      2a3d            cmp     r2, #61 ; 0x3d
+ 8003324:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003328:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 800332c:      f001 85bb       beq.w   8004ea6 <d_print_comp+0x22b2>
+ 8003330:      f1b8 0f08       cmp.w   r8, #8
+ 8003334:      f001 8556       beq.w   8004de4 <d_print_comp+0x21f0>
+ 8003338:      4631            mov     r1, r6
+ 800333a:      68ea            ldr     r2, [r5, #12]
+ 800333c:      4620            mov     r0, r4
+ 800333e:      f7ff fc59       bl      8002bf4 <d_print_comp>
+ 8003342:      9905            ldr     r1, [sp, #20]
+ 8003344:      686a            ldr     r2, [r5, #4]
+ 8003346:      e548            b.n     8002dda <d_print_comp+0x1e6>
+ 8003348:      2301            movs    r3, #1
+ 800334a:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 800334e:      686a            ldr     r2, [r5, #4]
+ 8003350:      e543            b.n     8002dda <d_print_comp+0x1e6>
+ 8003352:      68eb            ldr     r3, [r5, #12]
+ 8003354:      781a            ldrb    r2, [r3, #0]
+ 8003356:      2a3a            cmp     r2, #58 ; 0x3a
+ 8003358:      f001 8405       beq.w   8004b66 <d_print_comp+0x1f72>
+ 800335c:      2301            movs    r3, #1
+ 800335e:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 8003362:      686a            ldr     r2, [r5, #4]
+ 8003364:      e539            b.n     8002dda <d_print_comp+0x1e6>
+ 8003366:      2301            movs    r3, #1
+ 8003368:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 800336c:      686a            ldr     r2, [r5, #4]
+ 800336e:      e534            b.n     8002dda <d_print_comp+0x1e6>
+ 8003370:      68eb            ldr     r3, [r5, #12]
+ 8003372:      781b            ldrb    r3, [r3, #0]
+ 8003374:      2b38            cmp     r3, #56 ; 0x38
+ 8003376:      f43f acaf       beq.w   8002cd8 <d_print_comp+0xe4>
+ 800337a:      2301            movs    r3, #1
+ 800337c:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 8003380:      686a            ldr     r2, [r5, #4]
+ 8003382:      e52a            b.n     8002dda <d_print_comp+0x1e6>
+ 8003384:      080127f7        .word   0x080127f7
+ 8003388:      080127d7        .word   0x080127d7
+ 800338c:      080127b8        .word   0x080127b8
+ 8003390:      08012574        .word   0x08012574
+ 8003394:      080127a7        .word   0x080127a7
+ 8003398:      e9d5 9802       ldrd    r9, r8, [r5, #8]
+ 800339c:      f899 3000       ldrb.w  r3, [r9]
+ 80033a0:      2b31            cmp     r3, #49 ; 0x31
+ 80033a2:      f001 843a       beq.w   8004c1a <d_print_comp+0x2026>
+ 80033a6:      2b33            cmp     r3, #51 ; 0x33
+ 80033a8:      f042 8192       bne.w   80056d0 <d_print_comp+0x2adc>
+ 80033ac:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80033b0:      2fff            cmp     r7, #255        ; 0xff
+ 80033b2:      d112            bne.n   80033da <d_print_comp+0x7e6>
+ 80033b4:      f04f 0a00       mov.w   sl, #0
+ 80033b8:      4639            mov     r1, r7
+ 80033ba:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80033be:      f884 a0ff       strb.w  sl, [r4, #255]  ; 0xff
+ 80033c2:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80033c6:      4620            mov     r0, r4
+ 80033c8:      4798            blx     r3
+ 80033ca:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80033ce:      f8c4 a100       str.w   sl, [r4, #256]  ; 0x100
+ 80033d2:      3301            adds    r3, #1
+ 80033d4:      4657            mov     r7, sl
+ 80033d6:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80033da:      1c7a            adds    r2, r7, #1
+ 80033dc:      2328            movs    r3, #40 ; 0x28
+ 80033de:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80033e2:      55e3            strb    r3, [r4, r7]
+ 80033e4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80033e8:      f8d9 2008       ldr.w   r2, [r9, #8]
+ 80033ec:      4631            mov     r1, r6
+ 80033ee:      4620            mov     r0, r4
+ 80033f0:      f7ff fc00       bl      8002bf4 <d_print_comp>
+ 80033f4:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80033f8:      2fff            cmp     r7, #255        ; 0xff
+ 80033fa:      d112            bne.n   8003422 <d_print_comp+0x82e>
+ 80033fc:      f04f 0900       mov.w   r9, #0
+ 8003400:      4639            mov     r1, r7
+ 8003402:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003406:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 800340a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800340e:      4620            mov     r0, r4
+ 8003410:      4798            blx     r3
+ 8003412:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003416:      f8c4 9100       str.w   r9, [r4, #256]  ; 0x100
+ 800341a:      3301            adds    r3, #1
+ 800341c:      464f            mov     r7, r9
+ 800341e:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003422:      2329            movs    r3, #41 ; 0x29
+ 8003424:      1c7a            adds    r2, r7, #1
+ 8003426:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800342a:      55e3            strb    r3, [r4, r7]
+ 800342c:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8003430:      4642            mov     r2, r8
+ 8003432:      4631            mov     r1, r6
+ 8003434:      4620            mov     r0, r4
+ 8003436:      f003 f8e5       bl      8006604 <d_print_subexpr>
+ 800343a:      9905            ldr     r1, [sp, #20]
+ 800343c:      686a            ldr     r2, [r5, #4]
+ 800343e:      e4cc            b.n     8002dda <d_print_comp+0x1e6>
+ 8003440:      4631            mov     r1, r6
+ 8003442:      68aa            ldr     r2, [r5, #8]
+ 8003444:      4620            mov     r0, r4
+ 8003446:      f003 f89d       bl      8006584 <d_print_expr_op>
+ 800344a:      9905            ldr     r1, [sp, #20]
+ 800344c:      686a            ldr     r2, [r5, #4]
+ 800344e:      e4c4            b.n     8002dda <d_print_comp+0x1e6>
+ 8003450:      4fd2            ldr     r7, [pc, #840]  ; (800379c <d_print_comp+0xba8>)
+ 8003452:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003456:      f107 0809       add.w   r8, r7, #9
+ 800345a:      f04f 0900       mov.w   r9, #0
+ 800345e:      e016            b.n     800348e <d_print_comp+0x89a>
+ 8003460:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003464:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003468:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 800346c:      4798            blx     r3
+ 800346e:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003472:      3301            adds    r3, #1
+ 8003474:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003478:      2200            movs    r2, #0
+ 800347a:      2301            movs    r3, #1
+ 800347c:      45b8            cmp     r8, r7
+ 800347e:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003482:      f804 a002       strb.w  sl, [r4, r2]
+ 8003486:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 800348a:      f001 8057       beq.w   800453c <d_print_comp+0x1948>
+ 800348e:      2bff            cmp     r3, #255        ; 0xff
+ 8003490:      4619            mov     r1, r3
+ 8003492:      4620            mov     r0, r4
+ 8003494:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003498:      d0e2            beq.n   8003460 <d_print_comp+0x86c>
+ 800349a:      461a            mov     r2, r3
+ 800349c:      3301            adds    r3, #1
+ 800349e:      e7ed            b.n     800347c <d_print_comp+0x888>
+ 80034a0:      4fbe            ldr     r7, [pc, #760]  ; (800379c <d_print_comp+0xba8>)
+ 80034a2:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80034a6:      f107 0809       add.w   r8, r7, #9
+ 80034aa:      f04f 0900       mov.w   r9, #0
+ 80034ae:      e016            b.n     80034de <d_print_comp+0x8ea>
+ 80034b0:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80034b4:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80034b8:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80034bc:      4798            blx     r3
+ 80034be:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80034c2:      3301            adds    r3, #1
+ 80034c4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80034c8:      2200            movs    r2, #0
+ 80034ca:      2301            movs    r3, #1
+ 80034cc:      45b8            cmp     r8, r7
+ 80034ce:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80034d2:      f804 a002       strb.w  sl, [r4, r2]
+ 80034d6:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 80034da:      f001 8026       beq.w   800452a <d_print_comp+0x1936>
+ 80034de:      2bff            cmp     r3, #255        ; 0xff
+ 80034e0:      4619            mov     r1, r3
+ 80034e2:      4620            mov     r0, r4
+ 80034e4:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 80034e8:      d0e2            beq.n   80034b0 <d_print_comp+0x8bc>
+ 80034ea:      461a            mov     r2, r3
+ 80034ec:      3301            adds    r3, #1
+ 80034ee:      e7ed            b.n     80034cc <d_print_comp+0x8d8>
+ 80034f0:      f8d5 a008       ldr.w   sl, [r5, #8]
+ 80034f4:      4eaa            ldr     r6, [pc, #680]  ; (80037a0 <d_print_comp+0xbac>)
+ 80034f6:      f8da 7008       ldr.w   r7, [sl, #8]
+ 80034fa:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80034fe:      f106 0808       add.w   r8, r6, #8
+ 8003502:      f04f 0900       mov.w   r9, #0
+ 8003506:      e016            b.n     8003536 <d_print_comp+0x942>
+ 8003508:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800350c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003510:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003514:      4798            blx     r3
+ 8003516:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800351a:      3301            adds    r3, #1
+ 800351c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003520:      2200            movs    r2, #0
+ 8003522:      2301            movs    r3, #1
+ 8003524:      4546            cmp     r6, r8
+ 8003526:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800352a:      f804 b002       strb.w  fp, [r4, r2]
+ 800352e:      f884 b104       strb.w  fp, [r4, #260]  ; 0x104
+ 8003532:      f001 8021       beq.w   8004578 <d_print_comp+0x1984>
+ 8003536:      2bff            cmp     r3, #255        ; 0xff
+ 8003538:      4619            mov     r1, r3
+ 800353a:      4620            mov     r0, r4
+ 800353c:      f816 bf01       ldrb.w  fp, [r6, #1]!
+ 8003540:      d0e2            beq.n   8003508 <d_print_comp+0x914>
+ 8003542:      461a            mov     r2, r3
+ 8003544:      3301            adds    r3, #1
+ 8003546:      e7ed            b.n     8003524 <d_print_comp+0x930>
+ 8003548:      e9d5 2802       ldrd    r2, r8, [r5, #8]
+ 800354c:      b11a            cbz     r2, 8003556 <d_print_comp+0x962>
+ 800354e:      4631            mov     r1, r6
+ 8003550:      4620            mov     r0, r4
+ 8003552:      f7ff fb4f       bl      8002bf4 <d_print_comp>
+ 8003556:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 800355a:      2fff            cmp     r7, #255        ; 0xff
+ 800355c:      d112            bne.n   8003584 <d_print_comp+0x990>
+ 800355e:      f04f 0900       mov.w   r9, #0
+ 8003562:      4639            mov     r1, r7
+ 8003564:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003568:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 800356c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003570:      4620            mov     r0, r4
+ 8003572:      4798            blx     r3
+ 8003574:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003578:      f8c4 9100       str.w   r9, [r4, #256]  ; 0x100
+ 800357c:      3301            adds    r3, #1
+ 800357e:      464f            mov     r7, r9
+ 8003580:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003584:      1c78            adds    r0, r7, #1
+ 8003586:      237b            movs    r3, #123        ; 0x7b
+ 8003588:      f8c4 0100       str.w   r0, [r4, #256]  ; 0x100
+ 800358c:      4642            mov     r2, r8
+ 800358e:      55e3            strb    r3, [r4, r7]
+ 8003590:      4631            mov     r1, r6
+ 8003592:      4620            mov     r0, r4
+ 8003594:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8003598:      f7ff fb2c       bl      8002bf4 <d_print_comp>
+ 800359c:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80035a0:      2fff            cmp     r7, #255        ; 0xff
+ 80035a2:      d111            bne.n   80035c8 <d_print_comp+0x9d4>
+ 80035a4:      2600            movs    r6, #0
+ 80035a6:      4639            mov     r1, r7
+ 80035a8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80035ac:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 80035b0:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80035b4:      4620            mov     r0, r4
+ 80035b6:      4798            blx     r3
+ 80035b8:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80035bc:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 80035c0:      3301            adds    r3, #1
+ 80035c2:      4637            mov     r7, r6
+ 80035c4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80035c8:      1c7a            adds    r2, r7, #1
+ 80035ca:      237d            movs    r3, #125        ; 0x7d
+ 80035cc:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80035d0:      55e3            strb    r3, [r4, r7]
+ 80035d2:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80035d6:      686a            ldr     r2, [r5, #4]
+ 80035d8:      9905            ldr     r1, [sp, #20]
+ 80035da:      f7ff bbfe       b.w     8002dda <d_print_comp+0x1e6>
+ 80035de:      68aa            ldr     r2, [r5, #8]
+ 80035e0:      b11a            cbz     r2, 80035ea <d_print_comp+0x9f6>
+ 80035e2:      4631            mov     r1, r6
+ 80035e4:      4620            mov     r0, r4
+ 80035e6:      f7ff fb05       bl      8002bf4 <d_print_comp>
+ 80035ea:      68eb            ldr     r3, [r5, #12]
+ 80035ec:      2b00            cmp     r3, #0
+ 80035ee:      f001 853d       beq.w   800506c <d_print_comp+0x2478>
+ 80035f2:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80035f6:      2ffd            cmp     r7, #253        ; 0xfd
+ 80035f8:      d912            bls.n   8003620 <d_print_comp+0xa2c>
+ 80035fa:      f04f 0800       mov.w   r8, #0
+ 80035fe:      f804 8007       strb.w  r8, [r4, r7]
+ 8003602:      4639            mov     r1, r7
+ 8003604:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003608:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800360c:      4620            mov     r0, r4
+ 800360e:      4798            blx     r3
+ 8003610:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003614:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 8003618:      3301            adds    r3, #1
+ 800361a:      4647            mov     r7, r8
+ 800361c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003620:      f8df 8188       ldr.w   r8, [pc, #392]  ; 80037ac <d_print_comp+0xbb8>
+ 8003624:      f04f 0a00       mov.w   sl, #0
+ 8003628:      f108 0b02       add.w   fp, r8, #2
+ 800362c:      e016            b.n     800365c <d_print_comp+0xa68>
+ 800362e:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003632:      f884 a0ff       strb.w  sl, [r4, #255]  ; 0xff
+ 8003636:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800363a:      4798            blx     r3
+ 800363c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003640:      3301            adds    r3, #1
+ 8003642:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003646:      2701            movs    r7, #1
+ 8003648:      2300            movs    r3, #0
+ 800364a:      45c3            cmp     fp, r8
+ 800364c:      f8c4 7100       str.w   r7, [r4, #256]  ; 0x100
+ 8003650:      f804 9003       strb.w  r9, [r4, r3]
+ 8003654:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 8003658:      f001 80cf       beq.w   80047fa <d_print_comp+0x1c06>
+ 800365c:      2fff            cmp     r7, #255        ; 0xff
+ 800365e:      4639            mov     r1, r7
+ 8003660:      4620            mov     r0, r4
+ 8003662:      f818 9b01       ldrb.w  r9, [r8], #1
+ 8003666:      d0e2            beq.n   800362e <d_print_comp+0xa3a>
+ 8003668:      463b            mov     r3, r7
+ 800366a:      3701            adds    r7, #1
+ 800366c:      e7ed            b.n     800364a <d_print_comp+0xa56>
+ 800366e:      f9b5 300e       ldrsh.w r3, [r5, #14]
+ 8003672:      2b00            cmp     r3, #0
+ 8003674:      f041 84a0       bne.w   8004fb8 <d_print_comp+0x23c4>
+ 8003678:      68aa            ldr     r2, [r5, #8]
+ 800367a:      4b4a            ldr     r3, [pc, #296]  ; (80037a4 <d_print_comp+0xbb0>)
+ 800367c:      6891            ldr     r1, [r2, #8]
+ 800367e:      4299            cmp     r1, r3
+ 8003680:      d020            beq.n   80036c4 <d_print_comp+0xad0>
+ 8003682:      4631            mov     r1, r6
+ 8003684:      4620            mov     r0, r4
+ 8003686:      f7ff fab5       bl      8002bf4 <d_print_comp>
+ 800368a:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 800368e:      2fff            cmp     r7, #255        ; 0xff
+ 8003690:      d111            bne.n   80036b6 <d_print_comp+0xac2>
+ 8003692:      2600            movs    r6, #0
+ 8003694:      4639            mov     r1, r7
+ 8003696:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800369a:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 800369e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80036a2:      4620            mov     r0, r4
+ 80036a4:      4798            blx     r3
+ 80036a6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80036aa:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 80036ae:      3301            adds    r3, #1
+ 80036b0:      4637            mov     r7, r6
+ 80036b2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80036b6:      2320            movs    r3, #32
+ 80036b8:      1c7a            adds    r2, r7, #1
+ 80036ba:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80036be:      55e3            strb    r3, [r4, r7]
+ 80036c0:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80036c4:      f9b5 200c       ldrsh.w r2, [r5, #12]
+ 80036c8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80036cc:      2a00            cmp     r2, #0
+ 80036ce:      f001 80a6       beq.w   800481e <d_print_comp+0x1c2a>
+ 80036d2:      4e35            ldr     r6, [pc, #212]  ; (80037a8 <d_print_comp+0xbb4>)
+ 80036d4:      f04f 0800       mov.w   r8, #0
+ 80036d8:      f106 0906       add.w   r9, r6, #6
+ 80036dc:      e015            b.n     800370a <d_print_comp+0xb16>
+ 80036de:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80036e2:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80036e6:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80036ea:      4798            blx     r3
+ 80036ec:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80036f0:      3301            adds    r3, #1
+ 80036f2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80036f6:      2200            movs    r2, #0
+ 80036f8:      2301            movs    r3, #1
+ 80036fa:      45b1            cmp     r9, r6
+ 80036fc:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003700:      54a7            strb    r7, [r4, r2]
+ 8003702:      f884 7104       strb.w  r7, [r4, #260]  ; 0x104
+ 8003706:      f001 8183       beq.w   8004a10 <d_print_comp+0x1e1c>
+ 800370a:      2bff            cmp     r3, #255        ; 0xff
+ 800370c:      4619            mov     r1, r3
+ 800370e:      4620            mov     r0, r4
+ 8003710:      f816 7b01       ldrb.w  r7, [r6], #1
+ 8003714:      d0e3            beq.n   80036de <d_print_comp+0xaea>
+ 8003716:      461a            mov     r2, r3
+ 8003718:      3301            adds    r3, #1
+ 800371a:      e7ee            b.n     80036fa <d_print_comp+0xb06>
+ 800371c:      ab18            add     r3, sp, #96     ; 0x60
+ 800371e:      f8d4 2114       ldr.w   r2, [r4, #276]  ; 0x114
+ 8003722:      f843 2d40       str.w   r2, [r3, #-64]!
+ 8003726:      2000            movs    r0, #0
+ 8003728:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 800372c:      900a            str     r0, [sp, #40]   ; 0x28
+ 800372e:      f8d4 3110       ldr.w   r3, [r4, #272]  ; 0x110
+ 8003732:      68ea            ldr     r2, [r5, #12]
+ 8003734:      930b            str     r3, [sp, #44]   ; 0x2c
+ 8003736:      4631            mov     r1, r6
+ 8003738:      4620            mov     r0, r4
+ 800373a:      9509            str     r5, [sp, #36]   ; 0x24
+ 800373c:      f7ff fa5a       bl      8002bf4 <d_print_comp>
+ 8003740:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 8003742:      b923            cbnz    r3, 800374e <d_print_comp+0xb5a>
+ 8003744:      4631            mov     r1, r6
+ 8003746:      462a            mov     r2, r5
+ 8003748:      4620            mov     r0, r4
+ 800374a:      f002 f8e9       bl      8005920 <d_print_mod>
+ 800374e:      9b08            ldr     r3, [sp, #32]
+ 8003750:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 8003754:      9905            ldr     r1, [sp, #20]
+ 8003756:      686a            ldr     r2, [r5, #4]
+ 8003758:      f7ff bb3f       b.w     8002dda <d_print_comp+0x1e6>
+ 800375c:      f10d 0960       add.w   r9, sp, #96     ; 0x60
+ 8003760:      f8d4 c114       ldr.w   ip, [r4, #276]  ; 0x114
+ 8003764:      f849 cd40       str.w   ip, [r9, #-64]!
+ 8003768:      f8d4 3110       ldr.w   r3, [r4, #272]  ; 0x110
+ 800376c:      f8cd c004       str.w   ip, [sp, #4]
+ 8003770:      2200            movs    r2, #0
+ 8003772:      4667            mov     r7, ip
+ 8003774:      f8c4 9114       str.w   r9, [r4, #276]  ; 0x114
+ 8003778:      9509            str     r5, [sp, #36]   ; 0x24
+ 800377a:      e9cd 230a       strd    r2, r3, [sp, #40]       ; 0x28
+ 800377e:      2f00            cmp     r7, #0
+ 8003780:      f001 852f       beq.w   80051e2 <d_print_comp+0x25ee>
+ 8003784:      687b            ldr     r3, [r7, #4]
+ 8003786:      781b            ldrb    r3, [r3, #0]
+ 8003788:      3b19            subs    r3, #25
+ 800378a:      2b02            cmp     r3, #2
+ 800378c:      f201 8529       bhi.w   80051e2 <d_print_comp+0x25ee>
+ 8003790:      4623            mov     r3, r4
+ 8003792:      f04f 0801       mov.w   r8, #1
+ 8003796:      464c            mov     r4, r9
+ 8003798:      469c            mov     ip, r3
+ 800379a:      e00e            b.n     80037ba <d_print_comp+0xbc6>
+ 800379c:      0801275f        .word   0x0801275f
+ 80037a0:      08012753        .word   0x08012753
+ 80037a4:      08011c70        .word   0x08011c70
+ 80037a8:      08012740        .word   0x08012740
+ 80037ac:      08012750        .word   0x08012750
+ 80037b0:      687b            ldr     r3, [r7, #4]
+ 80037b2:      781b            ldrb    r3, [r3, #0]
+ 80037b4:      3b19            subs    r3, #25
+ 80037b6:      2b02            cmp     r3, #2
+ 80037b8:      d81d            bhi.n   80037f6 <d_print_comp+0xc02>
+ 80037ba:      68bb            ldr     r3, [r7, #8]
+ 80037bc:      ea4f 1e08       mov.w   lr, r8, lsl #4
+ 80037c0:      aa18            add     r2, sp, #96     ; 0x60
+ 80037c2:      eb02 0b0e       add.w   fp, r2, lr
+ 80037c6:      b99b            cbnz    r3, 80037f0 <d_print_comp+0xbfc>
+ 80037c8:      f1b8 0f03       cmp.w   r8, #3
+ 80037cc:      f201 8517       bhi.w   80051fe <d_print_comp+0x260a>
+ 80037d0:      e897 000f       ldmia.w r7, {r0, r1, r2, r3}
+ 80037d4:      f1ab 0a40       sub.w   sl, fp, #64     ; 0x40
+ 80037d8:      e88a 000f       stmia.w sl, {r0, r1, r2, r3}
+ 80037dc:      f84b 4c40       str.w   r4, [fp, #-64]
+ 80037e0:      2301            movs    r3, #1
+ 80037e2:      eb09 040e       add.w   r4, r9, lr
+ 80037e6:      f8cc 4114       str.w   r4, [ip, #276]  ; 0x114
+ 80037ea:      f108 0801       add.w   r8, r8, #1
+ 80037ee:      60bb            str     r3, [r7, #8]
+ 80037f0:      683f            ldr     r7, [r7, #0]
+ 80037f2:      2f00            cmp     r7, #0
+ 80037f4:      d1dc            bne.n   80037b0 <d_print_comp+0xbbc>
+ 80037f6:      68ea            ldr     r2, [r5, #12]
+ 80037f8:      4631            mov     r1, r6
+ 80037fa:      4660            mov     r0, ip
+ 80037fc:      4664            mov     r4, ip
+ 80037fe:      f7ff f9f9       bl      8002bf4 <d_print_comp>
+ 8003802:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 8003804:      9a01            ldr     r2, [sp, #4]
+ 8003806:      f8c4 2114       str.w   r2, [r4, #276]  ; 0x114
+ 800380a:      b9bb            cbnz    r3, 800383c <d_print_comp+0xc48>
+ 800380c:      f1b8 0f01       cmp.w   r8, #1
+ 8003810:      d00c            beq.n   800382c <d_print_comp+0xc38>
+ 8003812:      eb09 1808       add.w   r8, r9, r8, lsl #4
+ 8003816:      af0c            add     r7, sp, #48     ; 0x30
+ 8003818:      f858 2c0c       ldr.w   r2, [r8, #-12]
+ 800381c:      4631            mov     r1, r6
+ 800381e:      f1a8 0810       sub.w   r8, r8, #16
+ 8003822:      4620            mov     r0, r4
+ 8003824:      f002 f87c       bl      8005920 <d_print_mod>
+ 8003828:      4547            cmp     r7, r8
+ 800382a:      d1f5            bne.n   8003818 <d_print_comp+0xc24>
+ 800382c:      4631            mov     r1, r6
+ 800382e:      f8d4 3114       ldr.w   r3, [r4, #276]  ; 0x114
+ 8003832:      f105 0208       add.w   r2, r5, #8
+ 8003836:      4620            mov     r0, r4
+ 8003838:      f002 fdca       bl      80063d0 <d_print_array_type.isra.14>
+ 800383c:      9905            ldr     r1, [sp, #20]
+ 800383e:      686a            ldr     r2, [r5, #4]
+ 8003840:      f7ff bacb       b.w     8002dda <d_print_comp+0x1e6>
+ 8003844:      06b2            lsls    r2, r6, #26
+ 8003846:      f026 0860       bic.w   r8, r6, #96     ; 0x60
+ 800384a:      f8d4 3114       ldr.w   r3, [r4, #276]  ; 0x114
+ 800384e:      f101 825a       bmi.w   8004d06 <d_print_comp+0x2112>
+ 8003852:      68aa            ldr     r2, [r5, #8]
+ 8003854:      b11a            cbz     r2, 800385e <d_print_comp+0xc6a>
+ 8003856:      f016 0640       ands.w  r6, r6, #64     ; 0x40
+ 800385a:      f001 85c3       beq.w   80053e4 <d_print_comp+0x27f0>
+ 800385e:      4641            mov     r1, r8
+ 8003860:      f105 020c       add.w   r2, r5, #12
+ 8003864:      f8d4 3114       ldr.w   r3, [r4, #276]  ; 0x114
+ 8003868:      4620            mov     r0, r4
+ 800386a:      f002 fb87       bl      8005f7c <d_print_function_type.isra.15>
+ 800386e:      9905            ldr     r1, [sp, #20]
+ 8003870:      686a            ldr     r2, [r5, #4]
+ 8003872:      f7ff bab2       b.w     8002dda <d_print_comp+0x1e6>
+ 8003876:      4fcb            ldr     r7, [pc, #812]  ; (8003ba4 <d_print_comp+0xfb0>)
+ 8003878:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800387c:      f107 0815       add.w   r8, r7, #21
+ 8003880:      f04f 0900       mov.w   r9, #0
+ 8003884:      e016            b.n     80038b4 <d_print_comp+0xcc0>
+ 8003886:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800388a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800388e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003892:      4798            blx     r3
+ 8003894:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003898:      3301            adds    r3, #1
+ 800389a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800389e:      2200            movs    r2, #0
+ 80038a0:      2301            movs    r3, #1
+ 80038a2:      45b8            cmp     r8, r7
+ 80038a4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80038a8:      f804 a002       strb.w  sl, [r4, r2]
+ 80038ac:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 80038b0:      f000 8789       beq.w   80047c6 <d_print_comp+0x1bd2>
+ 80038b4:      2bff            cmp     r3, #255        ; 0xff
+ 80038b6:      4619            mov     r1, r3
+ 80038b8:      4620            mov     r0, r4
+ 80038ba:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 80038be:      d0e2            beq.n   8003886 <d_print_comp+0xc92>
+ 80038c0:      461a            mov     r2, r3
+ 80038c2:      3301            adds    r3, #1
+ 80038c4:      e7ed            b.n     80038a2 <d_print_comp+0xcae>
+ 80038c6:      4fb8            ldr     r7, [pc, #736]  ; (8003ba8 <d_print_comp+0xfb4>)
+ 80038c8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80038cc:      f107 0810       add.w   r8, r7, #16
+ 80038d0:      f04f 0900       mov.w   r9, #0
+ 80038d4:      e016            b.n     8003904 <d_print_comp+0xd10>
+ 80038d6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80038da:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80038de:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80038e2:      4798            blx     r3
+ 80038e4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80038e8:      3301            adds    r3, #1
+ 80038ea:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80038ee:      2200            movs    r2, #0
+ 80038f0:      2301            movs    r3, #1
+ 80038f2:      45b8            cmp     r8, r7
+ 80038f4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80038f8:      f804 a002       strb.w  sl, [r4, r2]
+ 80038fc:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003900:      f000 876a       beq.w   80047d8 <d_print_comp+0x1be4>
+ 8003904:      2bff            cmp     r3, #255        ; 0xff
+ 8003906:      4619            mov     r1, r3
+ 8003908:      4620            mov     r0, r4
+ 800390a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 800390e:      d0e2            beq.n   80038d6 <d_print_comp+0xce2>
+ 8003910:      461a            mov     r2, r3
+ 8003912:      3301            adds    r3, #1
+ 8003914:      e7ed            b.n     80038f2 <d_print_comp+0xcfe>
+ 8003916:      4fa5            ldr     r7, [pc, #660]  ; (8003bac <d_print_comp+0xfb8>)
+ 8003918:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800391c:      f107 0812       add.w   r8, r7, #18
+ 8003920:      f04f 0900       mov.w   r9, #0
+ 8003924:      e016            b.n     8003954 <d_print_comp+0xd60>
+ 8003926:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800392a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800392e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003932:      4798            blx     r3
+ 8003934:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003938:      3301            adds    r3, #1
+ 800393a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800393e:      2200            movs    r2, #0
+ 8003940:      2301            movs    r3, #1
+ 8003942:      45b8            cmp     r8, r7
+ 8003944:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003948:      f804 a002       strb.w  sl, [r4, r2]
+ 800394c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003950:      f000 8727       beq.w   80047a2 <d_print_comp+0x1bae>
+ 8003954:      2bff            cmp     r3, #255        ; 0xff
+ 8003956:      4619            mov     r1, r3
+ 8003958:      4620            mov     r0, r4
+ 800395a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 800395e:      d0e2            beq.n   8003926 <d_print_comp+0xd32>
+ 8003960:      461a            mov     r2, r3
+ 8003962:      3301            adds    r3, #1
+ 8003964:      e7ed            b.n     8003942 <d_print_comp+0xd4e>
+ 8003966:      4f92            ldr     r7, [pc, #584]  ; (8003bb0 <d_print_comp+0xfbc>)
+ 8003968:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800396c:      f107 080d       add.w   r8, r7, #13
+ 8003970:      f04f 0900       mov.w   r9, #0
+ 8003974:      e016            b.n     80039a4 <d_print_comp+0xdb0>
+ 8003976:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800397a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800397e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003982:      4798            blx     r3
+ 8003984:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003988:      3301            adds    r3, #1
+ 800398a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800398e:      2200            movs    r2, #0
+ 8003990:      2301            movs    r3, #1
+ 8003992:      45b8            cmp     r8, r7
+ 8003994:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003998:      f804 a002       strb.w  sl, [r4, r2]
+ 800399c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 80039a0:      f000 8708       beq.w   80047b4 <d_print_comp+0x1bc0>
+ 80039a4:      2bff            cmp     r3, #255        ; 0xff
+ 80039a6:      4619            mov     r1, r3
+ 80039a8:      4620            mov     r0, r4
+ 80039aa:      f817 ab01       ldrb.w  sl, [r7], #1
+ 80039ae:      d0e2            beq.n   8003976 <d_print_comp+0xd82>
+ 80039b0:      461a            mov     r2, r3
+ 80039b2:      3301            adds    r3, #1
+ 80039b4:      e7ed            b.n     8003992 <d_print_comp+0xd9e>
+ 80039b6:      4f7f            ldr     r7, [pc, #508]  ; (8003bb4 <d_print_comp+0xfc0>)
+ 80039b8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80039bc:      f107 0818       add.w   r8, r7, #24
+ 80039c0:      f04f 0900       mov.w   r9, #0
+ 80039c4:      e016            b.n     80039f4 <d_print_comp+0xe00>
+ 80039c6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80039ca:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80039ce:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80039d2:      4798            blx     r3
+ 80039d4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80039d8:      3301            adds    r3, #1
+ 80039da:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80039de:      2200            movs    r2, #0
+ 80039e0:      2301            movs    r3, #1
+ 80039e2:      45b8            cmp     r8, r7
+ 80039e4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80039e8:      f804 a002       strb.w  sl, [r4, r2]
+ 80039ec:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 80039f0:      f000 8699       beq.w   8004726 <d_print_comp+0x1b32>
+ 80039f4:      2bff            cmp     r3, #255        ; 0xff
+ 80039f6:      4619            mov     r1, r3
+ 80039f8:      4620            mov     r0, r4
+ 80039fa:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 80039fe:      d0e2            beq.n   80039c6 <d_print_comp+0xdd2>
+ 8003a00:      461a            mov     r2, r3
+ 8003a02:      3301            adds    r3, #1
+ 8003a04:      e7ed            b.n     80039e2 <d_print_comp+0xdee>
+ 8003a06:      4f6c            ldr     r7, [pc, #432]  ; (8003bb8 <d_print_comp+0xfc4>)
+ 8003a08:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003a0c:      f107 0808       add.w   r8, r7, #8
+ 8003a10:      f04f 0900       mov.w   r9, #0
+ 8003a14:      e016            b.n     8003a44 <d_print_comp+0xe50>
+ 8003a16:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003a1a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003a1e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003a22:      4798            blx     r3
+ 8003a24:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003a28:      3301            adds    r3, #1
+ 8003a2a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003a2e:      2200            movs    r2, #0
+ 8003a30:      2301            movs    r3, #1
+ 8003a32:      45b8            cmp     r8, r7
+ 8003a34:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003a38:      f804 a002       strb.w  sl, [r4, r2]
+ 8003a3c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003a40:      f000 86a6       beq.w   8004790 <d_print_comp+0x1b9c>
+ 8003a44:      2bff            cmp     r3, #255        ; 0xff
+ 8003a46:      4619            mov     r1, r3
+ 8003a48:      4620            mov     r0, r4
+ 8003a4a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003a4e:      d0e2            beq.n   8003a16 <d_print_comp+0xe22>
+ 8003a50:      461a            mov     r2, r3
+ 8003a52:      3301            adds    r3, #1
+ 8003a54:      e7ed            b.n     8003a32 <d_print_comp+0xe3e>
+ 8003a56:      4f59            ldr     r7, [pc, #356]  ; (8003bbc <d_print_comp+0xfc8>)
+ 8003a58:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003a5c:      f107 080b       add.w   r8, r7, #11
+ 8003a60:      f04f 0900       mov.w   r9, #0
+ 8003a64:      e016            b.n     8003a94 <d_print_comp+0xea0>
+ 8003a66:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003a6a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003a6e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003a72:      4798            blx     r3
+ 8003a74:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003a78:      3301            adds    r3, #1
+ 8003a7a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003a7e:      2200            movs    r2, #0
+ 8003a80:      2301            movs    r3, #1
+ 8003a82:      45b8            cmp     r8, r7
+ 8003a84:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003a88:      f804 a002       strb.w  sl, [r4, r2]
+ 8003a8c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003a90:      f000 85cc       beq.w   800462c <d_print_comp+0x1a38>
+ 8003a94:      2bff            cmp     r3, #255        ; 0xff
+ 8003a96:      4619            mov     r1, r3
+ 8003a98:      4620            mov     r0, r4
+ 8003a9a:      f817 ab01       ldrb.w  sl, [r7], #1
+ 8003a9e:      d0e2            beq.n   8003a66 <d_print_comp+0xe72>
+ 8003aa0:      461a            mov     r2, r3
+ 8003aa2:      3301            adds    r3, #1
+ 8003aa4:      e7ed            b.n     8003a82 <d_print_comp+0xe8e>
+ 8003aa6:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8003aaa:      2fff            cmp     r7, #255        ; 0xff
+ 8003aac:      d112            bne.n   8003ad4 <d_print_comp+0xee0>
+ 8003aae:      f04f 0800       mov.w   r8, #0
+ 8003ab2:      4639            mov     r1, r7
+ 8003ab4:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003ab8:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8003abc:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003ac0:      4620            mov     r0, r4
+ 8003ac2:      4798            blx     r3
+ 8003ac4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003ac8:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 8003acc:      3301            adds    r3, #1
+ 8003ace:      4647            mov     r7, r8
+ 8003ad0:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003ad4:      237e            movs    r3, #126        ; 0x7e
+ 8003ad6:      1c7a            adds    r2, r7, #1
+ 8003ad8:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8003adc:      55e3            strb    r3, [r4, r7]
+ 8003ade:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8003ae2:      4631            mov     r1, r6
+ 8003ae4:      68ea            ldr     r2, [r5, #12]
+ 8003ae6:      4620            mov     r0, r4
+ 8003ae8:      f7ff f884       bl      8002bf4 <d_print_comp>
+ 8003aec:      9905            ldr     r1, [sp, #20]
+ 8003aee:      686a            ldr     r2, [r5, #4]
+ 8003af0:      f7ff b973       b.w     8002dda <d_print_comp+0x1e6>
+ 8003af4:      4631            mov     r1, r6
+ 8003af6:      68ea            ldr     r2, [r5, #12]
+ 8003af8:      4620            mov     r0, r4
+ 8003afa:      f7ff f87b       bl      8002bf4 <d_print_comp>
+ 8003afe:      9905            ldr     r1, [sp, #20]
+ 8003b00:      686a            ldr     r2, [r5, #4]
+ 8003b02:      f7ff b96a       b.w     8002dda <d_print_comp+0x1e6>
+ 8003b06:      f8d5 8008       ldr.w   r8, [r5, #8]
+ 8003b0a:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003b0e:      f1b8 0f00       cmp.w   r8, #0
+ 8003b12:      f000 878b       beq.w   8004a2c <d_print_comp+0x1e38>
+ 8003b16:      4e2a            ldr     r6, [pc, #168]  ; (8003bc0 <d_print_comp+0xfcc>)
+ 8003b18:      f04f 0900       mov.w   r9, #0
+ 8003b1c:      f106 0a06       add.w   sl, r6, #6
+ 8003b20:      e015            b.n     8003b4e <d_print_comp+0xf5a>
+ 8003b22:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003b26:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003b2a:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003b2e:      4798            blx     r3
+ 8003b30:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003b34:      3301            adds    r3, #1
+ 8003b36:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003b3a:      2200            movs    r2, #0
+ 8003b3c:      2301            movs    r3, #1
+ 8003b3e:      45b2            cmp     sl, r6
+ 8003b40:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003b44:      54a7            strb    r7, [r4, r2]
+ 8003b46:      f884 7104       strb.w  r7, [r4, #260]  ; 0x104
+ 8003b4a:      f000 868f       beq.w   800486c <d_print_comp+0x1c78>
+ 8003b4e:      2bff            cmp     r3, #255        ; 0xff
+ 8003b50:      4619            mov     r1, r3
+ 8003b52:      4620            mov     r0, r4
+ 8003b54:      f816 7b01       ldrb.w  r7, [r6], #1
+ 8003b58:      d0e3            beq.n   8003b22 <d_print_comp+0xf2e>
+ 8003b5a:      461a            mov     r2, r3
+ 8003b5c:      3301            adds    r3, #1
+ 8003b5e:      e7ee            b.n     8003b3e <d_print_comp+0xf4a>
+ 8003b60:      f8d4 311c       ldr.w   r3, [r4, #284]  ; 0x11c
+ 8003b64:      2b00            cmp     r3, #0
+ 8003b66:      f040 86d1       bne.w   800490c <d_print_comp+0x1d18>
+ 8003b6a:      f105 0108       add.w   r1, r5, #8
+ 8003b6e:      4620            mov     r0, r4
+ 8003b70:      f7fc fe4a       bl      8000808 <d_lookup_template_argument.isra.10>
+ 8003b74:      4602            mov     r2, r0
+ 8003b76:      2800            cmp     r0, #0
+ 8003b78:      f001 8271       beq.w   800505e <d_print_comp+0x246a>
+ 8003b7c:      7803            ldrb    r3, [r0, #0]
+ 8003b7e:      2b2f            cmp     r3, #47 ; 0x2f
+ 8003b80:      f001 8262       beq.w   8005048 <d_print_comp+0x2454>
+ 8003b84:      f8d4 7110       ldr.w   r7, [r4, #272]  ; 0x110
+ 8003b88:      683b            ldr     r3, [r7, #0]
+ 8003b8a:      f8c4 3110       str.w   r3, [r4, #272]  ; 0x110
+ 8003b8e:      4631            mov     r1, r6
+ 8003b90:      4620            mov     r0, r4
+ 8003b92:      f7ff f82f       bl      8002bf4 <d_print_comp>
+ 8003b96:      f8c4 7110       str.w   r7, [r4, #272]  ; 0x110
+ 8003b9a:      9905            ldr     r1, [sp, #20]
+ 8003b9c:      686a            ldr     r2, [r5, #4]
+ 8003b9e:      f7ff b91c       b.w     8002dda <d_print_comp+0x1e6>
+ 8003ba2:      bf00            nop
+ 8003ba4:      08012663        .word   0x08012663
+ 8003ba8:      0801264f        .word   0x0801264f
+ 8003bac:      0801263b        .word   0x0801263b
+ 8003bb0:      0801262c        .word   0x0801262c
+ 8003bb4:      08012607        .word   0x08012607
+ 8003bb8:      080125fb        .word   0x080125fb
+ 8003bbc:      080125f0        .word   0x080125f0
+ 8003bc0:      080127d0        .word   0x080127d0
+ 8003bc4:      2300            movs    r3, #0
+ 8003bc6:      0771            lsls    r1, r6, #29
+ 8003bc8:      f8d4 9114       ldr.w   r9, [r4, #276]  ; 0x114
+ 8003bcc:      f8d4 8144       ldr.w   r8, [r4, #324]  ; 0x144
+ 8003bd0:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 8003bd4:      f8c4 5144       str.w   r5, [r4, #324]  ; 0x144
+ 8003bd8:      68af            ldr     r7, [r5, #8]
+ 8003bda:      d505            bpl.n   8003be8 <d_print_comp+0xff4>
+ 8003bdc:      783b            ldrb    r3, [r7, #0]
+ 8003bde:      b91b            cbnz    r3, 8003be8 <d_print_comp+0xff4>
+ 8003be0:      68fa            ldr     r2, [r7, #12]
+ 8003be2:      2a06            cmp     r2, #6
+ 8003be4:      f001 8433       beq.w   800544e <d_print_comp+0x285a>
+ 8003be8:      463a            mov     r2, r7
+ 8003bea:      4631            mov     r1, r6
+ 8003bec:      4620            mov     r0, r4
+ 8003bee:      f7ff f801       bl      8002bf4 <d_print_comp>
+ 8003bf2:      f894 3104       ldrb.w  r3, [r4, #260]  ; 0x104
+ 8003bf6:      2b3c            cmp     r3, #60 ; 0x3c
+ 8003bf8:      f001 8206       beq.w   8005008 <d_print_comp+0x2414>
+ 8003bfc:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8003c00:      2fff            cmp     r7, #255        ; 0xff
+ 8003c02:      d112            bne.n   8003c2a <d_print_comp+0x1036>
+ 8003c04:      f04f 0a00       mov.w   sl, #0
+ 8003c08:      4639            mov     r1, r7
+ 8003c0a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003c0e:      f884 a0ff       strb.w  sl, [r4, #255]  ; 0xff
+ 8003c12:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003c16:      4620            mov     r0, r4
+ 8003c18:      4798            blx     r3
+ 8003c1a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003c1e:      f8c4 a100       str.w   sl, [r4, #256]  ; 0x100
+ 8003c22:      3301            adds    r3, #1
+ 8003c24:      4657            mov     r7, sl
+ 8003c26:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003c2a:      233c            movs    r3, #60 ; 0x3c
+ 8003c2c:      1c7a            adds    r2, r7, #1
+ 8003c2e:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8003c32:      55e3            strb    r3, [r4, r7]
+ 8003c34:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8003c38:      4631            mov     r1, r6
+ 8003c3a:      68ea            ldr     r2, [r5, #12]
+ 8003c3c:      4620            mov     r0, r4
+ 8003c3e:      f7fe ffd9       bl      8002bf4 <d_print_comp>
+ 8003c42:      f894 3104       ldrb.w  r3, [r4, #260]  ; 0x104
+ 8003c46:      2b3e            cmp     r3, #62 ; 0x3e
+ 8003c48:      f001 806f       beq.w   8004d2a <d_print_comp+0x2136>
+ 8003c4c:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8003c50:      2fff            cmp     r7, #255        ; 0xff
+ 8003c52:      d111            bne.n   8003c78 <d_print_comp+0x1084>
+ 8003c54:      2600            movs    r6, #0
+ 8003c56:      4639            mov     r1, r7
+ 8003c58:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003c5c:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8003c60:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003c64:      4620            mov     r0, r4
+ 8003c66:      4798            blx     r3
+ 8003c68:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003c6c:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8003c70:      3301            adds    r3, #1
+ 8003c72:      4637            mov     r7, r6
+ 8003c74:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003c78:      233e            movs    r3, #62 ; 0x3e
+ 8003c7a:      1c7a            adds    r2, r7, #1
+ 8003c7c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8003c80:      55e3            strb    r3, [r4, r7]
+ 8003c82:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8003c86:      f8c4 9114       str.w   r9, [r4, #276]  ; 0x114
+ 8003c8a:      f8c4 8144       str.w   r8, [r4, #324]  ; 0x144
+ 8003c8e:      9905            ldr     r1, [sp, #20]
+ 8003c90:      686a            ldr     r2, [r5, #4]
+ 8003c92:      f7ff b8a2       b.w     8002dda <d_print_comp+0x1e6>
+ 8003c96:      4fda            ldr     r7, [pc, #872]  ; (8004000 <d_print_comp+0x140c>)
+ 8003c98:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003c9c:      f107 0811       add.w   r8, r7, #17
+ 8003ca0:      f04f 0900       mov.w   r9, #0
+ 8003ca4:      e016            b.n     8003cd4 <d_print_comp+0x10e0>
+ 8003ca6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003caa:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003cae:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003cb2:      4798            blx     r3
+ 8003cb4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003cb8:      3301            adds    r3, #1
+ 8003cba:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003cbe:      2200            movs    r2, #0
+ 8003cc0:      2301            movs    r3, #1
+ 8003cc2:      45b8            cmp     r8, r7
+ 8003cc4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003cc8:      f804 a002       strb.w  sl, [r4, r2]
+ 8003ccc:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003cd0:      f000 84eb       beq.w   80046aa <d_print_comp+0x1ab6>
+ 8003cd4:      2bff            cmp     r3, #255        ; 0xff
+ 8003cd6:      4619            mov     r1, r3
+ 8003cd8:      4620            mov     r0, r4
+ 8003cda:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003cde:      d0e2            beq.n   8003ca6 <d_print_comp+0x10b2>
+ 8003ce0:      461a            mov     r2, r3
+ 8003ce2:      3301            adds    r3, #1
+ 8003ce4:      e7ed            b.n     8003cc2 <d_print_comp+0x10ce>
+ 8003ce6:      4fc7            ldr     r7, [pc, #796]  ; (8004004 <d_print_comp+0x1410>)
+ 8003ce8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003cec:      f107 0815       add.w   r8, r7, #21
+ 8003cf0:      f04f 0900       mov.w   r9, #0
+ 8003cf4:      e016            b.n     8003d24 <d_print_comp+0x1130>
+ 8003cf6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003cfa:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003cfe:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003d02:      4798            blx     r3
+ 8003d04:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003d08:      3301            adds    r3, #1
+ 8003d0a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003d0e:      2200            movs    r2, #0
+ 8003d10:      2301            movs    r3, #1
+ 8003d12:      45b8            cmp     r8, r7
+ 8003d14:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003d18:      f804 a002       strb.w  sl, [r4, r2]
+ 8003d1c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003d20:      f000 84cc       beq.w   80046bc <d_print_comp+0x1ac8>
+ 8003d24:      2bff            cmp     r3, #255        ; 0xff
+ 8003d26:      4619            mov     r1, r3
+ 8003d28:      4620            mov     r0, r4
+ 8003d2a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003d2e:      d0e2            beq.n   8003cf6 <d_print_comp+0x1102>
+ 8003d30:      461a            mov     r2, r3
+ 8003d32:      3301            adds    r3, #1
+ 8003d34:      e7ed            b.n     8003d12 <d_print_comp+0x111e>
+ 8003d36:      4fb4            ldr     r7, [pc, #720]  ; (8004008 <d_print_comp+0x1414>)
+ 8003d38:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003d3c:      f107 0819       add.w   r8, r7, #25
+ 8003d40:      f04f 0900       mov.w   r9, #0
+ 8003d44:      e016            b.n     8003d74 <d_print_comp+0x1180>
+ 8003d46:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003d4a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003d4e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003d52:      4798            blx     r3
+ 8003d54:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003d58:      3301            adds    r3, #1
+ 8003d5a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003d5e:      2200            movs    r2, #0
+ 8003d60:      2301            movs    r3, #1
+ 8003d62:      45b8            cmp     r8, r7
+ 8003d64:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003d68:      f804 a002       strb.w  sl, [r4, r2]
+ 8003d6c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003d70:      f000 8489       beq.w   8004686 <d_print_comp+0x1a92>
+ 8003d74:      2bff            cmp     r3, #255        ; 0xff
+ 8003d76:      4619            mov     r1, r3
+ 8003d78:      4620            mov     r0, r4
+ 8003d7a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003d7e:      d0e2            beq.n   8003d46 <d_print_comp+0x1152>
+ 8003d80:      461a            mov     r2, r3
+ 8003d82:      3301            adds    r3, #1
+ 8003d84:      e7ed            b.n     8003d62 <d_print_comp+0x116e>
+ 8003d86:      4fa1            ldr     r7, [pc, #644]  ; (800400c <d_print_comp+0x1418>)
+ 8003d88:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003d8c:      f107 0816       add.w   r8, r7, #22
+ 8003d90:      f04f 0900       mov.w   r9, #0
+ 8003d94:      e016            b.n     8003dc4 <d_print_comp+0x11d0>
+ 8003d96:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003d9a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003d9e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003da2:      4798            blx     r3
+ 8003da4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003da8:      3301            adds    r3, #1
+ 8003daa:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003dae:      2200            movs    r2, #0
+ 8003db0:      2301            movs    r3, #1
+ 8003db2:      45b8            cmp     r8, r7
+ 8003db4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003db8:      f804 a002       strb.w  sl, [r4, r2]
+ 8003dbc:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003dc0:      f000 846a       beq.w   8004698 <d_print_comp+0x1aa4>
+ 8003dc4:      2bff            cmp     r3, #255        ; 0xff
+ 8003dc6:      4619            mov     r1, r3
+ 8003dc8:      4620            mov     r0, r4
+ 8003dca:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003dce:      d0e2            beq.n   8003d96 <d_print_comp+0x11a2>
+ 8003dd0:      461a            mov     r2, r3
+ 8003dd2:      3301            adds    r3, #1
+ 8003dd4:      e7ed            b.n     8003db2 <d_print_comp+0x11be>
+ 8003dd6:      4f8e            ldr     r7, [pc, #568]  ; (8004010 <d_print_comp+0x141c>)
+ 8003dd8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003ddc:      f107 0813       add.w   r8, r7, #19
+ 8003de0:      f04f 0900       mov.w   r9, #0
+ 8003de4:      e016            b.n     8003e14 <d_print_comp+0x1220>
+ 8003de6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003dea:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003dee:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003df2:      4798            blx     r3
+ 8003df4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003df8:      3301            adds    r3, #1
+ 8003dfa:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003dfe:      2200            movs    r2, #0
+ 8003e00:      2301            movs    r3, #1
+ 8003e02:      45b8            cmp     r8, r7
+ 8003e04:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003e08:      f804 a002       strb.w  sl, [r4, r2]
+ 8003e0c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003e10:      f000 8427       beq.w   8004662 <d_print_comp+0x1a6e>
+ 8003e14:      2bff            cmp     r3, #255        ; 0xff
+ 8003e16:      4619            mov     r1, r3
+ 8003e18:      4620            mov     r0, r4
+ 8003e1a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003e1e:      d0e2            beq.n   8003de6 <d_print_comp+0x11f2>
+ 8003e20:      461a            mov     r2, r3
+ 8003e22:      3301            adds    r3, #1
+ 8003e24:      e7ed            b.n     8003e02 <d_print_comp+0x120e>
+ 8003e26:      4f7b            ldr     r7, [pc, #492]  ; (8004014 <d_print_comp+0x1420>)
+ 8003e28:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003e2c:      f107 080f       add.w   r8, r7, #15
+ 8003e30:      f04f 0900       mov.w   r9, #0
+ 8003e34:      e016            b.n     8003e64 <d_print_comp+0x1270>
+ 8003e36:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003e3a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003e3e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003e42:      4798            blx     r3
+ 8003e44:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003e48:      3301            adds    r3, #1
+ 8003e4a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003e4e:      2200            movs    r2, #0
+ 8003e50:      2301            movs    r3, #1
+ 8003e52:      45b8            cmp     r8, r7
+ 8003e54:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003e58:      f804 a002       strb.w  sl, [r4, r2]
+ 8003e5c:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003e60:      f000 8408       beq.w   8004674 <d_print_comp+0x1a80>
+ 8003e64:      2bff            cmp     r3, #255        ; 0xff
+ 8003e66:      4619            mov     r1, r3
+ 8003e68:      4620            mov     r0, r4
+ 8003e6a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003e6e:      d0e2            beq.n   8003e36 <d_print_comp+0x1242>
+ 8003e70:      461a            mov     r2, r3
+ 8003e72:      3301            adds    r3, #1
+ 8003e74:      e7ed            b.n     8003e52 <d_print_comp+0x125e>
+ 8003e76:      4f68            ldr     r7, [pc, #416]  ; (8004018 <d_print_comp+0x1424>)
+ 8003e78:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003e7c:      f107 081a       add.w   r8, r7, #26
+ 8003e80:      f04f 0900       mov.w   r9, #0
+ 8003e84:      e016            b.n     8003eb4 <d_print_comp+0x12c0>
+ 8003e86:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003e8a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003e8e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003e92:      4798            blx     r3
+ 8003e94:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003e98:      3301            adds    r3, #1
+ 8003e9a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003e9e:      2200            movs    r2, #0
+ 8003ea0:      2301            movs    r3, #1
+ 8003ea2:      45b8            cmp     r8, r7
+ 8003ea4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003ea8:      f804 a002       strb.w  sl, [r4, r2]
+ 8003eac:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003eb0:      f000 83c5       beq.w   800463e <d_print_comp+0x1a4a>
+ 8003eb4:      2bff            cmp     r3, #255        ; 0xff
+ 8003eb6:      4619            mov     r1, r3
+ 8003eb8:      4620            mov     r0, r4
+ 8003eba:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003ebe:      d0e2            beq.n   8003e86 <d_print_comp+0x1292>
+ 8003ec0:      461a            mov     r2, r3
+ 8003ec2:      3301            adds    r3, #1
+ 8003ec4:      e7ed            b.n     8003ea2 <d_print_comp+0x12ae>
+ 8003ec6:      4f55            ldr     r7, [pc, #340]  ; (800401c <d_print_comp+0x1428>)
+ 8003ec8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003ecc:      f107 0811       add.w   r8, r7, #17
+ 8003ed0:      f04f 0900       mov.w   r9, #0
+ 8003ed4:      e016            b.n     8003f04 <d_print_comp+0x1310>
+ 8003ed6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8003eda:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8003ede:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8003ee2:      4798            blx     r3
+ 8003ee4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8003ee8:      3301            adds    r3, #1
+ 8003eea:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8003eee:      2200            movs    r2, #0
+ 8003ef0:      2301            movs    r3, #1
+ 8003ef2:      45b8            cmp     r8, r7
+ 8003ef4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8003ef8:      f804 a002       strb.w  sl, [r4, r2]
+ 8003efc:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8003f00:      f000 83a6       beq.w   8004650 <d_print_comp+0x1a5c>
+ 8003f04:      2bff            cmp     r3, #255        ; 0xff
+ 8003f06:      4619            mov     r1, r3
+ 8003f08:      4620            mov     r0, r4
+ 8003f0a:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8003f0e:      d0e2            beq.n   8003ed6 <d_print_comp+0x12e2>
+ 8003f10:      461a            mov     r2, r3
+ 8003f12:      3301            adds    r3, #1
+ 8003f14:      e7ed            b.n     8003ef2 <d_print_comp+0x12fe>
+ 8003f16:      f8d4 711c       ldr.w   r7, [r4, #284]  ; 0x11c
+ 8003f1a:      f8d5 9008       ldr.w   r9, [r5, #8]
+ 8003f1e:      2f00            cmp     r7, #0
+ 8003f20:      f040 85ae       bne.w   8004a80 <d_print_comp+0x1e8c>
+ 8003f24:      f899 2000       ldrb.w  r2, [r9]
+ 8003f28:      2a05            cmp     r2, #5
+ 8003f2a:      f001 8180       beq.w   800522e <d_print_comp+0x263a>
+ 8003f2e:      f899 3000       ldrb.w  r3, [r9]
+ 8003f32:      2b23            cmp     r3, #35 ; 0x23
+ 8003f34:      f000 85a0       beq.w   8004a78 <d_print_comp+0x1e84>
+ 8003f38:      782a            ldrb    r2, [r5, #0]
+ 8003f3a:      429a            cmp     r2, r3
+ 8003f3c:      f000 859c       beq.w   8004a78 <d_print_comp+0x1e84>
+ 8003f40:      2b24            cmp     r3, #36 ; 0x24
+ 8003f42:      f001 8162       beq.w   800520a <d_print_comp+0x2616>
+ 8003f46:      f8d4 c114       ldr.w   ip, [r4, #276]  ; 0x114
+ 8003f4a:      46a9            mov     r9, r5
+ 8003f4c:      ab18            add     r3, sp, #96     ; 0x60
+ 8003f4e:      f8d4 2110       ldr.w   r2, [r4, #272]  ; 0x110
+ 8003f52:      f843 cd40       str.w   ip, [r3, #-64]!
+ 8003f56:      2100            movs    r1, #0
+ 8003f58:      e9cd 120a       strd    r1, r2, [sp, #40]       ; 0x28
+ 8003f5c:      f8cd 9024       str.w   r9, [sp, #36]   ; 0x24
+ 8003f60:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 8003f64:      f8d9 2008       ldr.w   r2, [r9, #8]
+ 8003f68:      e010            b.n     8003f8c <d_print_comp+0x1398>
+ 8003f6a:      2200            movs    r2, #0
+ 8003f6c:      ab18            add     r3, sp, #96     ; 0x60
+ 8003f6e:      f8d4 1114       ldr.w   r1, [r4, #276]  ; 0x114
+ 8003f72:      f843 1d40       str.w   r1, [r3, #-64]!
+ 8003f76:      f8d4 1110       ldr.w   r1, [r4, #272]  ; 0x110
+ 8003f7a:      9509            str     r5, [sp, #36]   ; 0x24
+ 8003f7c:      2000            movs    r0, #0
+ 8003f7e:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 8003f82:      e9cd 010a       strd    r0, r1, [sp, #40]       ; 0x28
+ 8003f86:      46a9            mov     r9, r5
+ 8003f88:      2a00            cmp     r2, #0
+ 8003f8a:      d0eb            beq.n   8003f64 <d_print_comp+0x1370>
+ 8003f8c:      4631            mov     r1, r6
+ 8003f8e:      4620            mov     r0, r4
+ 8003f90:      f7fe fe30       bl      8002bf4 <d_print_comp>
+ 8003f94:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 8003f96:      b923            cbnz    r3, 8003fa2 <d_print_comp+0x13ae>
+ 8003f98:      464a            mov     r2, r9
+ 8003f9a:      4631            mov     r1, r6
+ 8003f9c:      4620            mov     r0, r4
+ 8003f9e:      f001 fcbf       bl      8005920 <d_print_mod>
+ 8003fa2:      9b08            ldr     r3, [sp, #32]
+ 8003fa4:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 8003fa8:      b10f            cbz     r7, 8003fae <d_print_comp+0x13ba>
+ 8003faa:      f8c4 8110       str.w   r8, [r4, #272]  ; 0x110
+ 8003fae:      9905            ldr     r1, [sp, #20]
+ 8003fb0:      686a            ldr     r2, [r5, #4]
+ 8003fb2:      f7fe bf12       b.w     8002dda <d_print_comp+0x1e6>
+ 8003fb6:      f8d4 c114       ldr.w   ip, [r4, #276]  ; 0x114
+ 8003fba:      4663            mov     r3, ip
+ 8003fbc:      f1bc 0f00       cmp.w   ip, #0
+ 8003fc0:      d0c3            beq.n   8003f4a <d_print_comp+0x1356>
+ 8003fc2:      6899            ldr     r1, [r3, #8]
+ 8003fc4:      b951            cbnz    r1, 8003fdc <d_print_comp+0x13e8>
+ 8003fc6:      685a            ldr     r2, [r3, #4]
+ 8003fc8:      7812            ldrb    r2, [r2, #0]
+ 8003fca:      f1a2 0e19       sub.w   lr, r2, #25
+ 8003fce:      f1be 0f02       cmp.w   lr, #2
+ 8003fd2:      f201 80fc       bhi.w   80051ce <d_print_comp+0x25da>
+ 8003fd6:      4290            cmp     r0, r2
+ 8003fd8:      f001 80f0       beq.w   80051bc <d_print_comp+0x25c8>
+ 8003fdc:      681b            ldr     r3, [r3, #0]
+ 8003fde:      2b00            cmp     r3, #0
+ 8003fe0:      d1ef            bne.n   8003fc2 <d_print_comp+0x13ce>
+ 8003fe2:      e7b2            b.n     8003f4a <d_print_comp+0x1356>
+ 8003fe4:      e9d5 6702       ldrd    r6, r7, [r5, #8]
+ 8003fe8:      2f00            cmp     r7, #0
+ 8003fea:      f43e aef6       beq.w   8002dda <d_print_comp+0x1e6>
+ 8003fee:      4437            add     r7, r6
+ 8003ff0:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8003ff4:      3f01            subs    r7, #1
+ 8003ff6:      3e01            subs    r6, #1
+ 8003ff8:      f04f 0800       mov.w   r8, #0
+ 8003ffc:      e027            b.n     800404e <d_print_comp+0x145a>
+ 8003ffe:      bf00            nop
+ 8004000:      08012707        .word   0x08012707
+ 8004004:      080126ef        .word   0x080126ef
+ 8004008:      080126d3        .word   0x080126d3
+ 800400c:      080126bb        .word   0x080126bb
+ 8004010:      080126a7        .word   0x080126a7
+ 8004014:      08012697        .word   0x08012697
+ 8004018:      0801267b        .word   0x0801267b
+ 800401c:      08012667        .word   0x08012667
+ 8004020:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004024:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004028:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 800402c:      4798            blx     r3
+ 800402e:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004032:      3301            adds    r3, #1
+ 8004034:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004038:      2200            movs    r2, #0
+ 800403a:      2301            movs    r3, #1
+ 800403c:      42b7            cmp     r7, r6
+ 800403e:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004042:      f804 9002       strb.w  r9, [r4, r2]
+ 8004046:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 800404a:      f000 83ce       beq.w   80047ea <d_print_comp+0x1bf6>
+ 800404e:      2bff            cmp     r3, #255        ; 0xff
+ 8004050:      4619            mov     r1, r3
+ 8004052:      4620            mov     r0, r4
+ 8004054:      f816 9f01       ldrb.w  r9, [r6, #1]!
+ 8004058:      d0e2            beq.n   8004020 <d_print_comp+0x142c>
+ 800405a:      461a            mov     r2, r3
+ 800405c:      3301            adds    r3, #1
+ 800405e:      e7ed            b.n     800403c <d_print_comp+0x1448>
+ 8004060:      4631            mov     r1, r6
+ 8004062:      68aa            ldr     r2, [r5, #8]
+ 8004064:      4620            mov     r0, r4
+ 8004066:      f7fe fdc5       bl      8002bf4 <d_print_comp>
+ 800406a:      9905            ldr     r1, [sp, #20]
+ 800406c:      686a            ldr     r2, [r5, #4]
+ 800406e:      f7fe beb4       b.w     8002dda <d_print_comp+0x1e6>
+ 8004072:      f016 0604       ands.w  r6, r6, #4
+ 8004076:      68a8            ldr     r0, [r5, #8]
+ 8004078:      f040 8505       bne.w   8004a86 <d_print_comp+0x1e92>
+ 800407c:      e9d0 7300       ldrd    r7, r3, [r0]
+ 8004080:      2b00            cmp     r3, #0
+ 8004082:      f43e aeaa       beq.w   8002dda <d_print_comp+0x1e6>
+ 8004086:      eb07 0803       add.w   r8, r7, r3
+ 800408a:      f108 38ff       add.w   r8, r8, #4294967295     ; 0xffffffff
+ 800408e:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004092:      3f01            subs    r7, #1
+ 8004094:      46b1            mov     r9, r6
+ 8004096:      e015            b.n     80040c4 <d_print_comp+0x14d0>
+ 8004098:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800409c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80040a0:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80040a4:      4798            blx     r3
+ 80040a6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80040aa:      3301            adds    r3, #1
+ 80040ac:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80040b0:      2200            movs    r2, #0
+ 80040b2:      2301            movs    r3, #1
+ 80040b4:      45b8            cmp     r8, r7
+ 80040b6:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80040ba:      54a6            strb    r6, [r4, r2]
+ 80040bc:      f884 6104       strb.w  r6, [r4, #260]  ; 0x104
+ 80040c0:      f000 8545       beq.w   8004b4e <d_print_comp+0x1f5a>
+ 80040c4:      2bff            cmp     r3, #255        ; 0xff
+ 80040c6:      4619            mov     r1, r3
+ 80040c8:      4620            mov     r0, r4
+ 80040ca:      f817 6f01       ldrb.w  r6, [r7, #1]!
+ 80040ce:      d0e3            beq.n   8004098 <d_print_comp+0x14a4>
+ 80040d0:      461a            mov     r2, r3
+ 80040d2:      3301            adds    r3, #1
+ 80040d4:      e7ee            b.n     80040b4 <d_print_comp+0x14c0>
+ 80040d6:      f8d5 8008       ldr.w   r8, [r5, #8]
+ 80040da:      f8d4 3114       ldr.w   r3, [r4, #276]  ; 0x114
+ 80040de:      9302            str     r3, [sp, #8]
+ 80040e0:      2200            movs    r2, #0
+ 80040e2:      f8c4 2114       str.w   r2, [r4, #276]  ; 0x114
+ 80040e6:      f1b8 0f00       cmp.w   r8, #0
+ 80040ea:      d025            beq.n   8004138 <d_print_comp+0x1544>
+ 80040ec:      f8d4 3110       ldr.w   r3, [r4, #272]  ; 0x110
+ 80040f0:      9301            str     r3, [sp, #4]
+ 80040f2:      f10d 0920       add.w   r9, sp, #32
+ 80040f6:      4623            mov     r3, r4
+ 80040f8:      4617            mov     r7, r2
+ 80040fa:      4644            mov     r4, r8
+ 80040fc:      4692            mov     sl, r2
+ 80040fe:      4649            mov     r1, r9
+ 8004100:      46ab            mov     fp, r5
+ 8004102:      4698            mov     r8, r3
+ 8004104:      7825            ldrb    r5, [r4, #0]
+ 8004106:      9b01            ldr     r3, [sp, #4]
+ 8004108:      600a            str     r2, [r1, #0]
+ 800410a:      4628            mov     r0, r5
+ 800410c:      e9c1 4a01       strd    r4, sl, [r1, #4]
+ 8004110:      60cb            str     r3, [r1, #12]
+ 8004112:      3701            adds    r7, #1
+ 8004114:      460a            mov     r2, r1
+ 8004116:      f7fc f97f       bl      8000418 <is_fnqual_component_type>
+ 800411a:      2800            cmp     r0, #0
+ 800411c:      f000 87c8       beq.w   80050b0 <d_print_comp+0x24bc>
+ 8004120:      68a4            ldr     r4, [r4, #8]
+ 8004122:      2c00            cmp     r4, #0
+ 8004124:      f001 8057       beq.w   80051d6 <d_print_comp+0x25e2>
+ 8004128:      2f04            cmp     r7, #4
+ 800412a:      f101 0110       add.w   r1, r1, #16
+ 800412e:      d1e9            bne.n   8004104 <d_print_comp+0x1510>
+ 8004130:      4644            mov     r4, r8
+ 8004132:      465d            mov     r5, fp
+ 8004134:      f8c8 2114       str.w   r2, [r8, #276]  ; 0x114
+ 8004138:      2301            movs    r3, #1
+ 800413a:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 800413e:      9905            ldr     r1, [sp, #20]
+ 8004140:      686a            ldr     r2, [r5, #4]
+ 8004142:      f7fe be4a       b.w     8002dda <d_print_comp+0x1e6>
+ 8004146:      f016 0604       ands.w  r6, r6, #4
+ 800414a:      68af            ldr     r7, [r5, #8]
+ 800414c:      f040 8405       bne.w   800495a <d_print_comp+0x1d66>
+ 8004150:      68eb            ldr     r3, [r5, #12]
+ 8004152:      2b00            cmp     r3, #0
+ 8004154:      f43e ae41       beq.w   8002dda <d_print_comp+0x1e6>
+ 8004158:      eb07 0803       add.w   r8, r7, r3
+ 800415c:      f108 38ff       add.w   r8, r8, #4294967295     ; 0xffffffff
+ 8004160:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004164:      3f01            subs    r7, #1
+ 8004166:      46b1            mov     r9, r6
+ 8004168:      e015            b.n     8004196 <d_print_comp+0x15a2>
+ 800416a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800416e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004172:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8004176:      4798            blx     r3
+ 8004178:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800417c:      3301            adds    r3, #1
+ 800417e:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004182:      2200            movs    r2, #0
+ 8004184:      2301            movs    r3, #1
+ 8004186:      45b8            cmp     r8, r7
+ 8004188:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800418c:      54a6            strb    r6, [r4, r2]
+ 800418e:      f884 6104       strb.w  r6, [r4, #260]  ; 0x104
+ 8004192:      f000 84e0       beq.w   8004b56 <d_print_comp+0x1f62>
+ 8004196:      2bff            cmp     r3, #255        ; 0xff
+ 8004198:      4619            mov     r1, r3
+ 800419a:      4620            mov     r0, r4
+ 800419c:      f817 6f01       ldrb.w  r6, [r7, #1]!
+ 80041a0:      d0e3            beq.n   800416a <d_print_comp+0x1576>
+ 80041a2:      461a            mov     r2, r3
+ 80041a4:      3301            adds    r3, #1
+ 80041a6:      e7ee            b.n     8004186 <d_print_comp+0x1592>
+ 80041a8:      68aa            ldr     r2, [r5, #8]
+ 80041aa:      4631            mov     r1, r6
+ 80041ac:      4620            mov     r0, r4
+ 80041ae:      f7fe fd21       bl      8002bf4 <d_print_comp>
+ 80041b2:      f016 0904       ands.w  r9, r6, #4
+ 80041b6:      f000 8681       beq.w   8004ebc <d_print_comp+0x22c8>
+ 80041ba:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80041be:      2fff            cmp     r7, #255        ; 0xff
+ 80041c0:      d112            bne.n   80041e8 <d_print_comp+0x15f4>
+ 80041c2:      f04f 0800       mov.w   r8, #0
+ 80041c6:      4639            mov     r1, r7
+ 80041c8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80041cc:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80041d0:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80041d4:      4620            mov     r0, r4
+ 80041d6:      4798            blx     r3
+ 80041d8:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80041dc:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 80041e0:      3301            adds    r3, #1
+ 80041e2:      4647            mov     r7, r8
+ 80041e4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80041e8:      232e            movs    r3, #46 ; 0x2e
+ 80041ea:      1c7a            adds    r2, r7, #1
+ 80041ec:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80041f0:      55e3            strb    r3, [r4, r7]
+ 80041f2:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80041f6:      68ef            ldr     r7, [r5, #12]
+ 80041f8:      783b            ldrb    r3, [r7, #0]
+ 80041fa:      2b46            cmp     r3, #70 ; 0x46
+ 80041fc:      f000 873a       beq.w   8005074 <d_print_comp+0x2480>
+ 8004200:      463a            mov     r2, r7
+ 8004202:      4631            mov     r1, r6
+ 8004204:      4620            mov     r0, r4
+ 8004206:      f7fe fcf5       bl      8002bf4 <d_print_comp>
+ 800420a:      9905            ldr     r1, [sp, #20]
+ 800420c:      686a            ldr     r2, [r5, #4]
+ 800420e:      f7fe bde4       b.w     8002dda <d_print_comp+0x1e6>
+ 8004212:      2301            movs    r3, #1
+ 8004214:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 8004218:      686a            ldr     r2, [r5, #4]
+ 800421a:      f7fe bdde       b.w     8002dda <d_print_comp+0x1e6>
+ 800421e:      3701            adds    r7, #1
+ 8004220:      454f            cmp     r7, r9
+ 8004222:      f47e ae2b       bne.w   8002e7c <d_print_comp+0x288>
+ 8004226:      9d03            ldr     r5, [sp, #12]
+ 8004228:      9905            ldr     r1, [sp, #20]
+ 800422a:      686a            ldr     r2, [r5, #4]
+ 800422c:      f7fe bdd5       b.w     8002dda <d_print_comp+0x1e6>
+ 8004230:      4631            mov     r1, r6
+ 8004232:      68aa            ldr     r2, [r5, #8]
+ 8004234:      4620            mov     r0, r4
+ 8004236:      f7fe fcdd       bl      8002bf4 <d_print_comp>
+ 800423a:      9905            ldr     r1, [sp, #20]
+ 800423c:      686a            ldr     r2, [r5, #4]
+ 800423e:      f7fe bdcc       b.w     8002dda <d_print_comp+0x1e6>
+ 8004242:      4631            mov     r1, r6
+ 8004244:      68aa            ldr     r2, [r5, #8]
+ 8004246:      4620            mov     r0, r4
+ 8004248:      f7fe fcd4       bl      8002bf4 <d_print_comp>
+ 800424c:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004250:      2fff            cmp     r7, #255        ; 0xff
+ 8004252:      d111            bne.n   8004278 <d_print_comp+0x1684>
+ 8004254:      2600            movs    r6, #0
+ 8004256:      4639            mov     r1, r7
+ 8004258:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800425c:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8004260:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004264:      4620            mov     r0, r4
+ 8004266:      4798            blx     r3
+ 8004268:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800426c:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8004270:      3301            adds    r3, #1
+ 8004272:      4637            mov     r7, r6
+ 8004274:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004278:      1c7a            adds    r2, r7, #1
+ 800427a:      2329            movs    r3, #41 ; 0x29
+ 800427c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004280:      55e3            strb    r3, [r4, r7]
+ 8004282:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004286:      686a            ldr     r2, [r5, #4]
+ 8004288:      9905            ldr     r1, [sp, #20]
+ 800428a:      f7fe bda6       b.w     8002dda <d_print_comp+0x1e6>
+ 800428e:      f8d4 311c       ldr.w   r3, [r4, #284]  ; 0x11c
+ 8004292:      68aa            ldr     r2, [r5, #8]
+ 8004294:      4fd3            ldr     r7, [pc, #844]  ; (80045e4 <d_print_comp+0x19f0>)
+ 8004296:      3301            adds    r3, #1
+ 8004298:      4631            mov     r1, r6
+ 800429a:      f8c4 311c       str.w   r3, [r4, #284]  ; 0x11c
+ 800429e:      4620            mov     r0, r4
+ 80042a0:      f7fe fca8       bl      8002bf4 <d_print_comp>
+ 80042a4:      f8d4 211c       ldr.w   r2, [r4, #284]  ; 0x11c
+ 80042a8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80042ac:      3a01            subs    r2, #1
+ 80042ae:      f8c4 211c       str.w   r2, [r4, #284]  ; 0x11c
+ 80042b2:      1cbe            adds    r6, r7, #2
+ 80042b4:      f04f 0800       mov.w   r8, #0
+ 80042b8:      e015            b.n     80042e6 <d_print_comp+0x16f2>
+ 80042ba:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80042be:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80042c2:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80042c6:      4798            blx     r3
+ 80042c8:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80042cc:      3301            adds    r3, #1
+ 80042ce:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80042d2:      2200            movs    r2, #0
+ 80042d4:      2301            movs    r3, #1
+ 80042d6:      42b7            cmp     r7, r6
+ 80042d8:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80042dc:      f804 9002       strb.w  r9, [r4, r2]
+ 80042e0:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 80042e4:      d011            beq.n   800430a <d_print_comp+0x1716>
+ 80042e6:      2bff            cmp     r3, #255        ; 0xff
+ 80042e8:      4619            mov     r1, r3
+ 80042ea:      4620            mov     r0, r4
+ 80042ec:      f817 9b01       ldrb.w  r9, [r7], #1
+ 80042f0:      d0e3            beq.n   80042ba <d_print_comp+0x16c6>
+ 80042f2:      461a            mov     r2, r3
+ 80042f4:      3301            adds    r3, #1
+ 80042f6:      e7ee            b.n     80042d6 <d_print_comp+0x16e2>
+ 80042f8:      4631            mov     r1, r6
+ 80042fa:      68aa            ldr     r2, [r5, #8]
+ 80042fc:      4620            mov     r0, r4
+ 80042fe:      f7fe fc79       bl      8002bf4 <d_print_comp>
+ 8004302:      9905            ldr     r1, [sp, #20]
+ 8004304:      686a            ldr     r2, [r5, #4]
+ 8004306:      f7fe bd68       b.w     8002dda <d_print_comp+0x1e6>
+ 800430a:      68ea            ldr     r2, [r5, #12]
+ 800430c:      49b6            ldr     r1, [pc, #728]  ; (80045e8 <d_print_comp+0x19f4>)
+ 800430e:      3201            adds    r2, #1
+ 8004310:      a808            add     r0, sp, #32
+ 8004312:      f00a faa3       bl      800e85c <sprintf>
+ 8004316:      a808            add     r0, sp, #32
+ 8004318:      f002 fd5c       bl      8006dd4 <strlen>
+ 800431c:      b328            cbz     r0, 800436a <d_print_comp+0x1776>
+ 800431e:      ae08            add     r6, sp, #32
+ 8004320:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004324:      1837            adds    r7, r6, r0
+ 8004326:      f04f 0800       mov.w   r8, #0
+ 800432a:      e015            b.n     8004358 <d_print_comp+0x1764>
+ 800432c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004330:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004334:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004338:      4798            blx     r3
+ 800433a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800433e:      3301            adds    r3, #1
+ 8004340:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004344:      2200            movs    r2, #0
+ 8004346:      2301            movs    r3, #1
+ 8004348:      42be            cmp     r6, r7
+ 800434a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800434e:      f804 9002       strb.w  r9, [r4, r2]
+ 8004352:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 8004356:      d00a            beq.n   800436e <d_print_comp+0x177a>
+ 8004358:      2bff            cmp     r3, #255        ; 0xff
+ 800435a:      4619            mov     r1, r3
+ 800435c:      4620            mov     r0, r4
+ 800435e:      f816 9b01       ldrb.w  r9, [r6], #1
+ 8004362:      d0e3            beq.n   800432c <d_print_comp+0x1738>
+ 8004364:      461a            mov     r2, r3
+ 8004366:      3301            adds    r3, #1
+ 8004368:      e7ee            b.n     8004348 <d_print_comp+0x1754>
+ 800436a:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800436e:      2bff            cmp     r3, #255        ; 0xff
+ 8004370:      d110            bne.n   8004394 <d_print_comp+0x17a0>
+ 8004372:      2600            movs    r6, #0
+ 8004374:      4619            mov     r1, r3
+ 8004376:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 800437a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800437e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004382:      4620            mov     r0, r4
+ 8004384:      4798            blx     r3
+ 8004386:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800438a:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 800438e:      3301            adds    r3, #1
+ 8004390:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004394:      f8d4 2100       ldr.w   r2, [r4, #256]  ; 0x100
+ 8004398:      9905            ldr     r1, [sp, #20]
+ 800439a:      1c50            adds    r0, r2, #1
+ 800439c:      237d            movs    r3, #125        ; 0x7d
+ 800439e:      f8c4 0100       str.w   r0, [r4, #256]  ; 0x100
+ 80043a2:      54a3            strb    r3, [r4, r2]
+ 80043a4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80043a8:      686a            ldr     r2, [r5, #4]
+ 80043aa:      f7fe bd16       b.w     8002dda <d_print_comp+0x1e6>
+ 80043ae:      4631            mov     r1, r6
+ 80043b0:      68aa            ldr     r2, [r5, #8]
+ 80043b2:      4620            mov     r0, r4
+ 80043b4:      f7fe fc1e       bl      8002bf4 <d_print_comp>
+ 80043b8:      9905            ldr     r1, [sp, #20]
+ 80043ba:      686a            ldr     r2, [r5, #4]
+ 80043bc:      f7fe bd0d       b.w     8002dda <d_print_comp+0x1e6>
+ 80043c0:      68aa            ldr     r2, [r5, #8]
+ 80043c2:      4989            ldr     r1, [pc, #548]  ; (80045e8 <d_print_comp+0x19f4>)
+ 80043c4:      3201            adds    r2, #1
+ 80043c6:      a808            add     r0, sp, #32
+ 80043c8:      f00a fa48       bl      800e85c <sprintf>
+ 80043cc:      a808            add     r0, sp, #32
+ 80043ce:      f002 fd01       bl      8006dd4 <strlen>
+ 80043d2:      2800            cmp     r0, #0
+ 80043d4:      d071            beq.n   80044ba <d_print_comp+0x18c6>
+ 80043d6:      ae08            add     r6, sp, #32
+ 80043d8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80043dc:      1837            adds    r7, r6, r0
+ 80043de:      f04f 0800       mov.w   r8, #0
+ 80043e2:      e015            b.n     8004410 <d_print_comp+0x181c>
+ 80043e4:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80043e8:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80043ec:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80043f0:      4798            blx     r3
+ 80043f2:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80043f6:      3301            adds    r3, #1
+ 80043f8:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80043fc:      2200            movs    r2, #0
+ 80043fe:      2301            movs    r3, #1
+ 8004400:      42b7            cmp     r7, r6
+ 8004402:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004406:      f804 9002       strb.w  r9, [r4, r2]
+ 800440a:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 800440e:      d056            beq.n   80044be <d_print_comp+0x18ca>
+ 8004410:      2bff            cmp     r3, #255        ; 0xff
+ 8004412:      4619            mov     r1, r3
+ 8004414:      4620            mov     r0, r4
+ 8004416:      f816 9b01       ldrb.w  r9, [r6], #1
+ 800441a:      d0e3            beq.n   80043e4 <d_print_comp+0x17f0>
+ 800441c:      461a            mov     r2, r3
+ 800441e:      3301            adds    r3, #1
+ 8004420:      e7ee            b.n     8004400 <d_print_comp+0x180c>
+ 8004422:      4631            mov     r1, r6
+ 8004424:      68ea            ldr     r2, [r5, #12]
+ 8004426:      4620            mov     r0, r4
+ 8004428:      f7fe fbe4       bl      8002bf4 <d_print_comp>
+ 800442c:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004430:      2fff            cmp     r7, #255        ; 0xff
+ 8004432:      d111            bne.n   8004458 <d_print_comp+0x1864>
+ 8004434:      2600            movs    r6, #0
+ 8004436:      4639            mov     r1, r7
+ 8004438:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800443c:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8004440:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004444:      4620            mov     r0, r4
+ 8004446:      4798            blx     r3
+ 8004448:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800444c:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8004450:      3301            adds    r3, #1
+ 8004452:      4637            mov     r7, r6
+ 8004454:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004458:      1c7a            adds    r2, r7, #1
+ 800445a:      235d            movs    r3, #93 ; 0x5d
+ 800445c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004460:      55e3            strb    r3, [r4, r7]
+ 8004462:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004466:      686a            ldr     r2, [r5, #4]
+ 8004468:      9905            ldr     r1, [sp, #20]
+ 800446a:      f7fe bcb6       b.w     8002dda <d_print_comp+0x1e6>
+ 800446e:      4631            mov     r1, r6
+ 8004470:      68ea            ldr     r2, [r5, #12]
+ 8004472:      4620            mov     r0, r4
+ 8004474:      f7fe fbbe       bl      8002bf4 <d_print_comp>
+ 8004478:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 800447c:      2fff            cmp     r7, #255        ; 0xff
+ 800447e:      d111            bne.n   80044a4 <d_print_comp+0x18b0>
+ 8004480:      2600            movs    r6, #0
+ 8004482:      4639            mov     r1, r7
+ 8004484:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004488:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 800448c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004490:      4620            mov     r0, r4
+ 8004492:      4798            blx     r3
+ 8004494:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004498:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 800449c:      3301            adds    r3, #1
+ 800449e:      4637            mov     r7, r6
+ 80044a0:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80044a4:      1c7a            adds    r2, r7, #1
+ 80044a6:      235d            movs    r3, #93 ; 0x5d
+ 80044a8:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80044ac:      55e3            strb    r3, [r4, r7]
+ 80044ae:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80044b2:      686a            ldr     r2, [r5, #4]
+ 80044b4:      9905            ldr     r1, [sp, #20]
+ 80044b6:      f7fe bc90       b.w     8002dda <d_print_comp+0x1e6>
+ 80044ba:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80044be:      2bff            cmp     r3, #255        ; 0xff
+ 80044c0:      d110            bne.n   80044e4 <d_print_comp+0x18f0>
+ 80044c2:      2600            movs    r6, #0
+ 80044c4:      4619            mov     r1, r3
+ 80044c6:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 80044ca:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80044ce:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80044d2:      4620            mov     r0, r4
+ 80044d4:      4798            blx     r3
+ 80044d6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80044da:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 80044de:      3301            adds    r3, #1
+ 80044e0:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80044e4:      f8d4 2100       ldr.w   r2, [r4, #256]  ; 0x100
+ 80044e8:      9905            ldr     r1, [sp, #20]
+ 80044ea:      1c50            adds    r0, r2, #1
+ 80044ec:      237d            movs    r3, #125        ; 0x7d
+ 80044ee:      f8c4 0100       str.w   r0, [r4, #256]  ; 0x100
+ 80044f2:      54a3            strb    r3, [r4, r2]
+ 80044f4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80044f8:      686a            ldr     r2, [r5, #4]
+ 80044fa:      f7fe bc6e       b.w     8002dda <d_print_comp+0x1e6>
+ 80044fe:      4631            mov     r1, r6
+ 8004500:      68aa            ldr     r2, [r5, #8]
+ 8004502:      4620            mov     r0, r4
+ 8004504:      f7fe fb76       bl      8002bf4 <d_print_comp>
+ 8004508:      9905            ldr     r1, [sp, #20]
+ 800450a:      686a            ldr     r2, [r5, #4]
+ 800450c:      f7fe bc65       b.w     8002dda <d_print_comp+0x1e6>
+ 8004510:      9905            ldr     r1, [sp, #20]
+ 8004512:      686a            ldr     r2, [r5, #4]
+ 8004514:      f7fe bc61       b.w     8002dda <d_print_comp+0x1e6>
+ 8004518:      4631            mov     r1, r6
+ 800451a:      68aa            ldr     r2, [r5, #8]
+ 800451c:      4620            mov     r0, r4
+ 800451e:      f7fe fb69       bl      8002bf4 <d_print_comp>
+ 8004522:      9905            ldr     r1, [sp, #20]
+ 8004524:      686a            ldr     r2, [r5, #4]
+ 8004526:      f7fe bc58       b.w     8002dda <d_print_comp+0x1e6>
+ 800452a:      4631            mov     r1, r6
+ 800452c:      68ea            ldr     r2, [r5, #12]
+ 800452e:      4620            mov     r0, r4
+ 8004530:      f7fe fb60       bl      8002bf4 <d_print_comp>
+ 8004534:      9905            ldr     r1, [sp, #20]
+ 8004536:      686a            ldr     r2, [r5, #4]
+ 8004538:      f7fe bc4f       b.w     8002dda <d_print_comp+0x1e6>
+ 800453c:      f8d4 2144       ldr.w   r2, [r4, #324]  ; 0x144
+ 8004540:      b13a            cbz     r2, 8004552 <d_print_comp+0x195e>
+ 8004542:      ab18            add     r3, sp, #96     ; 0x60
+ 8004544:      f8d4 1110       ldr.w   r1, [r4, #272]  ; 0x110
+ 8004548:      f843 1d40       str.w   r1, [r3, #-64]!
+ 800454c:      9209            str     r2, [sp, #36]   ; 0x24
+ 800454e:      f8c4 3110       str.w   r3, [r4, #272]  ; 0x110
+ 8004552:      68aa            ldr     r2, [r5, #8]
+ 8004554:      7813            ldrb    r3, [r2, #0]
+ 8004556:      2b04            cmp     r3, #4
+ 8004558:      f000 84d6       beq.w   8004f08 <d_print_comp+0x2314>
+ 800455c:      4631            mov     r1, r6
+ 800455e:      4620            mov     r0, r4
+ 8004560:      f7fe fb48       bl      8002bf4 <d_print_comp>
+ 8004564:      f8d4 3144       ldr.w   r3, [r4, #324]  ; 0x144
+ 8004568:      b113            cbz     r3, 8004570 <d_print_comp+0x197c>
+ 800456a:      9b08            ldr     r3, [sp, #32]
+ 800456c:      f8c4 3110       str.w   r3, [r4, #272]  ; 0x110
+ 8004570:      9905            ldr     r1, [sp, #20]
+ 8004572:      686a            ldr     r2, [r5, #4]
+ 8004574:      f7fe bc31       b.w     8002dda <d_print_comp+0x1e6>
+ 8004578:      f8da 6004       ldr.w   r6, [sl, #4]
+ 800457c:      7832            ldrb    r2, [r6, #0]
+ 800457e:      3a61            subs    r2, #97 ; 0x61
+ 8004580:      2a19            cmp     r2, #25
+ 8004582:      d81d            bhi.n   80045c0 <d_print_comp+0x19cc>
+ 8004584:      2bff            cmp     r3, #255        ; 0xff
+ 8004586:      d110            bne.n   80045aa <d_print_comp+0x19b6>
+ 8004588:      2600            movs    r6, #0
+ 800458a:      4619            mov     r1, r3
+ 800458c:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8004590:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004594:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004598:      4620            mov     r0, r4
+ 800459a:      4798            blx     r3
+ 800459c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80045a0:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 80045a4:      3301            adds    r3, #1
+ 80045a6:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80045aa:      f8d4 2100       ldr.w   r2, [r4, #256]  ; 0x100
+ 80045ae:      2320            movs    r3, #32
+ 80045b0:      1c51            adds    r1, r2, #1
+ 80045b2:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 80045b6:      54a3            strb    r3, [r4, r2]
+ 80045b8:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80045bc:      f8da 6004       ldr.w   r6, [sl, #4]
+ 80045c0:      19f3            adds    r3, r6, r7
+ 80045c2:      f813 3c01       ldrb.w  r3, [r3, #-1]
+ 80045c6:      2b20            cmp     r3, #32
+ 80045c8:      bf08            it      eq
+ 80045ca:      f107 37ff       addeq.w r7, r7, #4294967295     ; 0xffffffff
+ 80045ce:      2f00            cmp     r7, #0
+ 80045d0:      f000 86fb       beq.w   80053ca <d_print_comp+0x27d6>
+ 80045d4:      3e01            subs    r6, #1
+ 80045d6:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80045da:      4437            add     r7, r6
+ 80045dc:      f04f 0800       mov.w   r8, #0
+ 80045e0:      e01b            b.n     800461a <d_print_comp+0x1a26>
+ 80045e2:      bf00            nop
+ 80045e4:      08012824        .word   0x08012824
+ 80045e8:      08012574        .word   0x08012574
+ 80045ec:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80045f0:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80045f4:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80045f8:      4798            blx     r3
+ 80045fa:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80045fe:      3301            adds    r3, #1
+ 8004600:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004604:      2200            movs    r2, #0
+ 8004606:      2301            movs    r3, #1
+ 8004608:      42be            cmp     r6, r7
+ 800460a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800460e:      f804 9002       strb.w  r9, [r4, r2]
+ 8004612:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 8004616:      f000 80ec       beq.w   80047f2 <d_print_comp+0x1bfe>
+ 800461a:      2bff            cmp     r3, #255        ; 0xff
+ 800461c:      4619            mov     r1, r3
+ 800461e:      4620            mov     r0, r4
+ 8004620:      f816 9f01       ldrb.w  r9, [r6, #1]!
+ 8004624:      d0e2            beq.n   80045ec <d_print_comp+0x19f8>
+ 8004626:      461a            mov     r2, r3
+ 8004628:      3301            adds    r3, #1
+ 800462a:      e7ed            b.n     8004608 <d_print_comp+0x1a14>
+ 800462c:      4631            mov     r1, r6
+ 800462e:      68aa            ldr     r2, [r5, #8]
+ 8004630:      4620            mov     r0, r4
+ 8004632:      f7fe fadf       bl      8002bf4 <d_print_comp>
+ 8004636:      9905            ldr     r1, [sp, #20]
+ 8004638:      686a            ldr     r2, [r5, #4]
+ 800463a:      f7fe bbce       b.w     8002dda <d_print_comp+0x1e6>
+ 800463e:      4631            mov     r1, r6
+ 8004640:      68aa            ldr     r2, [r5, #8]
+ 8004642:      4620            mov     r0, r4
+ 8004644:      f7fe fad6       bl      8002bf4 <d_print_comp>
+ 8004648:      9905            ldr     r1, [sp, #20]
+ 800464a:      686a            ldr     r2, [r5, #4]
+ 800464c:      f7fe bbc5       b.w     8002dda <d_print_comp+0x1e6>
+ 8004650:      4631            mov     r1, r6
+ 8004652:      68aa            ldr     r2, [r5, #8]
+ 8004654:      4620            mov     r0, r4
+ 8004656:      f7fe facd       bl      8002bf4 <d_print_comp>
+ 800465a:      9905            ldr     r1, [sp, #20]
+ 800465c:      686a            ldr     r2, [r5, #4]
+ 800465e:      f7fe bbbc       b.w     8002dda <d_print_comp+0x1e6>
+ 8004662:      4631            mov     r1, r6
+ 8004664:      68aa            ldr     r2, [r5, #8]
+ 8004666:      4620            mov     r0, r4
+ 8004668:      f7fe fac4       bl      8002bf4 <d_print_comp>
+ 800466c:      9905            ldr     r1, [sp, #20]
+ 800466e:      686a            ldr     r2, [r5, #4]
+ 8004670:      f7fe bbb3       b.w     8002dda <d_print_comp+0x1e6>
+ 8004674:      4631            mov     r1, r6
+ 8004676:      68aa            ldr     r2, [r5, #8]
+ 8004678:      4620            mov     r0, r4
+ 800467a:      f7fe fabb       bl      8002bf4 <d_print_comp>
+ 800467e:      9905            ldr     r1, [sp, #20]
+ 8004680:      686a            ldr     r2, [r5, #4]
+ 8004682:      f7fe bbaa       b.w     8002dda <d_print_comp+0x1e6>
+ 8004686:      4631            mov     r1, r6
+ 8004688:      68aa            ldr     r2, [r5, #8]
+ 800468a:      4620            mov     r0, r4
+ 800468c:      f7fe fab2       bl      8002bf4 <d_print_comp>
+ 8004690:      9905            ldr     r1, [sp, #20]
+ 8004692:      686a            ldr     r2, [r5, #4]
+ 8004694:      f7fe bba1       b.w     8002dda <d_print_comp+0x1e6>
+ 8004698:      4631            mov     r1, r6
+ 800469a:      68aa            ldr     r2, [r5, #8]
+ 800469c:      4620            mov     r0, r4
+ 800469e:      f7fe faa9       bl      8002bf4 <d_print_comp>
+ 80046a2:      9905            ldr     r1, [sp, #20]
+ 80046a4:      686a            ldr     r2, [r5, #4]
+ 80046a6:      f7fe bb98       b.w     8002dda <d_print_comp+0x1e6>
+ 80046aa:      4631            mov     r1, r6
+ 80046ac:      68aa            ldr     r2, [r5, #8]
+ 80046ae:      4620            mov     r0, r4
+ 80046b0:      f7fe faa0       bl      8002bf4 <d_print_comp>
+ 80046b4:      9905            ldr     r1, [sp, #20]
+ 80046b6:      686a            ldr     r2, [r5, #4]
+ 80046b8:      f7fe bb8f       b.w     8002dda <d_print_comp+0x1e6>
+ 80046bc:      4fcf            ldr     r7, [pc, #828]  ; (80049fc <d_print_comp+0x1e08>)
+ 80046be:      68ea            ldr     r2, [r5, #12]
+ 80046c0:      4631            mov     r1, r6
+ 80046c2:      4620            mov     r0, r4
+ 80046c4:      f7fe fa96       bl      8002bf4 <d_print_comp>
+ 80046c8:      f107 0805       add.w   r8, r7, #5
+ 80046cc:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80046d0:      f04f 0900       mov.w   r9, #0
+ 80046d4:      e015            b.n     8004702 <d_print_comp+0x1b0e>
+ 80046d6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80046da:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80046de:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80046e2:      4798            blx     r3
+ 80046e4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80046e8:      3301            adds    r3, #1
+ 80046ea:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80046ee:      2200            movs    r2, #0
+ 80046f0:      2301            movs    r3, #1
+ 80046f2:      4547            cmp     r7, r8
+ 80046f4:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80046f8:      f804 a002       strb.w  sl, [r4, r2]
+ 80046fc:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8004700:      d008            beq.n   8004714 <d_print_comp+0x1b20>
+ 8004702:      2bff            cmp     r3, #255        ; 0xff
+ 8004704:      4619            mov     r1, r3
+ 8004706:      4620            mov     r0, r4
+ 8004708:      f817 ab01       ldrb.w  sl, [r7], #1
+ 800470c:      d0e3            beq.n   80046d6 <d_print_comp+0x1ae2>
+ 800470e:      461a            mov     r2, r3
+ 8004710:      3301            adds    r3, #1
+ 8004712:      e7ee            b.n     80046f2 <d_print_comp+0x1afe>
+ 8004714:      4631            mov     r1, r6
+ 8004716:      68aa            ldr     r2, [r5, #8]
+ 8004718:      4620            mov     r0, r4
+ 800471a:      f7fe fa6b       bl      8002bf4 <d_print_comp>
+ 800471e:      9905            ldr     r1, [sp, #20]
+ 8004720:      686a            ldr     r2, [r5, #4]
+ 8004722:      f7fe bb5a       b.w     8002dda <d_print_comp+0x1e6>
+ 8004726:      4fb6            ldr     r7, [pc, #728]  ; (8004a00 <d_print_comp+0x1e0c>)
+ 8004728:      68aa            ldr     r2, [r5, #8]
+ 800472a:      4631            mov     r1, r6
+ 800472c:      4620            mov     r0, r4
+ 800472e:      f7fe fa61       bl      8002bf4 <d_print_comp>
+ 8004732:      f107 0804       add.w   r8, r7, #4
+ 8004736:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800473a:      f04f 0900       mov.w   r9, #0
+ 800473e:      e015            b.n     800476c <d_print_comp+0x1b78>
+ 8004740:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004744:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004748:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 800474c:      4798            blx     r3
+ 800474e:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004752:      3301            adds    r3, #1
+ 8004754:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004758:      2200            movs    r2, #0
+ 800475a:      2301            movs    r3, #1
+ 800475c:      45b8            cmp     r8, r7
+ 800475e:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004762:      f804 a002       strb.w  sl, [r4, r2]
+ 8004766:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 800476a:      d008            beq.n   800477e <d_print_comp+0x1b8a>
+ 800476c:      2bff            cmp     r3, #255        ; 0xff
+ 800476e:      4619            mov     r1, r3
+ 8004770:      4620            mov     r0, r4
+ 8004772:      f817 ab01       ldrb.w  sl, [r7], #1
+ 8004776:      d0e3            beq.n   8004740 <d_print_comp+0x1b4c>
+ 8004778:      461a            mov     r2, r3
+ 800477a:      3301            adds    r3, #1
+ 800477c:      e7ee            b.n     800475c <d_print_comp+0x1b68>
+ 800477e:      4631            mov     r1, r6
+ 8004780:      68ea            ldr     r2, [r5, #12]
+ 8004782:      4620            mov     r0, r4
+ 8004784:      f7fe fa36       bl      8002bf4 <d_print_comp>
+ 8004788:      9905            ldr     r1, [sp, #20]
+ 800478a:      686a            ldr     r2, [r5, #4]
+ 800478c:      f7fe bb25       b.w     8002dda <d_print_comp+0x1e6>
+ 8004790:      4631            mov     r1, r6
+ 8004792:      68aa            ldr     r2, [r5, #8]
+ 8004794:      4620            mov     r0, r4
+ 8004796:      f7fe fa2d       bl      8002bf4 <d_print_comp>
+ 800479a:      9905            ldr     r1, [sp, #20]
+ 800479c:      686a            ldr     r2, [r5, #4]
+ 800479e:      f7fe bb1c       b.w     8002dda <d_print_comp+0x1e6>
+ 80047a2:      4631            mov     r1, r6
+ 80047a4:      68aa            ldr     r2, [r5, #8]
+ 80047a6:      4620            mov     r0, r4
+ 80047a8:      f7fe fa24       bl      8002bf4 <d_print_comp>
+ 80047ac:      9905            ldr     r1, [sp, #20]
+ 80047ae:      686a            ldr     r2, [r5, #4]
+ 80047b0:      f7fe bb13       b.w     8002dda <d_print_comp+0x1e6>
+ 80047b4:      4631            mov     r1, r6
+ 80047b6:      68aa            ldr     r2, [r5, #8]
+ 80047b8:      4620            mov     r0, r4
+ 80047ba:      f7fe fa1b       bl      8002bf4 <d_print_comp>
+ 80047be:      9905            ldr     r1, [sp, #20]
+ 80047c0:      686a            ldr     r2, [r5, #4]
+ 80047c2:      f7fe bb0a       b.w     8002dda <d_print_comp+0x1e6>
+ 80047c6:      4631            mov     r1, r6
+ 80047c8:      68aa            ldr     r2, [r5, #8]
+ 80047ca:      4620            mov     r0, r4
+ 80047cc:      f7fe fa12       bl      8002bf4 <d_print_comp>
+ 80047d0:      9905            ldr     r1, [sp, #20]
+ 80047d2:      686a            ldr     r2, [r5, #4]
+ 80047d4:      f7fe bb01       b.w     8002dda <d_print_comp+0x1e6>
+ 80047d8:      4631            mov     r1, r6
+ 80047da:      68aa            ldr     r2, [r5, #8]
+ 80047dc:      4620            mov     r0, r4
+ 80047de:      f7fe fa09       bl      8002bf4 <d_print_comp>
+ 80047e2:      9905            ldr     r1, [sp, #20]
+ 80047e4:      686a            ldr     r2, [r5, #4]
+ 80047e6:      f7fe baf8       b.w     8002dda <d_print_comp+0x1e6>
+ 80047ea:      9905            ldr     r1, [sp, #20]
+ 80047ec:      686a            ldr     r2, [r5, #4]
+ 80047ee:      f7fe baf4       b.w     8002dda <d_print_comp+0x1e6>
+ 80047f2:      9905            ldr     r1, [sp, #20]
+ 80047f4:      686a            ldr     r2, [r5, #4]
+ 80047f6:      f7fe baf0       b.w     8002dda <d_print_comp+0x1e6>
+ 80047fa:      4631            mov     r1, r6
+ 80047fc:      68ea            ldr     r2, [r5, #12]
+ 80047fe:      9301            str     r3, [sp, #4]
+ 8004800:      4620            mov     r0, r4
+ 8004802:      f8d4 6124       ldr.w   r6, [r4, #292]  ; 0x124
+ 8004806:      f7fe f9f5       bl      8002bf4 <d_print_comp>
+ 800480a:      f8d4 2124       ldr.w   r2, [r4, #292]  ; 0x124
+ 800480e:      9b01            ldr     r3, [sp, #4]
+ 8004810:      4296            cmp     r6, r2
+ 8004812:      f000 8441       beq.w   8005098 <d_print_comp+0x24a4>
+ 8004816:      9905            ldr     r1, [sp, #20]
+ 8004818:      686a            ldr     r2, [r5, #4]
+ 800481a:      f7fe bade       b.w     8002dda <d_print_comp+0x1e6>
+ 800481e:      4e79            ldr     r6, [pc, #484]  ; (8004a04 <d_print_comp+0x1e10>)
+ 8004820:      4690            mov     r8, r2
+ 8004822:      f106 0906       add.w   r9, r6, #6
+ 8004826:      e014            b.n     8004852 <d_print_comp+0x1c5e>
+ 8004828:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800482c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004830:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004834:      4798            blx     r3
+ 8004836:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800483a:      3301            adds    r3, #1
+ 800483c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004840:      2200            movs    r2, #0
+ 8004842:      2301            movs    r3, #1
+ 8004844:      45b1            cmp     r9, r6
+ 8004846:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800484a:      54a7            strb    r7, [r4, r2]
+ 800484c:      f884 7104       strb.w  r7, [r4, #260]  ; 0x104
+ 8004850:      d008            beq.n   8004864 <d_print_comp+0x1c70>
+ 8004852:      2bff            cmp     r3, #255        ; 0xff
+ 8004854:      4619            mov     r1, r3
+ 8004856:      4620            mov     r0, r4
+ 8004858:      f816 7b01       ldrb.w  r7, [r6], #1
+ 800485c:      d0e4            beq.n   8004828 <d_print_comp+0x1c34>
+ 800485e:      461a            mov     r2, r3
+ 8004860:      3301            adds    r3, #1
+ 8004862:      e7ef            b.n     8004844 <d_print_comp+0x1c50>
+ 8004864:      9905            ldr     r1, [sp, #20]
+ 8004866:      686a            ldr     r2, [r5, #4]
+ 8004868:      f7fe bab7       b.w     8002dda <d_print_comp+0x1e6>
+ 800486c:      4642            mov     r2, r8
+ 800486e:      a808            add     r0, sp, #32
+ 8004870:      4965            ldr     r1, [pc, #404]  ; (8004a08 <d_print_comp+0x1e14>)
+ 8004872:      f009 fff3       bl      800e85c <sprintf>
+ 8004876:      a808            add     r0, sp, #32
+ 8004878:      f002 faac       bl      8006dd4 <strlen>
+ 800487c:      b328            cbz     r0, 80048ca <d_print_comp+0x1cd6>
+ 800487e:      ae08            add     r6, sp, #32
+ 8004880:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004884:      eb06 0900       add.w   r9, r6, r0
+ 8004888:      f04f 0800       mov.w   r8, #0
+ 800488c:      e014            b.n     80048b8 <d_print_comp+0x1cc4>
+ 800488e:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004892:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004896:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 800489a:      4798            blx     r3
+ 800489c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80048a0:      3301            adds    r3, #1
+ 80048a2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80048a6:      2200            movs    r2, #0
+ 80048a8:      2301            movs    r3, #1
+ 80048aa:      45b1            cmp     r9, r6
+ 80048ac:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80048b0:      54a7            strb    r7, [r4, r2]
+ 80048b2:      f884 7104       strb.w  r7, [r4, #260]  ; 0x104
+ 80048b6:      d008            beq.n   80048ca <d_print_comp+0x1cd6>
+ 80048b8:      2bff            cmp     r3, #255        ; 0xff
+ 80048ba:      4619            mov     r1, r3
+ 80048bc:      4620            mov     r0, r4
+ 80048be:      f816 7b01       ldrb.w  r7, [r6], #1
+ 80048c2:      d0e4            beq.n   800488e <d_print_comp+0x1c9a>
+ 80048c4:      461a            mov     r2, r3
+ 80048c6:      3301            adds    r3, #1
+ 80048c8:      e7ef            b.n     80048aa <d_print_comp+0x1cb6>
+ 80048ca:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80048ce:      2fff            cmp     r7, #255        ; 0xff
+ 80048d0:      d111            bne.n   80048f6 <d_print_comp+0x1d02>
+ 80048d2:      2600            movs    r6, #0
+ 80048d4:      4639            mov     r1, r7
+ 80048d6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80048da:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 80048de:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80048e2:      4620            mov     r0, r4
+ 80048e4:      4798            blx     r3
+ 80048e6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80048ea:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 80048ee:      3301            adds    r3, #1
+ 80048f0:      4637            mov     r7, r6
+ 80048f2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80048f6:      1c7a            adds    r2, r7, #1
+ 80048f8:      237d            movs    r3, #125        ; 0x7d
+ 80048fa:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80048fe:      55e3            strb    r3, [r4, r7]
+ 8004900:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004904:      686a            ldr     r2, [r5, #4]
+ 8004906:      9905            ldr     r1, [sp, #20]
+ 8004908:      f7fe ba67       b.w     8002dda <d_print_comp+0x1e6>
+ 800490c:      4e3f            ldr     r6, [pc, #252]  ; (8004a0c <d_print_comp+0x1e18>)
+ 800490e:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004912:      f106 0905       add.w   r9, r6, #5
+ 8004916:      f04f 0800       mov.w   r8, #0
+ 800491a:      e015            b.n     8004948 <d_print_comp+0x1d54>
+ 800491c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004920:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004924:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004928:      4798            blx     r3
+ 800492a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800492e:      3301            adds    r3, #1
+ 8004930:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004934:      2200            movs    r2, #0
+ 8004936:      2301            movs    r3, #1
+ 8004938:      45b1            cmp     r9, r6
+ 800493a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800493e:      54a7            strb    r7, [r4, r2]
+ 8004940:      f884 7104       strb.w  r7, [r4, #260]  ; 0x104
+ 8004944:      f000 80cf       beq.w   8004ae6 <d_print_comp+0x1ef2>
+ 8004948:      2bff            cmp     r3, #255        ; 0xff
+ 800494a:      4619            mov     r1, r3
+ 800494c:      4620            mov     r0, r4
+ 800494e:      f816 7b01       ldrb.w  r7, [r6], #1
+ 8004952:      d0e3            beq.n   800491c <d_print_comp+0x1d28>
+ 8004954:      461a            mov     r2, r3
+ 8004956:      3301            adds    r3, #1
+ 8004958:      e7ee            b.n     8004938 <d_print_comp+0x1d44>
+ 800495a:      68ee            ldr     r6, [r5, #12]
+ 800495c:      443e            add     r6, r7
+ 800495e:      42be            cmp     r6, r7
+ 8004960:      f67e aa3b       bls.w   8002dda <d_print_comp+0x1e6>
+ 8004964:      f04f 0800       mov.w   r8, #0
+ 8004968:      e018            b.n     800499c <d_print_comp+0x1da8>
+ 800496a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800496e:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004972:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004976:      4620            mov     r0, r4
+ 8004978:      4798            blx     r3
+ 800497a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800497e:      3301            adds    r3, #1
+ 8004980:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004984:      2100            movs    r1, #0
+ 8004986:      2301            movs    r3, #1
+ 8004988:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800498c:      f804 9001       strb.w  r9, [r4, r1]
+ 8004990:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 8004994:      3701            adds    r7, #1
+ 8004996:      42be            cmp     r6, r7
+ 8004998:      f240 80e1       bls.w   8004b5e <d_print_comp+0x1f6a>
+ 800499c:      1bf3            subs    r3, r6, r7
+ 800499e:      2b03            cmp     r3, #3
+ 80049a0:      f897 9000       ldrb.w  r9, [r7]
+ 80049a4:      dd02            ble.n   80049ac <d_print_comp+0x1db8>
+ 80049a6:      f1b9 0f5f       cmp.w   r9, #95 ; 0x5f
+ 80049aa:      d005            beq.n   80049b8 <d_print_comp+0x1dc4>
+ 80049ac:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 80049b0:      29ff            cmp     r1, #255        ; 0xff
+ 80049b2:      d0da            beq.n   800496a <d_print_comp+0x1d76>
+ 80049b4:      1c4b            adds    r3, r1, #1
+ 80049b6:      e7e7            b.n     8004988 <d_print_comp+0x1d94>
+ 80049b8:      787b            ldrb    r3, [r7, #1]
+ 80049ba:      2b5f            cmp     r3, #95 ; 0x5f
+ 80049bc:      d1f6            bne.n   80049ac <d_print_comp+0x1db8>
+ 80049be:      78bb            ldrb    r3, [r7, #2]
+ 80049c0:      2b55            cmp     r3, #85 ; 0x55
+ 80049c2:      d1f3            bne.n   80049ac <d_print_comp+0x1db8>
+ 80049c4:      1cf9            adds    r1, r7, #3
+ 80049c6:      2000            movs    r0, #0
+ 80049c8:      e002            b.n     80049d0 <d_print_comp+0x1ddc>
+ 80049ca:      4613            mov     r3, r2
+ 80049cc:      eb03 1000       add.w   r0, r3, r0, lsl #4
+ 80049d0:      428e            cmp     r6, r1
+ 80049d2:      468a            mov     sl, r1
+ 80049d4:      d9ea            bls.n   80049ac <d_print_comp+0x1db8>
+ 80049d6:      f811 3b01       ldrb.w  r3, [r1], #1
+ 80049da:      f1a3 0230       sub.w   r2, r3, #48     ; 0x30
+ 80049de:      fa5f fe82       uxtb.w  lr, r2
+ 80049e2:      f1be 0f09       cmp.w   lr, #9
+ 80049e6:      f1a3 0c41       sub.w   ip, r3, #65     ; 0x41
+ 80049ea:      d9ee            bls.n   80049ca <d_print_comp+0x1dd6>
+ 80049ec:      f1bc 0f05       cmp.w   ip, #5
+ 80049f0:      f1a3 0261       sub.w   r2, r3, #97     ; 0x61
+ 80049f4:      f200 85c7       bhi.w   8005586 <d_print_comp+0x2992>
+ 80049f8:      3b37            subs    r3, #55 ; 0x37
+ 80049fa:      e7e7            b.n     80049cc <d_print_comp+0x1dd8>
+ 80049fc:      080126e8        .word   0x080126e8
+ 8004a00:      08012624        .word   0x08012624
+ 8004a04:      08012748        .word   0x08012748
+ 8004a08:      08012574        .word   0x08012574
+ 8004a0c:      080125e8        .word   0x080125e8
+ 8004a10:      9905            ldr     r1, [sp, #20]
+ 8004a12:      686a            ldr     r2, [r5, #4]
+ 8004a14:      f7fe b9e1       b.w     8002dda <d_print_comp+0x1e6>
+ 8004a18:      68aa            ldr     r2, [r5, #8]
+ 8004a1a:      9201            str     r2, [sp, #4]
+ 8004a1c:      4619            mov     r1, r3
+ 8004a1e:      2b00            cmp     r3, #0
+ 8004a20:      f47e aa26       bne.w   8002e70 <d_print_comp+0x27c>
+ 8004a24:      9905            ldr     r1, [sp, #20]
+ 8004a26:      686a            ldr     r2, [r5, #4]
+ 8004a28:      f7fe b9d7       b.w     8002dda <d_print_comp+0x1e6>
+ 8004a2c:      4ece            ldr     r6, [pc, #824]  ; (8004d68 <d_print_comp+0x2174>)
+ 8004a2e:      f106 0904       add.w   r9, r6, #4
+ 8004a32:      e014            b.n     8004a5e <d_print_comp+0x1e6a>
+ 8004a34:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004a38:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004a3c:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004a40:      4798            blx     r3
+ 8004a42:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004a46:      3301            adds    r3, #1
+ 8004a48:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004a4c:      2200            movs    r2, #0
+ 8004a4e:      2301            movs    r3, #1
+ 8004a50:      45b1            cmp     r9, r6
+ 8004a52:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004a56:      54a7            strb    r7, [r4, r2]
+ 8004a58:      f884 7104       strb.w  r7, [r4, #260]  ; 0x104
+ 8004a5c:      d008            beq.n   8004a70 <d_print_comp+0x1e7c>
+ 8004a5e:      2bff            cmp     r3, #255        ; 0xff
+ 8004a60:      4619            mov     r1, r3
+ 8004a62:      4620            mov     r0, r4
+ 8004a64:      f816 7b01       ldrb.w  r7, [r6], #1
+ 8004a68:      d0e4            beq.n   8004a34 <d_print_comp+0x1e40>
+ 8004a6a:      461a            mov     r2, r3
+ 8004a6c:      3301            adds    r3, #1
+ 8004a6e:      e7ef            b.n     8004a50 <d_print_comp+0x1e5c>
+ 8004a70:      9905            ldr     r1, [sp, #20]
+ 8004a72:      686a            ldr     r2, [r5, #4]
+ 8004a74:      f7fe b9b1       b.w     8002dda <d_print_comp+0x1e6>
+ 8004a78:      f8d4 c114       ldr.w   ip, [r4, #276]  ; 0x114
+ 8004a7c:      f7ff ba66       b.w     8003f4c <d_print_comp+0x1358>
+ 8004a80:      2700            movs    r7, #0
+ 8004a82:      f7ff ba54       b.w     8003f2e <d_print_comp+0x133a>
+ 8004a86:      e9d0 6702       ldrd    r6, r7, [r0, #8]
+ 8004a8a:      2f00            cmp     r7, #0
+ 8004a8c:      f43e a9a5       beq.w   8002dda <d_print_comp+0x1e6>
+ 8004a90:      4437            add     r7, r6
+ 8004a92:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004a96:      3f01            subs    r7, #1
+ 8004a98:      3e01            subs    r6, #1
+ 8004a9a:      f04f 0900       mov.w   r9, #0
+ 8004a9e:      e015            b.n     8004acc <d_print_comp+0x1ed8>
+ 8004aa0:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004aa4:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004aa8:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8004aac:      4798            blx     r3
+ 8004aae:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004ab2:      3301            adds    r3, #1
+ 8004ab4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004ab8:      2200            movs    r2, #0
+ 8004aba:      2301            movs    r3, #1
+ 8004abc:      42b7            cmp     r7, r6
+ 8004abe:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004ac2:      f804 8002       strb.w  r8, [r4, r2]
+ 8004ac6:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8004aca:      d008            beq.n   8004ade <d_print_comp+0x1eea>
+ 8004acc:      2bff            cmp     r3, #255        ; 0xff
+ 8004ace:      4619            mov     r1, r3
+ 8004ad0:      4620            mov     r0, r4
+ 8004ad2:      f816 8f01       ldrb.w  r8, [r6, #1]!
+ 8004ad6:      d0e3            beq.n   8004aa0 <d_print_comp+0x1eac>
+ 8004ad8:      461a            mov     r2, r3
+ 8004ada:      3301            adds    r3, #1
+ 8004adc:      e7ee            b.n     8004abc <d_print_comp+0x1ec8>
+ 8004ade:      9905            ldr     r1, [sp, #20]
+ 8004ae0:      686a            ldr     r2, [r5, #4]
+ 8004ae2:      f7fe b97a       b.w     8002dda <d_print_comp+0x1e6>
+ 8004ae6:      68aa            ldr     r2, [r5, #8]
+ 8004ae8:      49a0            ldr     r1, [pc, #640]  ; (8004d6c <d_print_comp+0x2178>)
+ 8004aea:      3201            adds    r2, #1
+ 8004aec:      a808            add     r0, sp, #32
+ 8004aee:      f009 feb5       bl      800e85c <sprintf>
+ 8004af2:      a808            add     r0, sp, #32
+ 8004af4:      f002 f96e       bl      8006dd4 <strlen>
+ 8004af8:      b328            cbz     r0, 8004b46 <d_print_comp+0x1f52>
+ 8004afa:      ae08            add     r6, sp, #32
+ 8004afc:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004b00:      eb06 0900       add.w   r9, r6, r0
+ 8004b04:      f04f 0800       mov.w   r8, #0
+ 8004b08:      e014            b.n     8004b34 <d_print_comp+0x1f40>
+ 8004b0a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004b0e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004b12:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004b16:      4798            blx     r3
+ 8004b18:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004b1c:      3301            adds    r3, #1
+ 8004b1e:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004b22:      2200            movs    r2, #0
+ 8004b24:      2301            movs    r3, #1
+ 8004b26:      45b1            cmp     r9, r6
+ 8004b28:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004b2c:      54a7            strb    r7, [r4, r2]
+ 8004b2e:      f884 7104       strb.w  r7, [r4, #260]  ; 0x104
+ 8004b32:      d008            beq.n   8004b46 <d_print_comp+0x1f52>
+ 8004b34:      2bff            cmp     r3, #255        ; 0xff
+ 8004b36:      4619            mov     r1, r3
+ 8004b38:      4620            mov     r0, r4
+ 8004b3a:      f816 7b01       ldrb.w  r7, [r6], #1
+ 8004b3e:      d0e4            beq.n   8004b0a <d_print_comp+0x1f16>
+ 8004b40:      461a            mov     r2, r3
+ 8004b42:      3301            adds    r3, #1
+ 8004b44:      e7ef            b.n     8004b26 <d_print_comp+0x1f32>
+ 8004b46:      9905            ldr     r1, [sp, #20]
+ 8004b48:      686a            ldr     r2, [r5, #4]
+ 8004b4a:      f7fe b946       b.w     8002dda <d_print_comp+0x1e6>
+ 8004b4e:      9905            ldr     r1, [sp, #20]
+ 8004b50:      686a            ldr     r2, [r5, #4]
+ 8004b52:      f7fe b942       b.w     8002dda <d_print_comp+0x1e6>
+ 8004b56:      9905            ldr     r1, [sp, #20]
+ 8004b58:      686a            ldr     r2, [r5, #4]
+ 8004b5a:      f7fe b93e       b.w     8002dda <d_print_comp+0x1e6>
+ 8004b5e:      9905            ldr     r1, [sp, #20]
+ 8004b60:      686a            ldr     r2, [r5, #4]
+ 8004b62:      f7fe b93a       b.w     8002dda <d_print_comp+0x1e6>
+ 8004b66:      68db            ldr     r3, [r3, #12]
+ 8004b68:      781b            ldrb    r3, [r3, #0]
+ 8004b6a:      2b3b            cmp     r3, #59 ; 0x3b
+ 8004b6c:      f47e abf6       bne.w   800335c <d_print_comp+0x768>
+ 8004b70:      f105 030c       add.w   r3, r5, #12
+ 8004b74:      68aa            ldr     r2, [r5, #8]
+ 8004b76:      4631            mov     r1, r6
+ 8004b78:      4620            mov     r0, r4
+ 8004b7a:      f001 fd95       bl      80066a8 <d_maybe_print_fold_expression.isra.20>
+ 8004b7e:      4680            mov     r8, r0
+ 8004b80:      2800            cmp     r0, #0
+ 8004b82:      f040 86a0       bne.w   80058c6 <d_print_comp+0x2cd2>
+ 8004b86:      e9d5 7202       ldrd    r7, r2, [r5, #8]
+ 8004b8a:      68b9            ldr     r1, [r7, #8]
+ 8004b8c:      68d3            ldr     r3, [r2, #12]
+ 8004b8e:      6808            ldr     r0, [r1, #0]
+ 8004b90:      4977            ldr     r1, [pc, #476]  ; (8004d70 <d_print_comp+0x217c>)
+ 8004b92:      f8d2 b008       ldr.w   fp, [r2, #8]
+ 8004b96:      e9d3 a902       ldrd    sl, r9, [r3, #8]
+ 8004b9a:      f002 f911       bl      8006dc0 <strcmp>
+ 8004b9e:      2800            cmp     r0, #0
+ 8004ba0:      f000 8674       beq.w   800588c <d_print_comp+0x2c98>
+ 8004ba4:      2204            movs    r2, #4
+ 8004ba6:      4973            ldr     r1, [pc, #460]  ; (8004d74 <d_print_comp+0x2180>)
+ 8004ba8:      4620            mov     r0, r4
+ 8004baa:      f7fb fbff       bl      80003ac <d_append_buffer>
+ 8004bae:      f8db 3008       ldr.w   r3, [fp, #8]
+ 8004bb2:      b303            cbz     r3, 8004bf6 <d_print_comp+0x2002>
+ 8004bb4:      465a            mov     r2, fp
+ 8004bb6:      4631            mov     r1, r6
+ 8004bb8:      4620            mov     r0, r4
+ 8004bba:      f001 fd23       bl      8006604 <d_print_subexpr>
+ 8004bbe:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004bc2:      2fff            cmp     r7, #255        ; 0xff
+ 8004bc4:      d110            bne.n   8004be8 <d_print_comp+0x1ff4>
+ 8004bc6:      4639            mov     r1, r7
+ 8004bc8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004bcc:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004bd0:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004bd4:      4620            mov     r0, r4
+ 8004bd6:      4798            blx     r3
+ 8004bd8:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004bdc:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 8004be0:      3301            adds    r3, #1
+ 8004be2:      4647            mov     r7, r8
+ 8004be4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004be8:      2320            movs    r3, #32
+ 8004bea:      1c7a            adds    r2, r7, #1
+ 8004bec:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004bf0:      55e3            strb    r3, [r4, r7]
+ 8004bf2:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004bf6:      4652            mov     r2, sl
+ 8004bf8:      4631            mov     r1, r6
+ 8004bfa:      4620            mov     r0, r4
+ 8004bfc:      f7fd fffa       bl      8002bf4 <d_print_comp>
+ 8004c00:      f1b9 0f00       cmp.w   r9, #0
+ 8004c04:      f000 8663       beq.w   80058ce <d_print_comp+0x2cda>
+ 8004c08:      464a            mov     r2, r9
+ 8004c0a:      4631            mov     r1, r6
+ 8004c0c:      4620            mov     r0, r4
+ 8004c0e:      f001 fcf9       bl      8006604 <d_print_subexpr>
+ 8004c12:      9905            ldr     r1, [sp, #20]
+ 8004c14:      686a            ldr     r2, [r5, #4]
+ 8004c16:      f7fe b8e0       b.w     8002dda <d_print_comp+0x1e6>
+ 8004c1a:      f8d9 3008       ldr.w   r3, [r9, #8]
+ 8004c1e:      4956            ldr     r1, [pc, #344]  ; (8004d78 <d_print_comp+0x2184>)
+ 8004c20:      f8d3 a000       ldr.w   sl, [r3]
+ 8004c24:      4650            mov     r0, sl
+ 8004c26:      f002 f8cb       bl      8006dc0 <strcmp>
+ 8004c2a:      f898 3000       ldrb.w  r3, [r8]
+ 8004c2e:      b910            cbnz    r0, 8004c36 <d_print_comp+0x2042>
+ 8004c30:      2b03            cmp     r3, #3
+ 8004c32:      f000 852b       beq.w   800568c <d_print_comp+0x2a98>
+ 8004c36:      2b38            cmp     r3, #56 ; 0x38
+ 8004c38:      f000 850c       beq.w   8005654 <d_print_comp+0x2a60>
+ 8004c3c:      494f            ldr     r1, [pc, #316]  ; (8004d7c <d_print_comp+0x2188>)
+ 8004c3e:      4650            mov     r0, sl
+ 8004c40:      f002 f8be       bl      8006dc0 <strcmp>
+ 8004c44:      4607            mov     r7, r0
+ 8004c46:      2800            cmp     r0, #0
+ 8004c48:      f000 8513       beq.w   8005672 <d_print_comp+0x2a7e>
+ 8004c4c:      494c            ldr     r1, [pc, #304]  ; (8004d80 <d_print_comp+0x218c>)
+ 8004c4e:      4650            mov     r0, sl
+ 8004c50:      f002 f8b6       bl      8006dc0 <strcmp>
+ 8004c54:      2800            cmp     r0, #0
+ 8004c56:      f000 8333       beq.w   80052c0 <d_print_comp+0x26cc>
+ 8004c5a:      4631            mov     r1, r6
+ 8004c5c:      4620            mov     r0, r4
+ 8004c5e:      464a            mov     r2, r9
+ 8004c60:      f001 fc90       bl      8006584 <d_print_expr_op>
+ 8004c64:      4947            ldr     r1, [pc, #284]  ; (8004d84 <d_print_comp+0x2190>)
+ 8004c66:      4650            mov     r0, sl
+ 8004c68:      f002 f8aa       bl      8006dc0 <strcmp>
+ 8004c6c:      2800            cmp     r0, #0
+ 8004c6e:      f000 83b0       beq.w   80053d2 <d_print_comp+0x27de>
+ 8004c72:      4650            mov     r0, sl
+ 8004c74:      4944            ldr     r1, [pc, #272]  ; (8004d88 <d_print_comp+0x2194>)
+ 8004c76:      f002 f8a3       bl      8006dc0 <strcmp>
+ 8004c7a:      4681            mov     r9, r0
+ 8004c7c:      2800            cmp     r0, #0
+ 8004c7e:      f47e abd7       bne.w   8003430 <d_print_comp+0x83c>
+ 8004c82:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004c86:      2fff            cmp     r7, #255        ; 0xff
+ 8004c88:      d110            bne.n   8004cac <d_print_comp+0x20b8>
+ 8004c8a:      f884 00ff       strb.w  r0, [r4, #255]  ; 0xff
+ 8004c8e:      4639            mov     r1, r7
+ 8004c90:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004c94:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004c98:      4620            mov     r0, r4
+ 8004c9a:      4798            blx     r3
+ 8004c9c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004ca0:      f8c4 9100       str.w   r9, [r4, #256]  ; 0x100
+ 8004ca4:      3301            adds    r3, #1
+ 8004ca6:      464f            mov     r7, r9
+ 8004ca8:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004cac:      1c78            adds    r0, r7, #1
+ 8004cae:      2328            movs    r3, #40 ; 0x28
+ 8004cb0:      f8c4 0100       str.w   r0, [r4, #256]  ; 0x100
+ 8004cb4:      4642            mov     r2, r8
+ 8004cb6:      55e3            strb    r3, [r4, r7]
+ 8004cb8:      4631            mov     r1, r6
+ 8004cba:      4620            mov     r0, r4
+ 8004cbc:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004cc0:      f7fd ff98       bl      8002bf4 <d_print_comp>
+ 8004cc4:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004cc8:      2fff            cmp     r7, #255        ; 0xff
+ 8004cca:      d111            bne.n   8004cf0 <d_print_comp+0x20fc>
+ 8004ccc:      2600            movs    r6, #0
+ 8004cce:      4639            mov     r1, r7
+ 8004cd0:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004cd4:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8004cd8:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004cdc:      4620            mov     r0, r4
+ 8004cde:      4798            blx     r3
+ 8004ce0:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004ce4:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8004ce8:      3301            adds    r3, #1
+ 8004cea:      4637            mov     r7, r6
+ 8004cec:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004cf0:      1c7a            adds    r2, r7, #1
+ 8004cf2:      2329            movs    r3, #41 ; 0x29
+ 8004cf4:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004cf8:      55e3            strb    r3, [r4, r7]
+ 8004cfa:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004cfe:      686a            ldr     r2, [r5, #4]
+ 8004d00:      9905            ldr     r1, [sp, #20]
+ 8004d02:      f7fe b86a       b.w     8002dda <d_print_comp+0x1e6>
+ 8004d06:      f105 020c       add.w   r2, r5, #12
+ 8004d0a:      4641            mov     r1, r8
+ 8004d0c:      4620            mov     r0, r4
+ 8004d0e:      f001 f935       bl      8005f7c <d_print_function_type.isra.15>
+ 8004d12:      68aa            ldr     r2, [r5, #8]
+ 8004d14:      2a00            cmp     r2, #0
+ 8004d16:      f000 83fd       beq.w   8005514 <d_print_comp+0x2920>
+ 8004d1a:      4641            mov     r1, r8
+ 8004d1c:      4620            mov     r0, r4
+ 8004d1e:      f7fd ff69       bl      8002bf4 <d_print_comp>
+ 8004d22:      9905            ldr     r1, [sp, #20]
+ 8004d24:      686a            ldr     r2, [r5, #4]
+ 8004d26:      f7fe b858       b.w     8002dda <d_print_comp+0x1e6>
+ 8004d2a:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004d2e:      2fff            cmp     r7, #255        ; 0xff
+ 8004d30:      d111            bne.n   8004d56 <d_print_comp+0x2162>
+ 8004d32:      2600            movs    r6, #0
+ 8004d34:      4639            mov     r1, r7
+ 8004d36:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004d3a:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8004d3e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004d42:      4620            mov     r0, r4
+ 8004d44:      4798            blx     r3
+ 8004d46:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004d4a:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8004d4e:      3301            adds    r3, #1
+ 8004d50:      4637            mov     r7, r6
+ 8004d52:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004d56:      2320            movs    r3, #32
+ 8004d58:      1c7a            adds    r2, r7, #1
+ 8004d5a:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004d5e:      55e3            strb    r3, [r4, r7]
+ 8004d60:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004d64:      f7fe bf72       b.w     8003c4c <d_print_comp+0x1058>
+ 8004d68:      080127c8        .word   0x080127c8
+ 8004d6c:      08012574        .word   0x08012574
+ 8004d70:      08012588        .word   0x08012588
+ 8004d74:      08012784        .word   0x08012784
+ 8004d78:      0801276c        .word   0x0801276c
+ 8004d7c:      08012770        .word   0x08012770
+ 8004d80:      08012578        .word   0x08012578
+ 8004d84:      08012774        .word   0x08012774
+ 8004d88:      08012a94        .word   0x08012a94
+ 8004d8c:      689b            ldr     r3, [r3, #8]
+ 8004d8e:      f893 8010       ldrb.w  r8, [r3, #16]
+ 8004d92:      f1b8 0f00       cmp.w   r8, #0
+ 8004d96:      f43e aa89       beq.w   80032ac <d_print_comp+0x6b8>
+ 8004d9a:      f1b8 0f06       cmp.w   r8, #6
+ 8004d9e:      f240 843f       bls.w   8005620 <d_print_comp+0x2a2c>
+ 8004da2:      f1b8 0f07       cmp.w   r8, #7
+ 8004da6:      f47e aa81       bne.w   80032ac <d_print_comp+0x6b8>
+ 8004daa:      68eb            ldr     r3, [r5, #12]
+ 8004dac:      781a            ldrb    r2, [r3, #0]
+ 8004dae:      2a00            cmp     r2, #0
+ 8004db0:      f47e aa7c       bne.w   80032ac <d_print_comp+0x6b8>
+ 8004db4:      68da            ldr     r2, [r3, #12]
+ 8004db6:      2a01            cmp     r2, #1
+ 8004db8:      f47e aa78       bne.w   80032ac <d_print_comp+0x6b8>
+ 8004dbc:      283c            cmp     r0, #60 ; 0x3c
+ 8004dbe:      f47e aa75       bne.w   80032ac <d_print_comp+0x6b8>
+ 8004dc2:      689b            ldr     r3, [r3, #8]
+ 8004dc4:      781b            ldrb    r3, [r3, #0]
+ 8004dc6:      2b30            cmp     r3, #48 ; 0x30
+ 8004dc8:      f000 84b6       beq.w   8005738 <d_print_comp+0x2b44>
+ 8004dcc:      2b31            cmp     r3, #49 ; 0x31
+ 8004dce:      f47e aa6d       bne.w   80032ac <d_print_comp+0x6b8>
+ 8004dd2:      2204            movs    r2, #4
+ 8004dd4:      49c3            ldr     r1, [pc, #780]  ; (80050e4 <d_print_comp+0x24f0>)
+ 8004dd6:      4620            mov     r0, r4
+ 8004dd8:      f7fb fae8       bl      80003ac <d_append_buffer>
+ 8004ddc:      9905            ldr     r1, [sp, #20]
+ 8004dde:      686a            ldr     r2, [r5, #4]
+ 8004de0:      f7fd bffb       b.w     8002dda <d_print_comp+0x1e6>
+ 8004de4:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004de8:      2fff            cmp     r7, #255        ; 0xff
+ 8004dea:      d112            bne.n   8004e12 <d_print_comp+0x221e>
+ 8004dec:      f04f 0800       mov.w   r8, #0
+ 8004df0:      4639            mov     r1, r7
+ 8004df2:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004df6:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004dfa:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004dfe:      4620            mov     r0, r4
+ 8004e00:      4798            blx     r3
+ 8004e02:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004e06:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 8004e0a:      3301            adds    r3, #1
+ 8004e0c:      4647            mov     r7, r8
+ 8004e0e:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004e12:      1c7a            adds    r2, r7, #1
+ 8004e14:      235b            movs    r3, #91 ; 0x5b
+ 8004e16:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004e1a:      55e3            strb    r3, [r4, r7]
+ 8004e1c:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004e20:      4631            mov     r1, r6
+ 8004e22:      68ea            ldr     r2, [r5, #12]
+ 8004e24:      4620            mov     r0, r4
+ 8004e26:      f7fd fee5       bl      8002bf4 <d_print_comp>
+ 8004e2a:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004e2e:      2fff            cmp     r7, #255        ; 0xff
+ 8004e30:      d111            bne.n   8004e56 <d_print_comp+0x2262>
+ 8004e32:      2600            movs    r6, #0
+ 8004e34:      4639            mov     r1, r7
+ 8004e36:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004e3a:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8004e3e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004e42:      4620            mov     r0, r4
+ 8004e44:      4798            blx     r3
+ 8004e46:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004e4a:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8004e4e:      3301            adds    r3, #1
+ 8004e50:      4637            mov     r7, r6
+ 8004e52:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004e56:      1c7a            adds    r2, r7, #1
+ 8004e58:      235d            movs    r3, #93 ; 0x5d
+ 8004e5a:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004e5e:      55e3            strb    r3, [r4, r7]
+ 8004e60:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004e64:      686a            ldr     r2, [r5, #4]
+ 8004e66:      9905            ldr     r1, [sp, #20]
+ 8004e68:      f7fd bfb7       b.w     8002dda <d_print_comp+0x1e6>
+ 8004e6c:      1c59            adds    r1, r3, #1
+ 8004e6e:      2229            movs    r2, #41 ; 0x29
+ 8004e70:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8004e74:      54e2            strb    r2, [r4, r3]
+ 8004e76:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 8004e7a:      782b            ldrb    r3, [r5, #0]
+ 8004e7c:      2b3d            cmp     r3, #61 ; 0x3d
+ 8004e7e:      f47e aa57       bne.w   8003330 <d_print_comp+0x73c>
+ 8004e82:      29ff            cmp     r1, #255        ; 0xff
+ 8004e84:      d10f            bne.n   8004ea6 <d_print_comp+0x22b2>
+ 8004e86:      2700            movs    r7, #0
+ 8004e88:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004e8c:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8004e90:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004e94:      4620            mov     r0, r4
+ 8004e96:      4798            blx     r3
+ 8004e98:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004e9c:      f8c4 7100       str.w   r7, [r4, #256]  ; 0x100
+ 8004ea0:      3301            adds    r3, #1
+ 8004ea2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004ea6:      f8d4 2100       ldr.w   r2, [r4, #256]  ; 0x100
+ 8004eaa:      232d            movs    r3, #45 ; 0x2d
+ 8004eac:      1c51            adds    r1, r2, #1
+ 8004eae:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8004eb2:      54a3            strb    r3, [r4, r2]
+ 8004eb4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004eb8:      f7fe ba3a       b.w     8003330 <d_print_comp+0x73c>
+ 8004ebc:      4f8a            ldr     r7, [pc, #552]  ; (80050e8 <d_print_comp+0x24f4>)
+ 8004ebe:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004ec2:      f107 0a02       add.w   sl, r7, #2
+ 8004ec6:      e016            b.n     8004ef6 <d_print_comp+0x2302>
+ 8004ec8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004ecc:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004ed0:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8004ed4:      4798            blx     r3
+ 8004ed6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004eda:      3301            adds    r3, #1
+ 8004edc:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004ee0:      2200            movs    r2, #0
+ 8004ee2:      2301            movs    r3, #1
+ 8004ee4:      45ba            cmp     sl, r7
+ 8004ee6:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004eea:      f804 8002       strb.w  r8, [r4, r2]
+ 8004eee:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8004ef2:      f43f a980       beq.w   80041f6 <d_print_comp+0x1602>
+ 8004ef6:      2bff            cmp     r3, #255        ; 0xff
+ 8004ef8:      4619            mov     r1, r3
+ 8004efa:      4620            mov     r0, r4
+ 8004efc:      f817 8b01       ldrb.w  r8, [r7], #1
+ 8004f00:      d0e2            beq.n   8004ec8 <d_print_comp+0x22d4>
+ 8004f02:      461a            mov     r2, r3
+ 8004f04:      3301            adds    r3, #1
+ 8004f06:      e7ed            b.n     8004ee4 <d_print_comp+0x22f0>
+ 8004f08:      6892            ldr     r2, [r2, #8]
+ 8004f0a:      4631            mov     r1, r6
+ 8004f0c:      4620            mov     r0, r4
+ 8004f0e:      f7fd fe71       bl      8002bf4 <d_print_comp>
+ 8004f12:      f8d4 3144       ldr.w   r3, [r4, #324]  ; 0x144
+ 8004f16:      b113            cbz     r3, 8004f1e <d_print_comp+0x232a>
+ 8004f18:      9b08            ldr     r3, [sp, #32]
+ 8004f1a:      f8c4 3110       str.w   r3, [r4, #272]  ; 0x110
+ 8004f1e:      f894 3104       ldrb.w  r3, [r4, #260]  ; 0x104
+ 8004f22:      2b3c            cmp     r3, #60 ; 0x3c
+ 8004f24:      f000 82c4       beq.w   80054b0 <d_print_comp+0x28bc>
+ 8004f28:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004f2c:      2fff            cmp     r7, #255        ; 0xff
+ 8004f2e:      d112            bne.n   8004f56 <d_print_comp+0x2362>
+ 8004f30:      f04f 0800       mov.w   r8, #0
+ 8004f34:      4639            mov     r1, r7
+ 8004f36:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004f3a:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8004f3e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004f42:      4620            mov     r0, r4
+ 8004f44:      4798            blx     r3
+ 8004f46:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004f4a:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 8004f4e:      3301            adds    r3, #1
+ 8004f50:      4647            mov     r7, r8
+ 8004f52:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004f56:      233c            movs    r3, #60 ; 0x3c
+ 8004f58:      1c7a            adds    r2, r7, #1
+ 8004f5a:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004f5e:      55e3            strb    r3, [r4, r7]
+ 8004f60:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004f64:      68ab            ldr     r3, [r5, #8]
+ 8004f66:      4631            mov     r1, r6
+ 8004f68:      68da            ldr     r2, [r3, #12]
+ 8004f6a:      4620            mov     r0, r4
+ 8004f6c:      f7fd fe42       bl      8002bf4 <d_print_comp>
+ 8004f70:      f894 3104       ldrb.w  r3, [r4, #260]  ; 0x104
+ 8004f74:      2b3e            cmp     r3, #62 ; 0x3e
+ 8004f76:      f000 827d       beq.w   8005474 <d_print_comp+0x2880>
+ 8004f7a:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8004f7e:      2fff            cmp     r7, #255        ; 0xff
+ 8004f80:      d111            bne.n   8004fa6 <d_print_comp+0x23b2>
+ 8004f82:      2600            movs    r6, #0
+ 8004f84:      4639            mov     r1, r7
+ 8004f86:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004f8a:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8004f8e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004f92:      4620            mov     r0, r4
+ 8004f94:      4798            blx     r3
+ 8004f96:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004f9a:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8004f9e:      3301            adds    r3, #1
+ 8004fa0:      4637            mov     r7, r6
+ 8004fa2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004fa6:      233e            movs    r3, #62 ; 0x3e
+ 8004fa8:      1c7a            adds    r2, r7, #1
+ 8004faa:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8004fae:      55e3            strb    r3, [r4, r7]
+ 8004fb0:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8004fb4:      f7ff badc       b.w     8004570 <d_print_comp+0x197c>
+ 8004fb8:      4f4c            ldr     r7, [pc, #304]  ; (80050ec <d_print_comp+0x24f8>)
+ 8004fba:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8004fbe:      f107 0905       add.w   r9, r7, #5
+ 8004fc2:      f04f 0a00       mov.w   sl, #0
+ 8004fc6:      e016            b.n     8004ff6 <d_print_comp+0x2402>
+ 8004fc8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8004fcc:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8004fd0:      f884 a0ff       strb.w  sl, [r4, #255]  ; 0xff
+ 8004fd4:      4798            blx     r3
+ 8004fd6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8004fda:      3301            adds    r3, #1
+ 8004fdc:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8004fe0:      2200            movs    r2, #0
+ 8004fe2:      2301            movs    r3, #1
+ 8004fe4:      45b9            cmp     r9, r7
+ 8004fe6:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8004fea:      f804 8002       strb.w  r8, [r4, r2]
+ 8004fee:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8004ff2:      f43e ab41       beq.w   8003678 <d_print_comp+0xa84>
+ 8004ff6:      2bff            cmp     r3, #255        ; 0xff
+ 8004ff8:      4619            mov     r1, r3
+ 8004ffa:      4620            mov     r0, r4
+ 8004ffc:      f817 8b01       ldrb.w  r8, [r7], #1
+ 8005000:      d0e2            beq.n   8004fc8 <d_print_comp+0x23d4>
+ 8005002:      461a            mov     r2, r3
+ 8005004:      3301            adds    r3, #1
+ 8005006:      e7ed            b.n     8004fe4 <d_print_comp+0x23f0>
+ 8005008:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 800500c:      2fff            cmp     r7, #255        ; 0xff
+ 800500e:      d112            bne.n   8005036 <d_print_comp+0x2442>
+ 8005010:      f04f 0a00       mov.w   sl, #0
+ 8005014:      4639            mov     r1, r7
+ 8005016:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800501a:      f884 a0ff       strb.w  sl, [r4, #255]  ; 0xff
+ 800501e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005022:      4620            mov     r0, r4
+ 8005024:      4798            blx     r3
+ 8005026:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800502a:      f8c4 a100       str.w   sl, [r4, #256]  ; 0x100
+ 800502e:      3301            adds    r3, #1
+ 8005030:      4657            mov     r7, sl
+ 8005032:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005036:      2320            movs    r3, #32
+ 8005038:      1c7a            adds    r2, r7, #1
+ 800503a:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800503e:      55e3            strb    r3, [r4, r7]
+ 8005040:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005044:      f7fe bdda       b.w     8003bfc <d_print_comp+0x1008>
+ 8005048:      f8d4 1120       ldr.w   r1, [r4, #288]  ; 0x120
+ 800504c:      2900            cmp     r1, #0
+ 800504e:      f6fe ad99       blt.w   8003b84 <d_print_comp+0xf90>
+ 8005052:      f7fb fbc3       bl      80007dc <d_index_template_argument.part.9>
+ 8005056:      4602            mov     r2, r0
+ 8005058:      2800            cmp     r0, #0
+ 800505a:      f47e ad93       bne.w   8003b84 <d_print_comp+0xf90>
+ 800505e:      2301            movs    r3, #1
+ 8005060:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 8005064:      686a            ldr     r2, [r5, #4]
+ 8005066:      9905            ldr     r1, [sp, #20]
+ 8005068:      f7fd beb7       b.w     8002dda <d_print_comp+0x1e6>
+ 800506c:      9905            ldr     r1, [sp, #20]
+ 800506e:      686a            ldr     r2, [r5, #4]
+ 8005070:      f7fd beb3       b.w     8002dda <d_print_comp+0x1e6>
+ 8005074:      220d            movs    r2, #13
+ 8005076:      491e            ldr     r1, [pc, #120]  ; (80050f0 <d_print_comp+0x24fc>)
+ 8005078:      4620            mov     r0, r4
+ 800507a:      f7fb f997       bl      80003ac <d_append_buffer>
+ 800507e:      68f9            ldr     r1, [r7, #12]
+ 8005080:      4620            mov     r0, r4
+ 8005082:      3101            adds    r1, #1
+ 8005084:      f7fb fc84       bl      8000990 <d_append_num>
+ 8005088:      2203            movs    r2, #3
+ 800508a:      491a            ldr     r1, [pc, #104]  ; (80050f4 <d_print_comp+0x2500>)
+ 800508c:      4620            mov     r0, r4
+ 800508e:      f7fb f98d       bl      80003ac <d_append_buffer>
+ 8005092:      68bf            ldr     r7, [r7, #8]
+ 8005094:      f7ff b8b4       b.w     8004200 <d_print_comp+0x160c>
+ 8005098:      f8d4 0100       ldr.w   r0, [r4, #256]  ; 0x100
+ 800509c:      9905            ldr     r1, [sp, #20]
+ 800509e:      686a            ldr     r2, [r5, #4]
+ 80050a0:      42b8            cmp     r0, r7
+ 80050a2:      f47d ae9a       bne.w   8002dda <d_print_comp+0x1e6>
+ 80050a6:      3b01            subs    r3, #1
+ 80050a8:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80050ac:      f7fd be95       b.w     8002dda <d_print_comp+0x1e6>
+ 80050b0:      4642            mov     r2, r8
+ 80050b2:      465b            mov     r3, fp
+ 80050b4:      46ab            mov     fp, r5
+ 80050b6:      f1bb 0f04       cmp.w   fp, #4
+ 80050ba:      46a0            mov     r8, r4
+ 80050bc:      461d            mov     r5, r3
+ 80050be:      4614            mov     r4, r2
+ 80050c0:      f8c2 1114       str.w   r1, [r2, #276]  ; 0x114
+ 80050c4:      f000 82a3       beq.w   800560e <d_print_comp+0x2a1a>
+ 80050c8:      f1bb 0f02       cmp.w   fp, #2
+ 80050cc:      d137            bne.n   800513e <d_print_comp+0x254a>
+ 80050ce:      f8d8 a00c       ldr.w   sl, [r8, #12]
+ 80050d2:      f89a 3000       ldrb.w  r3, [sl]
+ 80050d6:      2b46            cmp     r3, #70 ; 0x46
+ 80050d8:      f000 8327       beq.w   800572a <d_print_comp+0x2b36>
+ 80050dc:      eb09 1207       add.w   r2, r9, r7, lsl #4
+ 80050e0:      3a0c            subs    r2, #12
+ 80050e2:      e020            b.n     8005126 <d_print_comp+0x2532>
+ 80050e4:      080127a0        .word   0x080127a0
+ 80050e8:      080125c4        .word   0x080125c4
+ 80050ec:      08012738        .word   0x08012738
+ 80050f0:      080125c8        .word   0x080125c8
+ 80050f4:      080125d8        .word   0x080125d8
+ 80050f8:      2f04            cmp     r7, #4
+ 80050fa:      f43f a81d       beq.w   8004138 <d_print_comp+0x1544>
+ 80050fe:      e89b 000f       ldmia.w fp, {r0, r1, r2, r3}
+ 8005102:      e88c 000f       stmia.w ip, {r0, r1, r2, r3}
+ 8005106:      2300            movs    r3, #0
+ 8005108:      f84e 3c0c       str.w   r3, [lr, #-12]
+ 800510c:      f84e ac10       str.w   sl, [lr, #-16]
+ 8005110:      9b01            ldr     r3, [sp, #4]
+ 8005112:      f8da a008       ldr.w   sl, [sl, #8]
+ 8005116:      f8c4 c114       str.w   ip, [r4, #276]  ; 0x114
+ 800511a:      3701            adds    r7, #1
+ 800511c:      f84e bc04       str.w   fp, [lr, #-4]
+ 8005120:      f84e 3c08       str.w   r3, [lr, #-8]
+ 8005124:      4672            mov     r2, lr
+ 8005126:      f89a 0000       ldrb.w  r0, [sl]
+ 800512a:      f7fb f975       bl      8000418 <is_fnqual_component_type>
+ 800512e:      f1a2 0b04       sub.w   fp, r2, #4
+ 8005132:      f102 0e10       add.w   lr, r2, #16
+ 8005136:      f102 0c0c       add.w   ip, r2, #12
+ 800513a:      2800            cmp     r0, #0
+ 800513c:      d1dc            bne.n   80050f8 <d_print_comp+0x2504>
+ 800513e:      68ea            ldr     r2, [r5, #12]
+ 8005140:      4631            mov     r1, r6
+ 8005142:      4620            mov     r0, r4
+ 8005144:      f7fd fd56       bl      8002bf4 <d_print_comp>
+ 8005148:      f898 3000       ldrb.w  r3, [r8]
+ 800514c:      2b04            cmp     r3, #4
+ 800514e:      bf04            itt     eq
+ 8005150:      9b06            ldreq   r3, [sp, #24]
+ 8005152:      f8c4 3110       streq.w r3, [r4, #272]  ; 0x110
+ 8005156:      013f            lsls    r7, r7, #4
+ 8005158:      f04f 0a20       mov.w   sl, #32
+ 800515c:      46a8            mov     r8, r5
+ 800515e:      eb09 0b07       add.w   fp, r9, r7
+ 8005162:      f85b 5c08       ldr.w   r5, [fp, #-8]
+ 8005166:      bb0d            cbnz    r5, 80051ac <d_print_comp+0x25b8>
+ 8005168:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800516c:      2bff            cmp     r3, #255        ; 0xff
+ 800516e:      4620            mov     r0, r4
+ 8005170:      4619            mov     r1, r3
+ 8005172:      d10e            bne.n   8005192 <d_print_comp+0x259e>
+ 8005174:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005178:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800517c:      f884 50ff       strb.w  r5, [r4, #255]  ; 0xff
+ 8005180:      4798            blx     r3
+ 8005182:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005186:      f8c4 5100       str.w   r5, [r4, #256]  ; 0x100
+ 800518a:      1c5a            adds    r2, r3, #1
+ 800518c:      f8c4 2124       str.w   r2, [r4, #292]  ; 0x124
+ 8005190:      462b            mov     r3, r5
+ 8005192:      1c59            adds    r1, r3, #1
+ 8005194:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8005198:      f85b 2c0c       ldr.w   r2, [fp, #-12]
+ 800519c:      f804 a003       strb.w  sl, [r4, r3]
+ 80051a0:      4631            mov     r1, r6
+ 80051a2:      4620            mov     r0, r4
+ 80051a4:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 80051a8:      f000 fbba       bl      8005920 <d_print_mod>
+ 80051ac:      3f10            subs    r7, #16
+ 80051ae:      d1d6            bne.n   800515e <d_print_comp+0x256a>
+ 80051b0:      9b02            ldr     r3, [sp, #8]
+ 80051b2:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 80051b6:      4645            mov     r5, r8
+ 80051b8:      f7fe bfc1       b.w     800413e <d_print_comp+0x154a>
+ 80051bc:      4631            mov     r1, r6
+ 80051be:      68aa            ldr     r2, [r5, #8]
+ 80051c0:      4620            mov     r0, r4
+ 80051c2:      f7fd fd17       bl      8002bf4 <d_print_comp>
+ 80051c6:      9905            ldr     r1, [sp, #20]
+ 80051c8:      686a            ldr     r2, [r5, #4]
+ 80051ca:      f7fd be06       b.w     8002dda <d_print_comp+0x1e6>
+ 80051ce:      460f            mov     r7, r1
+ 80051d0:      46a9            mov     r9, r5
+ 80051d2:      f7fe bebb       b.w     8003f4c <d_print_comp+0x1358>
+ 80051d6:      4644            mov     r4, r8
+ 80051d8:      465d            mov     r5, fp
+ 80051da:      f8c8 1114       str.w   r1, [r8, #276]  ; 0x114
+ 80051de:      f7fe bfab       b.w     8004138 <d_print_comp+0x1544>
+ 80051e2:      68ea            ldr     r2, [r5, #12]
+ 80051e4:      4631            mov     r1, r6
+ 80051e6:      4620            mov     r0, r4
+ 80051e8:      f7fd fd04       bl      8002bf4 <d_print_comp>
+ 80051ec:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 80051ee:      9a01            ldr     r2, [sp, #4]
+ 80051f0:      f8c4 2114       str.w   r2, [r4, #276]  ; 0x114
+ 80051f4:      2b00            cmp     r3, #0
+ 80051f6:      f43e ab19       beq.w   800382c <d_print_comp+0xc38>
+ 80051fa:      f7fe bb1f       b.w     800383c <d_print_comp+0xc48>
+ 80051fe:      2301            movs    r3, #1
+ 8005200:      4664            mov     r4, ip
+ 8005202:      f8cc 3118       str.w   r3, [ip, #280]  ; 0x118
+ 8005206:      f7fe bb19       b.w     800383c <d_print_comp+0xc48>
+ 800520a:      f8d9 2008       ldr.w   r2, [r9, #8]
+ 800520e:      f7fe bead       b.w     8003f6c <d_print_comp+0x1378>
+ 8005212:      4631            mov     r1, r6
+ 8005214:      68aa            ldr     r2, [r5, #8]
+ 8005216:      4620            mov     r0, r4
+ 8005218:      f001 f9f4       bl      8006604 <d_print_subexpr>
+ 800521c:      2203            movs    r2, #3
+ 800521e:      49bf            ldr     r1, [pc, #764]  ; (800551c <d_print_comp+0x2928>)
+ 8005220:      4620            mov     r0, r4
+ 8005222:      f7fb f8c3       bl      80003ac <d_append_buffer>
+ 8005226:      9905            ldr     r1, [sp, #20]
+ 8005228:      686a            ldr     r2, [r5, #4]
+ 800522a:      f7fd bdd6       b.w     8002dda <d_print_comp+0x1e6>
+ 800522e:      f8d4 e130       ldr.w   lr, [r4, #304]  ; 0x130
+ 8005232:      f8d4 212c       ldr.w   r2, [r4, #300]  ; 0x12c
+ 8005236:      f1be 0f00       cmp.w   lr, #0
+ 800523a:      dd17            ble.n   800526c <d_print_comp+0x2678>
+ 800523c:      6810            ldr     r0, [r2, #0]
+ 800523e:      4581            cmp     r9, r0
+ 8005240:      f000 81a7       beq.w   8005592 <d_print_comp+0x299e>
+ 8005244:      f102 0b08       add.w   fp, r2, #8
+ 8005248:      46bc            mov     ip, r7
+ 800524a:      9101            str     r1, [sp, #4]
+ 800524c:      4670            mov     r0, lr
+ 800524e:      e004            b.n     800525a <d_print_comp+0x2666>
+ 8005250:      f852 103c       ldr.w   r1, [r2, ip, lsl #3]
+ 8005254:      4589            cmp     r9, r1
+ 8005256:      f000 819d       beq.w   8005594 <d_print_comp+0x29a0>
+ 800525a:      f10c 0c01       add.w   ip, ip, #1
+ 800525e:      4560            cmp     r0, ip
+ 8005260:      46da            mov     sl, fp
+ 8005262:      f10b 0b08       add.w   fp, fp, #8
+ 8005266:      d1f3            bne.n   8005250 <d_print_comp+0x265c>
+ 8005268:      9901            ldr     r1, [sp, #4]
+ 800526a:      4686            mov     lr, r0
+ 800526c:      f8d4 3134       ldr.w   r3, [r4, #308]  ; 0x134
+ 8005270:      459e            cmp     lr, r3
+ 8005272:      f280 8344       bge.w   80058fe <d_print_comp+0x2d0a>
+ 8005276:      f10e 0301       add.w   r3, lr, #1
+ 800527a:      eb02 0cce       add.w   ip, r2, lr, lsl #3
+ 800527e:      f8c4 3130       str.w   r3, [r4, #304]  ; 0x130
+ 8005282:      f8d4 0110       ldr.w   r0, [r4, #272]  ; 0x110
+ 8005286:      f842 903e       str.w   r9, [r2, lr, lsl #3]
+ 800528a:      f10c 0c04       add.w   ip, ip, #4
+ 800528e:      2800            cmp     r0, #0
+ 8005290:      f000 825b       beq.w   800574a <d_print_comp+0x2b56>
+ 8005294:      f8d4 213c       ldr.w   r2, [r4, #316]  ; 0x13c
+ 8005298:      f8d4 3140       ldr.w   r3, [r4, #320]  ; 0x140
+ 800529c:      429a            cmp     r2, r3
+ 800529e:      f102 0e01       add.w   lr, r2, #1
+ 80052a2:      f280 832c       bge.w   80058fe <d_print_comp+0x2d0a>
+ 80052a6:      f8d4 3138       ldr.w   r3, [r4, #312]  ; 0x138
+ 80052aa:      f8c4 e13c       str.w   lr, [r4, #316]  ; 0x13c
+ 80052ae:      eb03 03c2       add.w   r3, r3, r2, lsl #3
+ 80052b2:      6842            ldr     r2, [r0, #4]
+ 80052b4:      605a            str     r2, [r3, #4]
+ 80052b6:      f8cc 3000       str.w   r3, [ip]
+ 80052ba:      6800            ldr     r0, [r0, #0]
+ 80052bc:      469c            mov     ip, r3
+ 80052be:      e7e6            b.n     800528e <d_print_comp+0x269a>
+ 80052c0:      4606            mov     r6, r0
+ 80052c2:      4647            mov     r7, r8
+ 80052c4:      e001            b.n     80052ca <d_print_comp+0x26d6>
+ 80052c6:      68ff            ldr     r7, [r7, #12]
+ 80052c8:      b31f            cbz     r7, 8005312 <d_print_comp+0x271e>
+ 80052ca:      783b            ldrb    r3, [r7, #0]
+ 80052cc:      2b2f            cmp     r3, #47 ; 0x2f
+ 80052ce:      d120            bne.n   8005312 <d_print_comp+0x271e>
+ 80052d0:      68bb            ldr     r3, [r7, #8]
+ 80052d2:      b1f3            cbz     r3, 8005312 <d_print_comp+0x271e>
+ 80052d4:      781a            ldrb    r2, [r3, #0]
+ 80052d6:      2a4a            cmp     r2, #74 ; 0x4a
+ 80052d8:      bf18            it      ne
+ 80052da:      3601            addne   r6, #1
+ 80052dc:      d1f3            bne.n   80052c6 <d_print_comp+0x26d2>
+ 80052de:      6899            ldr     r1, [r3, #8]
+ 80052e0:      4620            mov     r0, r4
+ 80052e2:      f7fb faa1       bl      8000828 <d_find_pack>
+ 80052e6:      2800            cmp     r0, #0
+ 80052e8:      f000 81ef       beq.w   80056ca <d_print_comp+0x2ad6>
+ 80052ec:      7803            ldrb    r3, [r0, #0]
+ 80052ee:      2b2f            cmp     r3, #47 ; 0x2f
+ 80052f0:      f040 81eb       bne.w   80056ca <d_print_comp+0x2ad6>
+ 80052f4:      6883            ldr     r3, [r0, #8]
+ 80052f6:      b153            cbz     r3, 800530e <d_print_comp+0x271a>
+ 80052f8:      2300            movs    r3, #0
+ 80052fa:      e004            b.n     8005306 <d_print_comp+0x2712>
+ 80052fc:      7802            ldrb    r2, [r0, #0]
+ 80052fe:      2a2f            cmp     r2, #47 ; 0x2f
+ 8005300:      d105            bne.n   800530e <d_print_comp+0x271a>
+ 8005302:      6882            ldr     r2, [r0, #8]
+ 8005304:      b11a            cbz     r2, 800530e <d_print_comp+0x271a>
+ 8005306:      68c0            ldr     r0, [r0, #12]
+ 8005308:      3301            adds    r3, #1
+ 800530a:      2800            cmp     r0, #0
+ 800530c:      d1f6            bne.n   80052fc <d_print_comp+0x2708>
+ 800530e:      441e            add     r6, r3
+ 8005310:      e7d9            b.n     80052c6 <d_print_comp+0x26d2>
+ 8005312:      4631            mov     r1, r6
+ 8005314:      4620            mov     r0, r4
+ 8005316:      f7fb fb3b       bl      8000990 <d_append_num>
+ 800531a:      9905            ldr     r1, [sp, #20]
+ 800531c:      686a            ldr     r2, [r5, #4]
+ 800531e:      f7fd bd5c       b.w     8002dda <d_print_comp+0x1e6>
+ 8005322:      4631            mov     r1, r6
+ 8005324:      4620            mov     r0, r4
+ 8005326:      f001 f92d       bl      8006584 <d_print_expr_op>
+ 800532a:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 800532e:      2fff            cmp     r7, #255        ; 0xff
+ 8005330:      d112            bne.n   8005358 <d_print_comp+0x2764>
+ 8005332:      f04f 0800       mov.w   r8, #0
+ 8005336:      4639            mov     r1, r7
+ 8005338:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800533c:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 8005340:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005344:      4620            mov     r0, r4
+ 8005346:      4798            blx     r3
+ 8005348:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800534c:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 8005350:      3301            adds    r3, #1
+ 8005352:      4647            mov     r7, r8
+ 8005354:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005358:      1c7a            adds    r2, r7, #1
+ 800535a:      233c            movs    r3, #60 ; 0x3c
+ 800535c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005360:      55e3            strb    r3, [r4, r7]
+ 8005362:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005366:      68eb            ldr     r3, [r5, #12]
+ 8005368:      4631            mov     r1, r6
+ 800536a:      689a            ldr     r2, [r3, #8]
+ 800536c:      4620            mov     r0, r4
+ 800536e:      f7fd fc41       bl      8002bf4 <d_print_comp>
+ 8005372:      2202            movs    r2, #2
+ 8005374:      496a            ldr     r1, [pc, #424]  ; (8005520 <d_print_comp+0x292c>)
+ 8005376:      4620            mov     r0, r4
+ 8005378:      f7fb f818       bl      80003ac <d_append_buffer>
+ 800537c:      68eb            ldr     r3, [r5, #12]
+ 800537e:      4631            mov     r1, r6
+ 8005380:      68da            ldr     r2, [r3, #12]
+ 8005382:      4620            mov     r0, r4
+ 8005384:      f7fd fc36       bl      8002bf4 <d_print_comp>
+ 8005388:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 800538c:      2fff            cmp     r7, #255        ; 0xff
+ 800538e:      d111            bne.n   80053b4 <d_print_comp+0x27c0>
+ 8005390:      2600            movs    r6, #0
+ 8005392:      4639            mov     r1, r7
+ 8005394:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005398:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 800539c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80053a0:      4620            mov     r0, r4
+ 80053a2:      4798            blx     r3
+ 80053a4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80053a8:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 80053ac:      3301            adds    r3, #1
+ 80053ae:      4637            mov     r7, r6
+ 80053b0:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80053b4:      1c7a            adds    r2, r7, #1
+ 80053b6:      2329            movs    r3, #41 ; 0x29
+ 80053b8:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80053bc:      55e3            strb    r3, [r4, r7]
+ 80053be:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80053c2:      686a            ldr     r2, [r5, #4]
+ 80053c4:      9905            ldr     r1, [sp, #20]
+ 80053c6:      f7fd bd08       b.w     8002dda <d_print_comp+0x1e6>
+ 80053ca:      9905            ldr     r1, [sp, #20]
+ 80053cc:      686a            ldr     r2, [r5, #4]
+ 80053ce:      f7fd bd04       b.w     8002dda <d_print_comp+0x1e6>
+ 80053d2:      4642            mov     r2, r8
+ 80053d4:      4631            mov     r1, r6
+ 80053d6:      4620            mov     r0, r4
+ 80053d8:      f7fd fc0c       bl      8002bf4 <d_print_comp>
+ 80053dc:      9905            ldr     r1, [sp, #20]
+ 80053de:      686a            ldr     r2, [r5, #4]
+ 80053e0:      f7fd bcfb       b.w     8002dda <d_print_comp+0x1e6>
+ 80053e4:      a918            add     r1, sp, #96     ; 0x60
+ 80053e6:      4620            mov     r0, r4
+ 80053e8:      f841 3d40       str.w   r3, [r1, #-64]!
+ 80053ec:      f8d4 3110       ldr.w   r3, [r4, #272]  ; 0x110
+ 80053f0:      f8c4 1114       str.w   r1, [r4, #276]  ; 0x114
+ 80053f4:      4641            mov     r1, r8
+ 80053f6:      960a            str     r6, [sp, #40]   ; 0x28
+ 80053f8:      930b            str     r3, [sp, #44]   ; 0x2c
+ 80053fa:      9509            str     r5, [sp, #36]   ; 0x24
+ 80053fc:      f7fd fbfa       bl      8002bf4 <d_print_comp>
+ 8005400:      9e0a            ldr     r6, [sp, #40]   ; 0x28
+ 8005402:      9b08            ldr     r3, [sp, #32]
+ 8005404:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 8005408:      b9ee            cbnz    r6, 8005446 <d_print_comp+0x2852>
+ 800540a:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 800540e:      2fff            cmp     r7, #255        ; 0xff
+ 8005410:      d110            bne.n   8005434 <d_print_comp+0x2840>
+ 8005412:      4639            mov     r1, r7
+ 8005414:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005418:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 800541c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005420:      4620            mov     r0, r4
+ 8005422:      4798            blx     r3
+ 8005424:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005428:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 800542c:      3301            adds    r3, #1
+ 800542e:      4637            mov     r7, r6
+ 8005430:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005434:      2320            movs    r3, #32
+ 8005436:      1c7a            adds    r2, r7, #1
+ 8005438:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800543c:      55e3            strb    r3, [r4, r7]
+ 800543e:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005442:      f7fe ba0c       b.w     800385e <d_print_comp+0xc6a>
+ 8005446:      9905            ldr     r1, [sp, #20]
+ 8005448:      686a            ldr     r2, [r5, #4]
+ 800544a:      f7fd bcc6       b.w     8002dda <d_print_comp+0x1e6>
+ 800544e:      4935            ldr     r1, [pc, #212]  ; (8005524 <d_print_comp+0x2930>)
+ 8005450:      68b8            ldr     r0, [r7, #8]
+ 8005452:      f009 fa23       bl      800e89c <strncmp>
+ 8005456:      2800            cmp     r0, #0
+ 8005458:      f47e abc6       bne.w   8003be8 <d_print_comp+0xff4>
+ 800545c:      4631            mov     r1, r6
+ 800545e:      68ea            ldr     r2, [r5, #12]
+ 8005460:      4620            mov     r0, r4
+ 8005462:      f7fd fbc7       bl      8002bf4 <d_print_comp>
+ 8005466:      2202            movs    r2, #2
+ 8005468:      492f            ldr     r1, [pc, #188]  ; (8005528 <d_print_comp+0x2934>)
+ 800546a:      4620            mov     r0, r4
+ 800546c:      f7fa ff9e       bl      80003ac <d_append_buffer>
+ 8005470:      f7fe bc09       b.w     8003c86 <d_print_comp+0x1092>
+ 8005474:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8005478:      2fff            cmp     r7, #255        ; 0xff
+ 800547a:      d111            bne.n   80054a0 <d_print_comp+0x28ac>
+ 800547c:      2600            movs    r6, #0
+ 800547e:      4639            mov     r1, r7
+ 8005480:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005484:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8005488:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800548c:      4620            mov     r0, r4
+ 800548e:      4798            blx     r3
+ 8005490:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005494:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8005498:      3301            adds    r3, #1
+ 800549a:      4637            mov     r7, r6
+ 800549c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80054a0:      2320            movs    r3, #32
+ 80054a2:      1c7a            adds    r2, r7, #1
+ 80054a4:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80054a8:      55e3            strb    r3, [r4, r7]
+ 80054aa:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80054ae:      e564            b.n     8004f7a <d_print_comp+0x2386>
+ 80054b0:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80054b4:      2fff            cmp     r7, #255        ; 0xff
+ 80054b6:      d112            bne.n   80054de <d_print_comp+0x28ea>
+ 80054b8:      f04f 0800       mov.w   r8, #0
+ 80054bc:      4639            mov     r1, r7
+ 80054be:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80054c2:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80054c6:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80054ca:      4620            mov     r0, r4
+ 80054cc:      4798            blx     r3
+ 80054ce:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80054d2:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 80054d6:      3301            adds    r3, #1
+ 80054d8:      4647            mov     r7, r8
+ 80054da:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80054de:      2320            movs    r3, #32
+ 80054e0:      1c7a            adds    r2, r7, #1
+ 80054e2:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80054e6:      55e3            strb    r3, [r4, r7]
+ 80054e8:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80054ec:      e51c            b.n     8004f28 <d_print_comp+0x2334>
+ 80054ee:      4640            mov     r0, r8
+ 80054f0:      490e            ldr     r1, [pc, #56]   ; (800552c <d_print_comp+0x2938>)
+ 80054f2:      f001 fc65       bl      8006dc0 <strcmp>
+ 80054f6:      2800            cmp     r0, #0
+ 80054f8:      f040 81fb       bne.w   80058f2 <d_print_comp+0x2cfe>
+ 80054fc:      68eb            ldr     r3, [r5, #12]
+ 80054fe:      4631            mov     r1, r6
+ 8005500:      68da            ldr     r2, [r3, #12]
+ 8005502:      4620            mov     r0, r4
+ 8005504:      f001 f87e       bl      8006604 <d_print_subexpr>
+ 8005508:      f7fd bc60       b.w     8002dcc <d_print_comp+0x1d8>
+ 800550c:      9905            ldr     r1, [sp, #20]
+ 800550e:      686a            ldr     r2, [r5, #4]
+ 8005510:      f7fd bc63       b.w     8002dda <d_print_comp+0x1e6>
+ 8005514:      9905            ldr     r1, [sp, #20]
+ 8005516:      686a            ldr     r2, [r5, #4]
+ 8005518:      f7fd bc5f       b.w     8002dda <d_print_comp+0x1e6>
+ 800551c:      080127c4        .word   0x080127c4
+ 8005520:      08012778        .word   0x08012778
+ 8005524:      080125dc        .word   0x080125dc
+ 8005528:      080125e4        .word   0x080125e4
+ 800552c:      0801257c        .word   0x0801257c
+ 8005530:      689b            ldr     r3, [r3, #8]
+ 8005532:      689a            ldr     r2, [r3, #8]
+ 8005534:      2a01            cmp     r2, #1
+ 8005536:      f47d ac4e       bne.w   8002dd6 <d_print_comp+0x1e2>
+ 800553a:      685b            ldr     r3, [r3, #4]
+ 800553c:      781b            ldrb    r3, [r3, #0]
+ 800553e:      2b3e            cmp     r3, #62 ; 0x3e
+ 8005540:      f47d ac49       bne.w   8002dd6 <d_print_comp+0x1e2>
+ 8005544:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8005548:      2fff            cmp     r7, #255        ; 0xff
+ 800554a:      d111            bne.n   8005570 <d_print_comp+0x297c>
+ 800554c:      2600            movs    r6, #0
+ 800554e:      4639            mov     r1, r7
+ 8005550:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005554:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8005558:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800555c:      4620            mov     r0, r4
+ 800555e:      4798            blx     r3
+ 8005560:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005564:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8005568:      3301            adds    r3, #1
+ 800556a:      4637            mov     r7, r6
+ 800556c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005570:      1c7a            adds    r2, r7, #1
+ 8005572:      2329            movs    r3, #41 ; 0x29
+ 8005574:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005578:      55e3            strb    r3, [r4, r7]
+ 800557a:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 800557e:      686a            ldr     r2, [r5, #4]
+ 8005580:      9905            ldr     r1, [sp, #20]
+ 8005582:      f7fd bc2a       b.w     8002dda <d_print_comp+0x1e6>
+ 8005586:      2a05            cmp     r2, #5
+ 8005588:      f200 80a9       bhi.w   80056de <d_print_comp+0x2aea>
+ 800558c:      3b57            subs    r3, #87 ; 0x57
+ 800558e:      f7ff ba1d       b.w     80049cc <d_print_comp+0x1dd8>
+ 8005592:      4692            mov     sl, r2
+ 8005594:      461a            mov     r2, r3
+ 8005596:      e001            b.n     800559c <d_print_comp+0x29a8>
+ 8005598:      6852            ldr     r2, [r2, #4]
+ 800559a:      b342            cbz     r2, 80055ee <d_print_comp+0x29fa>
+ 800559c:      6811            ldr     r1, [r2, #0]
+ 800559e:      4589            cmp     r9, r1
+ 80055a0:      d003            beq.n   80055aa <d_print_comp+0x29b6>
+ 80055a2:      428d            cmp     r5, r1
+ 80055a4:      d1f8            bne.n   8005598 <d_print_comp+0x29a4>
+ 80055a6:      429a            cmp     r2, r3
+ 80055a8:      d0f6            beq.n   8005598 <d_print_comp+0x29a4>
+ 80055aa:      f109 0108       add.w   r1, r9, #8
+ 80055ae:      4620            mov     r0, r4
+ 80055b0:      f7fb f92a       bl      8000808 <d_lookup_template_argument.isra.10>
+ 80055b4:      4681            mov     r9, r0
+ 80055b6:      b198            cbz     r0, 80055e0 <d_print_comp+0x29ec>
+ 80055b8:      f899 3000       ldrb.w  r3, [r9]
+ 80055bc:      2b2f            cmp     r3, #47 ; 0x2f
+ 80055be:      f47e acb6       bne.w   8003f2e <d_print_comp+0x133a>
+ 80055c2:      f8d4 1120       ldr.w   r1, [r4, #288]  ; 0x120
+ 80055c6:      2900            cmp     r1, #0
+ 80055c8:      f6fe acb6       blt.w   8003f38 <d_print_comp+0x1344>
+ 80055cc:      4648            mov     r0, r9
+ 80055ce:      f7fb f905       bl      80007dc <d_index_template_argument.part.9>
+ 80055d2:      4681            mov     r9, r0
+ 80055d4:      2800            cmp     r0, #0
+ 80055d6:      f47e acaa       bne.w   8003f2e <d_print_comp+0x133a>
+ 80055da:      b10f            cbz     r7, 80055e0 <d_print_comp+0x29ec>
+ 80055dc:      f8c4 8110       str.w   r8, [r4, #272]  ; 0x110
+ 80055e0:      2301            movs    r3, #1
+ 80055e2:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 80055e6:      686a            ldr     r2, [r5, #4]
+ 80055e8:      9905            ldr     r1, [sp, #20]
+ 80055ea:      f7fd bbf6       b.w     8002dda <d_print_comp+0x1e6>
+ 80055ee:      f8da 3004       ldr.w   r3, [sl, #4]
+ 80055f2:      f8d4 8110       ldr.w   r8, [r4, #272]  ; 0x110
+ 80055f6:      f8c4 3110       str.w   r3, [r4, #272]  ; 0x110
+ 80055fa:      f109 0108       add.w   r1, r9, #8
+ 80055fe:      4620            mov     r0, r4
+ 8005600:      f7fb f902       bl      8000808 <d_lookup_template_argument.isra.10>
+ 8005604:      2701            movs    r7, #1
+ 8005606:      4681            mov     r9, r0
+ 8005608:      2800            cmp     r0, #0
+ 800560a:      d1d5            bne.n   80055b8 <d_print_comp+0x29c4>
+ 800560c:      e7e6            b.n     80055dc <d_print_comp+0x29e8>
+ 800560e:      ab18            add     r3, sp, #96     ; 0x60
+ 8005610:      9a01            ldr     r2, [sp, #4]
+ 8005612:      f843 2d48       str.w   r2, [r3, #-72]!
+ 8005616:      f8cd 801c       str.w   r8, [sp, #28]
+ 800561a:      f8c4 3110       str.w   r3, [r4, #272]  ; 0x110
+ 800561e:      e58e            b.n     800513e <d_print_comp+0x254a>
+ 8005620:      68eb            ldr     r3, [r5, #12]
+ 8005622:      f893 9000       ldrb.w  r9, [r3]
+ 8005626:      f1b9 0f00       cmp.w   r9, #0
+ 800562a:      f47d ae3f       bne.w   80032ac <d_print_comp+0x6b8>
+ 800562e:      283d            cmp     r0, #61 ; 0x3d
+ 8005630:      f000 80e6       beq.w   8005800 <d_print_comp+0x2c0c>
+ 8005634:      4631            mov     r1, r6
+ 8005636:      68ea            ldr     r2, [r5, #12]
+ 8005638:      4620            mov     r0, r4
+ 800563a:      f1a8 0802       sub.w   r8, r8, #2
+ 800563e:      f7fd fad9       bl      8002bf4 <d_print_comp>
+ 8005642:      f1b8 0f04       cmp.w   r8, #4
+ 8005646:      f200 80d7       bhi.w   80057f8 <d_print_comp+0x2c04>
+ 800564a:      e8df f008       tbb     [pc, r8]
+ 800564e:      93b4            .short  0x93b4
+ 8005650:      818a            .short  0x818a
+ 8005652:      35              .byte   0x35
+ 8005653:      00              .byte   0x00
+ 8005654:      f8d8 2008       ldr.w   r2, [r8, #8]
+ 8005658:      4631            mov     r1, r6
+ 800565a:      4620            mov     r0, r4
+ 800565c:      f000 ffd2       bl      8006604 <d_print_subexpr>
+ 8005660:      464a            mov     r2, r9
+ 8005662:      4631            mov     r1, r6
+ 8005664:      4620            mov     r0, r4
+ 8005666:      f000 ff8d       bl      8006584 <d_print_expr_op>
+ 800566a:      9905            ldr     r1, [sp, #20]
+ 800566c:      686a            ldr     r2, [r5, #4]
+ 800566e:      f7fd bbb4       b.w     8002dda <d_print_comp+0x1e6>
+ 8005672:      4641            mov     r1, r8
+ 8005674:      4620            mov     r0, r4
+ 8005676:      f7fb f8d7       bl      8000828 <d_find_pack>
+ 800567a:      b1a8            cbz     r0, 80056a8 <d_print_comp+0x2ab4>
+ 800567c:      7803            ldrb    r3, [r0, #0]
+ 800567e:      2b2f            cmp     r3, #47 ; 0x2f
+ 8005680:      d112            bne.n   80056a8 <d_print_comp+0x2ab4>
+ 8005682:      6883            ldr     r3, [r0, #8]
+ 8005684:      b183            cbz     r3, 80056a8 <d_print_comp+0x2ab4>
+ 8005686:      68c0            ldr     r0, [r0, #12]
+ 8005688:      3701            adds    r7, #1
+ 800568a:      e7f6            b.n     800567a <d_print_comp+0x2a86>
+ 800568c:      f8d8 3008       ldr.w   r3, [r8, #8]
+ 8005690:      781a            ldrb    r2, [r3, #0]
+ 8005692:      2a01            cmp     r2, #1
+ 8005694:      f47f aad2       bne.w   8004c3c <d_print_comp+0x2048>
+ 8005698:      f8d8 200c       ldr.w   r2, [r8, #12]
+ 800569c:      7812            ldrb    r2, [r2, #0]
+ 800569e:      2a29            cmp     r2, #41 ; 0x29
+ 80056a0:      bf08            it      eq
+ 80056a2:      4698            moveq   r8, r3
+ 80056a4:      f7ff baca       b.w     8004c3c <d_print_comp+0x2048>
+ 80056a8:      4639            mov     r1, r7
+ 80056aa:      4620            mov     r0, r4
+ 80056ac:      f7fb f970       bl      8000990 <d_append_num>
+ 80056b0:      9905            ldr     r1, [sp, #20]
+ 80056b2:      686a            ldr     r2, [r5, #4]
+ 80056b4:      f7fd bb91       b.w     8002dda <d_print_comp+0x1e6>
+ 80056b8:      2203            movs    r2, #3
+ 80056ba:      4994            ldr     r1, [pc, #592]  ; (800590c <d_print_comp+0x2d18>)
+ 80056bc:      4620            mov     r0, r4
+ 80056be:      f7fa fe75       bl      80003ac <d_append_buffer>
+ 80056c2:      9905            ldr     r1, [sp, #20]
+ 80056c4:      686a            ldr     r2, [r5, #4]
+ 80056c6:      f7fd bb88       b.w     8002dda <d_print_comp+0x1e6>
+ 80056ca:      2300            movs    r3, #0
+ 80056cc:      441e            add     r6, r3
+ 80056ce:      e5fa            b.n     80052c6 <d_print_comp+0x26d2>
+ 80056d0:      464a            mov     r2, r9
+ 80056d2:      4631            mov     r1, r6
+ 80056d4:      4620            mov     r0, r4
+ 80056d6:      f000 ff55       bl      8006584 <d_print_expr_op>
+ 80056da:      f7fd bea9       b.w     8003430 <d_print_comp+0x83c>
+ 80056de:      2b5f            cmp     r3, #95 ; 0x5f
+ 80056e0:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 80056e4:      f47f a964       bne.w   80049b0 <d_print_comp+0x1dbc>
+ 80056e8:      28ff            cmp     r0, #255        ; 0xff
+ 80056ea:      f63f a961       bhi.w   80049b0 <d_print_comp+0x1dbc>
+ 80056ee:      29ff            cmp     r1, #255        ; 0xff
+ 80056f0:      fa5f f980       uxtb.w  r9, r0
+ 80056f4:      d10f            bne.n   8005716 <d_print_comp+0x2b22>
+ 80056f6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80056fa:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80056fe:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005702:      4620            mov     r0, r4
+ 8005704:      4798            blx     r3
+ 8005706:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800570a:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 800570e:      3301            adds    r3, #1
+ 8005710:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005714:      2100            movs    r1, #0
+ 8005716:      1c4b            adds    r3, r1, #1
+ 8005718:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800571c:      4657            mov     r7, sl
+ 800571e:      f804 9001       strb.w  r9, [r4, r1]
+ 8005722:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 8005726:      f7ff b935       b.w     8004994 <d_print_comp+0x1da0>
+ 800572a:      f8da a008       ldr.w   sl, [sl, #8]
+ 800572e:      f1ba 0f00       cmp.w   sl, #0
+ 8005732:      f43e ad01       beq.w   8004138 <d_print_comp+0x1544>
+ 8005736:      e4d1            b.n     80050dc <d_print_comp+0x24e8>
+ 8005738:      2205            movs    r2, #5
+ 800573a:      4975            ldr     r1, [pc, #468]  ; (8005910 <d_print_comp+0x2d1c>)
+ 800573c:      4620            mov     r0, r4
+ 800573e:      f7fa fe35       bl      80003ac <d_append_buffer>
+ 8005742:      9905            ldr     r1, [sp, #20]
+ 8005744:      686a            ldr     r2, [r5, #4]
+ 8005746:      f7fd bb48       b.w     8002dda <d_print_comp+0x1e6>
+ 800574a:      f8cc 0000       str.w   r0, [ip]
+ 800574e:      e72c            b.n     80055aa <d_print_comp+0x29b6>
+ 8005750:      2202            movs    r2, #2
+ 8005752:      4970            ldr     r1, [pc, #448]  ; (8005914 <d_print_comp+0x2d20>)
+ 8005754:      4620            mov     r0, r4
+ 8005756:      f7fa fe29       bl      80003ac <d_append_buffer>
+ 800575a:      9905            ldr     r1, [sp, #20]
+ 800575c:      686a            ldr     r2, [r5, #4]
+ 800575e:      f7fd bb3c       b.w     8002dda <d_print_comp+0x1e6>
+ 8005762:      2202            movs    r2, #2
+ 8005764:      496c            ldr     r1, [pc, #432]  ; (8005918 <d_print_comp+0x2d24>)
+ 8005766:      4620            mov     r0, r4
+ 8005768:      f7fa fe20       bl      80003ac <d_append_buffer>
+ 800576c:      9905            ldr     r1, [sp, #20]
+ 800576e:      686a            ldr     r2, [r5, #4]
+ 8005770:      f7fd bb33       b.w     8002dda <d_print_comp+0x1e6>
+ 8005774:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8005778:      2fff            cmp     r7, #255        ; 0xff
+ 800577a:      d111            bne.n   80057a0 <d_print_comp+0x2bac>
+ 800577c:      2600            movs    r6, #0
+ 800577e:      4639            mov     r1, r7
+ 8005780:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005784:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 8005788:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800578c:      4620            mov     r0, r4
+ 800578e:      4798            blx     r3
+ 8005790:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005794:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8005798:      3301            adds    r3, #1
+ 800579a:      4637            mov     r7, r6
+ 800579c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80057a0:      1c7a            adds    r2, r7, #1
+ 80057a2:      236c            movs    r3, #108        ; 0x6c
+ 80057a4:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80057a8:      55e3            strb    r3, [r4, r7]
+ 80057aa:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80057ae:      686a            ldr     r2, [r5, #4]
+ 80057b0:      9905            ldr     r1, [sp, #20]
+ 80057b2:      f7fd bb12       b.w     8002dda <d_print_comp+0x1e6>
+ 80057b6:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 80057ba:      2fff            cmp     r7, #255        ; 0xff
+ 80057bc:      d111            bne.n   80057e2 <d_print_comp+0x2bee>
+ 80057be:      2600            movs    r6, #0
+ 80057c0:      4639            mov     r1, r7
+ 80057c2:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80057c6:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 80057ca:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80057ce:      4620            mov     r0, r4
+ 80057d0:      4798            blx     r3
+ 80057d2:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80057d6:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 80057da:      3301            adds    r3, #1
+ 80057dc:      4637            mov     r7, r6
+ 80057de:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80057e2:      1c7a            adds    r2, r7, #1
+ 80057e4:      2375            movs    r3, #117        ; 0x75
+ 80057e6:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80057ea:      55e3            strb    r3, [r4, r7]
+ 80057ec:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80057f0:      686a            ldr     r2, [r5, #4]
+ 80057f2:      9905            ldr     r1, [sp, #20]
+ 80057f4:      f7fd baf1       b.w     8002dda <d_print_comp+0x1e6>
+ 80057f8:      9905            ldr     r1, [sp, #20]
+ 80057fa:      686a            ldr     r2, [r5, #4]
+ 80057fc:      f7fd baed       b.w     8002dda <d_print_comp+0x1e6>
+ 8005800:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8005804:      2fff            cmp     r7, #255        ; 0xff
+ 8005806:      d110            bne.n   800582a <d_print_comp+0x2c36>
+ 8005808:      4639            mov     r1, r7
+ 800580a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800580e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8005812:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005816:      4620            mov     r0, r4
+ 8005818:      4798            blx     r3
+ 800581a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800581e:      f8c4 9100       str.w   r9, [r4, #256]  ; 0x100
+ 8005822:      3301            adds    r3, #1
+ 8005824:      464f            mov     r7, r9
+ 8005826:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800582a:      232d            movs    r3, #45 ; 0x2d
+ 800582c:      1c7a            adds    r2, r7, #1
+ 800582e:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005832:      55e3            strb    r3, [r4, r7]
+ 8005834:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005838:      e6fc            b.n     8005634 <d_print_comp+0x2a40>
+ 800583a:      689a            ldr     r2, [r3, #8]
+ 800583c:      6891            ldr     r1, [r2, #8]
+ 800583e:      2901            cmp     r1, #1
+ 8005840:      f47d aa69       bne.w   8002d16 <d_print_comp+0x122>
+ 8005844:      6852            ldr     r2, [r2, #4]
+ 8005846:      7812            ldrb    r2, [r2, #0]
+ 8005848:      2a3e            cmp     r2, #62 ; 0x3e
+ 800584a:      f47d aa64       bne.w   8002d16 <d_print_comp+0x122>
+ 800584e:      f8d4 7100       ldr.w   r7, [r4, #256]  ; 0x100
+ 8005852:      2fff            cmp     r7, #255        ; 0xff
+ 8005854:      d110            bne.n   8005878 <d_print_comp+0x2c84>
+ 8005856:      f884 00ff       strb.w  r0, [r4, #255]  ; 0xff
+ 800585a:      4639            mov     r1, r7
+ 800585c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005860:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005864:      4620            mov     r0, r4
+ 8005866:      4798            blx     r3
+ 8005868:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800586c:      f8c4 8100       str.w   r8, [r4, #256]  ; 0x100
+ 8005870:      3301            adds    r3, #1
+ 8005872:      4647            mov     r7, r8
+ 8005874:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005878:      2328            movs    r3, #40 ; 0x28
+ 800587a:      1c7a            adds    r2, r7, #1
+ 800587c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005880:      55e3            strb    r3, [r4, r7]
+ 8005882:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005886:      68ab            ldr     r3, [r5, #8]
+ 8005888:      f7fd ba45       b.w     8002d16 <d_print_comp+0x122>
+ 800588c:      465a            mov     r2, fp
+ 800588e:      4631            mov     r1, r6
+ 8005890:      4620            mov     r0, r4
+ 8005892:      f000 feb7       bl      8006604 <d_print_subexpr>
+ 8005896:      463a            mov     r2, r7
+ 8005898:      4631            mov     r1, r6
+ 800589a:      4620            mov     r0, r4
+ 800589c:      f000 fe72       bl      8006584 <d_print_expr_op>
+ 80058a0:      4652            mov     r2, sl
+ 80058a2:      4631            mov     r1, r6
+ 80058a4:      4620            mov     r0, r4
+ 80058a6:      f000 fead       bl      8006604 <d_print_subexpr>
+ 80058aa:      2203            movs    r2, #3
+ 80058ac:      491b            ldr     r1, [pc, #108]  ; (800591c <d_print_comp+0x2d28>)
+ 80058ae:      4620            mov     r0, r4
+ 80058b0:      f7fa fd7c       bl      80003ac <d_append_buffer>
+ 80058b4:      464a            mov     r2, r9
+ 80058b6:      4631            mov     r1, r6
+ 80058b8:      4620            mov     r0, r4
+ 80058ba:      f000 fea3       bl      8006604 <d_print_subexpr>
+ 80058be:      9905            ldr     r1, [sp, #20]
+ 80058c0:      686a            ldr     r2, [r5, #4]
+ 80058c2:      f7fd ba8a       b.w     8002dda <d_print_comp+0x1e6>
+ 80058c6:      9905            ldr     r1, [sp, #20]
+ 80058c8:      686a            ldr     r2, [r5, #4]
+ 80058ca:      f7fd ba86       b.w     8002dda <d_print_comp+0x1e6>
+ 80058ce:      9905            ldr     r1, [sp, #20]
+ 80058d0:      686a            ldr     r2, [r5, #4]
+ 80058d2:      f7fd ba82       b.w     8002dda <d_print_comp+0x1e6>
+ 80058d6:      68d3            ldr     r3, [r2, #12]
+ 80058d8:      781b            ldrb    r3, [r3, #0]
+ 80058da:      2b29            cmp     r3, #41 ; 0x29
+ 80058dc:      bf1c            itt     ne
+ 80058de:      2301            movne   r3, #1
+ 80058e0:      f8c4 3118       strne.w r3, [r4, #280]  ; 0x118
+ 80058e4:      6892            ldr     r2, [r2, #8]
+ 80058e6:      4631            mov     r1, r6
+ 80058e8:      4620            mov     r0, r4
+ 80058ea:      f000 fe8b       bl      8006604 <d_print_subexpr>
+ 80058ee:      f7fd ba22       b.w     8002d36 <d_print_comp+0x142>
+ 80058f2:      463a            mov     r2, r7
+ 80058f4:      4631            mov     r1, r6
+ 80058f6:      4620            mov     r0, r4
+ 80058f8:      f000 fe44       bl      8006584 <d_print_expr_op>
+ 80058fc:      e5fe            b.n     80054fc <d_print_comp+0x2908>
+ 80058fe:      2301            movs    r3, #1
+ 8005900:      f8c4 3118       str.w   r3, [r4, #280]  ; 0x118
+ 8005904:      686a            ldr     r2, [r5, #4]
+ 8005906:      f7fd ba68       b.w     8002dda <d_print_comp+0x1e6>
+ 800590a:      bf00            nop
+ 800590c:      08012794        .word   0x08012794
+ 8005910:      08012798        .word   0x08012798
+ 8005914:      08012790        .word   0x08012790
+ 8005918:      0801278c        .word   0x0801278c
+ 800591c:      08012780        .word   0x08012780
+
+08005920 <d_print_mod>:
+ 8005920:      7813            ldrb    r3, [r2, #0]
+ 8005922:      3b03            subs    r3, #3
+ 8005924:      e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8005928:      4615            mov     r5, r2
+ 800592a:      4604            mov     r4, r0
+ 800592c:      460e            mov     r6, r1
+ 800592e:      2b4c            cmp     r3, #76 ; 0x4c
+ 8005930:      f200 82c8       bhi.w   8005ec4 <d_print_mod+0x5a4>
+ 8005934:      e8df f013       tbh     [pc, r3, lsl #1]
+ 8005938:      02c60075        .word   0x02c60075
+ 800593c:      02c602c6        .word   0x02c602c6
+ 8005940:      02c602c6        .word   0x02c602c6
+ 8005944:      02c602c6        .word   0x02c602c6
+ 8005948:      02c602c6        .word   0x02c602c6
+ 800594c:      02c602c6        .word   0x02c602c6
+ 8005950:      02c602c6        .word   0x02c602c6
+ 8005954:      02c602c6        .word   0x02c602c6
+ 8005958:      02c602c6        .word   0x02c602c6
+ 800595c:      02c602c6        .word   0x02c602c6
+ 8005960:      02c602c6        .word   0x02c602c6
+ 8005964:      00a1007a        .word   0x00a1007a
+ 8005968:      007a00c8        .word   0x007a00c8
+ 800596c:      00c800a1        .word   0x00c800a1
+ 8005970:      010a00ee        .word   0x010a00ee
+ 8005974:      01480126        .word   0x01480126
+ 8005978:      02790166        .word   0x02790166
+ 800597c:      029f0252        .word   0x029f0252
+ 8005980:      02c602c6        .word   0x02c602c6
+ 8005984:      02c602c6        .word   0x02c602c6
+ 8005988:      02c60184        .word   0x02c60184
+ 800598c:      02c601cc        .word   0x02c601cc
+ 8005990:      02c602c6        .word   0x02c602c6
+ 8005994:      02c602c6        .word   0x02c602c6
+ 8005998:      02c602c6        .word   0x02c602c6
+ 800599c:      02c602c6        .word   0x02c602c6
+ 80059a0:      02c602c6        .word   0x02c602c6
+ 80059a4:      02c602c6        .word   0x02c602c6
+ 80059a8:      02c602c6        .word   0x02c602c6
+ 80059ac:      02c602c6        .word   0x02c602c6
+ 80059b0:      02c602c6        .word   0x02c602c6
+ 80059b4:      02c602c6        .word   0x02c602c6
+ 80059b8:      02c602c6        .word   0x02c602c6
+ 80059bc:      02c602c6        .word   0x02c602c6
+ 80059c0:      02c602c6        .word   0x02c602c6
+ 80059c4:      02c602c6        .word   0x02c602c6
+ 80059c8:      01f402c6        .word   0x01f402c6
+ 80059cc:      022a02c6        .word   0x022a02c6
+ 80059d0:      004d            .short  0x004d
+ 80059d2:      4fd7            ldr     r7, [pc, #860]  ; (8005d30 <d_print_mod+0x410>)
+ 80059d4:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 80059d8:      f107 0806       add.w   r8, r7, #6
+ 80059dc:      f04f 0900       mov.w   r9, #0
+ 80059e0:      e016            b.n     8005a10 <d_print_mod+0xf0>
+ 80059e2:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80059e6:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80059ea:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 80059ee:      4798            blx     r3
+ 80059f0:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80059f4:      3301            adds    r3, #1
+ 80059f6:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80059fa:      2200            movs    r2, #0
+ 80059fc:      2301            movs    r3, #1
+ 80059fe:      4547            cmp     r7, r8
+ 8005a00:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005a04:      f804 a002       strb.w  sl, [r4, r2]
+ 8005a08:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8005a0c:      f000 825f       beq.w   8005ece <d_print_mod+0x5ae>
+ 8005a10:      2bff            cmp     r3, #255        ; 0xff
+ 8005a12:      4619            mov     r1, r3
+ 8005a14:      4620            mov     r0, r4
+ 8005a16:      f817 ab01       ldrb.w  sl, [r7], #1
+ 8005a1a:      d0e2            beq.n   80059e2 <d_print_mod+0xc2>
+ 8005a1c:      461a            mov     r2, r3
+ 8005a1e:      3301            adds    r3, #1
+ 8005a20:      e7ed            b.n     80059fe <d_print_mod+0xde>
+ 8005a22:      68aa            ldr     r2, [r5, #8]
+ 8005a24:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8005a28:      f7fd b8e4       b.w     8002bf4 <d_print_comp>
+ 8005a2c:      4dc1            ldr     r5, [pc, #772]  ; (8005d34 <d_print_mod+0x414>)
+ 8005a2e:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005a32:      f105 0609       add.w   r6, r5, #9
+ 8005a36:      2700            movs    r7, #0
+ 8005a38:      e016            b.n     8005a68 <d_print_mod+0x148>
+ 8005a3a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005a3e:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005a42:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005a46:      4798            blx     r3
+ 8005a48:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005a4c:      3301            adds    r3, #1
+ 8005a4e:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005a52:      2200            movs    r2, #0
+ 8005a54:      2301            movs    r3, #1
+ 8005a56:      42ae            cmp     r6, r5
+ 8005a58:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005a5c:      f804 8002       strb.w  r8, [r4, r2]
+ 8005a60:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005a64:      f000 80ea       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005a68:      2bff            cmp     r3, #255        ; 0xff
+ 8005a6a:      4619            mov     r1, r3
+ 8005a6c:      4620            mov     r0, r4
+ 8005a6e:      f815 8f01       ldrb.w  r8, [r5, #1]!
+ 8005a72:      d0e2            beq.n   8005a3a <d_print_mod+0x11a>
+ 8005a74:      461a            mov     r2, r3
+ 8005a76:      3301            adds    r3, #1
+ 8005a78:      e7ed            b.n     8005a56 <d_print_mod+0x136>
+ 8005a7a:      4daf            ldr     r5, [pc, #700]  ; (8005d38 <d_print_mod+0x418>)
+ 8005a7c:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005a80:      f105 0609       add.w   r6, r5, #9
+ 8005a84:      2700            movs    r7, #0
+ 8005a86:      e016            b.n     8005ab6 <d_print_mod+0x196>
+ 8005a88:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005a8c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005a90:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005a94:      4798            blx     r3
+ 8005a96:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005a9a:      3301            adds    r3, #1
+ 8005a9c:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005aa0:      2200            movs    r2, #0
+ 8005aa2:      2301            movs    r3, #1
+ 8005aa4:      42ae            cmp     r6, r5
+ 8005aa6:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005aaa:      f804 8002       strb.w  r8, [r4, r2]
+ 8005aae:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005ab2:      f000 80c3       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005ab6:      2bff            cmp     r3, #255        ; 0xff
+ 8005ab8:      4619            mov     r1, r3
+ 8005aba:      4620            mov     r0, r4
+ 8005abc:      f815 8f01       ldrb.w  r8, [r5, #1]!
+ 8005ac0:      d0e2            beq.n   8005a88 <d_print_mod+0x168>
+ 8005ac2:      461a            mov     r2, r3
+ 8005ac4:      3301            adds    r3, #1
+ 8005ac6:      e7ed            b.n     8005aa4 <d_print_mod+0x184>
+ 8005ac8:      4d9c            ldr     r5, [pc, #624]  ; (8005d3c <d_print_mod+0x41c>)
+ 8005aca:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005ace:      1dae            adds    r6, r5, #6
+ 8005ad0:      2700            movs    r7, #0
+ 8005ad2:      e016            b.n     8005b02 <d_print_mod+0x1e2>
+ 8005ad4:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005ad8:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005adc:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005ae0:      4798            blx     r3
+ 8005ae2:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005ae6:      3301            adds    r3, #1
+ 8005ae8:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005aec:      2200            movs    r2, #0
+ 8005aee:      2301            movs    r3, #1
+ 8005af0:      42b5            cmp     r5, r6
+ 8005af2:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005af6:      f804 8002       strb.w  r8, [r4, r2]
+ 8005afa:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005afe:      f000 809d       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005b02:      2bff            cmp     r3, #255        ; 0xff
+ 8005b04:      4619            mov     r1, r3
+ 8005b06:      4620            mov     r0, r4
+ 8005b08:      f815 8b01       ldrb.w  r8, [r5], #1
+ 8005b0c:      d0e2            beq.n   8005ad4 <d_print_mod+0x1b4>
+ 8005b0e:      461a            mov     r2, r3
+ 8005b10:      3301            adds    r3, #1
+ 8005b12:      e7ed            b.n     8005af0 <d_print_mod+0x1d0>
+ 8005b14:      f8d0 1100       ldr.w   r1, [r0, #256]  ; 0x100
+ 8005b18:      29ff            cmp     r1, #255        ; 0xff
+ 8005b1a:      d10f            bne.n   8005b3c <d_print_mod+0x21c>
+ 8005b1c:      2500            movs    r5, #0
+ 8005b1e:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 8005b22:      f880 50ff       strb.w  r5, [r0, #255]  ; 0xff
+ 8005b26:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8005b2a:      4798            blx     r3
+ 8005b2c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005b30:      f8c4 5100       str.w   r5, [r4, #256]  ; 0x100
+ 8005b34:      3301            adds    r3, #1
+ 8005b36:      4629            mov     r1, r5
+ 8005b38:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005b3c:      2220            movs    r2, #32
+ 8005b3e:      1c4b            adds    r3, r1, #1
+ 8005b40:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005b44:      5462            strb    r2, [r4, r1]
+ 8005b46:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 8005b4a:      e05d            b.n     8005c08 <d_print_mod+0x2e8>
+ 8005b4c:      f8d0 1100       ldr.w   r1, [r0, #256]  ; 0x100
+ 8005b50:      29ff            cmp     r1, #255        ; 0xff
+ 8005b52:      d10f            bne.n   8005b74 <d_print_mod+0x254>
+ 8005b54:      2500            movs    r5, #0
+ 8005b56:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 8005b5a:      f880 50ff       strb.w  r5, [r0, #255]  ; 0xff
+ 8005b5e:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8005b62:      4798            blx     r3
+ 8005b64:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005b68:      f8c4 5100       str.w   r5, [r4, #256]  ; 0x100
+ 8005b6c:      3301            adds    r3, #1
+ 8005b6e:      4629            mov     r1, r5
+ 8005b70:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005b74:      2220            movs    r2, #32
+ 8005b76:      1c4b            adds    r3, r1, #1
+ 8005b78:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005b7c:      5462            strb    r2, [r4, r1]
+ 8005b7e:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 8005b82:      e154            b.n     8005e2e <d_print_mod+0x50e>
+ 8005b84:      f8d0 1100       ldr.w   r1, [r0, #256]  ; 0x100
+ 8005b88:      29ff            cmp     r1, #255        ; 0xff
+ 8005b8a:      d10f            bne.n   8005bac <d_print_mod+0x28c>
+ 8005b8c:      2700            movs    r7, #0
+ 8005b8e:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 8005b92:      f880 70ff       strb.w  r7, [r0, #255]  ; 0xff
+ 8005b96:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8005b9a:      4798            blx     r3
+ 8005b9c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005ba0:      f8c4 7100       str.w   r7, [r4, #256]  ; 0x100
+ 8005ba4:      3301            adds    r3, #1
+ 8005ba6:      4639            mov     r1, r7
+ 8005ba8:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005bac:      1c4a            adds    r2, r1, #1
+ 8005bae:      2320            movs    r3, #32
+ 8005bb0:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005bb4:      5463            strb    r3, [r4, r1]
+ 8005bb6:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005bba:      4631            mov     r1, r6
+ 8005bbc:      68ea            ldr     r2, [r5, #12]
+ 8005bbe:      4620            mov     r0, r4
+ 8005bc0:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8005bc4:      f7fd b816       b.w     8002bf4 <d_print_comp>
+ 8005bc8:      f011 0604       ands.w  r6, r1, #4
+ 8005bcc:      d136            bne.n   8005c3c <d_print_mod+0x31c>
+ 8005bce:      f8d0 1100       ldr.w   r1, [r0, #256]  ; 0x100
+ 8005bd2:      29ff            cmp     r1, #255        ; 0xff
+ 8005bd4:      d10e            bne.n   8005bf4 <d_print_mod+0x2d4>
+ 8005bd6:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 8005bda:      f880 60ff       strb.w  r6, [r0, #255]  ; 0xff
+ 8005bde:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8005be2:      4798            blx     r3
+ 8005be4:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005be8:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8005bec:      3301            adds    r3, #1
+ 8005bee:      4631            mov     r1, r6
+ 8005bf0:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005bf4:      232a            movs    r3, #42 ; 0x2a
+ 8005bf6:      1c4a            adds    r2, r1, #1
+ 8005bf8:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005bfc:      5463            strb    r3, [r4, r1]
+ 8005bfe:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005c02:      e01b            b.n     8005c3c <d_print_mod+0x31c>
+ 8005c04:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005c08:      2bff            cmp     r3, #255        ; 0xff
+ 8005c0a:      f040 81a9       bne.w   8005f60 <d_print_mod+0x640>
+ 8005c0e:      2500            movs    r5, #0
+ 8005c10:      4619            mov     r1, r3
+ 8005c12:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005c16:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005c1a:      f884 50ff       strb.w  r5, [r4, #255]  ; 0xff
+ 8005c1e:      4620            mov     r0, r4
+ 8005c20:      4798            blx     r3
+ 8005c22:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005c26:      1c5a            adds    r2, r3, #1
+ 8005c28:      f8c4 2124       str.w   r2, [r4, #292]  ; 0x124
+ 8005c2c:      462b            mov     r3, r5
+ 8005c2e:      2101            movs    r1, #1
+ 8005c30:      2226            movs    r2, #38 ; 0x26
+ 8005c32:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8005c36:      54e2            strb    r2, [r4, r3]
+ 8005c38:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 8005c3c:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8005c40:      f890 3104       ldrb.w  r3, [r0, #260]  ; 0x104
+ 8005c44:      2b28            cmp     r3, #40 ; 0x28
+ 8005c46:      d019            beq.n   8005c7c <d_print_mod+0x35c>
+ 8005c48:      f8d0 1100       ldr.w   r1, [r0, #256]  ; 0x100
+ 8005c4c:      29ff            cmp     r1, #255        ; 0xff
+ 8005c4e:      f040 818b       bne.w   8005f68 <d_print_mod+0x648>
+ 8005c52:      2700            movs    r7, #0
+ 8005c54:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 8005c58:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8005c5c:      f880 70ff       strb.w  r7, [r0, #255]  ; 0xff
+ 8005c60:      4798            blx     r3
+ 8005c62:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005c66:      3301            adds    r3, #1
+ 8005c68:      4639            mov     r1, r7
+ 8005c6a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005c6e:      2201            movs    r2, #1
+ 8005c70:      2320            movs    r3, #32
+ 8005c72:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005c76:      5463            strb    r3, [r4, r1]
+ 8005c78:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005c7c:      68aa            ldr     r2, [r5, #8]
+ 8005c7e:      4d30            ldr     r5, [pc, #192]  ; (8005d40 <d_print_mod+0x420>)
+ 8005c80:      4631            mov     r1, r6
+ 8005c82:      4620            mov     r0, r4
+ 8005c84:      f7fc ffb6       bl      8002bf4 <d_print_comp>
+ 8005c88:      1cee            adds    r6, r5, #3
+ 8005c8a:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8005c8e:      2700            movs    r7, #0
+ 8005c90:      e015            b.n     8005cbe <d_print_mod+0x39e>
+ 8005c92:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005c96:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005c9a:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005c9e:      4798            blx     r3
+ 8005ca0:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005ca4:      3301            adds    r3, #1
+ 8005ca6:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005caa:      2200            movs    r2, #0
+ 8005cac:      2301            movs    r3, #1
+ 8005cae:      42ae            cmp     r6, r5
+ 8005cb0:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005cb4:      f804 8002       strb.w  r8, [r4, r2]
+ 8005cb8:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005cbc:      d0be            beq.n   8005c3c <d_print_mod+0x31c>
+ 8005cbe:      2bff            cmp     r3, #255        ; 0xff
+ 8005cc0:      4619            mov     r1, r3
+ 8005cc2:      4620            mov     r0, r4
+ 8005cc4:      f815 8b01       ldrb.w  r8, [r5], #1
+ 8005cc8:      d0e3            beq.n   8005c92 <d_print_mod+0x372>
+ 8005cca:      461a            mov     r2, r3
+ 8005ccc:      3301            adds    r3, #1
+ 8005cce:      e7ee            b.n     8005cae <d_print_mod+0x38e>
+ 8005cd0:      4f1c            ldr     r7, [pc, #112]  ; (8005d44 <d_print_mod+0x424>)
+ 8005cd2:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005cd6:      f107 080a       add.w   r8, r7, #10
+ 8005cda:      f04f 0900       mov.w   r9, #0
+ 8005cde:      e016            b.n     8005d0e <d_print_mod+0x3ee>
+ 8005ce0:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005ce4:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005ce8:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8005cec:      4798            blx     r3
+ 8005cee:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005cf2:      3301            adds    r3, #1
+ 8005cf4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005cf8:      2200            movs    r2, #0
+ 8005cfa:      2301            movs    r3, #1
+ 8005cfc:      45b8            cmp     r8, r7
+ 8005cfe:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005d02:      f804 a002       strb.w  sl, [r4, r2]
+ 8005d06:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8005d0a:      f000 811e       beq.w   8005f4a <d_print_mod+0x62a>
+ 8005d0e:      2bff            cmp     r3, #255        ; 0xff
+ 8005d10:      4619            mov     r1, r3
+ 8005d12:      4620            mov     r0, r4
+ 8005d14:      f817 ab01       ldrb.w  sl, [r7], #1
+ 8005d18:      d0e2            beq.n   8005ce0 <d_print_mod+0x3c0>
+ 8005d1a:      461a            mov     r2, r3
+ 8005d1c:      3301            adds    r3, #1
+ 8005d1e:      e7ed            b.n     8005cfc <d_print_mod+0x3dc>
+ 8005d20:      4d09            ldr     r5, [pc, #36]   ; (8005d48 <d_print_mod+0x428>)
+ 8005d22:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005d26:      f105 0611       add.w   r6, r5, #17
+ 8005d2a:      2700            movs    r7, #0
+ 8005d2c:      e025            b.n     8005d7a <d_print_mod+0x45a>
+ 8005d2e:      bf00            nop
+ 8005d30:      08012884        .word   0x08012884
+ 8005d34:      08012843        .word   0x08012843
+ 8005d38:      0801284f        .word   0x0801284f
+ 8005d3c:      0801285c        .word   0x0801285c
+ 8005d40:      080128a8        .word   0x080128a8
+ 8005d44:      080128ac        .word   0x080128ac
+ 8005d48:      08012863        .word   0x08012863
+ 8005d4c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005d50:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005d54:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005d58:      4798            blx     r3
+ 8005d5a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005d5e:      3301            adds    r3, #1
+ 8005d60:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005d64:      2200            movs    r2, #0
+ 8005d66:      2301            movs    r3, #1
+ 8005d68:      42ae            cmp     r6, r5
+ 8005d6a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005d6e:      f804 8002       strb.w  r8, [r4, r2]
+ 8005d72:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005d76:      f43f af61       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005d7a:      2bff            cmp     r3, #255        ; 0xff
+ 8005d7c:      4619            mov     r1, r3
+ 8005d7e:      4620            mov     r0, r4
+ 8005d80:      f815 8f01       ldrb.w  r8, [r5, #1]!
+ 8005d84:      d0e2            beq.n   8005d4c <d_print_mod+0x42c>
+ 8005d86:      461a            mov     r2, r3
+ 8005d88:      3301            adds    r3, #1
+ 8005d8a:      e7ed            b.n     8005d68 <d_print_mod+0x448>
+ 8005d8c:      4f77            ldr     r7, [pc, #476]  ; (8005f6c <d_print_mod+0x64c>)
+ 8005d8e:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005d92:      f107 0809       add.w   r8, r7, #9
+ 8005d96:      f04f 0900       mov.w   r9, #0
+ 8005d9a:      e016            b.n     8005dca <d_print_mod+0x4aa>
+ 8005d9c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005da0:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005da4:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8005da8:      4798            blx     r3
+ 8005daa:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005dae:      3301            adds    r3, #1
+ 8005db0:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005db4:      2200            movs    r2, #0
+ 8005db6:      2301            movs    r3, #1
+ 8005db8:      4547            cmp     r7, r8
+ 8005dba:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005dbe:      f804 a002       strb.w  sl, [r4, r2]
+ 8005dc2:      f884 a104       strb.w  sl, [r4, #260]  ; 0x104
+ 8005dc6:      f000 8082       beq.w   8005ece <d_print_mod+0x5ae>
+ 8005dca:      2bff            cmp     r3, #255        ; 0xff
+ 8005dcc:      4619            mov     r1, r3
+ 8005dce:      4620            mov     r0, r4
+ 8005dd0:      f817 af01       ldrb.w  sl, [r7, #1]!
+ 8005dd4:      d0e2            beq.n   8005d9c <d_print_mod+0x47c>
+ 8005dd6:      461a            mov     r2, r3
+ 8005dd8:      3301            adds    r3, #1
+ 8005dda:      e7ed            b.n     8005db8 <d_print_mod+0x498>
+ 8005ddc:      4d64            ldr     r5, [pc, #400]  ; (8005f70 <d_print_mod+0x650>)
+ 8005dde:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005de2:      f105 0608       add.w   r6, r5, #8
+ 8005de6:      2700            movs    r7, #0
+ 8005de8:      e016            b.n     8005e18 <d_print_mod+0x4f8>
+ 8005dea:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005dee:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005df2:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005df6:      4798            blx     r3
+ 8005df8:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005dfc:      3301            adds    r3, #1
+ 8005dfe:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005e02:      2200            movs    r2, #0
+ 8005e04:      2301            movs    r3, #1
+ 8005e06:      42ae            cmp     r6, r5
+ 8005e08:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005e0c:      f804 8002       strb.w  r8, [r4, r2]
+ 8005e10:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005e14:      f43f af12       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005e18:      2bff            cmp     r3, #255        ; 0xff
+ 8005e1a:      4619            mov     r1, r3
+ 8005e1c:      4620            mov     r0, r4
+ 8005e1e:      f815 8f01       ldrb.w  r8, [r5, #1]!
+ 8005e22:      d0e2            beq.n   8005dea <d_print_mod+0x4ca>
+ 8005e24:      461a            mov     r2, r3
+ 8005e26:      3301            adds    r3, #1
+ 8005e28:      e7ed            b.n     8005e06 <d_print_mod+0x4e6>
+ 8005e2a:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005e2e:      4d51            ldr     r5, [pc, #324]  ; (8005f74 <d_print_mod+0x654>)
+ 8005e30:      2700            movs    r7, #0
+ 8005e32:      1cae            adds    r6, r5, #2
+ 8005e34:      e016            b.n     8005e64 <d_print_mod+0x544>
+ 8005e36:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005e3a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005e3e:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005e42:      4798            blx     r3
+ 8005e44:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005e48:      3301            adds    r3, #1
+ 8005e4a:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005e4e:      2200            movs    r2, #0
+ 8005e50:      2301            movs    r3, #1
+ 8005e52:      42b5            cmp     r5, r6
+ 8005e54:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005e58:      f804 8002       strb.w  r8, [r4, r2]
+ 8005e5c:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005e60:      f43f aeec       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005e64:      2bff            cmp     r3, #255        ; 0xff
+ 8005e66:      4619            mov     r1, r3
+ 8005e68:      4620            mov     r0, r4
+ 8005e6a:      f815 8b01       ldrb.w  r8, [r5], #1
+ 8005e6e:      d0e2            beq.n   8005e36 <d_print_mod+0x516>
+ 8005e70:      461a            mov     r2, r3
+ 8005e72:      3301            adds    r3, #1
+ 8005e74:      e7ed            b.n     8005e52 <d_print_mod+0x532>
+ 8005e76:      4d40            ldr     r5, [pc, #256]  ; (8005f78 <d_print_mod+0x658>)
+ 8005e78:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8005e7c:      f105 060a       add.w   r6, r5, #10
+ 8005e80:      2700            movs    r7, #0
+ 8005e82:      e016            b.n     8005eb2 <d_print_mod+0x592>
+ 8005e84:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005e88:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005e8c:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005e90:      4798            blx     r3
+ 8005e92:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005e96:      3301            adds    r3, #1
+ 8005e98:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005e9c:      2200            movs    r2, #0
+ 8005e9e:      2301            movs    r3, #1
+ 8005ea0:      42b5            cmp     r5, r6
+ 8005ea2:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8005ea6:      f804 8002       strb.w  r8, [r4, r2]
+ 8005eaa:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 8005eae:      f43f aec5       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005eb2:      2bff            cmp     r3, #255        ; 0xff
+ 8005eb4:      4619            mov     r1, r3
+ 8005eb6:      4620            mov     r0, r4
+ 8005eb8:      f815 8b01       ldrb.w  r8, [r5], #1
+ 8005ebc:      d0e2            beq.n   8005e84 <d_print_mod+0x564>
+ 8005ebe:      461a            mov     r2, r3
+ 8005ec0:      3301            adds    r3, #1
+ 8005ec2:      e7ed            b.n     8005ea0 <d_print_mod+0x580>
+ 8005ec4:      462a            mov     r2, r5
+ 8005ec6:      e8bd 47f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8005eca:      f7fc be93       b.w     8002bf4 <d_print_comp>
+ 8005ece:      68ea            ldr     r2, [r5, #12]
+ 8005ed0:      2a00            cmp     r2, #0
+ 8005ed2:      f43f aeb3       beq.w   8005c3c <d_print_mod+0x31c>
+ 8005ed6:      2bff            cmp     r3, #255        ; 0xff
+ 8005ed8:      d144            bne.n   8005f64 <d_print_mod+0x644>
+ 8005eda:      2700            movs    r7, #0
+ 8005edc:      4619            mov     r1, r3
+ 8005ede:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005ee2:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005ee6:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8005eea:      4620            mov     r0, r4
+ 8005eec:      4798            blx     r3
+ 8005eee:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005ef2:      68ea            ldr     r2, [r5, #12]
+ 8005ef4:      1c59            adds    r1, r3, #1
+ 8005ef6:      f8c4 1124       str.w   r1, [r4, #292]  ; 0x124
+ 8005efa:      463b            mov     r3, r7
+ 8005efc:      2101            movs    r1, #1
+ 8005efe:      2528            movs    r5, #40 ; 0x28
+ 8005f00:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8005f04:      4620            mov     r0, r4
+ 8005f06:      4631            mov     r1, r6
+ 8005f08:      54e5            strb    r5, [r4, r3]
+ 8005f0a:      f884 5104       strb.w  r5, [r4, #260]  ; 0x104
+ 8005f0e:      f7fc fe71       bl      8002bf4 <d_print_comp>
+ 8005f12:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 8005f16:      29ff            cmp     r1, #255        ; 0xff
+ 8005f18:      d120            bne.n   8005f5c <d_print_mod+0x63c>
+ 8005f1a:      2500            movs    r5, #0
+ 8005f1c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005f20:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005f24:      f884 50ff       strb.w  r5, [r4, #255]  ; 0xff
+ 8005f28:      4620            mov     r0, r4
+ 8005f2a:      4798            blx     r3
+ 8005f2c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005f30:      3301            adds    r3, #1
+ 8005f32:      4629            mov     r1, r5
+ 8005f34:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8005f38:      2201            movs    r2, #1
+ 8005f3a:      2329            movs    r3, #41 ; 0x29
+ 8005f3c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8005f40:      5463            strb    r3, [r4, r1]
+ 8005f42:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005f46:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8005f4a:      4631            mov     r1, r6
+ 8005f4c:      68aa            ldr     r2, [r5, #8]
+ 8005f4e:      4620            mov     r0, r4
+ 8005f50:      f7fc fe50       bl      8002bf4 <d_print_comp>
+ 8005f54:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 8005f58:      29ff            cmp     r1, #255        ; 0xff
+ 8005f5a:      d0de            beq.n   8005f1a <d_print_mod+0x5fa>
+ 8005f5c:      1c4a            adds    r2, r1, #1
+ 8005f5e:      e7ec            b.n     8005f3a <d_print_mod+0x61a>
+ 8005f60:      1c59            adds    r1, r3, #1
+ 8005f62:      e665            b.n     8005c30 <d_print_mod+0x310>
+ 8005f64:      1c59            adds    r1, r3, #1
+ 8005f66:      e7ca            b.n     8005efe <d_print_mod+0x5de>
+ 8005f68:      1c4a            adds    r2, r1, #1
+ 8005f6a:      e681            b.n     8005c70 <d_print_mod+0x350>
+ 8005f6c:      08012877        .word   0x08012877
+ 8005f70:      0801288f        .word   0x0801288f
+ 8005f74:      0801288c        .word   0x0801288c
+ 8005f78:      0801289c        .word   0x0801289c
+
+08005f7c <d_print_function_type.isra.15>:
+ 8005f7c:      e92d 43f8       stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
+ 8005f80:      4604            mov     r4, r0
+ 8005f82:      460e            mov     r6, r1
+ 8005f84:      4617            mov     r7, r2
+ 8005f86:      461d            mov     r5, r3
+ 8005f88:      b1d3            cbz     r3, 8005fc0 <d_print_function_type.isra.15+0x44>
+ 8005f8a:      689b            ldr     r3, [r3, #8]
+ 8005f8c:      b9c3            cbnz    r3, 8005fc0 <d_print_function_type.isra.15+0x44>
+ 8005f8e:      462a            mov     r2, r5
+ 8005f90:      2001            movs    r0, #1
+ 8005f92:      f8df c1c8       ldr.w   ip, [pc, #456]  ; 800615c <d_print_function_type.isra.15+0x1e0>
+ 8005f96:      e001            b.n     8005f9c <d_print_function_type.isra.15+0x20>
+ 8005f98:      6893            ldr     r3, [r2, #8]
+ 8005f9a:      b98b            cbnz    r3, 8005fc0 <d_print_function_type.isra.15+0x44>
+ 8005f9c:      6853            ldr     r3, [r2, #4]
+ 8005f9e:      781b            ldrb    r3, [r3, #0]
+ 8005fa0:      3b19            subs    r3, #25
+ 8005fa2:      b2db            uxtb    r3, r3
+ 8005fa4:      2b12            cmp     r3, #18
+ 8005fa6:      fa00 f103       lsl.w   r1, r0, r3
+ 8005faa:      d806            bhi.n   8005fba <d_print_function_type.isra.15+0x3e>
+ 8005fac:      ea11 0f0c       tst.w   r1, ip
+ 8005fb0:      f040 80c7       bne.w   8006142 <d_print_function_type.isra.15+0x1c6>
+ 8005fb4:      f411 6f60       tst.w   r1, #3584       ; 0xe00
+ 8005fb8:      d154            bne.n   8006064 <d_print_function_type.isra.15+0xe8>
+ 8005fba:      6812            ldr     r2, [r2, #0]
+ 8005fbc:      2a00            cmp     r2, #0
+ 8005fbe:      d1eb            bne.n   8005f98 <d_print_function_type.isra.15+0x1c>
+ 8005fc0:      2300            movs    r3, #0
+ 8005fc2:      f8d4 8114       ldr.w   r8, [r4, #276]  ; 0x114
+ 8005fc6:      f8c4 3114       str.w   r3, [r4, #276]  ; 0x114
+ 8005fca:      4631            mov     r1, r6
+ 8005fcc:      462a            mov     r2, r5
+ 8005fce:      4620            mov     r0, r4
+ 8005fd0:      f000 f8c6       bl      8006160 <d_print_mod_list>
+ 8005fd4:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 8005fd8:      29ff            cmp     r1, #255        ; 0xff
+ 8005fda:      f040 80a4       bne.w   8006126 <d_print_function_type.isra.15+0x1aa>
+ 8005fde:      2300            movs    r3, #0
+ 8005fe0:      f884 30ff       strb.w  r3, [r4, #255]  ; 0xff
+ 8005fe4:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8005fe8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8005fec:      4620            mov     r0, r4
+ 8005fee:      4798            blx     r3
+ 8005ff0:      2328            movs    r3, #40 ; 0x28
+ 8005ff2:      7023            strb    r3, [r4, #0]
+ 8005ff4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8005ff8:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8005ffc:      683a            ldr     r2, [r7, #0]
+ 8005ffe:      1c59            adds    r1, r3, #1
+ 8006000:      2301            movs    r3, #1
+ 8006002:      f8c4 1124       str.w   r1, [r4, #292]  ; 0x124
+ 8006006:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800600a:      2a00            cmp     r2, #0
+ 800600c:      f000 8097       beq.w   800613e <d_print_function_type.isra.15+0x1c2>
+ 8006010:      4631            mov     r1, r6
+ 8006012:      4620            mov     r0, r4
+ 8006014:      f7fc fdee       bl      8002bf4 <d_print_comp>
+ 8006018:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 800601c:      2bff            cmp     r3, #255        ; 0xff
+ 800601e:      f040 808e       bne.w   800613e <d_print_function_type.isra.15+0x1c2>
+ 8006022:      2700            movs    r7, #0
+ 8006024:      4619            mov     r1, r3
+ 8006026:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800602a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800602e:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 8006032:      4620            mov     r0, r4
+ 8006034:      4798            blx     r3
+ 8006036:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800603a:      1c5a            adds    r2, r3, #1
+ 800603c:      f8c4 2124       str.w   r2, [r4, #292]  ; 0x124
+ 8006040:      463b            mov     r3, r7
+ 8006042:      2201            movs    r2, #1
+ 8006044:      2029            movs    r0, #41 ; 0x29
+ 8006046:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800604a:      4631            mov     r1, r6
+ 800604c:      54e0            strb    r0, [r4, r3]
+ 800604e:      462a            mov     r2, r5
+ 8006050:      f884 0104       strb.w  r0, [r4, #260]  ; 0x104
+ 8006054:      2301            movs    r3, #1
+ 8006056:      4620            mov     r0, r4
+ 8006058:      f000 f882       bl      8006160 <d_print_mod_list>
+ 800605c:      f8c4 8114       str.w   r8, [r4, #276]  ; 0x114
+ 8006060:      e8bd 83f8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
+ 8006064:      f894 3104       ldrb.w  r3, [r4, #260]  ; 0x104
+ 8006068:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 800606c:      f003 02fd       and.w   r2, r3, #253    ; 0xfd
+ 8006070:      2a28            cmp     r2, #40 ; 0x28
+ 8006072:      d01e            beq.n   80060b2 <d_print_function_type.isra.15+0x136>
+ 8006074:      2b20            cmp     r3, #32
+ 8006076:      d01c            beq.n   80060b2 <d_print_function_type.isra.15+0x136>
+ 8006078:      29ff            cmp     r1, #255        ; 0xff
+ 800607a:      d112            bne.n   80060a2 <d_print_function_type.isra.15+0x126>
+ 800607c:      2300            movs    r3, #0
+ 800607e:      f884 30ff       strb.w  r3, [r4, #255]  ; 0xff
+ 8006082:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8006086:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800608a:      4620            mov     r0, r4
+ 800608c:      4798            blx     r3
+ 800608e:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8006092:      2220            movs    r2, #32
+ 8006094:      3301            adds    r3, #1
+ 8006096:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800609a:      7022            strb    r2, [r4, #0]
+ 800609c:      2101            movs    r1, #1
+ 800609e:      1c4a            adds    r2, r1, #1
+ 80060a0:      e01a            b.n     80060d8 <d_print_function_type.isra.15+0x15c>
+ 80060a2:      1c4b            adds    r3, r1, #1
+ 80060a4:      2220            movs    r2, #32
+ 80060a6:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80060aa:      5462            strb    r2, [r4, r1]
+ 80060ac:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 80060b0:      4619            mov     r1, r3
+ 80060b2:      29ff            cmp     r1, #255        ; 0xff
+ 80060b4:      d1f3            bne.n   800609e <d_print_function_type.isra.15+0x122>
+ 80060b6:      f04f 0800       mov.w   r8, #0
+ 80060ba:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80060be:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80060c2:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80060c6:      4620            mov     r0, r4
+ 80060c8:      4798            blx     r3
+ 80060ca:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80060ce:      3301            adds    r3, #1
+ 80060d0:      4641            mov     r1, r8
+ 80060d2:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80060d6:      2201            movs    r2, #1
+ 80060d8:      2328            movs    r3, #40 ; 0x28
+ 80060da:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 80060de:      5463            strb    r3, [r4, r1]
+ 80060e0:      f04f 0900       mov.w   r9, #0
+ 80060e4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80060e8:      f8d4 8114       ldr.w   r8, [r4, #276]  ; 0x114
+ 80060ec:      f8c4 9114       str.w   r9, [r4, #276]  ; 0x114
+ 80060f0:      464b            mov     r3, r9
+ 80060f2:      462a            mov     r2, r5
+ 80060f4:      4631            mov     r1, r6
+ 80060f6:      4620            mov     r0, r4
+ 80060f8:      f000 f832       bl      8006160 <d_print_mod_list>
+ 80060fc:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8006100:      2bff            cmp     r3, #255        ; 0xff
+ 8006102:      d123            bne.n   800614c <d_print_function_type.isra.15+0x1d0>
+ 8006104:      4619            mov     r1, r3
+ 8006106:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800610a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800610e:      f884 90ff       strb.w  r9, [r4, #255]  ; 0xff
+ 8006112:      4620            mov     r0, r4
+ 8006114:      4798            blx     r3
+ 8006116:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800611a:      2229            movs    r2, #41 ; 0x29
+ 800611c:      3301            adds    r3, #1
+ 800611e:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8006122:      7022            strb    r2, [r4, #0]
+ 8006124:      2101            movs    r1, #1
+ 8006126:      2228            movs    r2, #40 ; 0x28
+ 8006128:      1c4b            adds    r3, r1, #1
+ 800612a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800612e:      5462            strb    r2, [r4, r1]
+ 8006130:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 8006134:      683a            ldr     r2, [r7, #0]
+ 8006136:      2a00            cmp     r2, #0
+ 8006138:      f43f af70       beq.w   800601c <d_print_function_type.isra.15+0xa0>
+ 800613c:      e768            b.n     8006010 <d_print_function_type.isra.15+0x94>
+ 800613e:      1c5a            adds    r2, r3, #1
+ 8006140:      e780            b.n     8006044 <d_print_function_type.isra.15+0xc8>
+ 8006142:      f894 3104       ldrb.w  r3, [r4, #260]  ; 0x104
+ 8006146:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 800614a:      e793            b.n     8006074 <d_print_function_type.isra.15+0xf8>
+ 800614c:      2229            movs    r2, #41 ; 0x29
+ 800614e:      1c59            adds    r1, r3, #1
+ 8006150:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8006154:      54e2            strb    r2, [r4, r3]
+ 8006156:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 800615a:      e73d            b.n     8005fd8 <d_print_function_type.isra.15+0x5c>
+ 800615c:      00043107        .word   0x00043107
+
+08006160 <d_print_mod_list>:
+ 8006160:      2a00            cmp     r2, #0
+ 8006162:      f000 80ac       beq.w   80062be <d_print_mod_list+0x15e>
+ 8006166:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800616a:      461f            mov     r7, r3
+ 800616c:      f8d0 3118       ldr.w   r3, [r0, #280]  ; 0x118
+ 8006170:      b089            sub     sp, #36 ; 0x24
+ 8006172:      4605            mov     r5, r0
+ 8006174:      bb4b            cbnz    r3, 80061ca <d_print_mod_list+0x6a>
+ 8006176:      4688            mov     r8, r1
+ 8006178:      4614            mov     r4, r2
+ 800617a:      f04f 0901       mov.w   r9, #1
+ 800617e:      e002            b.n     8006186 <d_print_mod_list+0x26>
+ 8006180:      f8d5 3118       ldr.w   r3, [r5, #280]  ; 0x118
+ 8006184:      bb0b            cbnz    r3, 80061ca <d_print_mod_list+0x6a>
+ 8006186:      68a3            ldr     r3, [r4, #8]
+ 8006188:      b9e3            cbnz    r3, 80061c4 <d_print_mod_list+0x64>
+ 800618a:      f8d4 a004       ldr.w   sl, [r4, #4]
+ 800618e:      f89a 6000       ldrb.w  r6, [sl]
+ 8006192:      4630            mov     r0, r6
+ 8006194:      b917            cbnz    r7, 800619c <d_print_mod_list+0x3c>
+ 8006196:      f7fa f93f       bl      8000418 <is_fnqual_component_type>
+ 800619a:      b998            cbnz    r0, 80061c4 <d_print_mod_list+0x64>
+ 800619c:      68e3            ldr     r3, [r4, #12]
+ 800619e:      f8c4 9008       str.w   r9, [r4, #8]
+ 80061a2:      2e29            cmp     r6, #41 ; 0x29
+ 80061a4:      f8d5 b110       ldr.w   fp, [r5, #272]  ; 0x110
+ 80061a8:      f8c5 3110       str.w   r3, [r5, #272]  ; 0x110
+ 80061ac:      4652            mov     r2, sl
+ 80061ae:      4641            mov     r1, r8
+ 80061b0:      4628            mov     r0, r5
+ 80061b2:      d00d            beq.n   80061d0 <d_print_mod_list+0x70>
+ 80061b4:      2e2a            cmp     r6, #42 ; 0x2a
+ 80061b6:      d015            beq.n   80061e4 <d_print_mod_list+0x84>
+ 80061b8:      2e02            cmp     r6, #2
+ 80061ba:      d01d            beq.n   80061f8 <d_print_mod_list+0x98>
+ 80061bc:      f7ff fbb0       bl      8005920 <d_print_mod>
+ 80061c0:      f8c5 b110       str.w   fp, [r5, #272]  ; 0x110
+ 80061c4:      6824            ldr     r4, [r4, #0]
+ 80061c6:      2c00            cmp     r4, #0
+ 80061c8:      d1da            bne.n   8006180 <d_print_mod_list+0x20>
+ 80061ca:      b009            add     sp, #36 ; 0x24
+ 80061cc:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 80061d0:      6823            ldr     r3, [r4, #0]
+ 80061d2:      f10a 020c       add.w   r2, sl, #12
+ 80061d6:      f7ff fed1       bl      8005f7c <d_print_function_type.isra.15>
+ 80061da:      f8c5 b110       str.w   fp, [r5, #272]  ; 0x110
+ 80061de:      b009            add     sp, #36 ; 0x24
+ 80061e0:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 80061e4:      6823            ldr     r3, [r4, #0]
+ 80061e6:      f10a 0208       add.w   r2, sl, #8
+ 80061ea:      f000 f8f1       bl      80063d0 <d_print_array_type.isra.14>
+ 80061ee:      f8c5 b110       str.w   fp, [r5, #272]  ; 0x110
+ 80061f2:      b009            add     sp, #36 ; 0x24
+ 80061f4:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 80061f8:      2600            movs    r6, #0
+ 80061fa:      f8d5 7114       ldr.w   r7, [r5, #276]  ; 0x114
+ 80061fe:      f8da 2008       ldr.w   r2, [sl, #8]
+ 8006202:      f8c5 6114       str.w   r6, [r5, #276]  ; 0x114
+ 8006206:      f7fc fcf5       bl      8002bf4 <d_print_comp>
+ 800620a:      f8c5 7114       str.w   r7, [r5, #276]  ; 0x114
+ 800620e:      f018 0704       ands.w  r7, r8, #4
+ 8006212:      d02f            beq.n   8006274 <d_print_mod_list+0x114>
+ 8006214:      f8d5 1100       ldr.w   r1, [r5, #256]  ; 0x100
+ 8006218:      29ff            cmp     r1, #255        ; 0xff
+ 800621a:      f040 80cf       bne.w   80063bc <d_print_mod_list+0x25c>
+ 800621e:      f8d5 3108       ldr.w   r3, [r5, #264]  ; 0x108
+ 8006222:      f8d5 210c       ldr.w   r2, [r5, #268]  ; 0x10c
+ 8006226:      f885 60ff       strb.w  r6, [r5, #255]  ; 0xff
+ 800622a:      4628            mov     r0, r5
+ 800622c:      4798            blx     r3
+ 800622e:      f8d5 3124       ldr.w   r3, [r5, #292]  ; 0x124
+ 8006232:      3301            adds    r3, #1
+ 8006234:      4631            mov     r1, r6
+ 8006236:      f8c5 3124       str.w   r3, [r5, #292]  ; 0x124
+ 800623a:      2201            movs    r2, #1
+ 800623c:      232e            movs    r3, #46 ; 0x2e
+ 800623e:      f8c5 2100       str.w   r2, [r5, #256]  ; 0x100
+ 8006242:      546b            strb    r3, [r5, r1]
+ 8006244:      f885 3104       strb.w  r3, [r5, #260]  ; 0x104
+ 8006248:      6863            ldr     r3, [r4, #4]
+ 800624a:      68dc            ldr     r4, [r3, #12]
+ 800624c:      7820            ldrb    r0, [r4, #0]
+ 800624e:      2846            cmp     r0, #70 ; 0x46
+ 8006250:      d102            bne.n   8006258 <d_print_mod_list+0xf8>
+ 8006252:      e035            b.n     80062c0 <d_print_mod_list+0x160>
+ 8006254:      68a4            ldr     r4, [r4, #8]
+ 8006256:      7820            ldrb    r0, [r4, #0]
+ 8006258:      f7fa f8de       bl      8000418 <is_fnqual_component_type>
+ 800625c:      2800            cmp     r0, #0
+ 800625e:      d1f9            bne.n   8006254 <d_print_mod_list+0xf4>
+ 8006260:      4622            mov     r2, r4
+ 8006262:      4641            mov     r1, r8
+ 8006264:      4628            mov     r0, r5
+ 8006266:      f7fc fcc5       bl      8002bf4 <d_print_comp>
+ 800626a:      f8c5 b110       str.w   fp, [r5, #272]  ; 0x110
+ 800626e:      b009            add     sp, #36 ; 0x24
+ 8006270:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8006274:      4e52            ldr     r6, [pc, #328]  ; (80063c0 <d_print_mod_list+0x260>)
+ 8006276:      f8d5 3100       ldr.w   r3, [r5, #256]  ; 0x100
+ 800627a:      f106 0902       add.w   r9, r6, #2
+ 800627e:      e015            b.n     80062ac <d_print_mod_list+0x14c>
+ 8006280:      f8d5 3108       ldr.w   r3, [r5, #264]  ; 0x108
+ 8006284:      f8d5 210c       ldr.w   r2, [r5, #268]  ; 0x10c
+ 8006288:      f885 70ff       strb.w  r7, [r5, #255]  ; 0xff
+ 800628c:      4798            blx     r3
+ 800628e:      f8d5 3124       ldr.w   r3, [r5, #292]  ; 0x124
+ 8006292:      3301            adds    r3, #1
+ 8006294:      f8c5 3124       str.w   r3, [r5, #292]  ; 0x124
+ 8006298:      2200            movs    r2, #0
+ 800629a:      2301            movs    r3, #1
+ 800629c:      45b1            cmp     r9, r6
+ 800629e:      f8c5 3100       str.w   r3, [r5, #256]  ; 0x100
+ 80062a2:      f805 a002       strb.w  sl, [r5, r2]
+ 80062a6:      f885 a104       strb.w  sl, [r5, #260]  ; 0x104
+ 80062aa:      d0cd            beq.n   8006248 <d_print_mod_list+0xe8>
+ 80062ac:      2bff            cmp     r3, #255        ; 0xff
+ 80062ae:      4619            mov     r1, r3
+ 80062b0:      4628            mov     r0, r5
+ 80062b2:      f816 ab01       ldrb.w  sl, [r6], #1
+ 80062b6:      d0e3            beq.n   8006280 <d_print_mod_list+0x120>
+ 80062b8:      461a            mov     r2, r3
+ 80062ba:      3301            adds    r3, #1
+ 80062bc:      e7ee            b.n     800629c <d_print_mod_list+0x13c>
+ 80062be:      4770            bx      lr
+ 80062c0:      4e40            ldr     r6, [pc, #256]  ; (80063c4 <d_print_mod_list+0x264>)
+ 80062c2:      f8d5 3100       ldr.w   r3, [r5, #256]  ; 0x100
+ 80062c6:      f106 070d       add.w   r7, r6, #13
+ 80062ca:      f04f 0900       mov.w   r9, #0
+ 80062ce:      e015            b.n     80062fc <d_print_mod_list+0x19c>
+ 80062d0:      f8d5 3108       ldr.w   r3, [r5, #264]  ; 0x108
+ 80062d4:      f8d5 210c       ldr.w   r2, [r5, #268]  ; 0x10c
+ 80062d8:      f885 90ff       strb.w  r9, [r5, #255]  ; 0xff
+ 80062dc:      4798            blx     r3
+ 80062de:      f8d5 3124       ldr.w   r3, [r5, #292]  ; 0x124
+ 80062e2:      3301            adds    r3, #1
+ 80062e4:      f8c5 3124       str.w   r3, [r5, #292]  ; 0x124
+ 80062e8:      2200            movs    r2, #0
+ 80062ea:      2301            movs    r3, #1
+ 80062ec:      42b7            cmp     r7, r6
+ 80062ee:      f8c5 3100       str.w   r3, [r5, #256]  ; 0x100
+ 80062f2:      f805 a002       strb.w  sl, [r5, r2]
+ 80062f6:      f885 a104       strb.w  sl, [r5, #260]  ; 0x104
+ 80062fa:      d008            beq.n   800630e <d_print_mod_list+0x1ae>
+ 80062fc:      2bff            cmp     r3, #255        ; 0xff
+ 80062fe:      4619            mov     r1, r3
+ 8006300:      4628            mov     r0, r5
+ 8006302:      f816 ab01       ldrb.w  sl, [r6], #1
+ 8006306:      d0e3            beq.n   80062d0 <d_print_mod_list+0x170>
+ 8006308:      461a            mov     r2, r3
+ 800630a:      3301            adds    r3, #1
+ 800630c:      e7ee            b.n     80062ec <d_print_mod_list+0x18c>
+ 800630e:      68e2            ldr     r2, [r4, #12]
+ 8006310:      492d            ldr     r1, [pc, #180]  ; (80063c8 <d_print_mod_list+0x268>)
+ 8006312:      3201            adds    r2, #1
+ 8006314:      a801            add     r0, sp, #4
+ 8006316:      f008 faa1       bl      800e85c <sprintf>
+ 800631a:      a801            add     r0, sp, #4
+ 800631c:      f000 fd5a       bl      8006dd4 <strlen>
+ 8006320:      b328            cbz     r0, 800636e <d_print_mod_list+0x20e>
+ 8006322:      ae01            add     r6, sp, #4
+ 8006324:      f8d5 3100       ldr.w   r3, [r5, #256]  ; 0x100
+ 8006328:      1837            adds    r7, r6, r0
+ 800632a:      f04f 0900       mov.w   r9, #0
+ 800632e:      e015            b.n     800635c <d_print_mod_list+0x1fc>
+ 8006330:      f8d5 3108       ldr.w   r3, [r5, #264]  ; 0x108
+ 8006334:      f8d5 210c       ldr.w   r2, [r5, #268]  ; 0x10c
+ 8006338:      f885 90ff       strb.w  r9, [r5, #255]  ; 0xff
+ 800633c:      4798            blx     r3
+ 800633e:      f8d5 3124       ldr.w   r3, [r5, #292]  ; 0x124
+ 8006342:      3301            adds    r3, #1
+ 8006344:      f8c5 3124       str.w   r3, [r5, #292]  ; 0x124
+ 8006348:      2200            movs    r2, #0
+ 800634a:      2301            movs    r3, #1
+ 800634c:      42be            cmp     r6, r7
+ 800634e:      f8c5 3100       str.w   r3, [r5, #256]  ; 0x100
+ 8006352:      f805 a002       strb.w  sl, [r5, r2]
+ 8006356:      f885 a104       strb.w  sl, [r5, #260]  ; 0x104
+ 800635a:      d00a            beq.n   8006372 <d_print_mod_list+0x212>
+ 800635c:      2bff            cmp     r3, #255        ; 0xff
+ 800635e:      4619            mov     r1, r3
+ 8006360:      4628            mov     r0, r5
+ 8006362:      f816 ab01       ldrb.w  sl, [r6], #1
+ 8006366:      d0e3            beq.n   8006330 <d_print_mod_list+0x1d0>
+ 8006368:      461a            mov     r2, r3
+ 800636a:      3301            adds    r3, #1
+ 800636c:      e7ee            b.n     800634c <d_print_mod_list+0x1ec>
+ 800636e:      f8d5 3100       ldr.w   r3, [r5, #256]  ; 0x100
+ 8006372:      4e16            ldr     r6, [pc, #88]   ; (80063cc <d_print_mod_list+0x26c>)
+ 8006374:      f04f 0900       mov.w   r9, #0
+ 8006378:      1cf7            adds    r7, r6, #3
+ 800637a:      e016            b.n     80063aa <d_print_mod_list+0x24a>
+ 800637c:      f8d5 3108       ldr.w   r3, [r5, #264]  ; 0x108
+ 8006380:      f8d5 210c       ldr.w   r2, [r5, #268]  ; 0x10c
+ 8006384:      f885 90ff       strb.w  r9, [r5, #255]  ; 0xff
+ 8006388:      4798            blx     r3
+ 800638a:      f8d5 3124       ldr.w   r3, [r5, #292]  ; 0x124
+ 800638e:      3301            adds    r3, #1
+ 8006390:      f8c5 3124       str.w   r3, [r5, #292]  ; 0x124
+ 8006394:      2200            movs    r2, #0
+ 8006396:      2301            movs    r3, #1
+ 8006398:      42b7            cmp     r7, r6
+ 800639a:      f8c5 3100       str.w   r3, [r5, #256]  ; 0x100
+ 800639e:      f805 a002       strb.w  sl, [r5, r2]
+ 80063a2:      f885 a104       strb.w  sl, [r5, #260]  ; 0x104
+ 80063a6:      f43f af55       beq.w   8006254 <d_print_mod_list+0xf4>
+ 80063aa:      2bff            cmp     r3, #255        ; 0xff
+ 80063ac:      4619            mov     r1, r3
+ 80063ae:      4628            mov     r0, r5
+ 80063b0:      f816 ab01       ldrb.w  sl, [r6], #1
+ 80063b4:      d0e2            beq.n   800637c <d_print_mod_list+0x21c>
+ 80063b6:      461a            mov     r2, r3
+ 80063b8:      3301            adds    r3, #1
+ 80063ba:      e7ed            b.n     8006398 <d_print_mod_list+0x238>
+ 80063bc:      1c4a            adds    r2, r1, #1
+ 80063be:      e73d            b.n     800623c <d_print_mod_list+0xdc>
+ 80063c0:      080125c4        .word   0x080125c4
+ 80063c4:      080125c8        .word   0x080125c8
+ 80063c8:      08012574        .word   0x08012574
+ 80063cc:      080125d8        .word   0x080125d8
+
+080063d0 <d_print_array_type.isra.14>:
+ 80063d0:      e92d 4ff8       stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 80063d4:      4604            mov     r4, r0
+ 80063d6:      460f            mov     r7, r1
+ 80063d8:      4690            mov     r8, r2
+ 80063da:      b15b            cbz     r3, 80063f4 <d_print_array_type.isra.14+0x24>
+ 80063dc:      461e            mov     r6, r3
+ 80063de:      689d            ldr     r5, [r3, #8]
+ 80063e0:      2d00            cmp     r5, #0
+ 80063e2:      d042            beq.n   800646a <d_print_array_type.isra.14+0x9a>
+ 80063e4:      681b            ldr     r3, [r3, #0]
+ 80063e6:      2b00            cmp     r3, #0
+ 80063e8:      d1f9            bne.n   80063de <d_print_array_type.isra.14+0xe>
+ 80063ea:      4632            mov     r2, r6
+ 80063ec:      4639            mov     r1, r7
+ 80063ee:      4620            mov     r0, r4
+ 80063f0:      f7ff feb6       bl      8006160 <d_print_mod_list>
+ 80063f4:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 80063f8:      29ff            cmp     r1, #255        ; 0xff
+ 80063fa:      f040 80b1       bne.w   8006560 <d_print_array_type.isra.14+0x190>
+ 80063fe:      2300            movs    r3, #0
+ 8006400:      f884 30ff       strb.w  r3, [r4, #255]  ; 0xff
+ 8006404:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8006408:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800640c:      4620            mov     r0, r4
+ 800640e:      4798            blx     r3
+ 8006410:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8006414:      2220            movs    r2, #32
+ 8006416:      3301            adds    r3, #1
+ 8006418:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800641c:      7022            strb    r2, [r4, #0]
+ 800641e:      2301            movs    r3, #1
+ 8006420:      225b            movs    r2, #91 ; 0x5b
+ 8006422:      1c59            adds    r1, r3, #1
+ 8006424:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8006428:      54e2            strb    r2, [r4, r3]
+ 800642a:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 800642e:      f8d8 2000       ldr.w   r2, [r8]
+ 8006432:      2a00            cmp     r2, #0
+ 8006434:      d140            bne.n   80064b8 <d_print_array_type.isra.14+0xe8>
+ 8006436:      29ff            cmp     r1, #255        ; 0xff
+ 8006438:      d145            bne.n   80064c6 <d_print_array_type.isra.14+0xf6>
+ 800643a:      2500            movs    r5, #0
+ 800643c:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8006440:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8006444:      f884 50ff       strb.w  r5, [r4, #255]  ; 0xff
+ 8006448:      4620            mov     r0, r4
+ 800644a:      4798            blx     r3
+ 800644c:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8006450:      3301            adds    r3, #1
+ 8006452:      4629            mov     r1, r5
+ 8006454:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8006458:      2201            movs    r2, #1
+ 800645a:      235d            movs    r3, #93 ; 0x5d
+ 800645c:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 8006460:      5463            strb    r3, [r4, r1]
+ 8006462:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8006466:      e8bd 8ff8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800646a:      685b            ldr     r3, [r3, #4]
+ 800646c:      781b            ldrb    r3, [r3, #0]
+ 800646e:      2b2a            cmp     r3, #42 ; 0x2a
+ 8006470:      d12b            bne.n   80064ca <d_print_array_type.isra.14+0xfa>
+ 8006472:      462b            mov     r3, r5
+ 8006474:      4632            mov     r2, r6
+ 8006476:      4639            mov     r1, r7
+ 8006478:      4620            mov     r0, r4
+ 800647a:      f7ff fe71       bl      8006160 <d_print_mod_list>
+ 800647e:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8006482:      2bff            cmp     r3, #255        ; 0xff
+ 8006484:      d1cc            bne.n   8006420 <d_print_array_type.isra.14+0x50>
+ 8006486:      2200            movs    r2, #0
+ 8006488:      4619            mov     r1, r3
+ 800648a:      f884 20ff       strb.w  r2, [r4, #255]  ; 0xff
+ 800648e:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8006492:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8006496:      4620            mov     r0, r4
+ 8006498:      4798            blx     r3
+ 800649a:      235b            movs    r3, #91 ; 0x5b
+ 800649c:      7023            strb    r3, [r4, #0]
+ 800649e:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80064a2:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80064a6:      f8d8 2000       ldr.w   r2, [r8]
+ 80064aa:      3301            adds    r3, #1
+ 80064ac:      2101            movs    r1, #1
+ 80064ae:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80064b2:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 80064b6:      b132            cbz     r2, 80064c6 <d_print_array_type.isra.14+0xf6>
+ 80064b8:      4639            mov     r1, r7
+ 80064ba:      4620            mov     r0, r4
+ 80064bc:      f7fc fb9a       bl      8002bf4 <d_print_comp>
+ 80064c0:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 80064c4:      e7b7            b.n     8006436 <d_print_array_type.isra.14+0x66>
+ 80064c6:      1c4a            adds    r2, r1, #1
+ 80064c8:      e7c7            b.n     800645a <d_print_array_type.isra.14+0x8a>
+ 80064ca:      f8df 90b4       ldr.w   r9, [pc, #180]  ; 8006580 <d_print_array_type.isra.14+0x1b0>
+ 80064ce:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80064d2:      f109 0a02       add.w   sl, r9, #2
+ 80064d6:      e016            b.n     8006506 <d_print_array_type.isra.14+0x136>
+ 80064d8:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80064dc:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80064e0:      f884 50ff       strb.w  r5, [r4, #255]  ; 0xff
+ 80064e4:      4798            blx     r3
+ 80064e6:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80064ea:      2200            movs    r2, #0
+ 80064ec:      3301            adds    r3, #1
+ 80064ee:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80064f2:      45ca            cmp     sl, r9
+ 80064f4:      f04f 0301       mov.w   r3, #1
+ 80064f8:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80064fc:      f804 b002       strb.w  fp, [r4, r2]
+ 8006500:      f884 b104       strb.w  fp, [r4, #260]  ; 0x104
+ 8006504:      d010            beq.n   8006528 <d_print_array_type.isra.14+0x158>
+ 8006506:      2bff            cmp     r3, #255        ; 0xff
+ 8006508:      4619            mov     r1, r3
+ 800650a:      4620            mov     r0, r4
+ 800650c:      f819 bb01       ldrb.w  fp, [r9], #1
+ 8006510:      d0e2            beq.n   80064d8 <d_print_array_type.isra.14+0x108>
+ 8006512:      461a            mov     r2, r3
+ 8006514:      45ca            cmp     sl, r9
+ 8006516:      f103 0301       add.w   r3, r3, #1
+ 800651a:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 800651e:      f804 b002       strb.w  fp, [r4, r2]
+ 8006522:      f884 b104       strb.w  fp, [r4, #260]  ; 0x104
+ 8006526:      d1ee            bne.n   8006506 <d_print_array_type.isra.14+0x136>
+ 8006528:      2300            movs    r3, #0
+ 800652a:      4632            mov     r2, r6
+ 800652c:      4639            mov     r1, r7
+ 800652e:      4620            mov     r0, r4
+ 8006530:      f7ff fe16       bl      8006160 <d_print_mod_list>
+ 8006534:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 8006538:      2bff            cmp     r3, #255        ; 0xff
+ 800653a:      d119            bne.n   8006570 <d_print_array_type.isra.14+0x1a0>
+ 800653c:      2200            movs    r2, #0
+ 800653e:      4619            mov     r1, r3
+ 8006540:      f884 20ff       strb.w  r2, [r4, #255]  ; 0xff
+ 8006544:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8006548:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800654c:      4620            mov     r0, r4
+ 800654e:      4798            blx     r3
+ 8006550:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8006554:      2229            movs    r2, #41 ; 0x29
+ 8006556:      3301            adds    r3, #1
+ 8006558:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800655c:      7022            strb    r2, [r4, #0]
+ 800655e:      2101            movs    r1, #1
+ 8006560:      2220            movs    r2, #32
+ 8006562:      1c4b            adds    r3, r1, #1
+ 8006564:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8006568:      5462            strb    r2, [r4, r1]
+ 800656a:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 800656e:      e788            b.n     8006482 <d_print_array_type.isra.14+0xb2>
+ 8006570:      2229            movs    r2, #41 ; 0x29
+ 8006572:      1c59            adds    r1, r3, #1
+ 8006574:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8006578:      54e2            strb    r2, [r4, r3]
+ 800657a:      f884 2104       strb.w  r2, [r4, #260]  ; 0x104
+ 800657e:      e73b            b.n     80063f8 <d_print_array_type.isra.14+0x28>
+ 8006580:      080127c0        .word   0x080127c0
+
+08006584 <d_print_expr_op>:
+ 8006584:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8006588:      7815            ldrb    r5, [r2, #0]
+ 800658a:      2d31            cmp     r5, #49 ; 0x31
+ 800658c:      d003            beq.n   8006596 <d_print_expr_op+0x12>
+ 800658e:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 8006592:      f7fc bb2f       b.w     8002bf4 <d_print_comp>
+ 8006596:      6893            ldr     r3, [r2, #8]
+ 8006598:      e9d3 5601       ldrd    r5, r6, [r3, #4]
+ 800659c:      b37e            cbz     r6, 80065fe <d_print_expr_op+0x7a>
+ 800659e:      442e            add     r6, r5
+ 80065a0:      4604            mov     r4, r0
+ 80065a2:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 80065a6:      3e01            subs    r6, #1
+ 80065a8:      3d01            subs    r5, #1
+ 80065aa:      2700            movs    r7, #0
+ 80065ac:      e016            b.n     80065dc <d_print_expr_op+0x58>
+ 80065ae:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80065b2:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80065b6:      f884 70ff       strb.w  r7, [r4, #255]  ; 0xff
+ 80065ba:      4798            blx     r3
+ 80065bc:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80065c0:      2200            movs    r2, #0
+ 80065c2:      3301            adds    r3, #1
+ 80065c4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80065c8:      42b5            cmp     r5, r6
+ 80065ca:      f04f 0301       mov.w   r3, #1
+ 80065ce:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80065d2:      f804 8002       strb.w  r8, [r4, r2]
+ 80065d6:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 80065da:      d010            beq.n   80065fe <d_print_expr_op+0x7a>
+ 80065dc:      2bff            cmp     r3, #255        ; 0xff
+ 80065de:      4619            mov     r1, r3
+ 80065e0:      4620            mov     r0, r4
+ 80065e2:      f815 8f01       ldrb.w  r8, [r5, #1]!
+ 80065e6:      d0e2            beq.n   80065ae <d_print_expr_op+0x2a>
+ 80065e8:      461a            mov     r2, r3
+ 80065ea:      42b5            cmp     r5, r6
+ 80065ec:      f103 0301       add.w   r3, r3, #1
+ 80065f0:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80065f4:      f804 8002       strb.w  r8, [r4, r2]
+ 80065f8:      f884 8104       strb.w  r8, [r4, #260]  ; 0x104
+ 80065fc:      d1ee            bne.n   80065dc <d_print_expr_op+0x58>
+ 80065fe:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8006602:      bf00            nop
+
+08006604 <d_print_subexpr>:
+ 8006604:      7813            ldrb    r3, [r2, #0]
+ 8006606:      2b01            cmp     r3, #1
+ 8006608:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 800660c:      4604            mov     r4, r0
+ 800660e:      d941            bls.n   8006694 <d_print_subexpr+0x90>
+ 8006610:      2b30            cmp     r3, #48 ; 0x30
+ 8006612:      d03f            beq.n   8006694 <d_print_subexpr+0x90>
+ 8006614:      2b06            cmp     r3, #6
+ 8006616:      d03d            beq.n   8006694 <d_print_subexpr+0x90>
+ 8006618:      f8d0 7100       ldr.w   r7, [r0, #256]  ; 0x100
+ 800661c:      2fff            cmp     r7, #255        ; 0xff
+ 800661e:      460e            mov     r6, r1
+ 8006620:      4615            mov     r5, r2
+ 8006622:      d13e            bne.n   80066a2 <d_print_subexpr+0x9e>
+ 8006624:      f04f 0800       mov.w   r8, #0
+ 8006628:      4639            mov     r1, r7
+ 800662a:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 800662e:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8006632:      f880 80ff       strb.w  r8, [r0, #255]  ; 0xff
+ 8006636:      4798            blx     r3
+ 8006638:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800663c:      3301            adds    r3, #1
+ 800663e:      4647            mov     r7, r8
+ 8006640:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8006644:      2201            movs    r2, #1
+ 8006646:      2328            movs    r3, #40 ; 0x28
+ 8006648:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800664c:      4631            mov     r1, r6
+ 800664e:      55e3            strb    r3, [r4, r7]
+ 8006650:      462a            mov     r2, r5
+ 8006652:      4620            mov     r0, r4
+ 8006654:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8006658:      f7fc facc       bl      8002bf4 <d_print_comp>
+ 800665c:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 8006660:      29ff            cmp     r1, #255        ; 0xff
+ 8006662:      d11c            bne.n   800669e <d_print_subexpr+0x9a>
+ 8006664:      2500            movs    r5, #0
+ 8006666:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800666a:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800666e:      f884 50ff       strb.w  r5, [r4, #255]  ; 0xff
+ 8006672:      4620            mov     r0, r4
+ 8006674:      4798            blx     r3
+ 8006676:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800667a:      3301            adds    r3, #1
+ 800667c:      4629            mov     r1, r5
+ 800667e:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8006682:      2201            movs    r2, #1
+ 8006684:      2329            movs    r3, #41 ; 0x29
+ 8006686:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800668a:      5463            strb    r3, [r4, r1]
+ 800668c:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8006690:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8006694:      4620            mov     r0, r4
+ 8006696:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 800669a:      f7fc baab       b.w     8002bf4 <d_print_comp>
+ 800669e:      1c4a            adds    r2, r1, #1
+ 80066a0:      e7f0            b.n     8006684 <d_print_subexpr+0x80>
+ 80066a2:      1c7a            adds    r2, r7, #1
+ 80066a4:      e7cf            b.n     8006646 <d_print_subexpr+0x42>
+ 80066a6:      bf00            nop
+
+080066a8 <d_maybe_print_fold_expression.isra.20>:
+ 80066a8:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 80066ac:      6892            ldr     r2, [r2, #8]
+ 80066ae:      6812            ldr     r2, [r2, #0]
+ 80066b0:      7816            ldrb    r6, [r2, #0]
+ 80066b2:      2e66            cmp     r6, #102        ; 0x66
+ 80066b4:      b083            sub     sp, #12
+ 80066b6:      d003            beq.n   80066c0 <d_maybe_print_fold_expression.isra.20+0x18>
+ 80066b8:      2000            movs    r0, #0
+ 80066ba:      b003            add     sp, #12
+ 80066bc:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 80066c0:      681b            ldr     r3, [r3, #0]
+ 80066c2:      e9d3 8902       ldrd    r8, r9, [r3, #8]
+ 80066c6:      f899 3000       ldrb.w  r3, [r9]
+ 80066ca:      2b3b            cmp     r3, #59 ; 0x3b
+ 80066cc:      f000 8110       beq.w   80068f0 <d_maybe_print_fold_expression.isra.20+0x248>
+ 80066d0:      2300            movs    r3, #0
+ 80066d2:      9301            str     r3, [sp, #4]
+ 80066d4:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 80066d8:      f8d0 7120       ldr.w   r7, [r0, #288]  ; 0x120
+ 80066dc:      f8c0 3120       str.w   r3, [r0, #288]  ; 0x120
+ 80066e0:      7853            ldrb    r3, [r2, #1]
+ 80066e2:      3b4c            subs    r3, #76 ; 0x4c
+ 80066e4:      460d            mov     r5, r1
+ 80066e6:      4604            mov     r4, r0
+ 80066e8:      2b26            cmp     r3, #38 ; 0x26
+ 80066ea:      d83a            bhi.n   8006762 <d_maybe_print_fold_expression.isra.20+0xba>
+ 80066ec:      e8df f003       tbb     [pc, r3]
+ 80066f0:      393939b0        .word   0x393939b0
+ 80066f4:      39b03939        .word   0x39b03939
+ 80066f8:      39393939        .word   0x39393939
+ 80066fc:      39393939        .word   0x39393939
+ 8006700:      39393939        .word   0x39393939
+ 8006704:      39393939        .word   0x39393939
+ 8006708:      39393939        .word   0x39393939
+ 800670c:      39393939        .word   0x39393939
+ 8006710:      39393989        .word   0x39393989
+ 8006714:      3939            .short  0x3939
+ 8006716:      3f              .byte   0x3f
+ 8006717:      00              .byte   0x00
+ 8006718:      4642            mov     r2, r8
+ 800671a:      4629            mov     r1, r5
+ 800671c:      4620            mov     r0, r4
+ 800671e:      f7ff ff31       bl      8006584 <d_print_expr_op>
+ 8006722:      9a01            ldr     r2, [sp, #4]
+ 8006724:      4629            mov     r1, r5
+ 8006726:      4620            mov     r0, r4
+ 8006728:      f7ff ff6c       bl      8006604 <d_print_subexpr>
+ 800672c:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 8006730:      29ff            cmp     r1, #255        ; 0xff
+ 8006732:      f040 80ea       bne.w   800690a <d_maybe_print_fold_expression.isra.20+0x262>
+ 8006736:      2500            movs    r5, #0
+ 8006738:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800673c:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8006740:      f884 50ff       strb.w  r5, [r4, #255]  ; 0xff
+ 8006744:      4620            mov     r0, r4
+ 8006746:      4798            blx     r3
+ 8006748:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800674c:      3301            adds    r3, #1
+ 800674e:      4629            mov     r1, r5
+ 8006750:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8006754:      2201            movs    r2, #1
+ 8006756:      2329            movs    r3, #41 ; 0x29
+ 8006758:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800675c:      5463            strb    r3, [r4, r1]
+ 800675e:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 8006762:      2001            movs    r0, #1
+ 8006764:      f8c4 7120       str.w   r7, [r4, #288]  ; 0x120
+ 8006768:      b003            add     sp, #12
+ 800676a:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800676e:      f8d0 1100       ldr.w   r1, [r0, #256]  ; 0x100
+ 8006772:      29ff            cmp     r1, #255        ; 0xff
+ 8006774:      f040 80cb       bne.w   800690e <d_maybe_print_fold_expression.isra.20+0x266>
+ 8006778:      2600            movs    r6, #0
+ 800677a:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 800677e:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8006782:      f880 60ff       strb.w  r6, [r0, #255]  ; 0xff
+ 8006786:      4798            blx     r3
+ 8006788:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800678c:      3301            adds    r3, #1
+ 800678e:      4631            mov     r1, r6
+ 8006790:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 8006794:      2201            movs    r2, #1
+ 8006796:      2328            movs    r3, #40 ; 0x28
+ 8006798:      f8c4 2100       str.w   r2, [r4, #256]  ; 0x100
+ 800679c:      4620            mov     r0, r4
+ 800679e:      5463            strb    r3, [r4, r1]
+ 80067a0:      464a            mov     r2, r9
+ 80067a2:      4629            mov     r1, r5
+ 80067a4:      f884 3104       strb.w  r3, [r4, #260]  ; 0x104
+ 80067a8:      f7ff ff2c       bl      8006604 <d_print_subexpr>
+ 80067ac:      4629            mov     r1, r5
+ 80067ae:      4d59            ldr     r5, [pc, #356]  ; (8006914 <d_maybe_print_fold_expression.isra.20+0x26c>)
+ 80067b0:      4642            mov     r2, r8
+ 80067b2:      4620            mov     r0, r4
+ 80067b4:      f7ff fee6       bl      8006584 <d_print_expr_op>
+ 80067b8:      1d2e            adds    r6, r5, #4
+ 80067ba:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80067be:      f04f 0800       mov.w   r8, #0
+ 80067c2:      e015            b.n     80067f0 <d_maybe_print_fold_expression.isra.20+0x148>
+ 80067c4:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80067c8:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80067cc:      f884 80ff       strb.w  r8, [r4, #255]  ; 0xff
+ 80067d0:      4798            blx     r3
+ 80067d2:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80067d6:      3301            adds    r3, #1
+ 80067d8:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80067dc:      2200            movs    r2, #0
+ 80067de:      2301            movs    r3, #1
+ 80067e0:      42ae            cmp     r6, r5
+ 80067e2:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80067e6:      f804 9002       strb.w  r9, [r4, r2]
+ 80067ea:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 80067ee:      d0b8            beq.n   8006762 <d_maybe_print_fold_expression.isra.20+0xba>
+ 80067f0:      2bff            cmp     r3, #255        ; 0xff
+ 80067f2:      4619            mov     r1, r3
+ 80067f4:      4620            mov     r0, r4
+ 80067f6:      f815 9b01       ldrb.w  r9, [r5], #1
+ 80067fa:      d0e3            beq.n   80067c4 <d_maybe_print_fold_expression.isra.20+0x11c>
+ 80067fc:      461a            mov     r2, r3
+ 80067fe:      3301            adds    r3, #1
+ 8006800:      e7ee            b.n     80067e0 <d_maybe_print_fold_expression.isra.20+0x138>
+ 8006802:      4e45            ldr     r6, [pc, #276]  ; (8006918 <d_maybe_print_fold_expression.isra.20+0x270>)
+ 8006804:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8006808:      f106 0a04       add.w   sl, r6, #4
+ 800680c:      e017            b.n     800683e <d_maybe_print_fold_expression.isra.20+0x196>
+ 800680e:      f04f 0300       mov.w   r3, #0
+ 8006812:      f884 30ff       strb.w  r3, [r4, #255]  ; 0xff
+ 8006816:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 800681a:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 800681e:      4798            blx     r3
+ 8006820:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 8006824:      3301            adds    r3, #1
+ 8006826:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 800682a:      2200            movs    r2, #0
+ 800682c:      2301            movs    r3, #1
+ 800682e:      45b2            cmp     sl, r6
+ 8006830:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 8006834:      f804 b002       strb.w  fp, [r4, r2]
+ 8006838:      f884 b104       strb.w  fp, [r4, #260]  ; 0x104
+ 800683c:      d05e            beq.n   80068fc <d_maybe_print_fold_expression.isra.20+0x254>
+ 800683e:      2bff            cmp     r3, #255        ; 0xff
+ 8006840:      4619            mov     r1, r3
+ 8006842:      4620            mov     r0, r4
+ 8006844:      f816 bb01       ldrb.w  fp, [r6], #1
+ 8006848:      d0e1            beq.n   800680e <d_maybe_print_fold_expression.isra.20+0x166>
+ 800684a:      461a            mov     r2, r3
+ 800684c:      3301            adds    r3, #1
+ 800684e:      e7ee            b.n     800682e <d_maybe_print_fold_expression.isra.20+0x186>
+ 8006850:      f8d0 3100       ldr.w   r3, [r0, #256]  ; 0x100
+ 8006854:      2bff            cmp     r3, #255        ; 0xff
+ 8006856:      d110            bne.n   800687a <d_maybe_print_fold_expression.isra.20+0x1d2>
+ 8006858:      2600            movs    r6, #0
+ 800685a:      4619            mov     r1, r3
+ 800685c:      f8d0 210c       ldr.w   r2, [r0, #268]  ; 0x10c
+ 8006860:      f8d0 3108       ldr.w   r3, [r0, #264]  ; 0x108
+ 8006864:      f880 60ff       strb.w  r6, [r0, #255]  ; 0xff
+ 8006868:      4798            blx     r3
+ 800686a:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 800686e:      f8c4 6100       str.w   r6, [r4, #256]  ; 0x100
+ 8006872:      1c5a            adds    r2, r3, #1
+ 8006874:      f8c4 2124       str.w   r2, [r4, #292]  ; 0x124
+ 8006878:      4633            mov     r3, r6
+ 800687a:      1c59            adds    r1, r3, #1
+ 800687c:      f04f 0c28       mov.w   ip, #40 ; 0x28
+ 8006880:      464a            mov     r2, r9
+ 8006882:      f8c4 1100       str.w   r1, [r4, #256]  ; 0x100
+ 8006886:      4620            mov     r0, r4
+ 8006888:      f804 c003       strb.w  ip, [r4, r3]
+ 800688c:      4629            mov     r1, r5
+ 800688e:      f884 c104       strb.w  ip, [r4, #260]  ; 0x104
+ 8006892:      f8df 9088       ldr.w   r9, [pc, #136]  ; 800691c <d_maybe_print_fold_expression.isra.20+0x274>
+ 8006896:      f7ff feb5       bl      8006604 <d_print_subexpr>
+ 800689a:      4642            mov     r2, r8
+ 800689c:      4629            mov     r1, r5
+ 800689e:      4620            mov     r0, r4
+ 80068a0:      f7ff fe70       bl      8006584 <d_print_expr_op>
+ 80068a4:      f109 0a03       add.w   sl, r9, #3
+ 80068a8:      f8d4 3100       ldr.w   r3, [r4, #256]  ; 0x100
+ 80068ac:      2600            movs    r6, #0
+ 80068ae:      e016            b.n     80068de <d_maybe_print_fold_expression.isra.20+0x236>
+ 80068b0:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 80068b4:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 80068b8:      f884 60ff       strb.w  r6, [r4, #255]  ; 0xff
+ 80068bc:      4798            blx     r3
+ 80068be:      f8d4 3124       ldr.w   r3, [r4, #292]  ; 0x124
+ 80068c2:      3301            adds    r3, #1
+ 80068c4:      f8c4 3124       str.w   r3, [r4, #292]  ; 0x124
+ 80068c8:      2200            movs    r2, #0
+ 80068ca:      2301            movs    r3, #1
+ 80068cc:      45d1            cmp     r9, sl
+ 80068ce:      f8c4 3100       str.w   r3, [r4, #256]  ; 0x100
+ 80068d2:      f804 b002       strb.w  fp, [r4, r2]
+ 80068d6:      f884 b104       strb.w  fp, [r4, #260]  ; 0x104
+ 80068da:      f43f af1d       beq.w   8006718 <d_maybe_print_fold_expression.isra.20+0x70>
+ 80068de:      2bff            cmp     r3, #255        ; 0xff
+ 80068e0:      4619            mov     r1, r3
+ 80068e2:      4620            mov     r0, r4
+ 80068e4:      f819 bb01       ldrb.w  fp, [r9], #1
+ 80068e8:      d0e2            beq.n   80068b0 <d_maybe_print_fold_expression.isra.20+0x208>
+ 80068ea:      461a            mov     r2, r3
+ 80068ec:      3301            adds    r3, #1
+ 80068ee:      e7ed            b.n     80068cc <d_maybe_print_fold_expression.isra.20+0x224>
+ 80068f0:      f8d9 300c       ldr.w   r3, [r9, #12]
+ 80068f4:      9301            str     r3, [sp, #4]
+ 80068f6:      f8d9 9008       ldr.w   r9, [r9, #8]
+ 80068fa:      e6eb            b.n     80066d4 <d_maybe_print_fold_expression.isra.20+0x2c>
+ 80068fc:      4642            mov     r2, r8
+ 80068fe:      4629            mov     r1, r5
+ 8006900:      4620            mov     r0, r4
+ 8006902:      f7ff fe3f       bl      8006584 <d_print_expr_op>
+ 8006906:      464a            mov     r2, r9
+ 8006908:      e70c            b.n     8006724 <d_maybe_print_fold_expression.isra.20+0x7c>
+ 800690a:      1c4a            adds    r2, r1, #1
+ 800690c:      e723            b.n     8006756 <d_maybe_print_fold_expression.isra.20+0xae>
+ 800690e:      1c4a            adds    r2, r1, #1
+ 8006910:      e741            b.n     8006796 <d_maybe_print_fold_expression.isra.20+0xee>
+ 8006912:      bf00            nop
+ 8006914:      080128c0        .word   0x080128c0
+ 8006918:      080128b8        .word   0x080128b8
+ 800691c:      080127c4        .word   0x080127c4
+
+08006920 <d_demangle_callback.constprop.22>:
+ 8006920:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 8006924:      b0e5            sub     sp, #404        ; 0x194
+ 8006926:      f890 a000       ldrb.w  sl, [r0]
+ 800692a:      f1ba 0f5f       cmp.w   sl, #95 ; 0x5f
+ 800692e:      af00            add     r7, sp, #0
+ 8006930:      4605            mov     r5, r0
+ 8006932:      4688            mov     r8, r1
+ 8006934:      4616            mov     r6, r2
+ 8006936:      f000 80f3       beq.w   8006b20 <d_demangle_callback.constprop.22+0x200>
+ 800693a:      2208            movs    r2, #8
+ 800693c:      49bb            ldr     r1, [pc, #748]  ; (8006c2c <d_demangle_callback.constprop.22+0x30c>)
+ 800693e:      4628            mov     r0, r5
+ 8006940:      f007 ffac       bl      800e89c <strncmp>
+ 8006944:      b948            cbnz    r0, 800695a <d_demangle_callback.constprop.22+0x3a>
+ 8006946:      7a2b            ldrb    r3, [r5, #8]
+ 8006948:      2b2e            cmp     r3, #46 ; 0x2e
+ 800694a:      f000 80d8       beq.w   8006afe <d_demangle_callback.constprop.22+0x1de>
+ 800694e:      2b5f            cmp     r3, #95 ; 0x5f
+ 8006950:      f000 80d5       beq.w   8006afe <d_demangle_callback.constprop.22+0x1de>
+ 8006954:      2b24            cmp     r3, #36 ; 0x24
+ 8006956:      f000 80d2       beq.w   8006afe <d_demangle_callback.constprop.22+0x1de>
+ 800695a:      f04f 0900       mov.w   r9, #0
+ 800695e:      4628            mov     r0, r5
+ 8006960:      f000 fa38       bl      8006dd4 <strlen>
+ 8006964:      0142            lsls    r2, r0, #5
+ 8006966:      0083            lsls    r3, r0, #2
+ 8006968:      3208            adds    r2, #8
+ 800696a:      330a            adds    r3, #10
+ 800696c:      ebad 0d02       sub.w   sp, sp, r2
+ 8006970:      f023 0307       bic.w   r3, r3, #7
+ 8006974:      2400            movs    r4, #0
+ 8006976:      46eb            mov     fp, sp
+ 8006978:      1829            adds    r1, r5, r0
+ 800697a:      ebad 0d03       sub.w   sp, sp, r3
+ 800697e:      2211            movs    r2, #17
+ 8006980:      0043            lsls    r3, r0, #1
+ 8006982:      f1b9 0f01       cmp.w   r9, #1
+ 8006986:      f8c7 b01c       str.w   fp, [r7, #28]
+ 800698a:      f8c7 d028       str.w   sp, [r7, #40]   ; 0x28
+ 800698e:      60fd            str     r5, [r7, #12]
+ 8006990:      61bd            str     r5, [r7, #24]
+ 8006992:      6338            str     r0, [r7, #48]   ; 0x30
+ 8006994:      6139            str     r1, [r7, #16]
+ 8006996:      627b            str     r3, [r7, #36]   ; 0x24
+ 8006998:      617a            str     r2, [r7, #20]
+ 800699a:      623c            str     r4, [r7, #32]
+ 800699c:      62fc            str     r4, [r7, #44]   ; 0x2c
+ 800699e:      e9c7 440d       strd    r4, r4, [r7, #52]       ; 0x34
+ 80069a2:      e9c7 440f       strd    r4, r4, [r7, #60]       ; 0x3c
+ 80069a6:      647c            str     r4, [r7, #68]   ; 0x44
+ 80069a8:      f000 80a0       beq.w   8006aec <d_demangle_callback.constprop.22+0x1cc>
+ 80069ac:      f0c0 80bf       bcc.w   8006b2e <d_demangle_callback.constprop.22+0x20e>
+ 80069b0:      7aea            ldrb    r2, [r5, #11]
+ 80069b2:      f1b9 0f02       cmp.w   r9, #2
+ 80069b6:      f105 0a0b       add.w   sl, r5, #11
+ 80069ba:      bf14            ite     ne
+ 80069bc:      f04f 0944       movne.w r9, #68 ; 0x44
+ 80069c0:      f04f 0943       moveq.w r9, #67 ; 0x43
+ 80069c4:      2a5f            cmp     r2, #95 ; 0x5f
+ 80069c6:      f8c7 a018       str.w   sl, [r7, #24]
+ 80069ca:      f000 80b9       beq.w   8006b40 <d_demangle_callback.constprop.22+0x220>
+ 80069ce:      4650            mov     r0, sl
+ 80069d0:      607b            str     r3, [r7, #4]
+ 80069d2:      f000 f9ff       bl      8006dd4 <strlen>
+ 80069d6:      687b            ldr     r3, [r7, #4]
+ 80069d8:      2b00            cmp     r3, #0
+ 80069da:      f340 8123       ble.w   8006c24 <d_demangle_callback.constprop.22+0x304>
+ 80069de:      2300            movs    r3, #0
+ 80069e0:      2201            movs    r2, #1
+ 80069e2:      f8cb 3004       str.w   r3, [fp, #4]
+ 80069e6:      623a            str     r2, [r7, #32]
+ 80069e8:      2800            cmp     r0, #0
+ 80069ea:      f000 811b       beq.w   8006c24 <d_demangle_callback.constprop.22+0x304>
+ 80069ee:      e9cb a002       strd    sl, r0, [fp, #8]
+ 80069f2:      f88b 3000       strb.w  r3, [fp]
+ 80069f6:      4649            mov     r1, r9
+ 80069f8:      2300            movs    r3, #0
+ 80069fa:      465a            mov     r2, fp
+ 80069fc:      f107 000c       add.w   r0, r7, #12
+ 8006a00:      f7f9 fc1e       bl      8000240 <d_make_comp>
+ 8006a04:      69bc            ldr     r4, [r7, #24]
+ 8006a06:      4605            mov     r5, r0
+ 8006a08:      4620            mov     r0, r4
+ 8006a0a:      f000 f9e3       bl      8006dd4 <strlen>
+ 8006a0e:      1823            adds    r3, r4, r0
+ 8006a10:      61bb            str     r3, [r7, #24]
+ 8006a12:      f814 9000       ldrb.w  r9, [r4, r0]
+ 8006a16:      f1b9 0f00       cmp.w   r9, #0
+ 8006a1a:      d16a            bne.n   8006af2 <d_demangle_callback.constprop.22+0x1d2>
+ 8006a1c:      2d00            cmp     r5, #0
+ 8006a1e:      d068            beq.n   8006af2 <d_demangle_callback.constprop.22+0x1d2>
+ 8006a20:      f107 0448       add.w   r4, r7, #72     ; 0x48
+ 8006a24:      462a            mov     r2, r5
+ 8006a26:      f507 71be       add.w   r1, r7, #380    ; 0x17c
+ 8006a2a:      f507 70c4       add.w   r0, r7, #392    ; 0x188
+ 8006a2e:      f8c4 8108       str.w   r8, [r4, #264]  ; 0x108
+ 8006a32:      f8c4 610c       str.w   r6, [r4, #268]  ; 0x10c
+ 8006a36:      f8c4 9100       str.w   r9, [r4, #256]  ; 0x100
+ 8006a3a:      f884 9104       strb.w  r9, [r4, #260]  ; 0x104
+ 8006a3e:      f8c4 9110       str.w   r9, [r4, #272]  ; 0x110
+ 8006a42:      f8c4 9114       str.w   r9, [r4, #276]  ; 0x114
+ 8006a46:      f8c4 9120       str.w   r9, [r4, #288]  ; 0x120
+ 8006a4a:      f8c4 9124       str.w   r9, [r4, #292]  ; 0x124
+ 8006a4e:      f8c4 9118       str.w   r9, [r4, #280]  ; 0x118
+ 8006a52:      f8c4 911c       str.w   r9, [r4, #284]  ; 0x11c
+ 8006a56:      f8c4 9128       str.w   r9, [r4, #296]  ; 0x128
+ 8006a5a:      f8c4 912c       str.w   r9, [r4, #300]  ; 0x12c
+ 8006a5e:      f8c4 9130       str.w   r9, [r4, #304]  ; 0x130
+ 8006a62:      f8c4 9134       str.w   r9, [r4, #308]  ; 0x134
+ 8006a66:      f8c4 9138       str.w   r9, [r4, #312]  ; 0x138
+ 8006a6a:      f8c4 913c       str.w   r9, [r4, #316]  ; 0x13c
+ 8006a6e:      f8c4 9140       str.w   r9, [r4, #320]  ; 0x140
+ 8006a72:      f7f9 fc49       bl      8000308 <d_count_templates_scopes>
+ 8006a76:      f8d4 3134       ldr.w   r3, [r4, #308]  ; 0x134
+ 8006a7a:      f8d4 6140       ldr.w   r6, [r4, #320]  ; 0x140
+ 8006a7e:      f8c4 9144       str.w   r9, [r4, #324]  ; 0x144
+ 8006a82:      2b01            cmp     r3, #1
+ 8006a84:      fb06 f603       mul.w   r6, r6, r3
+ 8006a88:      461a            mov     r2, r3
+ 8006a8a:      bfb8            it      lt
+ 8006a8c:      2201            movlt   r2, #1
+ 8006a8e:      00d2            lsls    r2, r2, #3
+ 8006a90:      2e01            cmp     r6, #1
+ 8006a92:      4633            mov     r3, r6
+ 8006a94:      f102 0208       add.w   r2, r2, #8
+ 8006a98:      bfb8            it      lt
+ 8006a9a:      2301            movlt   r3, #1
+ 8006a9c:      46e8            mov     r8, sp
+ 8006a9e:      00db            lsls    r3, r3, #3
+ 8006aa0:      ebad 0d02       sub.w   sp, sp, r2
+ 8006aa4:      3308            adds    r3, #8
+ 8006aa6:      4669            mov     r1, sp
+ 8006aa8:      462a            mov     r2, r5
+ 8006aaa:      ebad 0d03       sub.w   sp, sp, r3
+ 8006aae:      4620            mov     r0, r4
+ 8006ab0:      f8c4 112c       str.w   r1, [r4, #300]  ; 0x12c
+ 8006ab4:      2111            movs    r1, #17
+ 8006ab6:      f8c4 d138       str.w   sp, [r4, #312]  ; 0x138
+ 8006aba:      f8c4 6140       str.w   r6, [r4, #320]  ; 0x140
+ 8006abe:      f7fc f899       bl      8002bf4 <d_print_comp>
+ 8006ac2:      f8d4 1100       ldr.w   r1, [r4, #256]  ; 0x100
+ 8006ac6:      f8d4 3108       ldr.w   r3, [r4, #264]  ; 0x108
+ 8006aca:      f804 9001       strb.w  r9, [r4, r1]
+ 8006ace:      4620            mov     r0, r4
+ 8006ad0:      46c5            mov     sp, r8
+ 8006ad2:      f8d4 210c       ldr.w   r2, [r4, #268]  ; 0x10c
+ 8006ad6:      4798            blx     r3
+ 8006ad8:      f8d4 0118       ldr.w   r0, [r4, #280]  ; 0x118
+ 8006adc:      fab0 f080       clz     r0, r0
+ 8006ae0:      0940            lsrs    r0, r0, #5
+ 8006ae2:      f507 77ca       add.w   r7, r7, #404    ; 0x194
+ 8006ae6:      46bd            mov     sp, r7
+ 8006ae8:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8006aec:      f1ba 0f5f       cmp.w   sl, #95 ; 0x5f
+ 8006af0:      d033            beq.n   8006b5a <d_demangle_callback.constprop.22+0x23a>
+ 8006af2:      2000            movs    r0, #0
+ 8006af4:      f507 77ca       add.w   r7, r7, #404    ; 0x194
+ 8006af8:      46bd            mov     sp, r7
+ 8006afa:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8006afe:      7a6b            ldrb    r3, [r5, #9]
+ 8006b00:      2b44            cmp     r3, #68 ; 0x44
+ 8006b02:      d002            beq.n   8006b0a <d_demangle_callback.constprop.22+0x1ea>
+ 8006b04:      2b49            cmp     r3, #73 ; 0x49
+ 8006b06:      f47f af28       bne.w   800695a <d_demangle_callback.constprop.22+0x3a>
+ 8006b0a:      7aaa            ldrb    r2, [r5, #10]
+ 8006b0c:      2a5f            cmp     r2, #95 ; 0x5f
+ 8006b0e:      f47f af24       bne.w   800695a <d_demangle_callback.constprop.22+0x3a>
+ 8006b12:      2b49            cmp     r3, #73 ; 0x49
+ 8006b14:      bf14            ite     ne
+ 8006b16:      f04f 0903       movne.w r9, #3
+ 8006b1a:      f04f 0902       moveq.w r9, #2
+ 8006b1e:      e71e            b.n     800695e <d_demangle_callback.constprop.22+0x3e>
+ 8006b20:      7843            ldrb    r3, [r0, #1]
+ 8006b22:      2b5a            cmp     r3, #90 ; 0x5a
+ 8006b24:      f47f af09       bne.w   800693a <d_demangle_callback.constprop.22+0x1a>
+ 8006b28:      f04f 0901       mov.w   r9, #1
+ 8006b2c:      e717            b.n     800695e <d_demangle_callback.constprop.22+0x3e>
+ 8006b2e:      f107 000c       add.w   r0, r7, #12
+ 8006b32:      f7fa fe05       bl      8001740 <d_type>
+ 8006b36:      69bb            ldr     r3, [r7, #24]
+ 8006b38:      4605            mov     r5, r0
+ 8006b3a:      f893 9000       ldrb.w  r9, [r3]
+ 8006b3e:      e76a            b.n     8006a16 <d_demangle_callback.constprop.22+0xf6>
+ 8006b40:      7b2a            ldrb    r2, [r5, #12]
+ 8006b42:      2a5a            cmp     r2, #90 ; 0x5a
+ 8006b44:      f47f af43       bne.w   80069ce <d_demangle_callback.constprop.22+0xae>
+ 8006b48:      350d            adds    r5, #13
+ 8006b4a:      4621            mov     r1, r4
+ 8006b4c:      f107 000c       add.w   r0, r7, #12
+ 8006b50:      61bd            str     r5, [r7, #24]
+ 8006b52:      f7fb fd37       bl      80025c4 <d_encoding>
+ 8006b56:      4683            mov     fp, r0
+ 8006b58:      e74d            b.n     80069f6 <d_demangle_callback.constprop.22+0xd6>
+ 8006b5a:      786b            ldrb    r3, [r5, #1]
+ 8006b5c:      2b5a            cmp     r3, #90 ; 0x5a
+ 8006b5e:      d1c8            bne.n   8006af2 <d_demangle_callback.constprop.22+0x1d2>
+ 8006b60:      3502            adds    r5, #2
+ 8006b62:      4649            mov     r1, r9
+ 8006b64:      f107 000c       add.w   r0, r7, #12
+ 8006b68:      61bd            str     r5, [r7, #24]
+ 8006b6a:      f7fb fd2b       bl      80025c4 <d_encoding>
+ 8006b6e:      697b            ldr     r3, [r7, #20]
+ 8006b70:      07db            lsls    r3, r3, #31
+ 8006b72:      4605            mov     r5, r0
+ 8006b74:      d552            bpl.n   8006c1c <d_demangle_callback.constprop.22+0x2fc>
+ 8006b76:      69b8            ldr     r0, [r7, #24]
+ 8006b78:      f890 9000       ldrb.w  r9, [r0]
+ 8006b7c:      f1b9 0f2e       cmp.w   r9, #46 ; 0x2e
+ 8006b80:      f47f af49       bne.w   8006a16 <d_demangle_callback.constprop.22+0xf6>
+ 8006b84:      7843            ldrb    r3, [r0, #1]
+ 8006b86:      f1a3 0261       sub.w   r2, r3, #97     ; 0x61
+ 8006b8a:      2a19            cmp     r2, #25
+ 8006b8c:      d93a            bls.n   8006c04 <d_demangle_callback.constprop.22+0x2e4>
+ 8006b8e:      2b5f            cmp     r3, #95 ; 0x5f
+ 8006b90:      d038            beq.n   8006c04 <d_demangle_callback.constprop.22+0x2e4>
+ 8006b92:      3b30            subs    r3, #48 ; 0x30
+ 8006b94:      2b09            cmp     r3, #9
+ 8006b96:      d841            bhi.n   8006c1c <d_demangle_callback.constprop.22+0x2fc>
+ 8006b98:      7803            ldrb    r3, [r0, #0]
+ 8006b9a:      4602            mov     r2, r0
+ 8006b9c:      2b2e            cmp     r3, #46 ; 0x2e
+ 8006b9e:      d112            bne.n   8006bc6 <d_demangle_callback.constprop.22+0x2a6>
+ 8006ba0:      7853            ldrb    r3, [r2, #1]
+ 8006ba2:      3b30            subs    r3, #48 ; 0x30
+ 8006ba4:      2b09            cmp     r3, #9
+ 8006ba6:      d80e            bhi.n   8006bc6 <d_demangle_callback.constprop.22+0x2a6>
+ 8006ba8:      7893            ldrb    r3, [r2, #2]
+ 8006baa:      f1a3 0130       sub.w   r1, r3, #48     ; 0x30
+ 8006bae:      2909            cmp     r1, #9
+ 8006bb0:      f102 0202       add.w   r2, r2, #2
+ 8006bb4:      d8f2            bhi.n   8006b9c <d_demangle_callback.constprop.22+0x27c>
+ 8006bb6:      f812 3f01       ldrb.w  r3, [r2, #1]!
+ 8006bba:      f1a3 0130       sub.w   r1, r3, #48     ; 0x30
+ 8006bbe:      2909            cmp     r1, #9
+ 8006bc0:      d9f9            bls.n   8006bb6 <d_demangle_callback.constprop.22+0x296>
+ 8006bc2:      2b2e            cmp     r3, #46 ; 0x2e
+ 8006bc4:      d0ec            beq.n   8006ba0 <d_demangle_callback.constprop.22+0x280>
+ 8006bc6:      e9d7 1308       ldrd    r1, r3, [r7, #32]
+ 8006bca:      4299            cmp     r1, r3
+ 8006bcc:      61ba            str     r2, [r7, #24]
+ 8006bce:      da17            bge.n   8006c00 <d_demangle_callback.constprop.22+0x2e0>
+ 8006bd0:      f8d7 e01c       ldr.w   lr, [r7, #28]
+ 8006bd4:      ea4f 1c01       mov.w   ip, r1, lsl #4
+ 8006bd8:      eb0e 030c       add.w   r3, lr, ip
+ 8006bdc:      3101            adds    r1, #1
+ 8006bde:      1a12            subs    r2, r2, r0
+ 8006be0:      605c            str     r4, [r3, #4]
+ 8006be2:      6239            str     r1, [r7, #32]
+ 8006be4:      d00c            beq.n   8006c00 <d_demangle_callback.constprop.22+0x2e0>
+ 8006be6:      605c            str     r4, [r3, #4]
+ 8006be8:      f80e 400c       strb.w  r4, [lr, ip]
+ 8006bec:      e9c3 0202       strd    r0, r2, [r3, #8]
+ 8006bf0:      462a            mov     r2, r5
+ 8006bf2:      214d            movs    r1, #77 ; 0x4d
+ 8006bf4:      f107 000c       add.w   r0, r7, #12
+ 8006bf8:      f7f9 fb22       bl      8000240 <d_make_comp>
+ 8006bfc:      4605            mov     r5, r0
+ 8006bfe:      e7ba            b.n     8006b76 <d_demangle_callback.constprop.22+0x256>
+ 8006c00:      2300            movs    r3, #0
+ 8006c02:      e7f5            b.n     8006bf0 <d_demangle_callback.constprop.22+0x2d0>
+ 8006c04:      1c81            adds    r1, r0, #2
+ 8006c06:      460a            mov     r2, r1
+ 8006c08:      f811 3b01       ldrb.w  r3, [r1], #1
+ 8006c0c:      f1a3 0c61       sub.w   ip, r3, #97     ; 0x61
+ 8006c10:      f1bc 0f19       cmp.w   ip, #25
+ 8006c14:      d9f7            bls.n   8006c06 <d_demangle_callback.constprop.22+0x2e6>
+ 8006c16:      2b5f            cmp     r3, #95 ; 0x5f
+ 8006c18:      d0f5            beq.n   8006c06 <d_demangle_callback.constprop.22+0x2e6>
+ 8006c1a:      e7bf            b.n     8006b9c <d_demangle_callback.constprop.22+0x27c>
+ 8006c1c:      69bb            ldr     r3, [r7, #24]
+ 8006c1e:      f893 9000       ldrb.w  r9, [r3]
+ 8006c22:      e6f8            b.n     8006a16 <d_demangle_callback.constprop.22+0xf6>
+ 8006c24:      f04f 0b00       mov.w   fp, #0
+ 8006c28:      e6e5            b.n     80069f6 <d_demangle_callback.constprop.22+0xd6>
+ 8006c2a:      bf00            nop
+ 8006c2c:      08012550        .word   0x08012550
+
+08006c30 <__cxa_demangle>:
+ 8006c30:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8006c34:      b084            sub     sp, #16
+ 8006c36:      b380            cbz     r0, 8006c9a <__cxa_demangle+0x6a>
+ 8006c38:      b101            cbz     r1, 8006c3c <__cxa_demangle+0xc>
+ 8006c3a:      b372            cbz     r2, 8006c9a <__cxa_demangle+0x6a>
+ 8006c3c:      2400            movs    r4, #0
+ 8006c3e:      4617            mov     r7, r2
+ 8006c40:      460e            mov     r6, r1
+ 8006c42:      466a            mov     r2, sp
+ 8006c44:      492b            ldr     r1, [pc, #172]  ; (8006cf4 <__cxa_demangle+0xc4>)
+ 8006c46:      461d            mov     r5, r3
+ 8006c48:      e9cd 4400       strd    r4, r4, [sp]
+ 8006c4c:      e9cd 4402       strd    r4, r4, [sp, #8]
+ 8006c50:      f7ff fe66       bl      8006920 <d_demangle_callback.constprop.22>
+ 8006c54:      2800            cmp     r0, #0
+ 8006c56:      d047            beq.n   8006ce8 <__cxa_demangle+0xb8>
+ 8006c58:      9b03            ldr     r3, [sp, #12]
+ 8006c5a:      9c00            ldr     r4, [sp, #0]
+ 8006c5c:      b9ab            cbnz    r3, 8006c8a <__cxa_demangle+0x5a>
+ 8006c5e:      f8dd 8008       ldr.w   r8, [sp, #8]
+ 8006c62:      b36c            cbz     r4, 8006cc0 <__cxa_demangle+0x90>
+ 8006c64:      b1b6            cbz     r6, 8006c94 <__cxa_demangle+0x64>
+ 8006c66:      4620            mov     r0, r4
+ 8006c68:      f000 f8b4       bl      8006dd4 <strlen>
+ 8006c6c:      683b            ldr     r3, [r7, #0]
+ 8006c6e:      4298            cmp     r0, r3
+ 8006c70:      d31c            bcc.n   8006cac <__cxa_demangle+0x7c>
+ 8006c72:      4630            mov     r0, r6
+ 8006c74:      f007 f932       bl      800dedc <free>
+ 8006c78:      f8c7 8000       str.w   r8, [r7]
+ 8006c7c:      b195            cbz     r5, 8006ca4 <__cxa_demangle+0x74>
+ 8006c7e:      2300            movs    r3, #0
+ 8006c80:      4620            mov     r0, r4
+ 8006c82:      602b            str     r3, [r5, #0]
+ 8006c84:      b004            add     sp, #16
+ 8006c86:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8006c8a:      b334            cbz     r4, 8006cda <__cxa_demangle+0xaa>
+ 8006c8c:      f04f 0801       mov.w   r8, #1
+ 8006c90:      2e00            cmp     r6, #0
+ 8006c92:      d1e8            bne.n   8006c66 <__cxa_demangle+0x36>
+ 8006c94:      2f00            cmp     r7, #0
+ 8006c96:      d1ef            bne.n   8006c78 <__cxa_demangle+0x48>
+ 8006c98:      e7f0            b.n     8006c7c <__cxa_demangle+0x4c>
+ 8006c9a:      b113            cbz     r3, 8006ca2 <__cxa_demangle+0x72>
+ 8006c9c:      f06f 0202       mvn.w   r2, #2
+ 8006ca0:      601a            str     r2, [r3, #0]
+ 8006ca2:      2400            movs    r4, #0
+ 8006ca4:      4620            mov     r0, r4
+ 8006ca6:      b004            add     sp, #16
+ 8006ca8:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8006cac:      1c42            adds    r2, r0, #1
+ 8006cae:      4621            mov     r1, r4
+ 8006cb0:      4630            mov     r0, r6
+ 8006cb2:      f007 fb60       bl      800e376 <memcpy>
+ 8006cb6:      4620            mov     r0, r4
+ 8006cb8:      f007 f910       bl      800dedc <free>
+ 8006cbc:      4634            mov     r4, r6
+ 8006cbe:      e7dd            b.n     8006c7c <__cxa_demangle+0x4c>
+ 8006cc0:      2d00            cmp     r5, #0
+ 8006cc2:      d0ee            beq.n   8006ca2 <__cxa_demangle+0x72>
+ 8006cc4:      f1b8 0f01       cmp.w   r8, #1
+ 8006cc8:      d009            beq.n   8006cde <__cxa_demangle+0xae>
+ 8006cca:      2400            movs    r4, #0
+ 8006ccc:      f06f 0301       mvn.w   r3, #1
+ 8006cd0:      4620            mov     r0, r4
+ 8006cd2:      602b            str     r3, [r5, #0]
+ 8006cd4:      b004            add     sp, #16
+ 8006cd6:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8006cda:      2d00            cmp     r5, #0
+ 8006cdc:      d0e1            beq.n   8006ca2 <__cxa_demangle+0x72>
+ 8006cde:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 8006ce2:      602b            str     r3, [r5, #0]
+ 8006ce4:      2400            movs    r4, #0
+ 8006ce6:      e7dd            b.n     8006ca4 <__cxa_demangle+0x74>
+ 8006ce8:      9800            ldr     r0, [sp, #0]
+ 8006cea:      f007 f8f7       bl      800dedc <free>
+ 8006cee:      2d00            cmp     r5, #0
+ 8006cf0:      d1eb            bne.n   8006cca <__cxa_demangle+0x9a>
+ 8006cf2:      e7d6            b.n     8006ca2 <__cxa_demangle+0x72>
+ 8006cf4:      080008b9        .word   0x080008b9
+
+08006cf8 <__gcclibcxx_demangle_callback>:
+ 8006cf8:      b160            cbz     r0, 8006d14 <__gcclibcxx_demangle_callback+0x1c>
+ 8006cfa:      b508            push    {r3, lr}
+ 8006cfc:      b139            cbz     r1, 8006d0e <__gcclibcxx_demangle_callback+0x16>
+ 8006cfe:      f7ff fe0f       bl      8006920 <d_demangle_callback.constprop.22>
+ 8006d02:      2800            cmp     r0, #0
+ 8006d04:      bf0c            ite     eq
+ 8006d06:      f06f 0001       mvneq.w r0, #1
+ 8006d0a:      2000            movne   r0, #0
+ 8006d0c:      bd08            pop     {r3, pc}
+ 8006d0e:      f06f 0002       mvn.w   r0, #2
+ 8006d12:      bd08            pop     {r3, pc}
+ 8006d14:      f06f 0002       mvn.w   r0, #2
+ 8006d18:      4770            bx      lr
+ 8006d1a:      bf00            nop
+ 8006d1c:      0000            movs    r0, r0
+       ...
+
+08006d20 <memchr>:
+ 8006d20:      f001 01ff       and.w   r1, r1, #255    ; 0xff
+ 8006d24:      2a10            cmp     r2, #16
+ 8006d26:      db2b            blt.n   8006d80 <memchr+0x60>
+ 8006d28:      f010 0f07       tst.w   r0, #7
+ 8006d2c:      d008            beq.n   8006d40 <memchr+0x20>
+ 8006d2e:      f810 3b01       ldrb.w  r3, [r0], #1
+ 8006d32:      3a01            subs    r2, #1
+ 8006d34:      428b            cmp     r3, r1
+ 8006d36:      d02d            beq.n   8006d94 <memchr+0x74>
+ 8006d38:      f010 0f07       tst.w   r0, #7
+ 8006d3c:      b342            cbz     r2, 8006d90 <memchr+0x70>
+ 8006d3e:      d1f6            bne.n   8006d2e <memchr+0xe>
+ 8006d40:      b4f0            push    {r4, r5, r6, r7}
+ 8006d42:      ea41 2101       orr.w   r1, r1, r1, lsl #8
+ 8006d46:      ea41 4101       orr.w   r1, r1, r1, lsl #16
+ 8006d4a:      f022 0407       bic.w   r4, r2, #7
+ 8006d4e:      f07f 0700       mvns.w  r7, #0
+ 8006d52:      2300            movs    r3, #0
+ 8006d54:      e8f0 5602       ldrd    r5, r6, [r0], #8
+ 8006d58:      3c08            subs    r4, #8
+ 8006d5a:      ea85 0501       eor.w   r5, r5, r1
+ 8006d5e:      ea86 0601       eor.w   r6, r6, r1
+ 8006d62:      fa85 f547       uadd8   r5, r5, r7
+ 8006d66:      faa3 f587       sel     r5, r3, r7
+ 8006d6a:      fa86 f647       uadd8   r6, r6, r7
+ 8006d6e:      faa5 f687       sel     r6, r5, r7
+ 8006d72:      b98e            cbnz    r6, 8006d98 <memchr+0x78>
+ 8006d74:      d1ee            bne.n   8006d54 <memchr+0x34>
+ 8006d76:      bcf0            pop     {r4, r5, r6, r7}
+ 8006d78:      f001 01ff       and.w   r1, r1, #255    ; 0xff
+ 8006d7c:      f002 0207       and.w   r2, r2, #7
+ 8006d80:      b132            cbz     r2, 8006d90 <memchr+0x70>
+ 8006d82:      f810 3b01       ldrb.w  r3, [r0], #1
+ 8006d86:      3a01            subs    r2, #1
+ 8006d88:      ea83 0301       eor.w   r3, r3, r1
+ 8006d8c:      b113            cbz     r3, 8006d94 <memchr+0x74>
+ 8006d8e:      d1f8            bne.n   8006d82 <memchr+0x62>
+ 8006d90:      2000            movs    r0, #0
+ 8006d92:      4770            bx      lr
+ 8006d94:      3801            subs    r0, #1
+ 8006d96:      4770            bx      lr
+ 8006d98:      2d00            cmp     r5, #0
+ 8006d9a:      bf06            itte    eq
+ 8006d9c:      4635            moveq   r5, r6
+ 8006d9e:      3803            subeq   r0, #3
+ 8006da0:      3807            subne   r0, #7
+ 8006da2:      f015 0f01       tst.w   r5, #1
+ 8006da6:      d107            bne.n   8006db8 <memchr+0x98>
+ 8006da8:      3001            adds    r0, #1
+ 8006daa:      f415 7f80       tst.w   r5, #256        ; 0x100
+ 8006dae:      bf02            ittt    eq
+ 8006db0:      3001            addeq   r0, #1
+ 8006db2:      f415 3fc0       tsteq.w r5, #98304      ; 0x18000
+ 8006db6:      3001            addeq   r0, #1
+ 8006db8:      bcf0            pop     {r4, r5, r6, r7}
+ 8006dba:      3801            subs    r0, #1
+ 8006dbc:      4770            bx      lr
+ 8006dbe:      bf00            nop
+
+08006dc0 <strcmp>:
+ 8006dc0:      f810 2b01       ldrb.w  r2, [r0], #1
+ 8006dc4:      f811 3b01       ldrb.w  r3, [r1], #1
+ 8006dc8:      2a01            cmp     r2, #1
+ 8006dca:      bf28            it      cs
+ 8006dcc:      429a            cmpcs   r2, r3
+ 8006dce:      d0f7            beq.n   8006dc0 <strcmp>
+ 8006dd0:      1ad0            subs    r0, r2, r3
+ 8006dd2:      4770            bx      lr
+
+08006dd4 <strlen>:
+ 8006dd4:      4603            mov     r3, r0
+ 8006dd6:      f813 2b01       ldrb.w  r2, [r3], #1
+ 8006dda:      2a00            cmp     r2, #0
+ 8006ddc:      d1fb            bne.n   8006dd6 <strlen+0x2>
+ 8006dde:      1a18            subs    r0, r3, r0
+ 8006de0:      3801            subs    r0, #1
+ 8006de2:      4770            bx      lr
+
+08006de4 <__aeabi_uldivmod>:
+ 8006de4:      b953            cbnz    r3, 8006dfc <__aeabi_uldivmod+0x18>
+ 8006de6:      b94a            cbnz    r2, 8006dfc <__aeabi_uldivmod+0x18>
+ 8006de8:      2900            cmp     r1, #0
+ 8006dea:      bf08            it      eq
+ 8006dec:      2800            cmpeq   r0, #0
+ 8006dee:      bf1c            itt     ne
+ 8006df0:      f04f 31ff       movne.w r1, #4294967295 ; 0xffffffff
+ 8006df4:      f04f 30ff       movne.w r0, #4294967295 ; 0xffffffff
+ 8006df8:      f001 b8f8       b.w     8007fec <__aeabi_idiv0>
+ 8006dfc:      f1ad 0c08       sub.w   ip, sp, #8
+ 8006e00:      e96d ce04       strd    ip, lr, [sp, #-16]!
+ 8006e04:      f000 f806       bl      8006e14 <__udivmoddi4>
+ 8006e08:      f8dd e004       ldr.w   lr, [sp, #4]
+ 8006e0c:      e9dd 2302       ldrd    r2, r3, [sp, #8]
+ 8006e10:      b004            add     sp, #16
+ 8006e12:      4770            bx      lr
+
+08006e14 <__udivmoddi4>:
+ 8006e14:      e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8006e18:      9e08            ldr     r6, [sp, #32]
+ 8006e1a:      4604            mov     r4, r0
+ 8006e1c:      4688            mov     r8, r1
+ 8006e1e:      2b00            cmp     r3, #0
+ 8006e20:      d14b            bne.n   8006eba <__udivmoddi4+0xa6>
+ 8006e22:      428a            cmp     r2, r1
+ 8006e24:      4615            mov     r5, r2
+ 8006e26:      d967            bls.n   8006ef8 <__udivmoddi4+0xe4>
+ 8006e28:      fab2 f282       clz     r2, r2
+ 8006e2c:      b14a            cbz     r2, 8006e42 <__udivmoddi4+0x2e>
+ 8006e2e:      f1c2 0720       rsb     r7, r2, #32
+ 8006e32:      fa01 f302       lsl.w   r3, r1, r2
+ 8006e36:      fa20 f707       lsr.w   r7, r0, r7
+ 8006e3a:      4095            lsls    r5, r2
+ 8006e3c:      ea47 0803       orr.w   r8, r7, r3
+ 8006e40:      4094            lsls    r4, r2
+ 8006e42:      ea4f 4e15       mov.w   lr, r5, lsr #16
+ 8006e46:      0c23            lsrs    r3, r4, #16
+ 8006e48:      fbb8 f7fe       udiv    r7, r8, lr
+ 8006e4c:      fa1f fc85       uxth.w  ip, r5
+ 8006e50:      fb0e 8817       mls     r8, lr, r7, r8
+ 8006e54:      ea43 4308       orr.w   r3, r3, r8, lsl #16
+ 8006e58:      fb07 f10c       mul.w   r1, r7, ip
+ 8006e5c:      4299            cmp     r1, r3
+ 8006e5e:      d909            bls.n   8006e74 <__udivmoddi4+0x60>
+ 8006e60:      18eb            adds    r3, r5, r3
+ 8006e62:      f107 30ff       add.w   r0, r7, #4294967295     ; 0xffffffff
+ 8006e66:      f080 811b       bcs.w   80070a0 <__udivmoddi4+0x28c>
+ 8006e6a:      4299            cmp     r1, r3
+ 8006e6c:      f240 8118       bls.w   80070a0 <__udivmoddi4+0x28c>
+ 8006e70:      3f02            subs    r7, #2
+ 8006e72:      442b            add     r3, r5
+ 8006e74:      1a5b            subs    r3, r3, r1
+ 8006e76:      b2a4            uxth    r4, r4
+ 8006e78:      fbb3 f0fe       udiv    r0, r3, lr
+ 8006e7c:      fb0e 3310       mls     r3, lr, r0, r3
+ 8006e80:      ea44 4403       orr.w   r4, r4, r3, lsl #16
+ 8006e84:      fb00 fc0c       mul.w   ip, r0, ip
+ 8006e88:      45a4            cmp     ip, r4
+ 8006e8a:      d909            bls.n   8006ea0 <__udivmoddi4+0x8c>
+ 8006e8c:      192c            adds    r4, r5, r4
+ 8006e8e:      f100 33ff       add.w   r3, r0, #4294967295     ; 0xffffffff
+ 8006e92:      f080 8107       bcs.w   80070a4 <__udivmoddi4+0x290>
+ 8006e96:      45a4            cmp     ip, r4
+ 8006e98:      f240 8104       bls.w   80070a4 <__udivmoddi4+0x290>
+ 8006e9c:      3802            subs    r0, #2
+ 8006e9e:      442c            add     r4, r5
+ 8006ea0:      ea40 4007       orr.w   r0, r0, r7, lsl #16
+ 8006ea4:      eba4 040c       sub.w   r4, r4, ip
+ 8006ea8:      2700            movs    r7, #0
+ 8006eaa:      b11e            cbz     r6, 8006eb4 <__udivmoddi4+0xa0>
+ 8006eac:      40d4            lsrs    r4, r2
+ 8006eae:      2300            movs    r3, #0
+ 8006eb0:      e9c6 4300       strd    r4, r3, [r6]
+ 8006eb4:      4639            mov     r1, r7
+ 8006eb6:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8006eba:      428b            cmp     r3, r1
+ 8006ebc:      d909            bls.n   8006ed2 <__udivmoddi4+0xbe>
+ 8006ebe:      2e00            cmp     r6, #0
+ 8006ec0:      f000 80eb       beq.w   800709a <__udivmoddi4+0x286>
+ 8006ec4:      2700            movs    r7, #0
+ 8006ec6:      e9c6 0100       strd    r0, r1, [r6]
+ 8006eca:      4638            mov     r0, r7
+ 8006ecc:      4639            mov     r1, r7
+ 8006ece:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8006ed2:      fab3 f783       clz     r7, r3
+ 8006ed6:      2f00            cmp     r7, #0
+ 8006ed8:      d147            bne.n   8006f6a <__udivmoddi4+0x156>
+ 8006eda:      428b            cmp     r3, r1
+ 8006edc:      d302            bcc.n   8006ee4 <__udivmoddi4+0xd0>
+ 8006ede:      4282            cmp     r2, r0
+ 8006ee0:      f200 80fa       bhi.w   80070d8 <__udivmoddi4+0x2c4>
+ 8006ee4:      1a84            subs    r4, r0, r2
+ 8006ee6:      eb61 0303       sbc.w   r3, r1, r3
+ 8006eea:      2001            movs    r0, #1
+ 8006eec:      4698            mov     r8, r3
+ 8006eee:      2e00            cmp     r6, #0
+ 8006ef0:      d0e0            beq.n   8006eb4 <__udivmoddi4+0xa0>
+ 8006ef2:      e9c6 4800       strd    r4, r8, [r6]
+ 8006ef6:      e7dd            b.n     8006eb4 <__udivmoddi4+0xa0>
+ 8006ef8:      b902            cbnz    r2, 8006efc <__udivmoddi4+0xe8>
+ 8006efa:      deff            udf     #255    ; 0xff
+ 8006efc:      fab2 f282       clz     r2, r2
+ 8006f00:      2a00            cmp     r2, #0
+ 8006f02:      f040 808f       bne.w   8007024 <__udivmoddi4+0x210>
+ 8006f06:      1b49            subs    r1, r1, r5
+ 8006f08:      ea4f 4e15       mov.w   lr, r5, lsr #16
+ 8006f0c:      fa1f f885       uxth.w  r8, r5
+ 8006f10:      2701            movs    r7, #1
+ 8006f12:      fbb1 fcfe       udiv    ip, r1, lr
+ 8006f16:      0c23            lsrs    r3, r4, #16
+ 8006f18:      fb0e 111c       mls     r1, lr, ip, r1
+ 8006f1c:      ea43 4301       orr.w   r3, r3, r1, lsl #16
+ 8006f20:      fb08 f10c       mul.w   r1, r8, ip
+ 8006f24:      4299            cmp     r1, r3
+ 8006f26:      d907            bls.n   8006f38 <__udivmoddi4+0x124>
+ 8006f28:      18eb            adds    r3, r5, r3
+ 8006f2a:      f10c 30ff       add.w   r0, ip, #4294967295     ; 0xffffffff
+ 8006f2e:      d202            bcs.n   8006f36 <__udivmoddi4+0x122>
+ 8006f30:      4299            cmp     r1, r3
+ 8006f32:      f200 80cd       bhi.w   80070d0 <__udivmoddi4+0x2bc>
+ 8006f36:      4684            mov     ip, r0
+ 8006f38:      1a59            subs    r1, r3, r1
+ 8006f3a:      b2a3            uxth    r3, r4
+ 8006f3c:      fbb1 f0fe       udiv    r0, r1, lr
+ 8006f40:      fb0e 1410       mls     r4, lr, r0, r1
+ 8006f44:      ea43 4404       orr.w   r4, r3, r4, lsl #16
+ 8006f48:      fb08 f800       mul.w   r8, r8, r0
+ 8006f4c:      45a0            cmp     r8, r4
+ 8006f4e:      d907            bls.n   8006f60 <__udivmoddi4+0x14c>
+ 8006f50:      192c            adds    r4, r5, r4
+ 8006f52:      f100 33ff       add.w   r3, r0, #4294967295     ; 0xffffffff
+ 8006f56:      d202            bcs.n   8006f5e <__udivmoddi4+0x14a>
+ 8006f58:      45a0            cmp     r8, r4
+ 8006f5a:      f200 80b6       bhi.w   80070ca <__udivmoddi4+0x2b6>
+ 8006f5e:      4618            mov     r0, r3
+ 8006f60:      eba4 0408       sub.w   r4, r4, r8
+ 8006f64:      ea40 400c       orr.w   r0, r0, ip, lsl #16
+ 8006f68:      e79f            b.n     8006eaa <__udivmoddi4+0x96>
+ 8006f6a:      f1c7 0c20       rsb     ip, r7, #32
+ 8006f6e:      40bb            lsls    r3, r7
+ 8006f70:      fa22 fe0c       lsr.w   lr, r2, ip
+ 8006f74:      ea4e 0e03       orr.w   lr, lr, r3
+ 8006f78:      fa01 f407       lsl.w   r4, r1, r7
+ 8006f7c:      fa20 f50c       lsr.w   r5, r0, ip
+ 8006f80:      fa21 f30c       lsr.w   r3, r1, ip
+ 8006f84:      ea4f 481e       mov.w   r8, lr, lsr #16
+ 8006f88:      4325            orrs    r5, r4
+ 8006f8a:      fbb3 f9f8       udiv    r9, r3, r8
+ 8006f8e:      0c2c            lsrs    r4, r5, #16
+ 8006f90:      fb08 3319       mls     r3, r8, r9, r3
+ 8006f94:      fa1f fa8e       uxth.w  sl, lr
+ 8006f98:      ea44 4303       orr.w   r3, r4, r3, lsl #16
+ 8006f9c:      fb09 f40a       mul.w   r4, r9, sl
+ 8006fa0:      429c            cmp     r4, r3
+ 8006fa2:      fa02 f207       lsl.w   r2, r2, r7
+ 8006fa6:      fa00 f107       lsl.w   r1, r0, r7
+ 8006faa:      d90b            bls.n   8006fc4 <__udivmoddi4+0x1b0>
+ 8006fac:      eb1e 0303       adds.w  r3, lr, r3
+ 8006fb0:      f109 30ff       add.w   r0, r9, #4294967295     ; 0xffffffff
+ 8006fb4:      f080 8087       bcs.w   80070c6 <__udivmoddi4+0x2b2>
+ 8006fb8:      429c            cmp     r4, r3
+ 8006fba:      f240 8084       bls.w   80070c6 <__udivmoddi4+0x2b2>
+ 8006fbe:      f1a9 0902       sub.w   r9, r9, #2
+ 8006fc2:      4473            add     r3, lr
+ 8006fc4:      1b1b            subs    r3, r3, r4
+ 8006fc6:      b2ad            uxth    r5, r5
+ 8006fc8:      fbb3 f0f8       udiv    r0, r3, r8
+ 8006fcc:      fb08 3310       mls     r3, r8, r0, r3
+ 8006fd0:      ea45 4403       orr.w   r4, r5, r3, lsl #16
+ 8006fd4:      fb00 fa0a       mul.w   sl, r0, sl
+ 8006fd8:      45a2            cmp     sl, r4
+ 8006fda:      d908            bls.n   8006fee <__udivmoddi4+0x1da>
+ 8006fdc:      eb1e 0404       adds.w  r4, lr, r4
+ 8006fe0:      f100 33ff       add.w   r3, r0, #4294967295     ; 0xffffffff
+ 8006fe4:      d26b            bcs.n   80070be <__udivmoddi4+0x2aa>
+ 8006fe6:      45a2            cmp     sl, r4
+ 8006fe8:      d969            bls.n   80070be <__udivmoddi4+0x2aa>
+ 8006fea:      3802            subs    r0, #2
+ 8006fec:      4474            add     r4, lr
+ 8006fee:      ea40 4009       orr.w   r0, r0, r9, lsl #16
+ 8006ff2:      fba0 8902       umull   r8, r9, r0, r2
+ 8006ff6:      eba4 040a       sub.w   r4, r4, sl
+ 8006ffa:      454c            cmp     r4, r9
+ 8006ffc:      46c2            mov     sl, r8
+ 8006ffe:      464b            mov     r3, r9
+ 8007000:      d354            bcc.n   80070ac <__udivmoddi4+0x298>
+ 8007002:      d051            beq.n   80070a8 <__udivmoddi4+0x294>
+ 8007004:      2e00            cmp     r6, #0
+ 8007006:      d069            beq.n   80070dc <__udivmoddi4+0x2c8>
+ 8007008:      ebb1 050a       subs.w  r5, r1, sl
+ 800700c:      eb64 0403       sbc.w   r4, r4, r3
+ 8007010:      fa04 fc0c       lsl.w   ip, r4, ip
+ 8007014:      40fd            lsrs    r5, r7
+ 8007016:      40fc            lsrs    r4, r7
+ 8007018:      ea4c 0505       orr.w   r5, ip, r5
+ 800701c:      e9c6 5400       strd    r5, r4, [r6]
+ 8007020:      2700            movs    r7, #0
+ 8007022:      e747            b.n     8006eb4 <__udivmoddi4+0xa0>
+ 8007024:      f1c2 0320       rsb     r3, r2, #32
+ 8007028:      fa20 f703       lsr.w   r7, r0, r3
+ 800702c:      4095            lsls    r5, r2
+ 800702e:      fa01 f002       lsl.w   r0, r1, r2
+ 8007032:      fa21 f303       lsr.w   r3, r1, r3
+ 8007036:      ea4f 4e15       mov.w   lr, r5, lsr #16
+ 800703a:      4338            orrs    r0, r7
+ 800703c:      0c01            lsrs    r1, r0, #16
+ 800703e:      fbb3 f7fe       udiv    r7, r3, lr
+ 8007042:      fa1f f885       uxth.w  r8, r5
+ 8007046:      fb0e 3317       mls     r3, lr, r7, r3
+ 800704a:      ea41 4103       orr.w   r1, r1, r3, lsl #16
+ 800704e:      fb07 f308       mul.w   r3, r7, r8
+ 8007052:      428b            cmp     r3, r1
+ 8007054:      fa04 f402       lsl.w   r4, r4, r2
+ 8007058:      d907            bls.n   800706a <__udivmoddi4+0x256>
+ 800705a:      1869            adds    r1, r5, r1
+ 800705c:      f107 3cff       add.w   ip, r7, #4294967295     ; 0xffffffff
+ 8007060:      d22f            bcs.n   80070c2 <__udivmoddi4+0x2ae>
+ 8007062:      428b            cmp     r3, r1
+ 8007064:      d92d            bls.n   80070c2 <__udivmoddi4+0x2ae>
+ 8007066:      3f02            subs    r7, #2
+ 8007068:      4429            add     r1, r5
+ 800706a:      1acb            subs    r3, r1, r3
+ 800706c:      b281            uxth    r1, r0
+ 800706e:      fbb3 f0fe       udiv    r0, r3, lr
+ 8007072:      fb0e 3310       mls     r3, lr, r0, r3
+ 8007076:      ea41 4103       orr.w   r1, r1, r3, lsl #16
+ 800707a:      fb00 f308       mul.w   r3, r0, r8
+ 800707e:      428b            cmp     r3, r1
+ 8007080:      d907            bls.n   8007092 <__udivmoddi4+0x27e>
+ 8007082:      1869            adds    r1, r5, r1
+ 8007084:      f100 3cff       add.w   ip, r0, #4294967295     ; 0xffffffff
+ 8007088:      d217            bcs.n   80070ba <__udivmoddi4+0x2a6>
+ 800708a:      428b            cmp     r3, r1
+ 800708c:      d915            bls.n   80070ba <__udivmoddi4+0x2a6>
+ 800708e:      3802            subs    r0, #2
+ 8007090:      4429            add     r1, r5
+ 8007092:      1ac9            subs    r1, r1, r3
+ 8007094:      ea40 4707       orr.w   r7, r0, r7, lsl #16
+ 8007098:      e73b            b.n     8006f12 <__udivmoddi4+0xfe>
+ 800709a:      4637            mov     r7, r6
+ 800709c:      4630            mov     r0, r6
+ 800709e:      e709            b.n     8006eb4 <__udivmoddi4+0xa0>
+ 80070a0:      4607            mov     r7, r0
+ 80070a2:      e6e7            b.n     8006e74 <__udivmoddi4+0x60>
+ 80070a4:      4618            mov     r0, r3
+ 80070a6:      e6fb            b.n     8006ea0 <__udivmoddi4+0x8c>
+ 80070a8:      4541            cmp     r1, r8
+ 80070aa:      d2ab            bcs.n   8007004 <__udivmoddi4+0x1f0>
+ 80070ac:      ebb8 0a02       subs.w  sl, r8, r2
+ 80070b0:      eb69 020e       sbc.w   r2, r9, lr
+ 80070b4:      3801            subs    r0, #1
+ 80070b6:      4613            mov     r3, r2
+ 80070b8:      e7a4            b.n     8007004 <__udivmoddi4+0x1f0>
+ 80070ba:      4660            mov     r0, ip
+ 80070bc:      e7e9            b.n     8007092 <__udivmoddi4+0x27e>
+ 80070be:      4618            mov     r0, r3
+ 80070c0:      e795            b.n     8006fee <__udivmoddi4+0x1da>
+ 80070c2:      4667            mov     r7, ip
+ 80070c4:      e7d1            b.n     800706a <__udivmoddi4+0x256>
+ 80070c6:      4681            mov     r9, r0
+ 80070c8:      e77c            b.n     8006fc4 <__udivmoddi4+0x1b0>
+ 80070ca:      3802            subs    r0, #2
+ 80070cc:      442c            add     r4, r5
+ 80070ce:      e747            b.n     8006f60 <__udivmoddi4+0x14c>
+ 80070d0:      f1ac 0c02       sub.w   ip, ip, #2
+ 80070d4:      442b            add     r3, r5
+ 80070d6:      e72f            b.n     8006f38 <__udivmoddi4+0x124>
+ 80070d8:      4638            mov     r0, r7
+ 80070da:      e708            b.n     8006eee <__udivmoddi4+0xda>
+ 80070dc:      4637            mov     r7, r6
+ 80070de:      e6e9            b.n     8006eb4 <__udivmoddi4+0xa0>
+
+080070e0 <selfrel_offset31>:
+ 80070e0:      6803            ldr     r3, [r0, #0]
+ 80070e2:      005a            lsls    r2, r3, #1
+ 80070e4:      bf4c            ite     mi
+ 80070e6:      f043 4300       orrmi.w r3, r3, #2147483648     ; 0x80000000
+ 80070ea:      f023 4300       bicpl.w r3, r3, #2147483648     ; 0x80000000
+ 80070ee:      4418            add     r0, r3
+ 80070f0:      4770            bx      lr
+ 80070f2:      bf00            nop
+
+080070f4 <search_EIT_table>:
+ 80070f4:      b361            cbz     r1, 8007150 <search_EIT_table+0x5c>
+ 80070f6:      e92d 4ff8       stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 80070fa:      f101 3aff       add.w   sl, r1, #4294967295     ; 0xffffffff
+ 80070fe:      4690            mov     r8, r2
+ 8007100:      4606            mov     r6, r0
+ 8007102:      46d1            mov     r9, sl
+ 8007104:      2700            movs    r7, #0
+ 8007106:      eb07 0409       add.w   r4, r7, r9
+ 800710a:      eb04 74d4       add.w   r4, r4, r4, lsr #31
+ 800710e:      1064            asrs    r4, r4, #1
+ 8007110:      00e5            lsls    r5, r4, #3
+ 8007112:      1971            adds    r1, r6, r5
+ 8007114:      4608            mov     r0, r1
+ 8007116:      f7ff ffe3       bl      80070e0 <selfrel_offset31>
+ 800711a:      45a2            cmp     sl, r4
+ 800711c:      4683            mov     fp, r0
+ 800711e:      f105 0008       add.w   r0, r5, #8
+ 8007122:      4430            add     r0, r6
+ 8007124:      d009            beq.n   800713a <search_EIT_table+0x46>
+ 8007126:      f7ff ffdb       bl      80070e0 <selfrel_offset31>
+ 800712a:      45c3            cmp     fp, r8
+ 800712c:      f100 30ff       add.w   r0, r0, #4294967295     ; 0xffffffff
+ 8007130:      d805            bhi.n   800713e <search_EIT_table+0x4a>
+ 8007132:      4540            cmp     r0, r8
+ 8007134:      d209            bcs.n   800714a <search_EIT_table+0x56>
+ 8007136:      1c67            adds    r7, r4, #1
+ 8007138:      e7e5            b.n     8007106 <search_EIT_table+0x12>
+ 800713a:      45c3            cmp     fp, r8
+ 800713c:      d905            bls.n   800714a <search_EIT_table+0x56>
+ 800713e:      42a7            cmp     r7, r4
+ 8007140:      d002            beq.n   8007148 <search_EIT_table+0x54>
+ 8007142:      f104 39ff       add.w   r9, r4, #4294967295     ; 0xffffffff
+ 8007146:      e7de            b.n     8007106 <search_EIT_table+0x12>
+ 8007148:      2100            movs    r1, #0
+ 800714a:      4608            mov     r0, r1
+ 800714c:      e8bd 8ff8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8007150:      4608            mov     r0, r1
+ 8007152:      4770            bx      lr
+
+08007154 <__gnu_unwind_get_pr_addr>:
+ 8007154:      2801            cmp     r0, #1
+ 8007156:      d007            beq.n   8007168 <__gnu_unwind_get_pr_addr+0x14>
+ 8007158:      2802            cmp     r0, #2
+ 800715a:      d007            beq.n   800716c <__gnu_unwind_get_pr_addr+0x18>
+ 800715c:      4b04            ldr     r3, [pc, #16]   ; (8007170 <__gnu_unwind_get_pr_addr+0x1c>)
+ 800715e:      2800            cmp     r0, #0
+ 8007160:      bf0c            ite     eq
+ 8007162:      4618            moveq   r0, r3
+ 8007164:      2000            movne   r0, #0
+ 8007166:      4770            bx      lr
+ 8007168:      4802            ldr     r0, [pc, #8]    ; (8007174 <__gnu_unwind_get_pr_addr+0x20>)
+ 800716a:      4770            bx      lr
+ 800716c:      4802            ldr     r0, [pc, #8]    ; (8007178 <__gnu_unwind_get_pr_addr+0x24>)
+ 800716e:      4770            bx      lr
+ 8007170:      08007841        .word   0x08007841
+ 8007174:      08007845        .word   0x08007845
+ 8007178:      08007849        .word   0x08007849
+
+0800717c <get_eit_entry>:
+ 800717c:      b530            push    {r4, r5, lr}
+ 800717e:      4b25            ldr     r3, [pc, #148]  ; (8007214 <get_eit_entry+0x98>)
+ 8007180:      b083            sub     sp, #12
+ 8007182:      4604            mov     r4, r0
+ 8007184:      1e8d            subs    r5, r1, #2
+ 8007186:      b34b            cbz     r3, 80071dc <get_eit_entry+0x60>
+ 8007188:      a901            add     r1, sp, #4
+ 800718a:      4628            mov     r0, r5
+ 800718c:      f3af 8000       nop.w
+ 8007190:      b1f0            cbz     r0, 80071d0 <get_eit_entry+0x54>
+ 8007192:      9901            ldr     r1, [sp, #4]
+ 8007194:      462a            mov     r2, r5
+ 8007196:      f7ff ffad       bl      80070f4 <search_EIT_table>
+ 800719a:      4601            mov     r1, r0
+ 800719c:      b1c0            cbz     r0, 80071d0 <get_eit_entry+0x54>
+ 800719e:      f7ff ff9f       bl      80070e0 <selfrel_offset31>
+ 80071a2:      684b            ldr     r3, [r1, #4]
+ 80071a4:      64a0            str     r0, [r4, #72]   ; 0x48
+ 80071a6:      2b01            cmp     r3, #1
+ 80071a8:      d02e            beq.n   8007208 <get_eit_entry+0x8c>
+ 80071aa:      2b00            cmp     r3, #0
+ 80071ac:      f101 0004       add.w   r0, r1, #4
+ 80071b0:      db26            blt.n   8007200 <get_eit_entry+0x84>
+ 80071b2:      f7ff ff95       bl      80070e0 <selfrel_offset31>
+ 80071b6:      2300            movs    r3, #0
+ 80071b8:      e9c4 0313       strd    r0, r3, [r4, #76]       ; 0x4c
+ 80071bc:      6803            ldr     r3, [r0, #0]
+ 80071be:      2b00            cmp     r3, #0
+ 80071c0:      db12            blt.n   80071e8 <get_eit_entry+0x6c>
+ 80071c2:      f7ff ff8d       bl      80070e0 <selfrel_offset31>
+ 80071c6:      2300            movs    r3, #0
+ 80071c8:      6120            str     r0, [r4, #16]
+ 80071ca:      4618            mov     r0, r3
+ 80071cc:      b003            add     sp, #12
+ 80071ce:      bd30            pop     {r4, r5, pc}
+ 80071d0:      2300            movs    r3, #0
+ 80071d2:      6123            str     r3, [r4, #16]
+ 80071d4:      2309            movs    r3, #9
+ 80071d6:      4618            mov     r0, r3
+ 80071d8:      b003            add     sp, #12
+ 80071da:      bd30            pop     {r4, r5, pc}
+ 80071dc:      490e            ldr     r1, [pc, #56]   ; (8007218 <get_eit_entry+0x9c>)
+ 80071de:      480f            ldr     r0, [pc, #60]   ; (800721c <get_eit_entry+0xa0>)
+ 80071e0:      1a09            subs    r1, r1, r0
+ 80071e2:      10c9            asrs    r1, r1, #3
+ 80071e4:      9101            str     r1, [sp, #4]
+ 80071e6:      e7d5            b.n     8007194 <get_eit_entry+0x18>
+ 80071e8:      f3c3 6003       ubfx    r0, r3, #24, #4
+ 80071ec:      f7ff ffb2       bl      8007154 <__gnu_unwind_get_pr_addr>
+ 80071f0:      2800            cmp     r0, #0
+ 80071f2:      bf14            ite     ne
+ 80071f4:      2300            movne   r3, #0
+ 80071f6:      2309            moveq   r3, #9
+ 80071f8:      6120            str     r0, [r4, #16]
+ 80071fa:      4618            mov     r0, r3
+ 80071fc:      b003            add     sp, #12
+ 80071fe:      bd30            pop     {r4, r5, pc}
+ 8007200:      2301            movs    r3, #1
+ 8007202:      e9c4 0313       strd    r0, r3, [r4, #76]       ; 0x4c
+ 8007206:      e7d9            b.n     80071bc <get_eit_entry+0x40>
+ 8007208:      2300            movs    r3, #0
+ 800720a:      6123            str     r3, [r4, #16]
+ 800720c:      2305            movs    r3, #5
+ 800720e:      4618            mov     r0, r3
+ 8007210:      b003            add     sp, #12
+ 8007212:      bd30            pop     {r4, r5, pc}
+ 8007214:      00000000        .word   0x00000000
+ 8007218:      08013328        .word   0x08013328
+ 800721c:      080131a0        .word   0x080131a0
+
+08007220 <restore_non_core_regs>:
+ 8007220:      6803            ldr     r3, [r0, #0]
+ 8007222:      07da            lsls    r2, r3, #31
+ 8007224:      b510            push    {r4, lr}
+ 8007226:      4604            mov     r4, r0
+ 8007228:      d406            bmi.n   8007238 <restore_non_core_regs+0x18>
+ 800722a:      079b            lsls    r3, r3, #30
+ 800722c:      f100 0048       add.w   r0, r0, #72     ; 0x48
+ 8007230:      d509            bpl.n   8007246 <restore_non_core_regs+0x26>
+ 8007232:      f000 fc5f       bl      8007af4 <__gnu_Unwind_Restore_VFP_D>
+ 8007236:      6823            ldr     r3, [r4, #0]
+ 8007238:      0759            lsls    r1, r3, #29
+ 800723a:      d509            bpl.n   8007250 <restore_non_core_regs+0x30>
+ 800723c:      071a            lsls    r2, r3, #28
+ 800723e:      d50e            bpl.n   800725e <restore_non_core_regs+0x3e>
+ 8007240:      06db            lsls    r3, r3, #27
+ 8007242:      d513            bpl.n   800726c <restore_non_core_regs+0x4c>
+ 8007244:      bd10            pop     {r4, pc}
+ 8007246:      f000 fc4d       bl      8007ae4 <__gnu_Unwind_Restore_VFP>
+ 800724a:      6823            ldr     r3, [r4, #0]
+ 800724c:      0759            lsls    r1, r3, #29
+ 800724e:      d4f5            bmi.n   800723c <restore_non_core_regs+0x1c>
+ 8007250:      f104 00d0       add.w   r0, r4, #208    ; 0xd0
+ 8007254:      f000 fc56       bl      8007b04 <__gnu_Unwind_Restore_VFP_D_16_to_31>
+ 8007258:      6823            ldr     r3, [r4, #0]
+ 800725a:      071a            lsls    r2, r3, #28
+ 800725c:      d4f0            bmi.n   8007240 <restore_non_core_regs+0x20>
+ 800725e:      f504 70a8       add.w   r0, r4, #336    ; 0x150
+ 8007262:      f000 fc57       bl      8007b14 <__gnu_Unwind_Restore_WMMXD>
+ 8007266:      6823            ldr     r3, [r4, #0]
+ 8007268:      06db            lsls    r3, r3, #27
+ 800726a:      d4eb            bmi.n   8007244 <restore_non_core_regs+0x24>
+ 800726c:      f504 70e8       add.w   r0, r4, #464    ; 0x1d0
+ 8007270:      e8bd 4010       ldmia.w sp!, {r4, lr}
+ 8007274:      f000 bc92       b.w     8007b9c <__gnu_Unwind_Restore_WMMXC>
+
+08007278 <_Unwind_decode_typeinfo_ptr.isra.0>:
+ 8007278:      6803            ldr     r3, [r0, #0]
+ 800727a:      b103            cbz     r3, 800727e <_Unwind_decode_typeinfo_ptr.isra.0+0x6>
+ 800727c:      4403            add     r3, r0
+ 800727e:      4618            mov     r0, r3
+ 8007280:      4770            bx      lr
+ 8007282:      bf00            nop
+
+08007284 <__gnu_unwind_24bit.isra.1>:
+ 8007284:      2009            movs    r0, #9
+ 8007286:      4770            bx      lr
+
+08007288 <_Unwind_DebugHook>:
+ 8007288:      4770            bx      lr
+ 800728a:      bf00            nop
+
+0800728c <unwind_phase2>:
+ 800728c:      b570            push    {r4, r5, r6, lr}
+ 800728e:      4604            mov     r4, r0
+ 8007290:      460d            mov     r5, r1
+ 8007292:      e008            b.n     80072a6 <unwind_phase2+0x1a>
+ 8007294:      6c2b            ldr     r3, [r5, #64]   ; 0x40
+ 8007296:      6163            str     r3, [r4, #20]
+ 8007298:      462a            mov     r2, r5
+ 800729a:      6923            ldr     r3, [r4, #16]
+ 800729c:      4621            mov     r1, r4
+ 800729e:      2001            movs    r0, #1
+ 80072a0:      4798            blx     r3
+ 80072a2:      2808            cmp     r0, #8
+ 80072a4:      d108            bne.n   80072b8 <unwind_phase2+0x2c>
+ 80072a6:      6c29            ldr     r1, [r5, #64]   ; 0x40
+ 80072a8:      4620            mov     r0, r4
+ 80072aa:      f7ff ff67       bl      800717c <get_eit_entry>
+ 80072ae:      4606            mov     r6, r0
+ 80072b0:      2800            cmp     r0, #0
+ 80072b2:      d0ef            beq.n   8007294 <unwind_phase2+0x8>
+ 80072b4:      f006 fbc0       bl      800da38 <abort>
+ 80072b8:      2807            cmp     r0, #7
+ 80072ba:      d1fb            bne.n   80072b4 <unwind_phase2+0x28>
+ 80072bc:      4630            mov     r0, r6
+ 80072be:      6c29            ldr     r1, [r5, #64]   ; 0x40
+ 80072c0:      f7ff ffe2       bl      8007288 <_Unwind_DebugHook>
+ 80072c4:      1d28            adds    r0, r5, #4
+ 80072c6:      f000 fc01       bl      8007acc <__restore_core_regs>
+ 80072ca:      bf00            nop
+
+080072cc <unwind_phase2_forced>:
+ 80072cc:      e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80072d0:      1d0c            adds    r4, r1, #4
+ 80072d2:      4605            mov     r5, r0
+ 80072d4:      4617            mov     r7, r2
+ 80072d6:      cc0f            ldmia   r4!, {r0, r1, r2, r3}
+ 80072d8:      f5ad 7d72       sub.w   sp, sp, #968    ; 0x3c8
+ 80072dc:      ae03            add     r6, sp, #12
+ 80072de:      c60f            stmia   r6!, {r0, r1, r2, r3}
+ 80072e0:      cc0f            ldmia   r4!, {r0, r1, r2, r3}
+ 80072e2:      c60f            stmia   r6!, {r0, r1, r2, r3}
+ 80072e4:      cc0f            ldmia   r4!, {r0, r1, r2, r3}
+ 80072e6:      c60f            stmia   r6!, {r0, r1, r2, r3}
+ 80072e8:      e894 000f       ldmia.w r4, {r0, r1, r2, r3}
+ 80072ec:      ac02            add     r4, sp, #8
+ 80072ee:      f8d5 800c       ldr.w   r8, [r5, #12]
+ 80072f2:      f8d5 9018       ldr.w   r9, [r5, #24]
+ 80072f6:      e886 000f       stmia.w r6, {r0, r1, r2, r3}
+ 80072fa:      2300            movs    r3, #0
+ 80072fc:      6023            str     r3, [r4, #0]
+ 80072fe:      e021            b.n     8007344 <unwind_phase2_forced+0x78>
+ 8007300:      6c23            ldr     r3, [r4, #64]   ; 0x40
+ 8007302:      616b            str     r3, [r5, #20]
+ 8007304:      f44f 72f0       mov.w   r2, #480        ; 0x1e0
+ 8007308:      4621            mov     r1, r4
+ 800730a:      a87a            add     r0, sp, #488    ; 0x1e8
+ 800730c:      f007 f833       bl      800e376 <memcpy>
+ 8007310:      692b            ldr     r3, [r5, #16]
+ 8007312:      aa7a            add     r2, sp, #488    ; 0x1e8
+ 8007314:      4629            mov     r1, r5
+ 8007316:      4630            mov     r0, r6
+ 8007318:      4798            blx     r3
+ 800731a:      9b88            ldr     r3, [sp, #544]  ; 0x220
+ 800731c:      e9cd 4900       strd    r4, r9, [sp]
+ 8007320:      4682            mov     sl, r0
+ 8007322:      6463            str     r3, [r4, #68]   ; 0x44
+ 8007324:      4631            mov     r1, r6
+ 8007326:      462b            mov     r3, r5
+ 8007328:      462a            mov     r2, r5
+ 800732a:      2001            movs    r0, #1
+ 800732c:      47c0            blx     r8
+ 800732e:      4607            mov     r7, r0
+ 8007330:      b9f8            cbnz    r0, 8007372 <unwind_phase2_forced+0xa6>
+ 8007332:      f44f 72f0       mov.w   r2, #480        ; 0x1e0
+ 8007336:      a97a            add     r1, sp, #488    ; 0x1e8
+ 8007338:      4620            mov     r0, r4
+ 800733a:      f007 f81c       bl      800e376 <memcpy>
+ 800733e:      f1ba 0f08       cmp.w   sl, #8
+ 8007342:      d11c            bne.n   800737e <unwind_phase2_forced+0xb2>
+ 8007344:      6c21            ldr     r1, [r4, #64]   ; 0x40
+ 8007346:      4628            mov     r0, r5
+ 8007348:      f7ff ff18       bl      800717c <get_eit_entry>
+ 800734c:      2f00            cmp     r7, #0
+ 800734e:      bf08            it      eq
+ 8007350:      2609            moveq   r6, #9
+ 8007352:      4607            mov     r7, r0
+ 8007354:      bf18            it      ne
+ 8007356:      260a            movne   r6, #10
+ 8007358:      2800            cmp     r0, #0
+ 800735a:      d0d1            beq.n   8007300 <unwind_phase2_forced+0x34>
+ 800735c:      6ba3            ldr     r3, [r4, #56]   ; 0x38
+ 800735e:      f046 0110       orr.w   r1, r6, #16
+ 8007362:      e9cd 4900       strd    r4, r9, [sp]
+ 8007366:      462a            mov     r2, r5
+ 8007368:      6463            str     r3, [r4, #68]   ; 0x44
+ 800736a:      2001            movs    r0, #1
+ 800736c:      462b            mov     r3, r5
+ 800736e:      47c0            blx     r8
+ 8007370:      b100            cbz     r0, 8007374 <unwind_phase2_forced+0xa8>
+ 8007372:      2709            movs    r7, #9
+ 8007374:      4638            mov     r0, r7
+ 8007376:      f50d 7d72       add.w   sp, sp, #968    ; 0x3c8
+ 800737a:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 800737e:      f1ba 0f07       cmp.w   sl, #7
+ 8007382:      d1f6            bne.n   8007372 <unwind_phase2_forced+0xa6>
+ 8007384:      4638            mov     r0, r7
+ 8007386:      6c21            ldr     r1, [r4, #64]   ; 0x40
+ 8007388:      f7ff ff7e       bl      8007288 <_Unwind_DebugHook>
+ 800738c:      a803            add     r0, sp, #12
+ 800738e:      f000 fb9d       bl      8007acc <__restore_core_regs>
+ 8007392:      bf00            nop
+
+08007394 <_Unwind_GetCFA>:
+ 8007394:      6c40            ldr     r0, [r0, #68]   ; 0x44
+ 8007396:      4770            bx      lr
+
+08007398 <__gnu_Unwind_RaiseException>:
+ 8007398:      b5f0            push    {r4, r5, r6, r7, lr}
+ 800739a:      6bcb            ldr     r3, [r1, #60]   ; 0x3c
+ 800739c:      640b            str     r3, [r1, #64]   ; 0x40
+ 800739e:      1d0d            adds    r5, r1, #4
+ 80073a0:      460f            mov     r7, r1
+ 80073a2:      4606            mov     r6, r0
+ 80073a4:      cd0f            ldmia   r5!, {r0, r1, r2, r3}
+ 80073a6:      b0f9            sub     sp, #484        ; 0x1e4
+ 80073a8:      ac01            add     r4, sp, #4
+ 80073aa:      c40f            stmia   r4!, {r0, r1, r2, r3}
+ 80073ac:      cd0f            ldmia   r5!, {r0, r1, r2, r3}
+ 80073ae:      c40f            stmia   r4!, {r0, r1, r2, r3}
+ 80073b0:      cd0f            ldmia   r5!, {r0, r1, r2, r3}
+ 80073b2:      c40f            stmia   r4!, {r0, r1, r2, r3}
+ 80073b4:      e895 000f       ldmia.w r5, {r0, r1, r2, r3}
+ 80073b8:      f04f 35ff       mov.w   r5, #4294967295 ; 0xffffffff
+ 80073bc:      e884 000f       stmia.w r4, {r0, r1, r2, r3}
+ 80073c0:      9500            str     r5, [sp, #0]
+ 80073c2:      e006            b.n     80073d2 <__gnu_Unwind_RaiseException+0x3a>
+ 80073c4:      6933            ldr     r3, [r6, #16]
+ 80073c6:      466a            mov     r2, sp
+ 80073c8:      4631            mov     r1, r6
+ 80073ca:      4798            blx     r3
+ 80073cc:      2808            cmp     r0, #8
+ 80073ce:      4604            mov     r4, r0
+ 80073d0:      d108            bne.n   80073e4 <__gnu_Unwind_RaiseException+0x4c>
+ 80073d2:      9910            ldr     r1, [sp, #64]   ; 0x40
+ 80073d4:      4630            mov     r0, r6
+ 80073d6:      f7ff fed1       bl      800717c <get_eit_entry>
+ 80073da:      2800            cmp     r0, #0
+ 80073dc:      d0f2            beq.n   80073c4 <__gnu_Unwind_RaiseException+0x2c>
+ 80073de:      2009            movs    r0, #9
+ 80073e0:      b079            add     sp, #484        ; 0x1e4
+ 80073e2:      bdf0            pop     {r4, r5, r6, r7, pc}
+ 80073e4:      4668            mov     r0, sp
+ 80073e6:      f7ff ff1b       bl      8007220 <restore_non_core_regs>
+ 80073ea:      2c06            cmp     r4, #6
+ 80073ec:      d1f7            bne.n   80073de <__gnu_Unwind_RaiseException+0x46>
+ 80073ee:      4639            mov     r1, r7
+ 80073f0:      4630            mov     r0, r6
+ 80073f2:      f7ff ff4b       bl      800728c <unwind_phase2>
+ 80073f6:      bf00            nop
+
+080073f8 <__gnu_Unwind_ForcedUnwind>:
+ 80073f8:      b430            push    {r4, r5}
+ 80073fa:      6bdd            ldr     r5, [r3, #60]   ; 0x3c
+ 80073fc:      60c1            str     r1, [r0, #12]
+ 80073fe:      6182            str     r2, [r0, #24]
+ 8007400:      4619            mov     r1, r3
+ 8007402:      641d            str     r5, [r3, #64]   ; 0x40
+ 8007404:      2200            movs    r2, #0
+ 8007406:      bc30            pop     {r4, r5}
+ 8007408:      e760            b.n     80072cc <unwind_phase2_forced>
+ 800740a:      bf00            nop
+
+0800740c <__gnu_Unwind_Resume>:
+ 800740c:      b570            push    {r4, r5, r6, lr}
+ 800740e:      68c6            ldr     r6, [r0, #12]
+ 8007410:      6943            ldr     r3, [r0, #20]
+ 8007412:      640b            str     r3, [r1, #64]   ; 0x40
+ 8007414:      b9be            cbnz    r6, 8007446 <__gnu_Unwind_Resume+0x3a>
+ 8007416:      6903            ldr     r3, [r0, #16]
+ 8007418:      460a            mov     r2, r1
+ 800741a:      4604            mov     r4, r0
+ 800741c:      460d            mov     r5, r1
+ 800741e:      4601            mov     r1, r0
+ 8007420:      2002            movs    r0, #2
+ 8007422:      4798            blx     r3
+ 8007424:      2807            cmp     r0, #7
+ 8007426:      d007            beq.n   8007438 <__gnu_Unwind_Resume+0x2c>
+ 8007428:      2808            cmp     r0, #8
+ 800742a:      d103            bne.n   8007434 <__gnu_Unwind_Resume+0x28>
+ 800742c:      4629            mov     r1, r5
+ 800742e:      4620            mov     r0, r4
+ 8007430:      f7ff ff2c       bl      800728c <unwind_phase2>
+ 8007434:      f006 fb00       bl      800da38 <abort>
+ 8007438:      4630            mov     r0, r6
+ 800743a:      6c29            ldr     r1, [r5, #64]   ; 0x40
+ 800743c:      f7ff ff24       bl      8007288 <_Unwind_DebugHook>
+ 8007440:      1d28            adds    r0, r5, #4
+ 8007442:      f000 fb43       bl      8007acc <__restore_core_regs>
+ 8007446:      2201            movs    r2, #1
+ 8007448:      f7ff ff40       bl      80072cc <unwind_phase2_forced>
+ 800744c:      f006 faf4       bl      800da38 <abort>
+
+08007450 <__gnu_Unwind_Resume_or_Rethrow>:
+ 8007450:      68c2            ldr     r2, [r0, #12]
+ 8007452:      b11a            cbz     r2, 800745c <__gnu_Unwind_Resume_or_Rethrow+0xc>
+ 8007454:      6bca            ldr     r2, [r1, #60]   ; 0x3c
+ 8007456:      640a            str     r2, [r1, #64]   ; 0x40
+ 8007458:      2200            movs    r2, #0
+ 800745a:      e737            b.n     80072cc <unwind_phase2_forced>
+ 800745c:      e79c            b.n     8007398 <__gnu_Unwind_RaiseException>
+ 800745e:      bf00            nop
+
+08007460 <_Unwind_Complete>:
+ 8007460:      4770            bx      lr
+ 8007462:      bf00            nop
+
+08007464 <_Unwind_DeleteException>:
+ 8007464:      6883            ldr     r3, [r0, #8]
+ 8007466:      b113            cbz     r3, 800746e <_Unwind_DeleteException+0xa>
+ 8007468:      4601            mov     r1, r0
+ 800746a:      2001            movs    r0, #1
+ 800746c:      4718            bx      r3
+ 800746e:      4770            bx      lr
+
+08007470 <_Unwind_VRS_Get>:
+ 8007470:      2904            cmp     r1, #4
+ 8007472:      d807            bhi.n   8007484 <_Unwind_VRS_Get+0x14>
+ 8007474:      e8df f001       tbb     [pc, r1]
+ 8007478:      08060803        .word   0x08060803
+ 800747c:      08              .byte   0x08
+ 800747d:      00              .byte   0x00
+ 800747e:      b90b            cbnz    r3, 8007484 <_Unwind_VRS_Get+0x14>
+ 8007480:      2a0f            cmp     r2, #15
+ 8007482:      d903            bls.n   800748c <_Unwind_VRS_Get+0x1c>
+ 8007484:      2002            movs    r0, #2
+ 8007486:      4770            bx      lr
+ 8007488:      2001            movs    r0, #1
+ 800748a:      4770            bx      lr
+ 800748c:      eb00 0282       add.w   r2, r0, r2, lsl #2
+ 8007490:      4618            mov     r0, r3
+ 8007492:      6853            ldr     r3, [r2, #4]
+ 8007494:      9a00            ldr     r2, [sp, #0]
+ 8007496:      6013            str     r3, [r2, #0]
+ 8007498:      4770            bx      lr
+ 800749a:      bf00            nop
+
+0800749c <_Unwind_GetGR>:
+ 800749c:      b510            push    {r4, lr}
+ 800749e:      b084            sub     sp, #16
+ 80074a0:      2300            movs    r3, #0
+ 80074a2:      ac03            add     r4, sp, #12
+ 80074a4:      460a            mov     r2, r1
+ 80074a6:      9400            str     r4, [sp, #0]
+ 80074a8:      4619            mov     r1, r3
+ 80074aa:      f7ff ffe1       bl      8007470 <_Unwind_VRS_Get>
+ 80074ae:      9803            ldr     r0, [sp, #12]
+ 80074b0:      b004            add     sp, #16
+ 80074b2:      bd10            pop     {r4, pc}
+
+080074b4 <_Unwind_VRS_Set>:
+ 80074b4:      2904            cmp     r1, #4
+ 80074b6:      d807            bhi.n   80074c8 <_Unwind_VRS_Set+0x14>
+ 80074b8:      e8df f001       tbb     [pc, r1]
+ 80074bc:      08060803        .word   0x08060803
+ 80074c0:      08              .byte   0x08
+ 80074c1:      00              .byte   0x00
+ 80074c2:      b90b            cbnz    r3, 80074c8 <_Unwind_VRS_Set+0x14>
+ 80074c4:      2a0f            cmp     r2, #15
+ 80074c6:      d903            bls.n   80074d0 <_Unwind_VRS_Set+0x1c>
+ 80074c8:      2002            movs    r0, #2
+ 80074ca:      4770            bx      lr
+ 80074cc:      2001            movs    r0, #1
+ 80074ce:      4770            bx      lr
+ 80074d0:      eb00 0082       add.w   r0, r0, r2, lsl #2
+ 80074d4:      9a00            ldr     r2, [sp, #0]
+ 80074d6:      6812            ldr     r2, [r2, #0]
+ 80074d8:      6042            str     r2, [r0, #4]
+ 80074da:      4618            mov     r0, r3
+ 80074dc:      4770            bx      lr
+ 80074de:      bf00            nop
+
+080074e0 <_Unwind_SetGR>:
+ 80074e0:      b510            push    {r4, lr}
+ 80074e2:      b084            sub     sp, #16
+ 80074e4:      ac04            add     r4, sp, #16
+ 80074e6:      2300            movs    r3, #0
+ 80074e8:      f844 2d04       str.w   r2, [r4, #-4]!
+ 80074ec:      460a            mov     r2, r1
+ 80074ee:      9400            str     r4, [sp, #0]
+ 80074f0:      4619            mov     r1, r3
+ 80074f2:      f7ff ffdf       bl      80074b4 <_Unwind_VRS_Set>
+ 80074f6:      b004            add     sp, #16
+ 80074f8:      bd10            pop     {r4, pc}
+ 80074fa:      bf00            nop
+
+080074fc <__gnu_Unwind_Backtrace>:
+ 80074fc:      b5f0            push    {r4, r5, r6, r7, lr}
+ 80074fe:      6bd3            ldr     r3, [r2, #60]   ; 0x3c
+ 8007500:      6413            str     r3, [r2, #64]   ; 0x40
+ 8007502:      1d15            adds    r5, r2, #4
+ 8007504:      4607            mov     r7, r0
+ 8007506:      460e            mov     r6, r1
+ 8007508:      cd0f            ldmia   r5!, {r0, r1, r2, r3}
+ 800750a:      f5ad 7d0f       sub.w   sp, sp, #572    ; 0x23c
+ 800750e:      ac17            add     r4, sp, #92     ; 0x5c
+ 8007510:      c40f            stmia   r4!, {r0, r1, r2, r3}
+ 8007512:      cd0f            ldmia   r5!, {r0, r1, r2, r3}
+ 8007514:      c40f            stmia   r4!, {r0, r1, r2, r3}
+ 8007516:      cd0f            ldmia   r5!, {r0, r1, r2, r3}
+ 8007518:      c40f            stmia   r4!, {r0, r1, r2, r3}
+ 800751a:      e895 000f       ldmia.w r5, {r0, r1, r2, r3}
+ 800751e:      f04f 35ff       mov.w   r5, #4294967295 ; 0xffffffff
+ 8007522:      e884 000f       stmia.w r4, {r0, r1, r2, r3}
+ 8007526:      9516            str     r5, [sp, #88]   ; 0x58
+ 8007528:      e010            b.n     800754c <__gnu_Unwind_Backtrace+0x50>
+ 800752a:      a816            add     r0, sp, #88     ; 0x58
+ 800752c:      f7ff ffd8       bl      80074e0 <_Unwind_SetGR>
+ 8007530:      4631            mov     r1, r6
+ 8007532:      a816            add     r0, sp, #88     ; 0x58
+ 8007534:      47b8            blx     r7
+ 8007536:      aa16            add     r2, sp, #88     ; 0x58
+ 8007538:      4669            mov     r1, sp
+ 800753a:      b978            cbnz    r0, 800755c <__gnu_Unwind_Backtrace+0x60>
+ 800753c:      9b04            ldr     r3, [sp, #16]
+ 800753e:      2008            movs    r0, #8
+ 8007540:      4798            blx     r3
+ 8007542:      2805            cmp     r0, #5
+ 8007544:      4604            mov     r4, r0
+ 8007546:      d00a            beq.n   800755e <__gnu_Unwind_Backtrace+0x62>
+ 8007548:      2809            cmp     r0, #9
+ 800754a:      d007            beq.n   800755c <__gnu_Unwind_Backtrace+0x60>
+ 800754c:      9926            ldr     r1, [sp, #152]  ; 0x98
+ 800754e:      4668            mov     r0, sp
+ 8007550:      f7ff fe14       bl      800717c <get_eit_entry>
+ 8007554:      466a            mov     r2, sp
+ 8007556:      210c            movs    r1, #12
+ 8007558:      2800            cmp     r0, #0
+ 800755a:      d0e6            beq.n   800752a <__gnu_Unwind_Backtrace+0x2e>
+ 800755c:      2409            movs    r4, #9
+ 800755e:      a816            add     r0, sp, #88     ; 0x58
+ 8007560:      f7ff fe5e       bl      8007220 <restore_non_core_regs>
+ 8007564:      4620            mov     r0, r4
+ 8007566:      f50d 7d0f       add.w   sp, sp, #572    ; 0x23c
+ 800756a:      bdf0            pop     {r4, r5, r6, r7, pc}
+
+0800756c <__gnu_unwind_pr_common>:
+ 800756c:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 8007570:      460d            mov     r5, r1
+ 8007572:      6cc9            ldr     r1, [r1, #76]   ; 0x4c
+ 8007574:      b089            sub     sp, #36 ; 0x24
+ 8007576:      1d0c            adds    r4, r1, #4
+ 8007578:      4616            mov     r6, r2
+ 800757a:      f000 0b03       and.w   fp, r0, #3
+ 800757e:      680a            ldr     r2, [r1, #0]
+ 8007580:      9406            str     r4, [sp, #24]
+ 8007582:      461f            mov     r7, r3
+ 8007584:      2b00            cmp     r3, #0
+ 8007586:      d068            beq.n   800765a <__gnu_unwind_pr_common+0xee>
+ 8007588:      0c13            lsrs    r3, r2, #16
+ 800758a:      b2d9            uxtb    r1, r3
+ 800758c:      0412            lsls    r2, r2, #16
+ 800758e:      f88d 301d       strb.w  r3, [sp, #29]
+ 8007592:      2302            movs    r3, #2
+ 8007594:      eb04 0481       add.w   r4, r4, r1, lsl #2
+ 8007598:      9205            str     r2, [sp, #20]
+ 800759a:      f88d 301c       strb.w  r3, [sp, #28]
+ 800759e:      6d2b            ldr     r3, [r5, #80]   ; 0x50
+ 80075a0:      f1bb 0f02       cmp.w   fp, #2
+ 80075a4:      bf08            it      eq
+ 80075a6:      6bac            ldreq   r4, [r5, #56]   ; 0x38
+ 80075a8:      f013 0301       ands.w  r3, r3, #1
+ 80075ac:      d146            bne.n   800763c <__gnu_unwind_pr_common+0xd0>
+ 80075ae:      9301            str     r3, [sp, #4]
+ 80075b0:      f000 0308       and.w   r3, r0, #8
+ 80075b4:      9300            str     r3, [sp, #0]
+ 80075b6:      f8d4 9000       ldr.w   r9, [r4]
+ 80075ba:      f1b9 0f00       cmp.w   r9, #0
+ 80075be:      f000 80f3       beq.w   80077a8 <__gnu_unwind_pr_common+0x23c>
+ 80075c2:      2f02            cmp     r7, #2
+ 80075c4:      d045            beq.n   8007652 <__gnu_unwind_pr_common+0xe6>
+ 80075c6:      f8b4 9000       ldrh.w  r9, [r4]
+ 80075ca:      f8b4 8002       ldrh.w  r8, [r4, #2]
+ 80075ce:      3404            adds    r4, #4
+ 80075d0:      6cab            ldr     r3, [r5, #72]   ; 0x48
+ 80075d2:      f028 0a01       bic.w   sl, r8, #1
+ 80075d6:      210f            movs    r1, #15
+ 80075d8:      4630            mov     r0, r6
+ 80075da:      449a            add     sl, r3
+ 80075dc:      f7ff ff5e       bl      800749c <_Unwind_GetGR>
+ 80075e0:      4582            cmp     sl, r0
+ 80075e2:      d834            bhi.n   800764e <__gnu_unwind_pr_common+0xe2>
+ 80075e4:      f029 0301       bic.w   r3, r9, #1
+ 80075e8:      4453            add     r3, sl
+ 80075ea:      4283            cmp     r3, r0
+ 80075ec:      bf94            ite     ls
+ 80075ee:      2000            movls   r0, #0
+ 80075f0:      2001            movhi   r0, #1
+ 80075f2:      ea4f 0848       mov.w   r8, r8, lsl #1
+ 80075f6:      f008 0802       and.w   r8, r8, #2
+ 80075fa:      f009 0901       and.w   r9, r9, #1
+ 80075fe:      ea48 0809       orr.w   r8, r8, r9
+ 8007602:      f1b8 0f01       cmp.w   r8, #1
+ 8007606:      d03a            beq.n   800767e <__gnu_unwind_pr_common+0x112>
+ 8007608:      d331            bcc.n   800766e <__gnu_unwind_pr_common+0x102>
+ 800760a:      f1b8 0f02       cmp.w   r8, #2
+ 800760e:      d11a            bne.n   8007646 <__gnu_unwind_pr_common+0xda>
+ 8007610:      6823            ldr     r3, [r4, #0]
+ 8007612:      f023 4a00       bic.w   sl, r3, #2147483648     ; 0x80000000
+ 8007616:      f1bb 0f00       cmp.w   fp, #0
+ 800761a:      d166            bne.n   80076ea <__gnu_unwind_pr_common+0x17e>
+ 800761c:      b130            cbz     r0, 800762c <__gnu_unwind_pr_common+0xc0>
+ 800761e:      9a00            ldr     r2, [sp, #0]
+ 8007620:      2a00            cmp     r2, #0
+ 8007622:      d06c            beq.n   80076fe <__gnu_unwind_pr_common+0x192>
+ 8007624:      f1ba 0f00       cmp.w   sl, #0
+ 8007628:      f000 8090       beq.w   800774c <__gnu_unwind_pr_common+0x1e0>
+ 800762c:      2b00            cmp     r3, #0
+ 800762e:      da00            bge.n   8007632 <__gnu_unwind_pr_common+0xc6>
+ 8007630:      3404            adds    r4, #4
+ 8007632:      f10a 0301       add.w   r3, sl, #1
+ 8007636:      eb04 0483       add.w   r4, r4, r3, lsl #2
+ 800763a:      e7bc            b.n     80075b6 <__gnu_unwind_pr_common+0x4a>
+ 800763c:      4630            mov     r0, r6
+ 800763e:      a905            add     r1, sp, #20
+ 8007640:      f000 fb46       bl      8007cd0 <__gnu_unwind_execute>
+ 8007644:      b178            cbz     r0, 8007666 <__gnu_unwind_pr_common+0xfa>
+ 8007646:      2009            movs    r0, #9
+ 8007648:      b009            add     sp, #36 ; 0x24
+ 800764a:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800764e:      2000            movs    r0, #0
+ 8007650:      e7cf            b.n     80075f2 <__gnu_unwind_pr_common+0x86>
+ 8007652:      f8d4 8004       ldr.w   r8, [r4, #4]
+ 8007656:      3408            adds    r4, #8
+ 8007658:      e7ba            b.n     80075d0 <__gnu_unwind_pr_common+0x64>
+ 800765a:      0212            lsls    r2, r2, #8
+ 800765c:      2303            movs    r3, #3
+ 800765e:      9205            str     r2, [sp, #20]
+ 8007660:      f8ad 301c       strh.w  r3, [sp, #28]
+ 8007664:      e79b            b.n     800759e <__gnu_unwind_pr_common+0x32>
+ 8007666:      2008            movs    r0, #8
+ 8007668:      b009            add     sp, #36 ; 0x24
+ 800766a:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800766e:      f1bb 0f00       cmp.w   fp, #0
+ 8007672:      d002            beq.n   800767a <__gnu_unwind_pr_common+0x10e>
+ 8007674:      2800            cmp     r0, #0
+ 8007676:      f040 80b4       bne.w   80077e2 <__gnu_unwind_pr_common+0x276>
+ 800767a:      3404            adds    r4, #4
+ 800767c:      e79b            b.n     80075b6 <__gnu_unwind_pr_common+0x4a>
+ 800767e:      f1bb 0f00       cmp.w   fp, #0
+ 8007682:      d118            bne.n   80076b6 <__gnu_unwind_pr_common+0x14a>
+ 8007684:      b1a8            cbz     r0, 80076b2 <__gnu_unwind_pr_common+0x146>
+ 8007686:      e9d4 2300       ldrd    r2, r3, [r4]
+ 800768a:      1c99            adds    r1, r3, #2
+ 800768c:      ea4f 72d2       mov.w   r2, r2, lsr #31
+ 8007690:      d0d9            beq.n   8007646 <__gnu_unwind_pr_common+0xda>
+ 8007692:      f105 0158       add.w   r1, r5, #88     ; 0x58
+ 8007696:      3301            adds    r3, #1
+ 8007698:      9104            str     r1, [sp, #16]
+ 800769a:      f000 80b5       beq.w   8007808 <__gnu_unwind_pr_common+0x29c>
+ 800769e:      1d20            adds    r0, r4, #4
+ 80076a0:      f7ff fdea       bl      8007278 <_Unwind_decode_typeinfo_ptr.isra.0>
+ 80076a4:      ab04            add     r3, sp, #16
+ 80076a6:      4601            mov     r1, r0
+ 80076a8:      4628            mov     r0, r5
+ 80076aa:      f005 fa1b       bl      800cae4 <__cxa_type_match>
+ 80076ae:      2800            cmp     r0, #0
+ 80076b0:      d167            bne.n   8007782 <__gnu_unwind_pr_common+0x216>
+ 80076b2:      3408            adds    r4, #8
+ 80076b4:      e77f            b.n     80075b6 <__gnu_unwind_pr_common+0x4a>
+ 80076b6:      210d            movs    r1, #13
+ 80076b8:      4630            mov     r0, r6
+ 80076ba:      f8d5 8020       ldr.w   r8, [r5, #32]
+ 80076be:      f7ff feed       bl      800749c <_Unwind_GetGR>
+ 80076c2:      4580            cmp     r8, r0
+ 80076c4:      d1f5            bne.n   80076b2 <__gnu_unwind_pr_common+0x146>
+ 80076c6:      6aab            ldr     r3, [r5, #40]   ; 0x28
+ 80076c8:      429c            cmp     r4, r3
+ 80076ca:      d1f2            bne.n   80076b2 <__gnu_unwind_pr_common+0x146>
+ 80076cc:      4620            mov     r0, r4
+ 80076ce:      f7ff fd07       bl      80070e0 <selfrel_offset31>
+ 80076d2:      210f            movs    r1, #15
+ 80076d4:      4602            mov     r2, r0
+ 80076d6:      4630            mov     r0, r6
+ 80076d8:      f7ff ff02       bl      80074e0 <_Unwind_SetGR>
+ 80076dc:      4630            mov     r0, r6
+ 80076de:      462a            mov     r2, r5
+ 80076e0:      2100            movs    r1, #0
+ 80076e2:      f7ff fefd       bl      80074e0 <_Unwind_SetGR>
+ 80076e6:      2007            movs    r0, #7
+ 80076e8:      e7ae            b.n     8007648 <__gnu_unwind_pr_common+0xdc>
+ 80076ea:      210d            movs    r1, #13
+ 80076ec:      4630            mov     r0, r6
+ 80076ee:      f8d5 8020       ldr.w   r8, [r5, #32]
+ 80076f2:      f7ff fed3       bl      800749c <_Unwind_GetGR>
+ 80076f6:      4580            cmp     r8, r0
+ 80076f8:      d032            beq.n   8007760 <__gnu_unwind_pr_common+0x1f4>
+ 80076fa:      6823            ldr     r3, [r4, #0]
+ 80076fc:      e796            b.n     800762c <__gnu_unwind_pr_common+0xc0>
+ 80076fe:      f1ba 0f00       cmp.w   sl, #0
+ 8007702:      d023            beq.n   800774c <__gnu_unwind_pr_common+0x1e0>
+ 8007704:      f105 0358       add.w   r3, r5, #88     ; 0x58
+ 8007708:      f104 0804       add.w   r8, r4, #4
+ 800770c:      f8cd b008       str.w   fp, [sp, #8]
+ 8007710:      f8dd 9000       ldr.w   r9, [sp]
+ 8007714:      9703            str     r7, [sp, #12]
+ 8007716:      46a3            mov     fp, r4
+ 8007718:      461c            mov     r4, r3
+ 800771a:      e002            b.n     8007722 <__gnu_unwind_pr_common+0x1b6>
+ 800771c:      4557            cmp     r7, sl
+ 800771e:      46b9            mov     r9, r7
+ 8007720:      d040            beq.n   80077a4 <__gnu_unwind_pr_common+0x238>
+ 8007722:      4640            mov     r0, r8
+ 8007724:      9404            str     r4, [sp, #16]
+ 8007726:      f7ff fda7       bl      8007278 <_Unwind_decode_typeinfo_ptr.isra.0>
+ 800772a:      ab04            add     r3, sp, #16
+ 800772c:      4601            mov     r1, r0
+ 800772e:      2200            movs    r2, #0
+ 8007730:      4628            mov     r0, r5
+ 8007732:      f005 f9d7       bl      800cae4 <__cxa_type_match>
+ 8007736:      f109 0701       add.w   r7, r9, #1
+ 800773a:      f108 0804       add.w   r8, r8, #4
+ 800773e:      2800            cmp     r0, #0
+ 8007740:      d0ec            beq.n   800771c <__gnu_unwind_pr_common+0x1b0>
+ 8007742:      45d1            cmp     r9, sl
+ 8007744:      465c            mov     r4, fp
+ 8007746:      e9dd b702       ldrd    fp, r7, [sp, #8]
+ 800774a:      d1d6            bne.n   80076fa <__gnu_unwind_pr_common+0x18e>
+ 800774c:      4630            mov     r0, r6
+ 800774e:      210d            movs    r1, #13
+ 8007750:      f7ff fea4       bl      800749c <_Unwind_GetGR>
+ 8007754:      9b04            ldr     r3, [sp, #16]
+ 8007756:      6228            str     r0, [r5, #32]
+ 8007758:      e9c5 3409       strd    r3, r4, [r5, #36]       ; 0x24
+ 800775c:      2006            movs    r0, #6
+ 800775e:      e773            b.n     8007648 <__gnu_unwind_pr_common+0xdc>
+ 8007760:      6aab            ldr     r3, [r5, #40]   ; 0x28
+ 8007762:      429c            cmp     r4, r3
+ 8007764:      d1c9            bne.n   80076fa <__gnu_unwind_pr_common+0x18e>
+ 8007766:      2204            movs    r2, #4
+ 8007768:      f04f 0800       mov.w   r8, #0
+ 800776c:      18a3            adds    r3, r4, r2
+ 800776e:      e9c5 a80a       strd    sl, r8, [r5, #40]       ; 0x28
+ 8007772:      e9c5 230c       strd    r2, r3, [r5, #48]       ; 0x30
+ 8007776:      6823            ldr     r3, [r4, #0]
+ 8007778:      4543            cmp     r3, r8
+ 800777a:      db4d            blt.n   8007818 <__gnu_unwind_pr_common+0x2ac>
+ 800777c:      2301            movs    r3, #1
+ 800777e:      9301            str     r3, [sp, #4]
+ 8007780:      e757            b.n     8007632 <__gnu_unwind_pr_common+0xc6>
+ 8007782:      4680            mov     r8, r0
+ 8007784:      210d            movs    r1, #13
+ 8007786:      4630            mov     r0, r6
+ 8007788:      f7ff fe88       bl      800749c <_Unwind_GetGR>
+ 800778c:      f1b8 0f02       cmp.w   r8, #2
+ 8007790:      6228            str     r0, [r5, #32]
+ 8007792:      d13e            bne.n   8007812 <__gnu_unwind_pr_common+0x2a6>
+ 8007794:      462b            mov     r3, r5
+ 8007796:      9a04            ldr     r2, [sp, #16]
+ 8007798:      f843 2f2c       str.w   r2, [r3, #44]!
+ 800779c:      626b            str     r3, [r5, #36]   ; 0x24
+ 800779e:      62ac            str     r4, [r5, #40]   ; 0x28
+ 80077a0:      2006            movs    r0, #6
+ 80077a2:      e751            b.n     8007648 <__gnu_unwind_pr_common+0xdc>
+ 80077a4:      465c            mov     r4, fp
+ 80077a6:      e7d1            b.n     800774c <__gnu_unwind_pr_common+0x1e0>
+ 80077a8:      a905            add     r1, sp, #20
+ 80077aa:      4630            mov     r0, r6
+ 80077ac:      f000 fa90       bl      8007cd0 <__gnu_unwind_execute>
+ 80077b0:      2800            cmp     r0, #0
+ 80077b2:      f47f af48       bne.w   8007646 <__gnu_unwind_pr_common+0xda>
+ 80077b6:      9b01            ldr     r3, [sp, #4]
+ 80077b8:      2b00            cmp     r3, #0
+ 80077ba:      f43f af54       beq.w   8007666 <__gnu_unwind_pr_common+0xfa>
+ 80077be:      210f            movs    r1, #15
+ 80077c0:      4630            mov     r0, r6
+ 80077c2:      f7ff fe6b       bl      800749c <_Unwind_GetGR>
+ 80077c6:      210e            movs    r1, #14
+ 80077c8:      4602            mov     r2, r0
+ 80077ca:      4630            mov     r0, r6
+ 80077cc:      f7ff fe88       bl      80074e0 <_Unwind_SetGR>
+ 80077d0:      4630            mov     r0, r6
+ 80077d2:      4a1a            ldr     r2, [pc, #104]  ; (800783c <__gnu_unwind_pr_common+0x2d0>)
+ 80077d4:      210f            movs    r1, #15
+ 80077d6:      f7ff fe83       bl      80074e0 <_Unwind_SetGR>
+ 80077da:      2007            movs    r0, #7
+ 80077dc:      b009            add     sp, #36 ; 0x24
+ 80077de:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 80077e2:      4620            mov     r0, r4
+ 80077e4:      f7ff fc7c       bl      80070e0 <selfrel_offset31>
+ 80077e8:      3404            adds    r4, #4
+ 80077ea:      4607            mov     r7, r0
+ 80077ec:      63ac            str     r4, [r5, #56]   ; 0x38
+ 80077ee:      4628            mov     r0, r5
+ 80077f0:      f005 f9d0       bl      800cb94 <__cxa_begin_cleanup>
+ 80077f4:      2800            cmp     r0, #0
+ 80077f6:      f43f af26       beq.w   8007646 <__gnu_unwind_pr_common+0xda>
+ 80077fa:      4630            mov     r0, r6
+ 80077fc:      463a            mov     r2, r7
+ 80077fe:      210f            movs    r1, #15
+ 8007800:      f7ff fe6e       bl      80074e0 <_Unwind_SetGR>
+ 8007804:      2007            movs    r0, #7
+ 8007806:      e71f            b.n     8007648 <__gnu_unwind_pr_common+0xdc>
+ 8007808:      4630            mov     r0, r6
+ 800780a:      210d            movs    r1, #13
+ 800780c:      f7ff fe46       bl      800749c <_Unwind_GetGR>
+ 8007810:      6228            str     r0, [r5, #32]
+ 8007812:      9b04            ldr     r3, [sp, #16]
+ 8007814:      626b            str     r3, [r5, #36]   ; 0x24
+ 8007816:      e7c2            b.n     800779e <__gnu_unwind_pr_common+0x232>
+ 8007818:      f10a 0001       add.w   r0, sl, #1
+ 800781c:      eb04 0080       add.w   r0, r4, r0, lsl #2
+ 8007820:      f7ff fc5e       bl      80070e0 <selfrel_offset31>
+ 8007824:      210f            movs    r1, #15
+ 8007826:      4602            mov     r2, r0
+ 8007828:      4630            mov     r0, r6
+ 800782a:      f7ff fe59       bl      80074e0 <_Unwind_SetGR>
+ 800782e:      4630            mov     r0, r6
+ 8007830:      462a            mov     r2, r5
+ 8007832:      4641            mov     r1, r8
+ 8007834:      f7ff fe54       bl      80074e0 <_Unwind_SetGR>
+ 8007838:      2007            movs    r0, #7
+ 800783a:      e705            b.n     8007648 <__gnu_unwind_pr_common+0xdc>
+ 800783c:      0800c9fd        .word   0x0800c9fd
+
+08007840 <__aeabi_unwind_cpp_pr0>:
+ 8007840:      2300            movs    r3, #0
+ 8007842:      e693            b.n     800756c <__gnu_unwind_pr_common>
+
+08007844 <__aeabi_unwind_cpp_pr1>:
+ 8007844:      2301            movs    r3, #1
+ 8007846:      e691            b.n     800756c <__gnu_unwind_pr_common>
+
+08007848 <__aeabi_unwind_cpp_pr2>:
+ 8007848:      2302            movs    r3, #2
+ 800784a:      e68f            b.n     800756c <__gnu_unwind_pr_common>
+
+0800784c <_Unwind_VRS_Pop>:
+ 800784c:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8007850:      4605            mov     r5, r0
+ 8007852:      b0c4            sub     sp, #272        ; 0x110
+ 8007854:      2904            cmp     r1, #4
+ 8007856:      d806            bhi.n   8007866 <_Unwind_VRS_Pop+0x1a>
+ 8007858:      e8df f001       tbb     [pc, r1]
+ 800785c:      03052b4d        .word   0x03052b4d
+ 8007860:      09              .byte   0x09
+ 8007861:      00              .byte   0x00
+ 8007862:      2b03            cmp     r3, #3
+ 8007864:      d05f            beq.n   8007926 <_Unwind_VRS_Pop+0xda>
+ 8007866:      2002            movs    r0, #2
+ 8007868:      b044            add     sp, #272        ; 0x110
+ 800786a:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800786e:      2b00            cmp     r3, #0
+ 8007870:      d1f9            bne.n   8007866 <_Unwind_VRS_Pop+0x1a>
+ 8007872:      2a10            cmp     r2, #16
+ 8007874:      d8f7            bhi.n   8007866 <_Unwind_VRS_Pop+0x1a>
+ 8007876:      682b            ldr     r3, [r5, #0]
+ 8007878:      06dc            lsls    r4, r3, #27
+ 800787a:      f100 80f4       bmi.w   8007a66 <_Unwind_VRS_Pop+0x21a>
+ 800787e:      ac22            add     r4, sp, #136    ; 0x88
+ 8007880:      4620            mov     r0, r4
+ 8007882:      9201            str     r2, [sp, #4]
+ 8007884:      f000 f994       bl      8007bb0 <__gnu_Unwind_Save_WMMXC>
+ 8007888:      6ba8            ldr     r0, [r5, #56]   ; 0x38
+ 800788a:      9a01            ldr     r2, [sp, #4]
+ 800788c:      2300            movs    r3, #0
+ 800788e:      2601            movs    r6, #1
+ 8007890:      fa06 f103       lsl.w   r1, r6, r3
+ 8007894:      4211            tst     r1, r2
+ 8007896:      d003            beq.n   80078a0 <_Unwind_VRS_Pop+0x54>
+ 8007898:      6801            ldr     r1, [r0, #0]
+ 800789a:      f844 1023       str.w   r1, [r4, r3, lsl #2]
+ 800789e:      3004            adds    r0, #4
+ 80078a0:      3301            adds    r3, #1
+ 80078a2:      2b04            cmp     r3, #4
+ 80078a4:      d1f4            bne.n   8007890 <_Unwind_VRS_Pop+0x44>
+ 80078a6:      63a8            str     r0, [r5, #56]   ; 0x38
+ 80078a8:      4620            mov     r0, r4
+ 80078aa:      f000 f977       bl      8007b9c <__gnu_Unwind_Restore_WMMXC>
+ 80078ae:      2000            movs    r0, #0
+ 80078b0:      e7da            b.n     8007868 <_Unwind_VRS_Pop+0x1c>
+ 80078b2:      2b01            cmp     r3, #1
+ 80078b4:      ea4f 4612       mov.w   r6, r2, lsr #16
+ 80078b8:      b297            uxth    r7, r2
+ 80078ba:      d052            beq.n   8007962 <_Unwind_VRS_Pop+0x116>
+ 80078bc:      2b05            cmp     r3, #5
+ 80078be:      d1d2            bne.n   8007866 <_Unwind_VRS_Pop+0x1a>
+ 80078c0:      eb06 0807       add.w   r8, r6, r7
+ 80078c4:      f1b8 0f20       cmp.w   r8, #32
+ 80078c8:      d8cd            bhi.n   8007866 <_Unwind_VRS_Pop+0x1a>
+ 80078ca:      2e0f            cmp     r6, #15
+ 80078cc:      f240 8099       bls.w   8007a02 <_Unwind_VRS_Pop+0x1b6>
+ 80078d0:      46b8            mov     r8, r7
+ 80078d2:      2f00            cmp     r7, #0
+ 80078d4:      f040 80db       bne.w   8007a8e <_Unwind_VRS_Pop+0x242>
+ 80078d8:      6baa            ldr     r2, [r5, #56]   ; 0x38
+ 80078da:      63aa            str     r2, [r5, #56]   ; 0x38
+ 80078dc:      2e0f            cmp     r6, #15
+ 80078de:      f240 80be       bls.w   8007a5e <_Unwind_VRS_Pop+0x212>
+ 80078e2:      f1b8 0f00       cmp.w   r8, #0
+ 80078e6:      d002            beq.n   80078ee <_Unwind_VRS_Pop+0xa2>
+ 80078e8:      a802            add     r0, sp, #8
+ 80078ea:      f000 f90b       bl      8007b04 <__gnu_Unwind_Restore_VFP_D_16_to_31>
+ 80078ee:      2000            movs    r0, #0
+ 80078f0:      b044            add     sp, #272        ; 0x110
+ 80078f2:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 80078f6:      2b00            cmp     r3, #0
+ 80078f8:      d1b5            bne.n   8007866 <_Unwind_VRS_Pop+0x1a>
+ 80078fa:      6bac            ldr     r4, [r5, #56]   ; 0x38
+ 80078fc:      b297            uxth    r7, r2
+ 80078fe:      1d28            adds    r0, r5, #4
+ 8007900:      2601            movs    r6, #1
+ 8007902:      fa06 f103       lsl.w   r1, r6, r3
+ 8007906:      4239            tst     r1, r7
+ 8007908:      f103 0301       add.w   r3, r3, #1
+ 800790c:      d002            beq.n   8007914 <_Unwind_VRS_Pop+0xc8>
+ 800790e:      6821            ldr     r1, [r4, #0]
+ 8007910:      6001            str     r1, [r0, #0]
+ 8007912:      3404            adds    r4, #4
+ 8007914:      2b10            cmp     r3, #16
+ 8007916:      f100 0004       add.w   r0, r0, #4
+ 800791a:      d1f2            bne.n   8007902 <_Unwind_VRS_Pop+0xb6>
+ 800791c:      f412 5000       ands.w  r0, r2, #8192   ; 0x2000
+ 8007920:      d1e5            bne.n   80078ee <_Unwind_VRS_Pop+0xa2>
+ 8007922:      63ac            str     r4, [r5, #56]   ; 0x38
+ 8007924:      e7a0            b.n     8007868 <_Unwind_VRS_Pop+0x1c>
+ 8007926:      0c16            lsrs    r6, r2, #16
+ 8007928:      b297            uxth    r7, r2
+ 800792a:      19f3            adds    r3, r6, r7
+ 800792c:      2b10            cmp     r3, #16
+ 800792e:      d89a            bhi.n   8007866 <_Unwind_VRS_Pop+0x1a>
+ 8007930:      682b            ldr     r3, [r5, #0]
+ 8007932:      071a            lsls    r2, r3, #28
+ 8007934:      d45d            bmi.n   80079f2 <_Unwind_VRS_Pop+0x1a6>
+ 8007936:      ac22            add     r4, sp, #136    ; 0x88
+ 8007938:      4620            mov     r0, r4
+ 800793a:      f000 f90d       bl      8007b58 <__gnu_Unwind_Save_WMMXD>
+ 800793e:      eb04 01c6       add.w   r1, r4, r6, lsl #3
+ 8007942:      6bab            ldr     r3, [r5, #56]   ; 0x38
+ 8007944:      b13f            cbz     r7, 8007956 <_Unwind_VRS_Pop+0x10a>
+ 8007946:      eb03 02c7       add.w   r2, r3, r7, lsl #3
+ 800794a:      6818            ldr     r0, [r3, #0]
+ 800794c:      f841 0b04       str.w   r0, [r1], #4
+ 8007950:      3304            adds    r3, #4
+ 8007952:      4293            cmp     r3, r2
+ 8007954:      d1f9            bne.n   800794a <_Unwind_VRS_Pop+0xfe>
+ 8007956:      4620            mov     r0, r4
+ 8007958:      63ab            str     r3, [r5, #56]   ; 0x38
+ 800795a:      f000 f8db       bl      8007b14 <__gnu_Unwind_Restore_WMMXD>
+ 800795e:      2000            movs    r0, #0
+ 8007960:      e782            b.n     8007868 <_Unwind_VRS_Pop+0x1c>
+ 8007962:      19f2            adds    r2, r6, r7
+ 8007964:      2a10            cmp     r2, #16
+ 8007966:      f63f af7e       bhi.w   8007866 <_Unwind_VRS_Pop+0x1a>
+ 800796a:      2e0f            cmp     r6, #15
+ 800796c:      f63f af7b       bhi.w   8007866 <_Unwind_VRS_Pop+0x1a>
+ 8007970:      682a            ldr     r2, [r5, #0]
+ 8007972:      07d1            lsls    r1, r2, #31
+ 8007974:      d508            bpl.n   8007988 <_Unwind_VRS_Pop+0x13c>
+ 8007976:      4628            mov     r0, r5
+ 8007978:      f022 0203       bic.w   r2, r2, #3
+ 800797c:      f840 2b48       str.w   r2, [r0], #72
+ 8007980:      9301            str     r3, [sp, #4]
+ 8007982:      f000 f8b3       bl      8007aec <__gnu_Unwind_Save_VFP>
+ 8007986:      9b01            ldr     r3, [sp, #4]
+ 8007988:      9301            str     r3, [sp, #4]
+ 800798a:      ac22            add     r4, sp, #136    ; 0x88
+ 800798c:      4620            mov     r0, r4
+ 800798e:      f000 f8ad       bl      8007aec <__gnu_Unwind_Save_VFP>
+ 8007992:      6ba9            ldr     r1, [r5, #56]   ; 0x38
+ 8007994:      9b01            ldr     r3, [sp, #4]
+ 8007996:      2f00            cmp     r7, #0
+ 8007998:      f000 8095       beq.w   8007ac6 <_Unwind_VRS_Pop+0x27a>
+ 800799c:      007f            lsls    r7, r7, #1
+ 800799e:      eb04 04c6       add.w   r4, r4, r6, lsl #3
+ 80079a2:      f04f 0800       mov.w   r8, #0
+ 80079a6:      3c04            subs    r4, #4
+ 80079a8:      eb01 0287       add.w   r2, r1, r7, lsl #2
+ 80079ac:      f851 0b04       ldr.w   r0, [r1], #4
+ 80079b0:      f844 0f04       str.w   r0, [r4, #4]!
+ 80079b4:      4291            cmp     r1, r2
+ 80079b6:      d1f9            bne.n   80079ac <_Unwind_VRS_Pop+0x160>
+ 80079b8:      f1b8 0f00       cmp.w   r8, #0
+ 80079bc:      d00f            beq.n   80079de <_Unwind_VRS_Pop+0x192>
+ 80079be:      ac02            add     r4, sp, #8
+ 80079c0:      2e10            cmp     r6, #16
+ 80079c2:      4631            mov     r1, r6
+ 80079c4:      bf38            it      cc
+ 80079c6:      2110            movcc   r1, #16
+ 80079c8:      eb04 01c1       add.w   r1, r4, r1, lsl #3
+ 80079cc:      3984            subs    r1, #132        ; 0x84
+ 80079ce:      eb02 04c8       add.w   r4, r2, r8, lsl #3
+ 80079d2:      f852 0b04       ldr.w   r0, [r2], #4
+ 80079d6:      f841 0f04       str.w   r0, [r1, #4]!
+ 80079da:      4294            cmp     r4, r2
+ 80079dc:      d1f9            bne.n   80079d2 <_Unwind_VRS_Pop+0x186>
+ 80079de:      2b01            cmp     r3, #1
+ 80079e0:      f47f af7b       bne.w   80078da <_Unwind_VRS_Pop+0x8e>
+ 80079e4:      ac22            add     r4, sp, #136    ; 0x88
+ 80079e6:      3204            adds    r2, #4
+ 80079e8:      63aa            str     r2, [r5, #56]   ; 0x38
+ 80079ea:      4620            mov     r0, r4
+ 80079ec:      f000 f87a       bl      8007ae4 <__gnu_Unwind_Restore_VFP>
+ 80079f0:      e77d            b.n     80078ee <_Unwind_VRS_Pop+0xa2>
+ 80079f2:      f023 0308       bic.w   r3, r3, #8
+ 80079f6:      602b            str     r3, [r5, #0]
+ 80079f8:      f505 70a8       add.w   r0, r5, #336    ; 0x150
+ 80079fc:      f000 f8ac       bl      8007b58 <__gnu_Unwind_Save_WMMXD>
+ 8007a00:      e799            b.n     8007936 <_Unwind_VRS_Pop+0xea>
+ 8007a02:      f1b8 0f10       cmp.w   r8, #16
+ 8007a06:      682a            ldr     r2, [r5, #0]
+ 8007a08:      d943            bls.n   8007a92 <_Unwind_VRS_Pop+0x246>
+ 8007a0a:      07d0            lsls    r0, r2, #31
+ 8007a0c:      f1a8 0810       sub.w   r8, r8, #16
+ 8007a10:      d50b            bpl.n   8007a2a <_Unwind_VRS_Pop+0x1de>
+ 8007a12:      4628            mov     r0, r5
+ 8007a14:      f022 0201       bic.w   r2, r2, #1
+ 8007a18:      f042 0202       orr.w   r2, r2, #2
+ 8007a1c:      f840 2b48       str.w   r2, [r0], #72
+ 8007a20:      9301            str     r3, [sp, #4]
+ 8007a22:      f000 f86b       bl      8007afc <__gnu_Unwind_Save_VFP_D>
+ 8007a26:      682a            ldr     r2, [r5, #0]
+ 8007a28:      9b01            ldr     r3, [sp, #4]
+ 8007a2a:      0751            lsls    r1, r2, #29
+ 8007a2c:      d425            bmi.n   8007a7a <_Unwind_VRS_Pop+0x22e>
+ 8007a2e:      2e0f            cmp     r6, #15
+ 8007a30:      d804            bhi.n   8007a3c <_Unwind_VRS_Pop+0x1f0>
+ 8007a32:      a822            add     r0, sp, #136    ; 0x88
+ 8007a34:      9301            str     r3, [sp, #4]
+ 8007a36:      f000 f861       bl      8007afc <__gnu_Unwind_Save_VFP_D>
+ 8007a3a:      9b01            ldr     r3, [sp, #4]
+ 8007a3c:      9301            str     r3, [sp, #4]
+ 8007a3e:      ac02            add     r4, sp, #8
+ 8007a40:      4620            mov     r0, r4
+ 8007a42:      f000 f863       bl      8007b0c <__gnu_Unwind_Save_VFP_D_16_to_31>
+ 8007a46:      f1c6 0110       rsb     r1, r6, #16
+ 8007a4a:      2900            cmp     r1, #0
+ 8007a4c:      6baa            ldr     r2, [r5, #56]   ; 0x38
+ 8007a4e:      9b01            ldr     r3, [sp, #4]
+ 8007a50:      ddb6            ble.n   80079c0 <_Unwind_VRS_Pop+0x174>
+ 8007a52:      ac22            add     r4, sp, #136    ; 0x88
+ 8007a54:      004f            lsls    r7, r1, #1
+ 8007a56:      eb04 04c6       add.w   r4, r4, r6, lsl #3
+ 8007a5a:      4611            mov     r1, r2
+ 8007a5c:      e7a3            b.n     80079a6 <_Unwind_VRS_Pop+0x15a>
+ 8007a5e:      a822            add     r0, sp, #136    ; 0x88
+ 8007a60:      f000 f848       bl      8007af4 <__gnu_Unwind_Restore_VFP_D>
+ 8007a64:      e73d            b.n     80078e2 <_Unwind_VRS_Pop+0x96>
+ 8007a66:      f023 0310       bic.w   r3, r3, #16
+ 8007a6a:      602b            str     r3, [r5, #0]
+ 8007a6c:      f505 70e8       add.w   r0, r5, #464    ; 0x1d0
+ 8007a70:      9201            str     r2, [sp, #4]
+ 8007a72:      f000 f89d       bl      8007bb0 <__gnu_Unwind_Save_WMMXC>
+ 8007a76:      9a01            ldr     r2, [sp, #4]
+ 8007a78:      e701            b.n     800787e <_Unwind_VRS_Pop+0x32>
+ 8007a7a:      4628            mov     r0, r5
+ 8007a7c:      f022 0204       bic.w   r2, r2, #4
+ 8007a80:      f840 2bd0       str.w   r2, [r0], #208
+ 8007a84:      9301            str     r3, [sp, #4]
+ 8007a86:      f000 f841       bl      8007b0c <__gnu_Unwind_Save_VFP_D_16_to_31>
+ 8007a8a:      9b01            ldr     r3, [sp, #4]
+ 8007a8c:      e7cf            b.n     8007a2e <_Unwind_VRS_Pop+0x1e2>
+ 8007a8e:      682a            ldr     r2, [r5, #0]
+ 8007a90:      e7cb            b.n     8007a2a <_Unwind_VRS_Pop+0x1de>
+ 8007a92:      07d0            lsls    r0, r2, #31
+ 8007a94:      d50a            bpl.n   8007aac <_Unwind_VRS_Pop+0x260>
+ 8007a96:      4628            mov     r0, r5
+ 8007a98:      f022 0201       bic.w   r2, r2, #1
+ 8007a9c:      f042 0202       orr.w   r2, r2, #2
+ 8007aa0:      f840 2b48       str.w   r2, [r0], #72
+ 8007aa4:      9301            str     r3, [sp, #4]
+ 8007aa6:      f000 f829       bl      8007afc <__gnu_Unwind_Save_VFP_D>
+ 8007aaa:      9b01            ldr     r3, [sp, #4]
+ 8007aac:      9301            str     r3, [sp, #4]
+ 8007aae:      ac22            add     r4, sp, #136    ; 0x88
+ 8007ab0:      4620            mov     r0, r4
+ 8007ab2:      f000 f823       bl      8007afc <__gnu_Unwind_Save_VFP_D>
+ 8007ab6:      46b8            mov     r8, r7
+ 8007ab8:      6ba9            ldr     r1, [r5, #56]   ; 0x38
+ 8007aba:      9b01            ldr     r3, [sp, #4]
+ 8007abc:      2f00            cmp     r7, #0
+ 8007abe:      f47f af6d       bne.w   800799c <_Unwind_VRS_Pop+0x150>
+ 8007ac2:      460a            mov     r2, r1
+ 8007ac4:      e709            b.n     80078da <_Unwind_VRS_Pop+0x8e>
+ 8007ac6:      460a            mov     r2, r1
+ 8007ac8:      e78d            b.n     80079e6 <_Unwind_VRS_Pop+0x19a>
+ 8007aca:      bf00            nop
+
+08007acc <__restore_core_regs>:
+ 8007acc:      f100 0134       add.w   r1, r0, #52     ; 0x34
+ 8007ad0:      e891 0038       ldmia.w r1, {r3, r4, r5}
+ 8007ad4:      469c            mov     ip, r3
+ 8007ad6:      46a6            mov     lr, r4
+ 8007ad8:      f84c 5d04       str.w   r5, [ip, #-4]!
+ 8007adc:      e890 0fff       ldmia.w r0, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp}
+ 8007ae0:      46e5            mov     sp, ip
+ 8007ae2:      bd00            pop     {pc}
+
+08007ae4 <__gnu_Unwind_Restore_VFP>:
+ 8007ae4:      ec90 0b21       fldmiax r0, {d0-d15}    ;@ Deprecated
+ 8007ae8:      4770            bx      lr
+ 8007aea:      bf00            nop
+
+08007aec <__gnu_Unwind_Save_VFP>:
+ 8007aec:      ec80 0b21       fstmiax r0, {d0-d15}    ;@ Deprecated
+ 8007af0:      4770            bx      lr
+ 8007af2:      bf00            nop
+
+08007af4 <__gnu_Unwind_Restore_VFP_D>:
+ 8007af4:      ec90 0b20       vldmia  r0, {d0-d15}
+ 8007af8:      4770            bx      lr
+ 8007afa:      bf00            nop
+
+08007afc <__gnu_Unwind_Save_VFP_D>:
+ 8007afc:      ec80 0b20       vstmia  r0, {d0-d15}
+ 8007b00:      4770            bx      lr
+ 8007b02:      bf00            nop
+
+08007b04 <__gnu_Unwind_Restore_VFP_D_16_to_31>:
+ 8007b04:      ecd0 0b20       vldmia  r0, {d16-d31}
+ 8007b08:      4770            bx      lr
+ 8007b0a:      bf00            nop
+
+08007b0c <__gnu_Unwind_Save_VFP_D_16_to_31>:
+ 8007b0c:      ecc0 0b20       vstmia  r0, {d16-d31}
+ 8007b10:      4770            bx      lr
+ 8007b12:      bf00            nop
+
+08007b14 <__gnu_Unwind_Restore_WMMXD>:
+ 8007b14:      ecf0 0102       ldfe    f0, [r0], #8
+ 8007b18:      ecf0 1102       ldfe    f1, [r0], #8
+ 8007b1c:      ecf0 2102       ldfe    f2, [r0], #8
+ 8007b20:      ecf0 3102       ldfe    f3, [r0], #8
+ 8007b24:      ecf0 4102       ldfe    f4, [r0], #8
+ 8007b28:      ecf0 5102       ldfe    f5, [r0], #8
+ 8007b2c:      ecf0 6102       ldfe    f6, [r0], #8
+ 8007b30:      ecf0 7102       ldfe    f7, [r0], #8
+ 8007b34:      ecf0 8102       ldfp    f0, [r0], #8
+ 8007b38:      ecf0 9102       ldfp    f1, [r0], #8
+ 8007b3c:      ecf0 a102       ldfp    f2, [r0], #8
+ 8007b40:      ecf0 b102       ldfp    f3, [r0], #8
+ 8007b44:      ecf0 c102       ldfp    f4, [r0], #8
+ 8007b48:      ecf0 d102       ldfp    f5, [r0], #8
+ 8007b4c:      ecf0 e102       ldfp    f6, [r0], #8
+ 8007b50:      ecf0 f102       ldfp    f7, [r0], #8
+ 8007b54:      4770            bx      lr
+ 8007b56:      bf00            nop
+
+08007b58 <__gnu_Unwind_Save_WMMXD>:
+ 8007b58:      ece0 0102       stfe    f0, [r0], #8
+ 8007b5c:      ece0 1102       stfe    f1, [r0], #8
+ 8007b60:      ece0 2102       stfe    f2, [r0], #8
+ 8007b64:      ece0 3102       stfe    f3, [r0], #8
+ 8007b68:      ece0 4102       stfe    f4, [r0], #8
+ 8007b6c:      ece0 5102       stfe    f5, [r0], #8
+ 8007b70:      ece0 6102       stfe    f6, [r0], #8
+ 8007b74:      ece0 7102       stfe    f7, [r0], #8
+ 8007b78:      ece0 8102       stfp    f0, [r0], #8
+ 8007b7c:      ece0 9102       stfp    f1, [r0], #8
+ 8007b80:      ece0 a102       stfp    f2, [r0], #8
+ 8007b84:      ece0 b102       stfp    f3, [r0], #8
+ 8007b88:      ece0 c102       stfp    f4, [r0], #8
+ 8007b8c:      ece0 d102       stfp    f5, [r0], #8
+ 8007b90:      ece0 e102       stfp    f6, [r0], #8
+ 8007b94:      ece0 f102       stfp    f7, [r0], #8
+ 8007b98:      4770            bx      lr
+ 8007b9a:      bf00            nop
+
+08007b9c <__gnu_Unwind_Restore_WMMXC>:
+ 8007b9c:      fcb0 8101       ldc2    1, cr8, [r0], #4
+ 8007ba0:      fcb0 9101       ldc2    1, cr9, [r0], #4
+ 8007ba4:      fcb0 a101       ldc2    1, cr10, [r0], #4
+ 8007ba8:      fcb0 b101       ldc2    1, cr11, [r0], #4
+ 8007bac:      4770            bx      lr
+ 8007bae:      bf00            nop
+
+08007bb0 <__gnu_Unwind_Save_WMMXC>:
+ 8007bb0:      fca0 8101       stc2    1, cr8, [r0], #4
+ 8007bb4:      fca0 9101       stc2    1, cr9, [r0], #4
+ 8007bb8:      fca0 a101       stc2    1, cr10, [r0], #4
+ 8007bbc:      fca0 b101       stc2    1, cr11, [r0], #4
+ 8007bc0:      4770            bx      lr
+ 8007bc2:      bf00            nop
+
+08007bc4 <_Unwind_RaiseException>:
+ 8007bc4:      46ec            mov     ip, sp
+ 8007bc6:      b500            push    {lr}
+ 8007bc8:      e92d 5000       stmdb   sp!, {ip, lr}
+ 8007bcc:      e92d 1fff       stmdb   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip}
+ 8007bd0:      f04f 0300       mov.w   r3, #0
+ 8007bd4:      e92d 000c       stmdb   sp!, {r2, r3}
+ 8007bd8:      a901            add     r1, sp, #4
+ 8007bda:      f7ff fbdd       bl      8007398 <__gnu_Unwind_RaiseException>
+ 8007bde:      f8dd e040       ldr.w   lr, [sp, #64]   ; 0x40
+ 8007be2:      b012            add     sp, #72 ; 0x48
+ 8007be4:      4770            bx      lr
+ 8007be6:      bf00            nop
+
+08007be8 <_Unwind_Resume>:
+ 8007be8:      46ec            mov     ip, sp
+ 8007bea:      b500            push    {lr}
+ 8007bec:      e92d 5000       stmdb   sp!, {ip, lr}
+ 8007bf0:      e92d 1fff       stmdb   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip}
+ 8007bf4:      f04f 0300       mov.w   r3, #0
+ 8007bf8:      e92d 000c       stmdb   sp!, {r2, r3}
+ 8007bfc:      a901            add     r1, sp, #4
+ 8007bfe:      f7ff fc05       bl      800740c <__gnu_Unwind_Resume>
+ 8007c02:      f8dd e040       ldr.w   lr, [sp, #64]   ; 0x40
+ 8007c06:      b012            add     sp, #72 ; 0x48
+ 8007c08:      4770            bx      lr
+ 8007c0a:      bf00            nop
+
+08007c0c <_Unwind_Resume_or_Rethrow>:
+ 8007c0c:      46ec            mov     ip, sp
+ 8007c0e:      b500            push    {lr}
+ 8007c10:      e92d 5000       stmdb   sp!, {ip, lr}
+ 8007c14:      e92d 1fff       stmdb   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip}
+ 8007c18:      f04f 0300       mov.w   r3, #0
+ 8007c1c:      e92d 000c       stmdb   sp!, {r2, r3}
+ 8007c20:      a901            add     r1, sp, #4
+ 8007c22:      f7ff fc15       bl      8007450 <__gnu_Unwind_Resume_or_Rethrow>
+ 8007c26:      f8dd e040       ldr.w   lr, [sp, #64]   ; 0x40
+ 8007c2a:      b012            add     sp, #72 ; 0x48
+ 8007c2c:      4770            bx      lr
+ 8007c2e:      bf00            nop
+
+08007c30 <_Unwind_ForcedUnwind>:
+ 8007c30:      46ec            mov     ip, sp
+ 8007c32:      b500            push    {lr}
+ 8007c34:      e92d 5000       stmdb   sp!, {ip, lr}
+ 8007c38:      e92d 1fff       stmdb   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip}
+ 8007c3c:      f04f 0300       mov.w   r3, #0
+ 8007c40:      e92d 000c       stmdb   sp!, {r2, r3}
+ 8007c44:      ab01            add     r3, sp, #4
+ 8007c46:      f7ff fbd7       bl      80073f8 <__gnu_Unwind_ForcedUnwind>
+ 8007c4a:      f8dd e040       ldr.w   lr, [sp, #64]   ; 0x40
+ 8007c4e:      b012            add     sp, #72 ; 0x48
+ 8007c50:      4770            bx      lr
+ 8007c52:      bf00            nop
+
+08007c54 <_Unwind_Backtrace>:
+ 8007c54:      46ec            mov     ip, sp
+ 8007c56:      b500            push    {lr}
+ 8007c58:      e92d 5000       stmdb   sp!, {ip, lr}
+ 8007c5c:      e92d 1fff       stmdb   sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip}
+ 8007c60:      f04f 0300       mov.w   r3, #0
+ 8007c64:      e92d 000c       stmdb   sp!, {r2, r3}
+ 8007c68:      aa01            add     r2, sp, #4
+ 8007c6a:      f7ff fc47       bl      80074fc <__gnu_Unwind_Backtrace>
+ 8007c6e:      f8dd e040       ldr.w   lr, [sp, #64]   ; 0x40
+ 8007c72:      b012            add     sp, #72 ; 0x48
+ 8007c74:      4770            bx      lr
+ 8007c76:      bf00            nop
+
+08007c78 <next_unwind_byte>:
+ 8007c78:      7a02            ldrb    r2, [r0, #8]
+ 8007c7a:      b982            cbnz    r2, 8007c9e <next_unwind_byte+0x26>
+ 8007c7c:      7a43            ldrb    r3, [r0, #9]
+ 8007c7e:      b1ab            cbz     r3, 8007cac <next_unwind_byte+0x34>
+ 8007c80:      6842            ldr     r2, [r0, #4]
+ 8007c82:      3b01            subs    r3, #1
+ 8007c84:      b410            push    {r4}
+ 8007c86:      7243            strb    r3, [r0, #9]
+ 8007c88:      6813            ldr     r3, [r2, #0]
+ 8007c8a:      2103            movs    r1, #3
+ 8007c8c:      1d14            adds    r4, r2, #4
+ 8007c8e:      7201            strb    r1, [r0, #8]
+ 8007c90:      021a            lsls    r2, r3, #8
+ 8007c92:      6044            str     r4, [r0, #4]
+ 8007c94:      6002            str     r2, [r0, #0]
+ 8007c96:      f85d 4b04       ldr.w   r4, [sp], #4
+ 8007c9a:      0e18            lsrs    r0, r3, #24
+ 8007c9c:      4770            bx      lr
+ 8007c9e:      6803            ldr     r3, [r0, #0]
+ 8007ca0:      3a01            subs    r2, #1
+ 8007ca2:      7202            strb    r2, [r0, #8]
+ 8007ca4:      021a            lsls    r2, r3, #8
+ 8007ca6:      6002            str     r2, [r0, #0]
+ 8007ca8:      0e18            lsrs    r0, r3, #24
+ 8007caa:      4770            bx      lr
+ 8007cac:      20b0            movs    r0, #176        ; 0xb0
+ 8007cae:      4770            bx      lr
+
+08007cb0 <_Unwind_GetGR.constprop.0>:
+ 8007cb0:      b500            push    {lr}
+ 8007cb2:      b085            sub     sp, #20
+ 8007cb4:      aa03            add     r2, sp, #12
+ 8007cb6:      2300            movs    r3, #0
+ 8007cb8:      9200            str     r2, [sp, #0]
+ 8007cba:      4619            mov     r1, r3
+ 8007cbc:      220c            movs    r2, #12
+ 8007cbe:      f7ff fbd7       bl      8007470 <_Unwind_VRS_Get>
+ 8007cc2:      9803            ldr     r0, [sp, #12]
+ 8007cc4:      b005            add     sp, #20
+ 8007cc6:      f85d fb04       ldr.w   pc, [sp], #4
+ 8007cca:      bf00            nop
+
+08007ccc <unwind_UCB_from_context>:
+ 8007ccc:      e7f0            b.n     8007cb0 <_Unwind_GetGR.constprop.0>
+ 8007cce:      bf00            nop
+
+08007cd0 <__gnu_unwind_execute>:
+ 8007cd0:      e92d 43f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, lr}
+ 8007cd4:      4605            mov     r5, r0
+ 8007cd6:      b085            sub     sp, #20
+ 8007cd8:      460e            mov     r6, r1
+ 8007cda:      f04f 0800       mov.w   r8, #0
+ 8007cde:      4630            mov     r0, r6
+ 8007ce0:      f7ff ffca       bl      8007c78 <next_unwind_byte>
+ 8007ce4:      28b0            cmp     r0, #176        ; 0xb0
+ 8007ce6:      4604            mov     r4, r0
+ 8007ce8:      f000 80b1       beq.w   8007e4e <__gnu_unwind_execute+0x17e>
+ 8007cec:      0607            lsls    r7, r0, #24
+ 8007cee:      d520            bpl.n   8007d32 <__gnu_unwind_execute+0x62>
+ 8007cf0:      f000 03f0       and.w   r3, r0, #240    ; 0xf0
+ 8007cf4:      2b80            cmp     r3, #128        ; 0x80
+ 8007cf6:      d065            beq.n   8007dc4 <__gnu_unwind_execute+0xf4>
+ 8007cf8:      2b90            cmp     r3, #144        ; 0x90
+ 8007cfa:      d036            beq.n   8007d6a <__gnu_unwind_execute+0x9a>
+ 8007cfc:      2ba0            cmp     r3, #160        ; 0xa0
+ 8007cfe:      d078            beq.n   8007df2 <__gnu_unwind_execute+0x122>
+ 8007d00:      2bb0            cmp     r3, #176        ; 0xb0
+ 8007d02:      d047            beq.n   8007d94 <__gnu_unwind_execute+0xc4>
+ 8007d04:      2bc0            cmp     r3, #192        ; 0xc0
+ 8007d06:      f000 808a       beq.w   8007e1e <__gnu_unwind_execute+0x14e>
+ 8007d0a:      f000 03f8       and.w   r3, r0, #248    ; 0xf8
+ 8007d0e:      2bd0            cmp     r3, #208        ; 0xd0
+ 8007d10:      d10b            bne.n   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007d12:      f000 0207       and.w   r2, r0, #7
+ 8007d16:      3201            adds    r2, #1
+ 8007d18:      f442 2200       orr.w   r2, r2, #524288 ; 0x80000
+ 8007d1c:      2305            movs    r3, #5
+ 8007d1e:      2101            movs    r1, #1
+ 8007d20:      4628            mov     r0, r5
+ 8007d22:      f7ff fd93       bl      800784c <_Unwind_VRS_Pop>
+ 8007d26:      2800            cmp     r0, #0
+ 8007d28:      d0d9            beq.n   8007cde <__gnu_unwind_execute+0xe>
+ 8007d2a:      2009            movs    r0, #9
+ 8007d2c:      b005            add     sp, #20
+ 8007d2e:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 8007d32:      f10d 090c       add.w   r9, sp, #12
+ 8007d36:      2300            movs    r3, #0
+ 8007d38:      4619            mov     r1, r3
+ 8007d3a:      0087            lsls    r7, r0, #2
+ 8007d3c:      f8cd 9000       str.w   r9, [sp]
+ 8007d40:      220d            movs    r2, #13
+ 8007d42:      4628            mov     r0, r5
+ 8007d44:      f7ff fb94       bl      8007470 <_Unwind_VRS_Get>
+ 8007d48:      b2ff            uxtb    r7, r7
+ 8007d4a:      9b03            ldr     r3, [sp, #12]
+ 8007d4c:      f8cd 9000       str.w   r9, [sp]
+ 8007d50:      3704            adds    r7, #4
+ 8007d52:      0660            lsls    r0, r4, #25
+ 8007d54:      bf4c            ite     mi
+ 8007d56:      1bdf            submi   r7, r3, r7
+ 8007d58:      18ff            addpl   r7, r7, r3
+ 8007d5a:      2300            movs    r3, #0
+ 8007d5c:      4619            mov     r1, r3
+ 8007d5e:      220d            movs    r2, #13
+ 8007d60:      4628            mov     r0, r5
+ 8007d62:      9703            str     r7, [sp, #12]
+ 8007d64:      f7ff fba6       bl      80074b4 <_Unwind_VRS_Set>
+ 8007d68:      e7b9            b.n     8007cde <__gnu_unwind_execute+0xe>
+ 8007d6a:      f000 030d       and.w   r3, r0, #13
+ 8007d6e:      2b0d            cmp     r3, #13
+ 8007d70:      d0db            beq.n   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007d72:      af03            add     r7, sp, #12
+ 8007d74:      2300            movs    r3, #0
+ 8007d76:      f000 020f       and.w   r2, r0, #15
+ 8007d7a:      4619            mov     r1, r3
+ 8007d7c:      9700            str     r7, [sp, #0]
+ 8007d7e:      4628            mov     r0, r5
+ 8007d80:      f7ff fb76       bl      8007470 <_Unwind_VRS_Get>
+ 8007d84:      2300            movs    r3, #0
+ 8007d86:      9700            str     r7, [sp, #0]
+ 8007d88:      4619            mov     r1, r3
+ 8007d8a:      220d            movs    r2, #13
+ 8007d8c:      4628            mov     r0, r5
+ 8007d8e:      f7ff fb91       bl      80074b4 <_Unwind_VRS_Set>
+ 8007d92:      e7a4            b.n     8007cde <__gnu_unwind_execute+0xe>
+ 8007d94:      28b1            cmp     r0, #177        ; 0xb1
+ 8007d96:      d05f            beq.n   8007e58 <__gnu_unwind_execute+0x188>
+ 8007d98:      28b2            cmp     r0, #178        ; 0xb2
+ 8007d9a:      f000 80cc       beq.w   8007f36 <__gnu_unwind_execute+0x266>
+ 8007d9e:      28b3            cmp     r0, #179        ; 0xb3
+ 8007da0:      d07e            beq.n   8007ea0 <__gnu_unwind_execute+0x1d0>
+ 8007da2:      f000 03fc       and.w   r3, r0, #252    ; 0xfc
+ 8007da6:      2bb4            cmp     r3, #180        ; 0xb4
+ 8007da8:      d0bf            beq.n   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007daa:      f000 0207       and.w   r2, r0, #7
+ 8007dae:      3201            adds    r2, #1
+ 8007db0:      2301            movs    r3, #1
+ 8007db2:      f442 2200       orr.w   r2, r2, #524288 ; 0x80000
+ 8007db6:      4619            mov     r1, r3
+ 8007db8:      4628            mov     r0, r5
+ 8007dba:      f7ff fd47       bl      800784c <_Unwind_VRS_Pop>
+ 8007dbe:      2800            cmp     r0, #0
+ 8007dc0:      d08d            beq.n   8007cde <__gnu_unwind_execute+0xe>
+ 8007dc2:      e7b2            b.n     8007d2a <__gnu_unwind_execute+0x5a>
+ 8007dc4:      4630            mov     r0, r6
+ 8007dc6:      f7ff ff57       bl      8007c78 <next_unwind_byte>
+ 8007dca:      0224            lsls    r4, r4, #8
+ 8007dcc:      4304            orrs    r4, r0
+ 8007dce:      f5b4 4f00       cmp.w   r4, #32768      ; 0x8000
+ 8007dd2:      d0aa            beq.n   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007dd4:      0124            lsls    r4, r4, #4
+ 8007dd6:      2300            movs    r3, #0
+ 8007dd8:      b2a2            uxth    r2, r4
+ 8007dda:      4619            mov     r1, r3
+ 8007ddc:      4628            mov     r0, r5
+ 8007dde:      f7ff fd35       bl      800784c <_Unwind_VRS_Pop>
+ 8007de2:      2800            cmp     r0, #0
+ 8007de4:      d1a1            bne.n   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007de6:      f414 4f00       tst.w   r4, #32768      ; 0x8000
+ 8007dea:      bf18            it      ne
+ 8007dec:      f04f 0801       movne.w r8, #1
+ 8007df0:      e775            b.n     8007cde <__gnu_unwind_execute+0xe>
+ 8007df2:      43c2            mvns    r2, r0
+ 8007df4:      f002 0307       and.w   r3, r2, #7
+ 8007df8:      f44f 627f       mov.w   r2, #4080       ; 0xff0
+ 8007dfc:      411a            asrs    r2, r3
+ 8007dfe:      0701            lsls    r1, r0, #28
+ 8007e00:      f402 627f       and.w   r2, r2, #4080   ; 0xff0
+ 8007e04:      f04f 0300       mov.w   r3, #0
+ 8007e08:      bf48            it      mi
+ 8007e0a:      f442 4280       orrmi.w r2, r2, #16384  ; 0x4000
+ 8007e0e:      4619            mov     r1, r3
+ 8007e10:      4628            mov     r0, r5
+ 8007e12:      f7ff fd1b       bl      800784c <_Unwind_VRS_Pop>
+ 8007e16:      2800            cmp     r0, #0
+ 8007e18:      f43f af61       beq.w   8007cde <__gnu_unwind_execute+0xe>
+ 8007e1c:      e785            b.n     8007d2a <__gnu_unwind_execute+0x5a>
+ 8007e1e:      28c6            cmp     r0, #198        ; 0xc6
+ 8007e20:      d051            beq.n   8007ec6 <__gnu_unwind_execute+0x1f6>
+ 8007e22:      28c7            cmp     r0, #199        ; 0xc7
+ 8007e24:      d05a            beq.n   8007edc <__gnu_unwind_execute+0x20c>
+ 8007e26:      f000 03f8       and.w   r3, r0, #248    ; 0xf8
+ 8007e2a:      2bc0            cmp     r3, #192        ; 0xc0
+ 8007e2c:      d069            beq.n   8007f02 <__gnu_unwind_execute+0x232>
+ 8007e2e:      28c8            cmp     r0, #200        ; 0xc8
+ 8007e30:      d075            beq.n   8007f1e <__gnu_unwind_execute+0x24e>
+ 8007e32:      28c9            cmp     r0, #201        ; 0xc9
+ 8007e34:      f47f af79       bne.w   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007e38:      4630            mov     r0, r6
+ 8007e3a:      f7ff ff1d       bl      8007c78 <next_unwind_byte>
+ 8007e3e:      0302            lsls    r2, r0, #12
+ 8007e40:      f000 000f       and.w   r0, r0, #15
+ 8007e44:      f402 2270       and.w   r2, r2, #983040 ; 0xf0000
+ 8007e48:      3001            adds    r0, #1
+ 8007e4a:      4302            orrs    r2, r0
+ 8007e4c:      e766            b.n     8007d1c <__gnu_unwind_execute+0x4c>
+ 8007e4e:      f1b8 0f00       cmp.w   r8, #0
+ 8007e52:      d014            beq.n   8007e7e <__gnu_unwind_execute+0x1ae>
+ 8007e54:      2000            movs    r0, #0
+ 8007e56:      e769            b.n     8007d2c <__gnu_unwind_execute+0x5c>
+ 8007e58:      4630            mov     r0, r6
+ 8007e5a:      f7ff ff0d       bl      8007c78 <next_unwind_byte>
+ 8007e5e:      2800            cmp     r0, #0
+ 8007e60:      f43f af63       beq.w   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007e64:      f010 03f0       ands.w  r3, r0, #240    ; 0xf0
+ 8007e68:      f47f af5f       bne.w   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007e6c:      4602            mov     r2, r0
+ 8007e6e:      4619            mov     r1, r3
+ 8007e70:      4628            mov     r0, r5
+ 8007e72:      f7ff fceb       bl      800784c <_Unwind_VRS_Pop>
+ 8007e76:      2800            cmp     r0, #0
+ 8007e78:      f43f af31       beq.w   8007cde <__gnu_unwind_execute+0xe>
+ 8007e7c:      e755            b.n     8007d2a <__gnu_unwind_execute+0x5a>
+ 8007e7e:      ac03            add     r4, sp, #12
+ 8007e80:      4643            mov     r3, r8
+ 8007e82:      220e            movs    r2, #14
+ 8007e84:      4641            mov     r1, r8
+ 8007e86:      9400            str     r4, [sp, #0]
+ 8007e88:      4628            mov     r0, r5
+ 8007e8a:      f7ff faf1       bl      8007470 <_Unwind_VRS_Get>
+ 8007e8e:      9400            str     r4, [sp, #0]
+ 8007e90:      4628            mov     r0, r5
+ 8007e92:      4643            mov     r3, r8
+ 8007e94:      220f            movs    r2, #15
+ 8007e96:      4641            mov     r1, r8
+ 8007e98:      f7ff fb0c       bl      80074b4 <_Unwind_VRS_Set>
+ 8007e9c:      4640            mov     r0, r8
+ 8007e9e:      e745            b.n     8007d2c <__gnu_unwind_execute+0x5c>
+ 8007ea0:      4630            mov     r0, r6
+ 8007ea2:      f7ff fee9       bl      8007c78 <next_unwind_byte>
+ 8007ea6:      0301            lsls    r1, r0, #12
+ 8007ea8:      f000 000f       and.w   r0, r0, #15
+ 8007eac:      f401 2170       and.w   r1, r1, #983040 ; 0xf0000
+ 8007eb0:      1c42            adds    r2, r0, #1
+ 8007eb2:      2301            movs    r3, #1
+ 8007eb4:      430a            orrs    r2, r1
+ 8007eb6:      4628            mov     r0, r5
+ 8007eb8:      4619            mov     r1, r3
+ 8007eba:      f7ff fcc7       bl      800784c <_Unwind_VRS_Pop>
+ 8007ebe:      2800            cmp     r0, #0
+ 8007ec0:      f43f af0d       beq.w   8007cde <__gnu_unwind_execute+0xe>
+ 8007ec4:      e731            b.n     8007d2a <__gnu_unwind_execute+0x5a>
+ 8007ec6:      4630            mov     r0, r6
+ 8007ec8:      f7ff fed6       bl      8007c78 <next_unwind_byte>
+ 8007ecc:      0301            lsls    r1, r0, #12
+ 8007ece:      f000 000f       and.w   r0, r0, #15
+ 8007ed2:      f401 2170       and.w   r1, r1, #983040 ; 0xf0000
+ 8007ed6:      1c42            adds    r2, r0, #1
+ 8007ed8:      2303            movs    r3, #3
+ 8007eda:      e7eb            b.n     8007eb4 <__gnu_unwind_execute+0x1e4>
+ 8007edc:      4630            mov     r0, r6
+ 8007ede:      f7ff fecb       bl      8007c78 <next_unwind_byte>
+ 8007ee2:      4602            mov     r2, r0
+ 8007ee4:      2800            cmp     r0, #0
+ 8007ee6:      f43f af20       beq.w   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007eea:      f010 03f0       ands.w  r3, r0, #240    ; 0xf0
+ 8007eee:      f47f af1c       bne.w   8007d2a <__gnu_unwind_execute+0x5a>
+ 8007ef2:      2104            movs    r1, #4
+ 8007ef4:      4628            mov     r0, r5
+ 8007ef6:      f7ff fca9       bl      800784c <_Unwind_VRS_Pop>
+ 8007efa:      2800            cmp     r0, #0
+ 8007efc:      f43f aeef       beq.w   8007cde <__gnu_unwind_execute+0xe>
+ 8007f00:      e713            b.n     8007d2a <__gnu_unwind_execute+0x5a>
+ 8007f02:      f000 020f       and.w   r2, r0, #15
+ 8007f06:      3201            adds    r2, #1
+ 8007f08:      2303            movs    r3, #3
+ 8007f0a:      f442 2220       orr.w   r2, r2, #655360 ; 0xa0000
+ 8007f0e:      4619            mov     r1, r3
+ 8007f10:      4628            mov     r0, r5
+ 8007f12:      f7ff fc9b       bl      800784c <_Unwind_VRS_Pop>
+ 8007f16:      2800            cmp     r0, #0
+ 8007f18:      f43f aee1       beq.w   8007cde <__gnu_unwind_execute+0xe>
+ 8007f1c:      e705            b.n     8007d2a <__gnu_unwind_execute+0x5a>
+ 8007f1e:      4630            mov     r0, r6
+ 8007f20:      f7ff feaa       bl      8007c78 <next_unwind_byte>
+ 8007f24:      f000 02f0       and.w   r2, r0, #240    ; 0xf0
+ 8007f28:      f000 030f       and.w   r3, r0, #15
+ 8007f2c:      3210            adds    r2, #16
+ 8007f2e:      3301            adds    r3, #1
+ 8007f30:      ea43 3202       orr.w   r2, r3, r2, lsl #12
+ 8007f34:      e6f2            b.n     8007d1c <__gnu_unwind_execute+0x4c>
+ 8007f36:      2300            movs    r3, #0
+ 8007f38:      f10d 090c       add.w   r9, sp, #12
+ 8007f3c:      220d            movs    r2, #13
+ 8007f3e:      4619            mov     r1, r3
+ 8007f40:      f8cd 9000       str.w   r9, [sp]
+ 8007f44:      4628            mov     r0, r5
+ 8007f46:      f7ff fa93       bl      8007470 <_Unwind_VRS_Get>
+ 8007f4a:      4630            mov     r0, r6
+ 8007f4c:      f7ff fe94       bl      8007c78 <next_unwind_byte>
+ 8007f50:      0602            lsls    r2, r0, #24
+ 8007f52:      f04f 0702       mov.w   r7, #2
+ 8007f56:      d50c            bpl.n   8007f72 <__gnu_unwind_execute+0x2a2>
+ 8007f58:      9b03            ldr     r3, [sp, #12]
+ 8007f5a:      f000 007f       and.w   r0, r0, #127    ; 0x7f
+ 8007f5e:      40b8            lsls    r0, r7
+ 8007f60:      4403            add     r3, r0
+ 8007f62:      4630            mov     r0, r6
+ 8007f64:      9303            str     r3, [sp, #12]
+ 8007f66:      f7ff fe87       bl      8007c78 <next_unwind_byte>
+ 8007f6a:      0603            lsls    r3, r0, #24
+ 8007f6c:      f107 0707       add.w   r7, r7, #7
+ 8007f70:      d4f2            bmi.n   8007f58 <__gnu_unwind_execute+0x288>
+ 8007f72:      9b03            ldr     r3, [sp, #12]
+ 8007f74:      f8cd 9000       str.w   r9, [sp]
+ 8007f78:      f000 047f       and.w   r4, r0, #127    ; 0x7f
+ 8007f7c:      f503 7201       add.w   r2, r3, #516    ; 0x204
+ 8007f80:      40bc            lsls    r4, r7
+ 8007f82:      2300            movs    r3, #0
+ 8007f84:      4414            add     r4, r2
+ 8007f86:      4619            mov     r1, r3
+ 8007f88:      220d            movs    r2, #13
+ 8007f8a:      4628            mov     r0, r5
+ 8007f8c:      9403            str     r4, [sp, #12]
+ 8007f8e:      f7ff fa91       bl      80074b4 <_Unwind_VRS_Set>
+ 8007f92:      e6a4            b.n     8007cde <__gnu_unwind_execute+0xe>
+
+08007f94 <__gnu_unwind_frame>:
+ 8007f94:      b510            push    {r4, lr}
+ 8007f96:      6cc3            ldr     r3, [r0, #76]   ; 0x4c
+ 8007f98:      b084            sub     sp, #16
+ 8007f9a:      685a            ldr     r2, [r3, #4]
+ 8007f9c:      2003            movs    r0, #3
+ 8007f9e:      f88d 000c       strb.w  r0, [sp, #12]
+ 8007fa2:      79dc            ldrb    r4, [r3, #7]
+ 8007fa4:      f88d 400d       strb.w  r4, [sp, #13]
+ 8007fa8:      0212            lsls    r2, r2, #8
+ 8007faa:      3308            adds    r3, #8
+ 8007fac:      4608            mov     r0, r1
+ 8007fae:      a901            add     r1, sp, #4
+ 8007fb0:      9201            str     r2, [sp, #4]
+ 8007fb2:      9302            str     r3, [sp, #8]
+ 8007fb4:      f7ff fe8c       bl      8007cd0 <__gnu_unwind_execute>
+ 8007fb8:      b004            add     sp, #16
+ 8007fba:      bd10            pop     {r4, pc}
+
+08007fbc <_Unwind_GetRegionStart>:
+ 8007fbc:      b508            push    {r3, lr}
+ 8007fbe:      f7ff fe85       bl      8007ccc <unwind_UCB_from_context>
+ 8007fc2:      6c80            ldr     r0, [r0, #72]   ; 0x48
+ 8007fc4:      bd08            pop     {r3, pc}
+ 8007fc6:      bf00            nop
+
+08007fc8 <_Unwind_GetLanguageSpecificData>:
+ 8007fc8:      b508            push    {r3, lr}
+ 8007fca:      f7ff fe7f       bl      8007ccc <unwind_UCB_from_context>
+ 8007fce:      6cc0            ldr     r0, [r0, #76]   ; 0x4c
+ 8007fd0:      79c3            ldrb    r3, [r0, #7]
+ 8007fd2:      eb00 0083       add.w   r0, r0, r3, lsl #2
+ 8007fd6:      3008            adds    r0, #8
+ 8007fd8:      bd08            pop     {r3, pc}
+ 8007fda:      bf00            nop
+
+08007fdc <_Unwind_GetDataRelBase>:
+ 8007fdc:      b508            push    {r3, lr}
+ 8007fde:      f005 fd2b       bl      800da38 <abort>
+ 8007fe2:      bf00            nop
+
+08007fe4 <_Unwind_GetTextRelBase>:
+ 8007fe4:      b508            push    {r3, lr}
+ 8007fe6:      f7ff fff9       bl      8007fdc <_Unwind_GetDataRelBase>
+ 8007fea:      bf00            nop
+
+08007fec <__aeabi_idiv0>:
+ 8007fec:      4770            bx      lr
+ 8007fee:      bf00            nop
+
+08007ff0 <HAL_Init>:
   *         need to ensure that the SysTick time base is always set to 1 millisecond
   *         to have correct HAL operation.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_Init(void)
 {
- 8000538:      b580            push    {r7, lr}
- 800053a:      af00            add     r7, sp, #0
+ 8007ff0:      b580            push    {r7, lr}
+ 8007ff2:      af00            add     r7, sp, #0
 #if (PREFETCH_ENABLE != 0U)
   __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
 #endif /* PREFETCH_ENABLE */
 
   /* Set Interrupt Group Priority */
   HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
- 800053c:      2003            movs    r0, #3
- 800053e:      f000 f90b       bl      8000758 <HAL_NVIC_SetPriorityGrouping>
+ 8007ff4:      2003            movs    r0, #3
+ 8007ff6:      f000 f92d       bl      8008254 <HAL_NVIC_SetPriorityGrouping>
 
   /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
   HAL_InitTick(TICK_INT_PRIORITY);
- 8000542:      2000            movs    r0, #0
- 8000544:      f000 f806       bl      8000554 <HAL_InitTick>
+ 8007ffa:      2000            movs    r0, #0
+ 8007ffc:      f000 f806       bl      800800c <HAL_InitTick>
   
   /* Init the low level hardware */
   HAL_MspInit();
- 8000548:      f002 f85a       bl      8002600 <HAL_MspInit>
+ 8008000:      f004 fab8       bl      800c574 <HAL_MspInit>
   
   /* Return function status */
   return HAL_OK;
- 800054c:      2300            movs    r3, #0
+ 8008004:      2300            movs    r3, #0
 }
- 800054e:      4618            mov     r0, r3
- 8000550:      bd80            pop     {r7, pc}
+ 8008006:      4618            mov     r0, r3
+ 8008008:      bd80            pop     {r7, pc}
        ...
 
-08000554 <HAL_InitTick>:
+0800800c <HAL_InitTick>:
   *       implementation  in user file.
   * @param TickPriority Tick interrupt priority.
   * @retval HAL status
   */
 __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
 {
- 8000554:      b580            push    {r7, lr}
- 8000556:      b082            sub     sp, #8
- 8000558:      af00            add     r7, sp, #0
- 800055a:      6078            str     r0, [r7, #4]
+ 800800c:      b580            push    {r7, lr}
+ 800800e:      b082            sub     sp, #8
+ 8008010:      af00            add     r7, sp, #0
+ 8008012:      6078            str     r0, [r7, #4]
   /* Configure the SysTick to have interrupt in 1ms time basis*/
   if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
- 800055c:      4b12            ldr     r3, [pc, #72]   ; (80005a8 <HAL_InitTick+0x54>)
- 800055e:      681a            ldr     r2, [r3, #0]
- 8000560:      4b12            ldr     r3, [pc, #72]   ; (80005ac <HAL_InitTick+0x58>)
- 8000562:      781b            ldrb    r3, [r3, #0]
- 8000564:      4619            mov     r1, r3
- 8000566:      f44f 737a       mov.w   r3, #1000       ; 0x3e8
- 800056a:      fbb3 f3f1       udiv    r3, r3, r1
- 800056e:      fbb2 f3f3       udiv    r3, r2, r3
- 8000572:      4618            mov     r0, r3
- 8000574:      f000 f917       bl      80007a6 <HAL_SYSTICK_Config>
- 8000578:      4603            mov     r3, r0
- 800057a:      2b00            cmp     r3, #0
- 800057c:      d001            beq.n   8000582 <HAL_InitTick+0x2e>
+ 8008014:      4b12            ldr     r3, [pc, #72]   ; (8008060 <HAL_InitTick+0x54>)
+ 8008016:      681a            ldr     r2, [r3, #0]
+ 8008018:      4b12            ldr     r3, [pc, #72]   ; (8008064 <HAL_InitTick+0x58>)
+ 800801a:      781b            ldrb    r3, [r3, #0]
+ 800801c:      4619            mov     r1, r3
+ 800801e:      f44f 737a       mov.w   r3, #1000       ; 0x3e8
+ 8008022:      fbb3 f3f1       udiv    r3, r3, r1
+ 8008026:      fbb2 f3f3       udiv    r3, r2, r3
+ 800802a:      4618            mov     r0, r3
+ 800802c:      f000 f939       bl      80082a2 <HAL_SYSTICK_Config>
+ 8008030:      4603            mov     r3, r0
+ 8008032:      2b00            cmp     r3, #0
+ 8008034:      d001            beq.n   800803a <HAL_InitTick+0x2e>
   {
     return HAL_ERROR;
- 800057e:      2301            movs    r3, #1
- 8000580:      e00e            b.n     80005a0 <HAL_InitTick+0x4c>
+ 8008036:      2301            movs    r3, #1
+ 8008038:      e00e            b.n     8008058 <HAL_InitTick+0x4c>
   }
 
   /* Configure the SysTick IRQ priority */
   if (TickPriority < (1UL << __NVIC_PRIO_BITS))
- 8000582:      687b            ldr     r3, [r7, #4]
- 8000584:      2b0f            cmp     r3, #15
- 8000586:      d80a            bhi.n   800059e <HAL_InitTick+0x4a>
+ 800803a:      687b            ldr     r3, [r7, #4]
+ 800803c:      2b0f            cmp     r3, #15
+ 800803e:      d80a            bhi.n   8008056 <HAL_InitTick+0x4a>
   {
     HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
- 8000588:      2200            movs    r2, #0
- 800058a:      6879            ldr     r1, [r7, #4]
- 800058c:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
- 8000590:      f000 f8ed       bl      800076e <HAL_NVIC_SetPriority>
+ 8008040:      2200            movs    r2, #0
+ 8008042:      6879            ldr     r1, [r7, #4]
+ 8008044:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 8008048:      f000 f90f       bl      800826a <HAL_NVIC_SetPriority>
     uwTickPrio = TickPriority;
- 8000594:      4a06            ldr     r2, [pc, #24]   ; (80005b0 <HAL_InitTick+0x5c>)
- 8000596:      687b            ldr     r3, [r7, #4]
- 8000598:      6013            str     r3, [r2, #0]
+ 800804c:      4a06            ldr     r2, [pc, #24]   ; (8008068 <HAL_InitTick+0x5c>)
+ 800804e:      687b            ldr     r3, [r7, #4]
+ 8008050:      6013            str     r3, [r2, #0]
   {
     return HAL_ERROR;
   }
 
   /* Return function status */
   return HAL_OK;
- 800059a:      2300            movs    r3, #0
- 800059c:      e000            b.n     80005a0 <HAL_InitTick+0x4c>
+ 8008052:      2300            movs    r3, #0
+ 8008054:      e000            b.n     8008058 <HAL_InitTick+0x4c>
     return HAL_ERROR;
- 800059e:      2301            movs    r3, #1
+ 8008056:      2301            movs    r3, #1
 }
- 80005a0:      4618            mov     r0, r3
- 80005a2:      3708            adds    r7, #8
- 80005a4:      46bd            mov     sp, r7
- 80005a6:      bd80            pop     {r7, pc}
- 80005a8:      20000008        .word   0x20000008
- 80005ac:      20000004        .word   0x20000004
- 80005b0:      20000000        .word   0x20000000
-
-080005b4 <HAL_IncTick>:
+ 8008058:      4618            mov     r0, r3
+ 800805a:      3708            adds    r7, #8
+ 800805c:      46bd            mov     sp, r7
+ 800805e:      bd80            pop     {r7, pc}
+ 8008060:      20000008        .word   0x20000008
+ 8008064:      20000004        .word   0x20000004
+ 8008068:      20000000        .word   0x20000000
+
+0800806c <HAL_IncTick>:
  * @note This function is declared as __weak to be overwritten in case of other 
   *      implementations in user file.
   * @retval None
   */
 __weak void HAL_IncTick(void)
 {
- 80005b4:      b480            push    {r7}
- 80005b6:      af00            add     r7, sp, #0
+ 800806c:      b480            push    {r7}
+ 800806e:      af00            add     r7, sp, #0
   uwTick += uwTickFreq;
- 80005b8:      4b06            ldr     r3, [pc, #24]   ; (80005d4 <HAL_IncTick+0x20>)
- 80005ba:      781b            ldrb    r3, [r3, #0]
- 80005bc:      461a            mov     r2, r3
- 80005be:      4b06            ldr     r3, [pc, #24]   ; (80005d8 <HAL_IncTick+0x24>)
- 80005c0:      681b            ldr     r3, [r3, #0]
- 80005c2:      4413            add     r3, r2
- 80005c4:      4a04            ldr     r2, [pc, #16]   ; (80005d8 <HAL_IncTick+0x24>)
- 80005c6:      6013            str     r3, [r2, #0]
+ 8008070:      4b06            ldr     r3, [pc, #24]   ; (800808c <HAL_IncTick+0x20>)
+ 8008072:      781b            ldrb    r3, [r3, #0]
+ 8008074:      461a            mov     r2, r3
+ 8008076:      4b06            ldr     r3, [pc, #24]   ; (8008090 <HAL_IncTick+0x24>)
+ 8008078:      681b            ldr     r3, [r3, #0]
+ 800807a:      4413            add     r3, r2
+ 800807c:      4a04            ldr     r2, [pc, #16]   ; (8008090 <HAL_IncTick+0x24>)
+ 800807e:      6013            str     r3, [r2, #0]
 }
- 80005c8:      bf00            nop
- 80005ca:      46bd            mov     sp, r7
- 80005cc:      f85d 7b04       ldr.w   r7, [sp], #4
- 80005d0:      4770            bx      lr
- 80005d2:      bf00            nop
- 80005d4:      20000004        .word   0x20000004
- 80005d8:      200000a8        .word   0x200000a8
-
-080005dc <HAL_GetTick>:
+ 8008080:      bf00            nop
+ 8008082:      46bd            mov     sp, r7
+ 8008084:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8008088:      4770            bx      lr
+ 800808a:      bf00            nop
+ 800808c:      20000004        .word   0x20000004
+ 8008090:      20000af8        .word   0x20000af8
+
+08008094 <HAL_GetTick>:
   * @note This function is declared as __weak to be overwritten in case of other 
   *       implementations in user file.
   * @retval tick value
   */
 __weak uint32_t HAL_GetTick(void)
 {
- 80005dc:      b480            push    {r7}
- 80005de:      af00            add     r7, sp, #0
+ 8008094:      b480            push    {r7}
+ 8008096:      af00            add     r7, sp, #0
   return uwTick;
- 80005e0:      4b03            ldr     r3, [pc, #12]   ; (80005f0 <HAL_GetTick+0x14>)
- 80005e2:      681b            ldr     r3, [r3, #0]
+ 8008098:      4b03            ldr     r3, [pc, #12]   ; (80080a8 <HAL_GetTick+0x14>)
+ 800809a:      681b            ldr     r3, [r3, #0]
+}
+ 800809c:      4618            mov     r0, r3
+ 800809e:      46bd            mov     sp, r7
+ 80080a0:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80080a4:      4770            bx      lr
+ 80080a6:      bf00            nop
+ 80080a8:      20000af8        .word   0x20000af8
+
+080080ac <HAL_Delay>:
+  *       implementations in user file.
+  * @param Delay  specifies the delay time length, in milliseconds.
+  * @retval None
+  */
+__weak void HAL_Delay(uint32_t Delay)
+{
+ 80080ac:      b580            push    {r7, lr}
+ 80080ae:      b084            sub     sp, #16
+ 80080b0:      af00            add     r7, sp, #0
+ 80080b2:      6078            str     r0, [r7, #4]
+  uint32_t tickstart = HAL_GetTick();
+ 80080b4:      f7ff ffee       bl      8008094 <HAL_GetTick>
+ 80080b8:      60b8            str     r0, [r7, #8]
+  uint32_t wait = Delay;
+ 80080ba:      687b            ldr     r3, [r7, #4]
+ 80080bc:      60fb            str     r3, [r7, #12]
+
+  /* Add a freq to guarantee minimum wait */
+  if (wait < HAL_MAX_DELAY)
+ 80080be:      68fb            ldr     r3, [r7, #12]
+ 80080c0:      f1b3 3fff       cmp.w   r3, #4294967295 ; 0xffffffff
+ 80080c4:      d005            beq.n   80080d2 <HAL_Delay+0x26>
+  {
+    wait += (uint32_t)(uwTickFreq);
+ 80080c6:      4b09            ldr     r3, [pc, #36]   ; (80080ec <HAL_Delay+0x40>)
+ 80080c8:      781b            ldrb    r3, [r3, #0]
+ 80080ca:      461a            mov     r2, r3
+ 80080cc:      68fb            ldr     r3, [r7, #12]
+ 80080ce:      4413            add     r3, r2
+ 80080d0:      60fb            str     r3, [r7, #12]
+  }
+
+  while ((HAL_GetTick() - tickstart) < wait)
+ 80080d2:      bf00            nop
+ 80080d4:      f7ff ffde       bl      8008094 <HAL_GetTick>
+ 80080d8:      4602            mov     r2, r0
+ 80080da:      68bb            ldr     r3, [r7, #8]
+ 80080dc:      1ad3            subs    r3, r2, r3
+ 80080de:      68fa            ldr     r2, [r7, #12]
+ 80080e0:      429a            cmp     r2, r3
+ 80080e2:      d8f7            bhi.n   80080d4 <HAL_Delay+0x28>
+  {
+  }
 }
- 80005e4:      4618            mov     r0, r3
- 80005e6:      46bd            mov     sp, r7
- 80005e8:      f85d 7b04       ldr.w   r7, [sp], #4
- 80005ec:      4770            bx      lr
- 80005ee:      bf00            nop
- 80005f0:      200000a8        .word   0x200000a8
-
-080005f4 <__NVIC_SetPriorityGrouping>:
+ 80080e4:      bf00            nop
+ 80080e6:      3710            adds    r7, #16
+ 80080e8:      46bd            mov     sp, r7
+ 80080ea:      bd80            pop     {r7, pc}
+ 80080ec:      20000004        .word   0x20000004
+
+080080f0 <__NVIC_SetPriorityGrouping>:
            In case of a conflict between priority grouping and available
            priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
   \param [in]      PriorityGroup  Priority grouping field.
  */
 __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
 {
- 80005f4:      b480            push    {r7}
- 80005f6:      b085            sub     sp, #20
- 80005f8:      af00            add     r7, sp, #0
- 80005fa:      6078            str     r0, [r7, #4]
+ 80080f0:      b480            push    {r7}
+ 80080f2:      b085            sub     sp, #20
+ 80080f4:      af00            add     r7, sp, #0
+ 80080f6:      6078            str     r0, [r7, #4]
   uint32_t reg_value;
   uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);             /* only values 0..7 are used          */
- 80005fc:      687b            ldr     r3, [r7, #4]
- 80005fe:      f003 0307       and.w   r3, r3, #7
- 8000602:      60fb            str     r3, [r7, #12]
+ 80080f8:      687b            ldr     r3, [r7, #4]
+ 80080fa:      f003 0307       and.w   r3, r3, #7
+ 80080fe:      60fb            str     r3, [r7, #12]
 
   reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */
- 8000604:      4b0b            ldr     r3, [pc, #44]   ; (8000634 <__NVIC_SetPriorityGrouping+0x40>)
- 8000606:      68db            ldr     r3, [r3, #12]
- 8000608:      60bb            str     r3, [r7, #8]
+ 8008100:      4b0b            ldr     r3, [pc, #44]   ; (8008130 <__NVIC_SetPriorityGrouping+0x40>)
+ 8008102:      68db            ldr     r3, [r3, #12]
+ 8008104:      60bb            str     r3, [r7, #8]
   reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change               */
- 800060a:      68ba            ldr     r2, [r7, #8]
- 800060c:      f64f 03ff       movw    r3, #63743      ; 0xf8ff
- 8000610:      4013            ands    r3, r2
- 8000612:      60bb            str     r3, [r7, #8]
+ 8008106:      68ba            ldr     r2, [r7, #8]
+ 8008108:      f64f 03ff       movw    r3, #63743      ; 0xf8ff
+ 800810c:      4013            ands    r3, r2
+ 800810e:      60bb            str     r3, [r7, #8]
   reg_value  =  (reg_value                                   |
                 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
                 (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos)  );              /* Insert write key and priority group */
- 8000614:      68fb            ldr     r3, [r7, #12]
- 8000616:      021a            lsls    r2, r3, #8
+ 8008110:      68fb            ldr     r3, [r7, #12]
+ 8008112:      021a            lsls    r2, r3, #8
                 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
- 8000618:      68bb            ldr     r3, [r7, #8]
- 800061a:      431a            orrs    r2, r3
+ 8008114:      68bb            ldr     r3, [r7, #8]
+ 8008116:      431a            orrs    r2, r3
   reg_value  =  (reg_value                                   |
- 800061c:      4b06            ldr     r3, [pc, #24]   ; (8000638 <__NVIC_SetPriorityGrouping+0x44>)
- 800061e:      4313            orrs    r3, r2
- 8000620:      60bb            str     r3, [r7, #8]
+ 8008118:      4b06            ldr     r3, [pc, #24]   ; (8008134 <__NVIC_SetPriorityGrouping+0x44>)
+ 800811a:      4313            orrs    r3, r2
+ 800811c:      60bb            str     r3, [r7, #8]
   SCB->AIRCR =  reg_value;
- 8000622:      4a04            ldr     r2, [pc, #16]   ; (8000634 <__NVIC_SetPriorityGrouping+0x40>)
- 8000624:      68bb            ldr     r3, [r7, #8]
- 8000626:      60d3            str     r3, [r2, #12]
+ 800811e:      4a04            ldr     r2, [pc, #16]   ; (8008130 <__NVIC_SetPriorityGrouping+0x40>)
+ 8008120:      68bb            ldr     r3, [r7, #8]
+ 8008122:      60d3            str     r3, [r2, #12]
 }
- 8000628:      bf00            nop
- 800062a:      3714            adds    r7, #20
- 800062c:      46bd            mov     sp, r7
- 800062e:      f85d 7b04       ldr.w   r7, [sp], #4
- 8000632:      4770            bx      lr
- 8000634:      e000ed00        .word   0xe000ed00
- 8000638:      05fa0000        .word   0x05fa0000
-
-0800063c <__NVIC_GetPriorityGrouping>:
+ 8008124:      bf00            nop
+ 8008126:      3714            adds    r7, #20
+ 8008128:      46bd            mov     sp, r7
+ 800812a:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800812e:      4770            bx      lr
+ 8008130:      e000ed00        .word   0xe000ed00
+ 8008134:      05fa0000        .word   0x05fa0000
+
+08008138 <__NVIC_GetPriorityGrouping>:
   \brief   Get Priority Grouping
   \details Reads the priority grouping field from the NVIC Interrupt Controller.
   \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
  */
 __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
 {
- 800063c:      b480            push    {r7}
- 800063e:      af00            add     r7, sp, #0
+ 8008138:      b480            push    {r7}
+ 800813a:      af00            add     r7, sp, #0
   return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
- 8000640:      4b04            ldr     r3, [pc, #16]   ; (8000654 <__NVIC_GetPriorityGrouping+0x18>)
- 8000642:      68db            ldr     r3, [r3, #12]
- 8000644:      0a1b            lsrs    r3, r3, #8
- 8000646:      f003 0307       and.w   r3, r3, #7
+ 800813c:      4b04            ldr     r3, [pc, #16]   ; (8008150 <__NVIC_GetPriorityGrouping+0x18>)
+ 800813e:      68db            ldr     r3, [r3, #12]
+ 8008140:      0a1b            lsrs    r3, r3, #8
+ 8008142:      f003 0307       and.w   r3, r3, #7
 }
- 800064a:      4618            mov     r0, r3
- 800064c:      46bd            mov     sp, r7
- 800064e:      f85d 7b04       ldr.w   r7, [sp], #4
- 8000652:      4770            bx      lr
- 8000654:      e000ed00        .word   0xe000ed00
+ 8008146:      4618            mov     r0, r3
+ 8008148:      46bd            mov     sp, r7
+ 800814a:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800814e:      4770            bx      lr
+ 8008150:      e000ed00        .word   0xe000ed00
 
-08000658 <__NVIC_SetPriority>:
+08008154 <__NVIC_SetPriority>:
   \param [in]      IRQn  Interrupt number.
   \param [in]  priority  Priority to set.
   \note    The priority cannot be set for every processor exception.
  */
 __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
 {
- 8000658:      b480            push    {r7}
- 800065a:      b083            sub     sp, #12
- 800065c:      af00            add     r7, sp, #0
- 800065e:      4603            mov     r3, r0
- 8000660:      6039            str     r1, [r7, #0]
- 8000662:      71fb            strb    r3, [r7, #7]
+ 8008154:      b480            push    {r7}
+ 8008156:      b083            sub     sp, #12
+ 8008158:      af00            add     r7, sp, #0
+ 800815a:      4603            mov     r3, r0
+ 800815c:      6039            str     r1, [r7, #0]
+ 800815e:      71fb            strb    r3, [r7, #7]
   if ((int32_t)(IRQn) >= 0)
- 8000664:      f997 3007       ldrsb.w r3, [r7, #7]
- 8000668:      2b00            cmp     r3, #0
- 800066a:      db0a            blt.n   8000682 <__NVIC_SetPriority+0x2a>
+ 8008160:      f997 3007       ldrsb.w r3, [r7, #7]
+ 8008164:      2b00            cmp     r3, #0
+ 8008166:      db0a            blt.n   800817e <__NVIC_SetPriority+0x2a>
   {
     NVIC->IP[((uint32_t)IRQn)]                = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
- 800066c:      683b            ldr     r3, [r7, #0]
- 800066e:      b2da            uxtb    r2, r3
- 8000670:      490c            ldr     r1, [pc, #48]   ; (80006a4 <__NVIC_SetPriority+0x4c>)
- 8000672:      f997 3007       ldrsb.w r3, [r7, #7]
- 8000676:      0112            lsls    r2, r2, #4
- 8000678:      b2d2            uxtb    r2, r2
- 800067a:      440b            add     r3, r1
- 800067c:      f883 2300       strb.w  r2, [r3, #768]  ; 0x300
+ 8008168:      683b            ldr     r3, [r7, #0]
+ 800816a:      b2da            uxtb    r2, r3
+ 800816c:      490c            ldr     r1, [pc, #48]   ; (80081a0 <__NVIC_SetPriority+0x4c>)
+ 800816e:      f997 3007       ldrsb.w r3, [r7, #7]
+ 8008172:      0112            lsls    r2, r2, #4
+ 8008174:      b2d2            uxtb    r2, r2
+ 8008176:      440b            add     r3, r1
+ 8008178:      f883 2300       strb.w  r2, [r3, #768]  ; 0x300
   }
   else
   {
     SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
   }
 }
- 8000680:      e00a            b.n     8000698 <__NVIC_SetPriority+0x40>
+ 800817c:      e00a            b.n     8008194 <__NVIC_SetPriority+0x40>
     SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
- 8000682:      683b            ldr     r3, [r7, #0]
- 8000684:      b2da            uxtb    r2, r3
- 8000686:      4908            ldr     r1, [pc, #32]   ; (80006a8 <__NVIC_SetPriority+0x50>)
- 8000688:      79fb            ldrb    r3, [r7, #7]
- 800068a:      f003 030f       and.w   r3, r3, #15
- 800068e:      3b04            subs    r3, #4
- 8000690:      0112            lsls    r2, r2, #4
- 8000692:      b2d2            uxtb    r2, r2
- 8000694:      440b            add     r3, r1
- 8000696:      761a            strb    r2, [r3, #24]
+ 800817e:      683b            ldr     r3, [r7, #0]
+ 8008180:      b2da            uxtb    r2, r3
+ 8008182:      4908            ldr     r1, [pc, #32]   ; (80081a4 <__NVIC_SetPriority+0x50>)
+ 8008184:      79fb            ldrb    r3, [r7, #7]
+ 8008186:      f003 030f       and.w   r3, r3, #15
+ 800818a:      3b04            subs    r3, #4
+ 800818c:      0112            lsls    r2, r2, #4
+ 800818e:      b2d2            uxtb    r2, r2
+ 8008190:      440b            add     r3, r1
+ 8008192:      761a            strb    r2, [r3, #24]
 }
- 8000698:      bf00            nop
- 800069a:      370c            adds    r7, #12
- 800069c:      46bd            mov     sp, r7
- 800069e:      f85d 7b04       ldr.w   r7, [sp], #4
- 80006a2:      4770            bx      lr
- 80006a4:      e000e100        .word   0xe000e100
- 80006a8:      e000ed00        .word   0xe000ed00
-
-080006ac <NVIC_EncodePriority>:
+ 8008194:      bf00            nop
+ 8008196:      370c            adds    r7, #12
+ 8008198:      46bd            mov     sp, r7
+ 800819a:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800819e:      4770            bx      lr
+ 80081a0:      e000e100        .word   0xe000e100
+ 80081a4:      e000ed00        .word   0xe000ed00
+
+080081a8 <NVIC_EncodePriority>:
   \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
   \param [in]       SubPriority  Subpriority value (starting from 0).
   \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
  */
 __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
 {
- 80006ac:      b480            push    {r7}
- 80006ae:      b089            sub     sp, #36 ; 0x24
- 80006b0:      af00            add     r7, sp, #0
- 80006b2:      60f8            str     r0, [r7, #12]
- 80006b4:      60b9            str     r1, [r7, #8]
- 80006b6:      607a            str     r2, [r7, #4]
+ 80081a8:      b480            push    {r7}
+ 80081aa:      b089            sub     sp, #36 ; 0x24
+ 80081ac:      af00            add     r7, sp, #0
+ 80081ae:      60f8            str     r0, [r7, #12]
+ 80081b0:      60b9            str     r1, [r7, #8]
+ 80081b2:      607a            str     r2, [r7, #4]
   uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
- 80006b8:      68fb            ldr     r3, [r7, #12]
- 80006ba:      f003 0307       and.w   r3, r3, #7
- 80006be:      61fb            str     r3, [r7, #28]
+ 80081b4:      68fb            ldr     r3, [r7, #12]
+ 80081b6:      f003 0307       and.w   r3, r3, #7
+ 80081ba:      61fb            str     r3, [r7, #28]
   uint32_t PreemptPriorityBits;
   uint32_t SubPriorityBits;
 
   PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
- 80006c0:      69fb            ldr     r3, [r7, #28]
- 80006c2:      f1c3 0307       rsb     r3, r3, #7
- 80006c6:      2b04            cmp     r3, #4
- 80006c8:      bf28            it      cs
- 80006ca:      2304            movcs   r3, #4
- 80006cc:      61bb            str     r3, [r7, #24]
+ 80081bc:      69fb            ldr     r3, [r7, #28]
+ 80081be:      f1c3 0307       rsb     r3, r3, #7
+ 80081c2:      2b04            cmp     r3, #4
+ 80081c4:      bf28            it      cs
+ 80081c6:      2304            movcs   r3, #4
+ 80081c8:      61bb            str     r3, [r7, #24]
   SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
- 80006ce:      69fb            ldr     r3, [r7, #28]
- 80006d0:      3304            adds    r3, #4
- 80006d2:      2b06            cmp     r3, #6
- 80006d4:      d902            bls.n   80006dc <NVIC_EncodePriority+0x30>
- 80006d6:      69fb            ldr     r3, [r7, #28]
- 80006d8:      3b03            subs    r3, #3
- 80006da:      e000            b.n     80006de <NVIC_EncodePriority+0x32>
- 80006dc:      2300            movs    r3, #0
- 80006de:      617b            str     r3, [r7, #20]
+ 80081ca:      69fb            ldr     r3, [r7, #28]
+ 80081cc:      3304            adds    r3, #4
+ 80081ce:      2b06            cmp     r3, #6
+ 80081d0:      d902            bls.n   80081d8 <NVIC_EncodePriority+0x30>
+ 80081d2:      69fb            ldr     r3, [r7, #28]
+ 80081d4:      3b03            subs    r3, #3
+ 80081d6:      e000            b.n     80081da <NVIC_EncodePriority+0x32>
+ 80081d8:      2300            movs    r3, #0
+ 80081da:      617b            str     r3, [r7, #20]
 
   return (
            ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
- 80006e0:      f04f 32ff       mov.w   r2, #4294967295 ; 0xffffffff
- 80006e4:      69bb            ldr     r3, [r7, #24]
- 80006e6:      fa02 f303       lsl.w   r3, r2, r3
- 80006ea:      43da            mvns    r2, r3
- 80006ec:      68bb            ldr     r3, [r7, #8]
- 80006ee:      401a            ands    r2, r3
- 80006f0:      697b            ldr     r3, [r7, #20]
- 80006f2:      409a            lsls    r2, r3
+ 80081dc:      f04f 32ff       mov.w   r2, #4294967295 ; 0xffffffff
+ 80081e0:      69bb            ldr     r3, [r7, #24]
+ 80081e2:      fa02 f303       lsl.w   r3, r2, r3
+ 80081e6:      43da            mvns    r2, r3
+ 80081e8:      68bb            ldr     r3, [r7, #8]
+ 80081ea:      401a            ands    r2, r3
+ 80081ec:      697b            ldr     r3, [r7, #20]
+ 80081ee:      409a            lsls    r2, r3
            ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
- 80006f4:      f04f 31ff       mov.w   r1, #4294967295 ; 0xffffffff
- 80006f8:      697b            ldr     r3, [r7, #20]
- 80006fa:      fa01 f303       lsl.w   r3, r1, r3
- 80006fe:      43d9            mvns    r1, r3
- 8000700:      687b            ldr     r3, [r7, #4]
- 8000702:      400b            ands    r3, r1
+ 80081f0:      f04f 31ff       mov.w   r1, #4294967295 ; 0xffffffff
+ 80081f4:      697b            ldr     r3, [r7, #20]
+ 80081f6:      fa01 f303       lsl.w   r3, r1, r3
+ 80081fa:      43d9            mvns    r1, r3
+ 80081fc:      687b            ldr     r3, [r7, #4]
+ 80081fe:      400b            ands    r3, r1
            ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
- 8000704:      4313            orrs    r3, r2
+ 8008200:      4313            orrs    r3, r2
          );
 }
- 8000706:      4618            mov     r0, r3
- 8000708:      3724            adds    r7, #36 ; 0x24
- 800070a:      46bd            mov     sp, r7
- 800070c:      f85d 7b04       ldr.w   r7, [sp], #4
- 8000710:      4770            bx      lr
+ 8008202:      4618            mov     r0, r3
+ 8008204:      3724            adds    r7, #36 ; 0x24
+ 8008206:      46bd            mov     sp, r7
+ 8008208:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800820c:      4770            bx      lr
        ...
 
-08000714 <SysTick_Config>:
+08008210 <SysTick_Config>:
   \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
            function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
            must contain a vendor-specific implementation of this function.
  */
 __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
 {
- 8000714:      b580            push    {r7, lr}
- 8000716:      b082            sub     sp, #8
- 8000718:      af00            add     r7, sp, #0
- 800071a:      6078            str     r0, [r7, #4]
+ 8008210:      b580            push    {r7, lr}
+ 8008212:      b082            sub     sp, #8
+ 8008214:      af00            add     r7, sp, #0
+ 8008216:      6078            str     r0, [r7, #4]
   if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
- 800071c:      687b            ldr     r3, [r7, #4]
- 800071e:      3b01            subs    r3, #1
- 8000720:      f1b3 7f80       cmp.w   r3, #16777216   ; 0x1000000
- 8000724:      d301            bcc.n   800072a <SysTick_Config+0x16>
+ 8008218:      687b            ldr     r3, [r7, #4]
+ 800821a:      3b01            subs    r3, #1
+ 800821c:      f1b3 7f80       cmp.w   r3, #16777216   ; 0x1000000
+ 8008220:      d301            bcc.n   8008226 <SysTick_Config+0x16>
   {
     return (1UL);                                                   /* Reload value impossible */
- 8000726:      2301            movs    r3, #1
- 8000728:      e00f            b.n     800074a <SysTick_Config+0x36>
+ 8008222:      2301            movs    r3, #1
+ 8008224:      e00f            b.n     8008246 <SysTick_Config+0x36>
   }
 
   SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
- 800072a:      4a0a            ldr     r2, [pc, #40]   ; (8000754 <SysTick_Config+0x40>)
- 800072c:      687b            ldr     r3, [r7, #4]
- 800072e:      3b01            subs    r3, #1
- 8000730:      6053            str     r3, [r2, #4]
+ 8008226:      4a0a            ldr     r2, [pc, #40]   ; (8008250 <SysTick_Config+0x40>)
+ 8008228:      687b            ldr     r3, [r7, #4]
+ 800822a:      3b01            subs    r3, #1
+ 800822c:      6053            str     r3, [r2, #4]
   NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
- 8000732:      210f            movs    r1, #15
- 8000734:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
- 8000738:      f7ff ff8e       bl      8000658 <__NVIC_SetPriority>
+ 800822e:      210f            movs    r1, #15
+ 8008230:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 8008234:      f7ff ff8e       bl      8008154 <__NVIC_SetPriority>
   SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
- 800073c:      4b05            ldr     r3, [pc, #20]   ; (8000754 <SysTick_Config+0x40>)
- 800073e:      2200            movs    r2, #0
- 8000740:      609a            str     r2, [r3, #8]
+ 8008238:      4b05            ldr     r3, [pc, #20]   ; (8008250 <SysTick_Config+0x40>)
+ 800823a:      2200            movs    r2, #0
+ 800823c:      609a            str     r2, [r3, #8]
   SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
- 8000742:      4b04            ldr     r3, [pc, #16]   ; (8000754 <SysTick_Config+0x40>)
- 8000744:      2207            movs    r2, #7
- 8000746:      601a            str     r2, [r3, #0]
+ 800823e:      4b04            ldr     r3, [pc, #16]   ; (8008250 <SysTick_Config+0x40>)
+ 8008240:      2207            movs    r2, #7
+ 8008242:      601a            str     r2, [r3, #0]
                    SysTick_CTRL_TICKINT_Msk   |
                    SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
   return (0UL);                                                     /* Function successful */
- 8000748:      2300            movs    r3, #0
+ 8008244:      2300            movs    r3, #0
 }
- 800074a:      4618            mov     r0, r3
- 800074c:      3708            adds    r7, #8
- 800074e:      46bd            mov     sp, r7
- 8000750:      bd80            pop     {r7, pc}
- 8000752:      bf00            nop
- 8000754:      e000e010        .word   0xe000e010
-
-08000758 <HAL_NVIC_SetPriorityGrouping>:
+ 8008246:      4618            mov     r0, r3
+ 8008248:      3708            adds    r7, #8
+ 800824a:      46bd            mov     sp, r7
+ 800824c:      bd80            pop     {r7, pc}
+ 800824e:      bf00            nop
+ 8008250:      e000e010        .word   0xe000e010
+
+08008254 <HAL_NVIC_SetPriorityGrouping>:
   * @note   When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. 
   *         The pending IRQ priority will be managed only by the subpriority. 
   * @retval None
   */
 void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
 {
- 8000758:      b580            push    {r7, lr}
- 800075a:      b082            sub     sp, #8
- 800075c:      af00            add     r7, sp, #0
- 800075e:      6078            str     r0, [r7, #4]
+ 8008254:      b580            push    {r7, lr}
+ 8008256:      b082            sub     sp, #8
+ 8008258:      af00            add     r7, sp, #0
+ 800825a:      6078            str     r0, [r7, #4]
   /* Check the parameters */
   assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
   
   /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
   NVIC_SetPriorityGrouping(PriorityGroup);
- 8000760:      6878            ldr     r0, [r7, #4]
- 8000762:      f7ff ff47       bl      80005f4 <__NVIC_SetPriorityGrouping>
+ 800825c:      6878            ldr     r0, [r7, #4]
+ 800825e:      f7ff ff47       bl      80080f0 <__NVIC_SetPriorityGrouping>
 }
- 8000766:      bf00            nop
- 8000768:      3708            adds    r7, #8
- 800076a:      46bd            mov     sp, r7
- 800076c:      bd80            pop     {r7, pc}
+ 8008262:      bf00            nop
+ 8008264:      3708            adds    r7, #8
+ 8008266:      46bd            mov     sp, r7
+ 8008268:      bd80            pop     {r7, pc}
 
-0800076e <HAL_NVIC_SetPriority>:
+0800826a <HAL_NVIC_SetPriority>:
   *         This parameter can be a value between 0 and 15
   *         A lower priority value indicates a higher priority.          
   * @retval None
   */
 void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
 { 
- 800076e:      b580            push    {r7, lr}
- 8000770:      b086            sub     sp, #24
- 8000772:      af00            add     r7, sp, #0
- 8000774:      4603            mov     r3, r0
- 8000776:      60b9            str     r1, [r7, #8]
- 8000778:      607a            str     r2, [r7, #4]
- 800077a:      73fb            strb    r3, [r7, #15]
+ 800826a:      b580            push    {r7, lr}
+ 800826c:      b086            sub     sp, #24
+ 800826e:      af00            add     r7, sp, #0
+ 8008270:      4603            mov     r3, r0
+ 8008272:      60b9            str     r1, [r7, #8]
+ 8008274:      607a            str     r2, [r7, #4]
+ 8008276:      73fb            strb    r3, [r7, #15]
   uint32_t prioritygroup = 0x00;
- 800077c:      2300            movs    r3, #0
- 800077e:      617b            str     r3, [r7, #20]
+ 8008278:      2300            movs    r3, #0
+ 800827a:      617b            str     r3, [r7, #20]
   
   /* Check the parameters */
   assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
   assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
   
   prioritygroup = NVIC_GetPriorityGrouping();
- 8000780:      f7ff ff5c       bl      800063c <__NVIC_GetPriorityGrouping>
- 8000784:      6178            str     r0, [r7, #20]
+ 800827c:      f7ff ff5c       bl      8008138 <__NVIC_GetPriorityGrouping>
+ 8008280:      6178            str     r0, [r7, #20]
   
   NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
- 8000786:      687a            ldr     r2, [r7, #4]
- 8000788:      68b9            ldr     r1, [r7, #8]
- 800078a:      6978            ldr     r0, [r7, #20]
- 800078c:      f7ff ff8e       bl      80006ac <NVIC_EncodePriority>
- 8000790:      4602            mov     r2, r0
- 8000792:      f997 300f       ldrsb.w r3, [r7, #15]
- 8000796:      4611            mov     r1, r2
- 8000798:      4618            mov     r0, r3
- 800079a:      f7ff ff5d       bl      8000658 <__NVIC_SetPriority>
+ 8008282:      687a            ldr     r2, [r7, #4]
+ 8008284:      68b9            ldr     r1, [r7, #8]
+ 8008286:      6978            ldr     r0, [r7, #20]
+ 8008288:      f7ff ff8e       bl      80081a8 <NVIC_EncodePriority>
+ 800828c:      4602            mov     r2, r0
+ 800828e:      f997 300f       ldrsb.w r3, [r7, #15]
+ 8008292:      4611            mov     r1, r2
+ 8008294:      4618            mov     r0, r3
+ 8008296:      f7ff ff5d       bl      8008154 <__NVIC_SetPriority>
 }
- 800079e:      bf00            nop
- 80007a0:      3718            adds    r7, #24
- 80007a2:      46bd            mov     sp, r7
- 80007a4:      bd80            pop     {r7, pc}
+ 800829a:      bf00            nop
+ 800829c:      3718            adds    r7, #24
+ 800829e:      46bd            mov     sp, r7
+ 80082a0:      bd80            pop     {r7, pc}
 
-080007a6 <HAL_SYSTICK_Config>:
+080082a2 <HAL_SYSTICK_Config>:
   * @param  TicksNumb Specifies the ticks Number of ticks between two interrupts.
   * @retval status:  - 0  Function succeeded.
   *                  - 1  Function failed.
   */
 uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
 {
- 80007a6:      b580            push    {r7, lr}
- 80007a8:      b082            sub     sp, #8
- 80007aa:      af00            add     r7, sp, #0
- 80007ac:      6078            str     r0, [r7, #4]
+ 80082a2:      b580            push    {r7, lr}
+ 80082a4:      b082            sub     sp, #8
+ 80082a6:      af00            add     r7, sp, #0
+ 80082a8:      6078            str     r0, [r7, #4]
    return SysTick_Config(TicksNumb);
- 80007ae:      6878            ldr     r0, [r7, #4]
- 80007b0:      f7ff ffb0       bl      8000714 <SysTick_Config>
- 80007b4:      4603            mov     r3, r0
+ 80082aa:      6878            ldr     r0, [r7, #4]
+ 80082ac:      f7ff ffb0       bl      8008210 <SysTick_Config>
+ 80082b0:      4603            mov     r3, r0
+}
+ 80082b2:      4618            mov     r0, r3
+ 80082b4:      3708            adds    r7, #8
+ 80082b6:      46bd            mov     sp, r7
+ 80082b8:      bd80            pop     {r7, pc}
+
+080082ba <HAL_DMA_Start_IT>:
+  * @param  DstAddress The destination memory Buffer address
+  * @param  DataLength The length of data to be transferred from source to destination
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
+{
+ 80082ba:      b580            push    {r7, lr}
+ 80082bc:      b086            sub     sp, #24
+ 80082be:      af00            add     r7, sp, #0
+ 80082c0:      60f8            str     r0, [r7, #12]
+ 80082c2:      60b9            str     r1, [r7, #8]
+ 80082c4:      607a            str     r2, [r7, #4]
+ 80082c6:      603b            str     r3, [r7, #0]
+  HAL_StatusTypeDef status = HAL_OK;
+ 80082c8:      2300            movs    r3, #0
+ 80082ca:      75fb            strb    r3, [r7, #23]
+
+  /* calculate DMA base and stream number */
+  DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress;
+ 80082cc:      68fb            ldr     r3, [r7, #12]
+ 80082ce:      6d9b            ldr     r3, [r3, #88]   ; 0x58
+ 80082d0:      613b            str     r3, [r7, #16]
+  
+  /* Check the parameters */
+  assert_param(IS_DMA_BUFFER_SIZE(DataLength));
+  /* Process locked */
+  __HAL_LOCK(hdma);
+ 80082d2:      68fb            ldr     r3, [r7, #12]
+ 80082d4:      f893 3034       ldrb.w  r3, [r3, #52]   ; 0x34
+ 80082d8:      2b01            cmp     r3, #1
+ 80082da:      d101            bne.n   80082e0 <HAL_DMA_Start_IT+0x26>
+ 80082dc:      2302            movs    r3, #2
+ 80082de:      e048            b.n     8008372 <HAL_DMA_Start_IT+0xb8>
+ 80082e0:      68fb            ldr     r3, [r7, #12]
+ 80082e2:      2201            movs    r2, #1
+ 80082e4:      f883 2034       strb.w  r2, [r3, #52]   ; 0x34
+  
+  if(HAL_DMA_STATE_READY == hdma->State)
+ 80082e8:      68fb            ldr     r3, [r7, #12]
+ 80082ea:      f893 3035       ldrb.w  r3, [r3, #53]   ; 0x35
+ 80082ee:      b2db            uxtb    r3, r3
+ 80082f0:      2b01            cmp     r3, #1
+ 80082f2:      d137            bne.n   8008364 <HAL_DMA_Start_IT+0xaa>
+  {
+    /* Change DMA peripheral state */
+    hdma->State = HAL_DMA_STATE_BUSY;
+ 80082f4:      68fb            ldr     r3, [r7, #12]
+ 80082f6:      2202            movs    r2, #2
+ 80082f8:      f883 2035       strb.w  r2, [r3, #53]   ; 0x35
+    
+    /* Initialize the error code */
+    hdma->ErrorCode = HAL_DMA_ERROR_NONE;
+ 80082fc:      68fb            ldr     r3, [r7, #12]
+ 80082fe:      2200            movs    r2, #0
+ 8008300:      655a            str     r2, [r3, #84]   ; 0x54
+    
+    /* Configure the source, destination address and the data length */
+    DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength);
+ 8008302:      683b            ldr     r3, [r7, #0]
+ 8008304:      687a            ldr     r2, [r7, #4]
+ 8008306:      68b9            ldr     r1, [r7, #8]
+ 8008308:      68f8            ldr     r0, [r7, #12]
+ 800830a:      f000 f836       bl      800837a <DMA_SetConfig>
+    
+    /* Clear all interrupt flags at correct offset within the register */
+    regs->IFCR = 0x3FU << hdma->StreamIndex;
+ 800830e:      68fb            ldr     r3, [r7, #12]
+ 8008310:      6ddb            ldr     r3, [r3, #92]   ; 0x5c
+ 8008312:      223f            movs    r2, #63 ; 0x3f
+ 8008314:      409a            lsls    r2, r3
+ 8008316:      693b            ldr     r3, [r7, #16]
+ 8008318:      609a            str     r2, [r3, #8]
+    
+    /* Enable Common interrupts*/
+    hdma->Instance->CR  |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME;
+ 800831a:      68fb            ldr     r3, [r7, #12]
+ 800831c:      681b            ldr     r3, [r3, #0]
+ 800831e:      681a            ldr     r2, [r3, #0]
+ 8008320:      68fb            ldr     r3, [r7, #12]
+ 8008322:      681b            ldr     r3, [r3, #0]
+ 8008324:      f042 0216       orr.w   r2, r2, #22
+ 8008328:      601a            str     r2, [r3, #0]
+    hdma->Instance->FCR |= DMA_IT_FE;
+ 800832a:      68fb            ldr     r3, [r7, #12]
+ 800832c:      681b            ldr     r3, [r3, #0]
+ 800832e:      695a            ldr     r2, [r3, #20]
+ 8008330:      68fb            ldr     r3, [r7, #12]
+ 8008332:      681b            ldr     r3, [r3, #0]
+ 8008334:      f042 0280       orr.w   r2, r2, #128    ; 0x80
+ 8008338:      615a            str     r2, [r3, #20]
+    
+    if(hdma->XferHalfCpltCallback != NULL)
+ 800833a:      68fb            ldr     r3, [r7, #12]
+ 800833c:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800833e:      2b00            cmp     r3, #0
+ 8008340:      d007            beq.n   8008352 <HAL_DMA_Start_IT+0x98>
+    {
+      hdma->Instance->CR  |= DMA_IT_HT;
+ 8008342:      68fb            ldr     r3, [r7, #12]
+ 8008344:      681b            ldr     r3, [r3, #0]
+ 8008346:      681a            ldr     r2, [r3, #0]
+ 8008348:      68fb            ldr     r3, [r7, #12]
+ 800834a:      681b            ldr     r3, [r3, #0]
+ 800834c:      f042 0208       orr.w   r2, r2, #8
+ 8008350:      601a            str     r2, [r3, #0]
+    }
+    
+    /* Enable the Peripheral */
+    __HAL_DMA_ENABLE(hdma);
+ 8008352:      68fb            ldr     r3, [r7, #12]
+ 8008354:      681b            ldr     r3, [r3, #0]
+ 8008356:      681a            ldr     r2, [r3, #0]
+ 8008358:      68fb            ldr     r3, [r7, #12]
+ 800835a:      681b            ldr     r3, [r3, #0]
+ 800835c:      f042 0201       orr.w   r2, r2, #1
+ 8008360:      601a            str     r2, [r3, #0]
+ 8008362:      e005            b.n     8008370 <HAL_DMA_Start_IT+0xb6>
+  }
+  else
+  {
+    /* Process unlocked */
+    __HAL_UNLOCK(hdma);          
+ 8008364:      68fb            ldr     r3, [r7, #12]
+ 8008366:      2200            movs    r2, #0
+ 8008368:      f883 2034       strb.w  r2, [r3, #52]   ; 0x34
+    
+    /* Return error status */
+    status = HAL_BUSY;
+ 800836c:      2302            movs    r3, #2
+ 800836e:      75fb            strb    r3, [r7, #23]
+  }
+  
+  return status;
+ 8008370:      7dfb            ldrb    r3, [r7, #23]
+}
+ 8008372:      4618            mov     r0, r3
+ 8008374:      3718            adds    r7, #24
+ 8008376:      46bd            mov     sp, r7
+ 8008378:      bd80            pop     {r7, pc}
+
+0800837a <DMA_SetConfig>:
+  * @param  DstAddress The destination memory Buffer address
+  * @param  DataLength The length of data to be transferred from source to destination
+  * @retval HAL status
+  */
+static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
+{
+ 800837a:      b480            push    {r7}
+ 800837c:      b085            sub     sp, #20
+ 800837e:      af00            add     r7, sp, #0
+ 8008380:      60f8            str     r0, [r7, #12]
+ 8008382:      60b9            str     r1, [r7, #8]
+ 8008384:      607a            str     r2, [r7, #4]
+ 8008386:      603b            str     r3, [r7, #0]
+  /* Clear DBM bit */
+  hdma->Instance->CR &= (uint32_t)(~DMA_SxCR_DBM);
+ 8008388:      68fb            ldr     r3, [r7, #12]
+ 800838a:      681b            ldr     r3, [r3, #0]
+ 800838c:      681a            ldr     r2, [r3, #0]
+ 800838e:      68fb            ldr     r3, [r7, #12]
+ 8008390:      681b            ldr     r3, [r3, #0]
+ 8008392:      f422 2280       bic.w   r2, r2, #262144 ; 0x40000
+ 8008396:      601a            str     r2, [r3, #0]
+
+  /* Configure DMA Stream data length */
+  hdma->Instance->NDTR = DataLength;
+ 8008398:      68fb            ldr     r3, [r7, #12]
+ 800839a:      681b            ldr     r3, [r3, #0]
+ 800839c:      683a            ldr     r2, [r7, #0]
+ 800839e:      605a            str     r2, [r3, #4]
+
+  /* Memory to Peripheral */
+  if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH)
+ 80083a0:      68fb            ldr     r3, [r7, #12]
+ 80083a2:      689b            ldr     r3, [r3, #8]
+ 80083a4:      2b40            cmp     r3, #64 ; 0x40
+ 80083a6:      d108            bne.n   80083ba <DMA_SetConfig+0x40>
+  {
+    /* Configure DMA Stream destination address */
+    hdma->Instance->PAR = DstAddress;
+ 80083a8:      68fb            ldr     r3, [r7, #12]
+ 80083aa:      681b            ldr     r3, [r3, #0]
+ 80083ac:      687a            ldr     r2, [r7, #4]
+ 80083ae:      609a            str     r2, [r3, #8]
+
+    /* Configure DMA Stream source address */
+    hdma->Instance->M0AR = SrcAddress;
+ 80083b0:      68fb            ldr     r3, [r7, #12]
+ 80083b2:      681b            ldr     r3, [r3, #0]
+ 80083b4:      68ba            ldr     r2, [r7, #8]
+ 80083b6:      60da            str     r2, [r3, #12]
+    hdma->Instance->PAR = SrcAddress;
+
+    /* Configure DMA Stream destination address */
+    hdma->Instance->M0AR = DstAddress;
+  }
+}
+ 80083b8:      e007            b.n     80083ca <DMA_SetConfig+0x50>
+    hdma->Instance->PAR = SrcAddress;
+ 80083ba:      68fb            ldr     r3, [r7, #12]
+ 80083bc:      681b            ldr     r3, [r3, #0]
+ 80083be:      68ba            ldr     r2, [r7, #8]
+ 80083c0:      609a            str     r2, [r3, #8]
+    hdma->Instance->M0AR = DstAddress;
+ 80083c2:      68fb            ldr     r3, [r7, #12]
+ 80083c4:      681b            ldr     r3, [r3, #0]
+ 80083c6:      687a            ldr     r2, [r7, #4]
+ 80083c8:      60da            str     r2, [r3, #12]
 }
- 80007b6:      4618            mov     r0, r3
- 80007b8:      3708            adds    r7, #8
- 80007ba:      46bd            mov     sp, r7
- 80007bc:      bd80            pop     {r7, pc}
+ 80083ca:      bf00            nop
+ 80083cc:      3714            adds    r7, #20
+ 80083ce:      46bd            mov     sp, r7
+ 80083d0:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80083d4:      4770            bx      lr
        ...
 
-080007c0 <HAL_GPIO_Init>:
+080083d8 <HAL_GPIO_Init>:
   * @param  GPIO_Init pointer to a GPIO_InitTypeDef structure that contains
   *         the configuration information for the specified GPIO peripheral.
   * @retval None
   */
 void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)
 {
- 80007c0:      b480            push    {r7}
- 80007c2:      b089            sub     sp, #36 ; 0x24
- 80007c4:      af00            add     r7, sp, #0
- 80007c6:      6078            str     r0, [r7, #4]
- 80007c8:      6039            str     r1, [r7, #0]
+ 80083d8:      b480            push    {r7}
+ 80083da:      b089            sub     sp, #36 ; 0x24
+ 80083dc:      af00            add     r7, sp, #0
+ 80083de:      6078            str     r0, [r7, #4]
+ 80083e0:      6039            str     r1, [r7, #0]
   uint32_t position = 0x00;
- 80007ca:      2300            movs    r3, #0
- 80007cc:      61fb            str     r3, [r7, #28]
+ 80083e2:      2300            movs    r3, #0
+ 80083e4:      61fb            str     r3, [r7, #28]
   uint32_t ioposition = 0x00;
- 80007ce:      2300            movs    r3, #0
- 80007d0:      617b            str     r3, [r7, #20]
+ 80083e6:      2300            movs    r3, #0
+ 80083e8:      617b            str     r3, [r7, #20]
   uint32_t iocurrent = 0x00;
- 80007d2:      2300            movs    r3, #0
- 80007d4:      613b            str     r3, [r7, #16]
+ 80083ea:      2300            movs    r3, #0
+ 80083ec:      613b            str     r3, [r7, #16]
   uint32_t temp = 0x00;
- 80007d6:      2300            movs    r3, #0
- 80007d8:      61bb            str     r3, [r7, #24]
+ 80083ee:      2300            movs    r3, #0
+ 80083f0:      61bb            str     r3, [r7, #24]
   assert_param(IS_GPIO_PIN(GPIO_Init->Pin));
   assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
   assert_param(IS_GPIO_PULL(GPIO_Init->Pull));
 
   /* Configure the port pins */
   for(position = 0; position < GPIO_NUMBER; position++)
- 80007da:      2300            movs    r3, #0
- 80007dc:      61fb            str     r3, [r7, #28]
- 80007de:      e175            b.n     8000acc <HAL_GPIO_Init+0x30c>
+ 80083f2:      2300            movs    r3, #0
+ 80083f4:      61fb            str     r3, [r7, #28]
+ 80083f6:      e175            b.n     80086e4 <HAL_GPIO_Init+0x30c>
   {
     /* Get the IO position */
     ioposition = ((uint32_t)0x01) << position;
- 80007e0:      2201            movs    r2, #1
- 80007e2:      69fb            ldr     r3, [r7, #28]
- 80007e4:      fa02 f303       lsl.w   r3, r2, r3
- 80007e8:      617b            str     r3, [r7, #20]
+ 80083f8:      2201            movs    r2, #1
+ 80083fa:      69fb            ldr     r3, [r7, #28]
+ 80083fc:      fa02 f303       lsl.w   r3, r2, r3
+ 8008400:      617b            str     r3, [r7, #20]
     /* Get the current IO position */
     iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
- 80007ea:      683b            ldr     r3, [r7, #0]
- 80007ec:      681b            ldr     r3, [r3, #0]
- 80007ee:      697a            ldr     r2, [r7, #20]
- 80007f0:      4013            ands    r3, r2
- 80007f2:      613b            str     r3, [r7, #16]
+ 8008402:      683b            ldr     r3, [r7, #0]
+ 8008404:      681b            ldr     r3, [r3, #0]
+ 8008406:      697a            ldr     r2, [r7, #20]
+ 8008408:      4013            ands    r3, r2
+ 800840a:      613b            str     r3, [r7, #16]
 
     if(iocurrent == ioposition)
- 80007f4:      693a            ldr     r2, [r7, #16]
- 80007f6:      697b            ldr     r3, [r7, #20]
- 80007f8:      429a            cmp     r2, r3
- 80007fa:      f040 8164       bne.w   8000ac6 <HAL_GPIO_Init+0x306>
+ 800840c:      693a            ldr     r2, [r7, #16]
+ 800840e:      697b            ldr     r3, [r7, #20]
+ 8008410:      429a            cmp     r2, r3
+ 8008412:      f040 8164       bne.w   80086de <HAL_GPIO_Init+0x306>
     {
       /*--------------------- GPIO Mode Configuration ------------------------*/
       /* In case of Alternate function mode selection */
       if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
- 80007fe:      683b            ldr     r3, [r7, #0]
- 8000800:      685b            ldr     r3, [r3, #4]
- 8000802:      2b02            cmp     r3, #2
- 8000804:      d003            beq.n   800080e <HAL_GPIO_Init+0x4e>
- 8000806:      683b            ldr     r3, [r7, #0]
- 8000808:      685b            ldr     r3, [r3, #4]
- 800080a:      2b12            cmp     r3, #18
- 800080c:      d123            bne.n   8000856 <HAL_GPIO_Init+0x96>
+ 8008416:      683b            ldr     r3, [r7, #0]
+ 8008418:      685b            ldr     r3, [r3, #4]
+ 800841a:      2b02            cmp     r3, #2
+ 800841c:      d003            beq.n   8008426 <HAL_GPIO_Init+0x4e>
+ 800841e:      683b            ldr     r3, [r7, #0]
+ 8008420:      685b            ldr     r3, [r3, #4]
+ 8008422:      2b12            cmp     r3, #18
+ 8008424:      d123            bne.n   800846e <HAL_GPIO_Init+0x96>
       {
         /* Check the Alternate function parameter */
         assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
         
         /* Configure Alternate function mapped with the current IO */
         temp = GPIOx->AFR[position >> 3];
- 800080e:      69fb            ldr     r3, [r7, #28]
- 8000810:      08da            lsrs    r2, r3, #3
- 8000812:      687b            ldr     r3, [r7, #4]
- 8000814:      3208            adds    r2, #8
- 8000816:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
- 800081a:      61bb            str     r3, [r7, #24]
+ 8008426:      69fb            ldr     r3, [r7, #28]
+ 8008428:      08da            lsrs    r2, r3, #3
+ 800842a:      687b            ldr     r3, [r7, #4]
+ 800842c:      3208            adds    r2, #8
+ 800842e:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 8008432:      61bb            str     r3, [r7, #24]
         temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
- 800081c:      69fb            ldr     r3, [r7, #28]
- 800081e:      f003 0307       and.w   r3, r3, #7
- 8000822:      009b            lsls    r3, r3, #2
- 8000824:      220f            movs    r2, #15
- 8000826:      fa02 f303       lsl.w   r3, r2, r3
- 800082a:      43db            mvns    r3, r3
- 800082c:      69ba            ldr     r2, [r7, #24]
- 800082e:      4013            ands    r3, r2
- 8000830:      61bb            str     r3, [r7, #24]
+ 8008434:      69fb            ldr     r3, [r7, #28]
+ 8008436:      f003 0307       and.w   r3, r3, #7
+ 800843a:      009b            lsls    r3, r3, #2
+ 800843c:      220f            movs    r2, #15
+ 800843e:      fa02 f303       lsl.w   r3, r2, r3
+ 8008442:      43db            mvns    r3, r3
+ 8008444:      69ba            ldr     r2, [r7, #24]
+ 8008446:      4013            ands    r3, r2
+ 8008448:      61bb            str     r3, [r7, #24]
         temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
- 8000832:      683b            ldr     r3, [r7, #0]
- 8000834:      691a            ldr     r2, [r3, #16]
- 8000836:      69fb            ldr     r3, [r7, #28]
- 8000838:      f003 0307       and.w   r3, r3, #7
- 800083c:      009b            lsls    r3, r3, #2
- 800083e:      fa02 f303       lsl.w   r3, r2, r3
- 8000842:      69ba            ldr     r2, [r7, #24]
- 8000844:      4313            orrs    r3, r2
- 8000846:      61bb            str     r3, [r7, #24]
+ 800844a:      683b            ldr     r3, [r7, #0]
+ 800844c:      691a            ldr     r2, [r3, #16]
+ 800844e:      69fb            ldr     r3, [r7, #28]
+ 8008450:      f003 0307       and.w   r3, r3, #7
+ 8008454:      009b            lsls    r3, r3, #2
+ 8008456:      fa02 f303       lsl.w   r3, r2, r3
+ 800845a:      69ba            ldr     r2, [r7, #24]
+ 800845c:      4313            orrs    r3, r2
+ 800845e:      61bb            str     r3, [r7, #24]
         GPIOx->AFR[position >> 3] = temp;
- 8000848:      69fb            ldr     r3, [r7, #28]
- 800084a:      08da            lsrs    r2, r3, #3
- 800084c:      687b            ldr     r3, [r7, #4]
- 800084e:      3208            adds    r2, #8
- 8000850:      69b9            ldr     r1, [r7, #24]
- 8000852:      f843 1022       str.w   r1, [r3, r2, lsl #2]
+ 8008460:      69fb            ldr     r3, [r7, #28]
+ 8008462:      08da            lsrs    r2, r3, #3
+ 8008464:      687b            ldr     r3, [r7, #4]
+ 8008466:      3208            adds    r2, #8
+ 8008468:      69b9            ldr     r1, [r7, #24]
+ 800846a:      f843 1022       str.w   r1, [r3, r2, lsl #2]
       }
 
       /* Configure IO Direction mode (Input, Output, Alternate or Analog) */
       temp = GPIOx->MODER;
- 8000856:      687b            ldr     r3, [r7, #4]
- 8000858:      681b            ldr     r3, [r3, #0]
- 800085a:      61bb            str     r3, [r7, #24]
+ 800846e:      687b            ldr     r3, [r7, #4]
+ 8008470:      681b            ldr     r3, [r3, #0]
+ 8008472:      61bb            str     r3, [r7, #24]
       temp &= ~(GPIO_MODER_MODER0 << (position * 2));
- 800085c:      69fb            ldr     r3, [r7, #28]
- 800085e:      005b            lsls    r3, r3, #1
- 8000860:      2203            movs    r2, #3
- 8000862:      fa02 f303       lsl.w   r3, r2, r3
- 8000866:      43db            mvns    r3, r3
- 8000868:      69ba            ldr     r2, [r7, #24]
- 800086a:      4013            ands    r3, r2
- 800086c:      61bb            str     r3, [r7, #24]
+ 8008474:      69fb            ldr     r3, [r7, #28]
+ 8008476:      005b            lsls    r3, r3, #1
+ 8008478:      2203            movs    r2, #3
+ 800847a:      fa02 f303       lsl.w   r3, r2, r3
+ 800847e:      43db            mvns    r3, r3
+ 8008480:      69ba            ldr     r2, [r7, #24]
+ 8008482:      4013            ands    r3, r2
+ 8008484:      61bb            str     r3, [r7, #24]
       temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
- 800086e:      683b            ldr     r3, [r7, #0]
- 8000870:      685b            ldr     r3, [r3, #4]
- 8000872:      f003 0203       and.w   r2, r3, #3
- 8000876:      69fb            ldr     r3, [r7, #28]
- 8000878:      005b            lsls    r3, r3, #1
- 800087a:      fa02 f303       lsl.w   r3, r2, r3
- 800087e:      69ba            ldr     r2, [r7, #24]
- 8000880:      4313            orrs    r3, r2
- 8000882:      61bb            str     r3, [r7, #24]
+ 8008486:      683b            ldr     r3, [r7, #0]
+ 8008488:      685b            ldr     r3, [r3, #4]
+ 800848a:      f003 0203       and.w   r2, r3, #3
+ 800848e:      69fb            ldr     r3, [r7, #28]
+ 8008490:      005b            lsls    r3, r3, #1
+ 8008492:      fa02 f303       lsl.w   r3, r2, r3
+ 8008496:      69ba            ldr     r2, [r7, #24]
+ 8008498:      4313            orrs    r3, r2
+ 800849a:      61bb            str     r3, [r7, #24]
       GPIOx->MODER = temp;
- 8000884:      687b            ldr     r3, [r7, #4]
- 8000886:      69ba            ldr     r2, [r7, #24]
- 8000888:      601a            str     r2, [r3, #0]
+ 800849c:      687b            ldr     r3, [r7, #4]
+ 800849e:      69ba            ldr     r2, [r7, #24]
+ 80084a0:      601a            str     r2, [r3, #0]
 
       /* In case of Output or Alternate function mode selection */
       if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
- 800088a:      683b            ldr     r3, [r7, #0]
- 800088c:      685b            ldr     r3, [r3, #4]
- 800088e:      2b01            cmp     r3, #1
- 8000890:      d00b            beq.n   80008aa <HAL_GPIO_Init+0xea>
- 8000892:      683b            ldr     r3, [r7, #0]
- 8000894:      685b            ldr     r3, [r3, #4]
- 8000896:      2b02            cmp     r3, #2
- 8000898:      d007            beq.n   80008aa <HAL_GPIO_Init+0xea>
+ 80084a2:      683b            ldr     r3, [r7, #0]
+ 80084a4:      685b            ldr     r3, [r3, #4]
+ 80084a6:      2b01            cmp     r3, #1
+ 80084a8:      d00b            beq.n   80084c2 <HAL_GPIO_Init+0xea>
+ 80084aa:      683b            ldr     r3, [r7, #0]
+ 80084ac:      685b            ldr     r3, [r3, #4]
+ 80084ae:      2b02            cmp     r3, #2
+ 80084b0:      d007            beq.n   80084c2 <HAL_GPIO_Init+0xea>
          (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
- 800089a:      683b            ldr     r3, [r7, #0]
- 800089c:      685b            ldr     r3, [r3, #4]
+ 80084b2:      683b            ldr     r3, [r7, #0]
+ 80084b4:      685b            ldr     r3, [r3, #4]
       if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
- 800089e:      2b11            cmp     r3, #17
- 80008a0:      d003            beq.n   80008aa <HAL_GPIO_Init+0xea>
+ 80084b6:      2b11            cmp     r3, #17
+ 80084b8:      d003            beq.n   80084c2 <HAL_GPIO_Init+0xea>
          (GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
- 80008a2:      683b            ldr     r3, [r7, #0]
- 80008a4:      685b            ldr     r3, [r3, #4]
- 80008a6:      2b12            cmp     r3, #18
- 80008a8:      d130            bne.n   800090c <HAL_GPIO_Init+0x14c>
+ 80084ba:      683b            ldr     r3, [r7, #0]
+ 80084bc:      685b            ldr     r3, [r3, #4]
+ 80084be:      2b12            cmp     r3, #18
+ 80084c0:      d130            bne.n   8008524 <HAL_GPIO_Init+0x14c>
       {
         /* Check the Speed parameter */
         assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));
         /* Configure the IO Speed */
         temp = GPIOx->OSPEEDR; 
- 80008aa:      687b            ldr     r3, [r7, #4]
- 80008ac:      689b            ldr     r3, [r3, #8]
- 80008ae:      61bb            str     r3, [r7, #24]
+ 80084c2:      687b            ldr     r3, [r7, #4]
+ 80084c4:      689b            ldr     r3, [r3, #8]
+ 80084c6:      61bb            str     r3, [r7, #24]
         temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
- 80008b0:      69fb            ldr     r3, [r7, #28]
- 80008b2:      005b            lsls    r3, r3, #1
- 80008b4:      2203            movs    r2, #3
- 80008b6:      fa02 f303       lsl.w   r3, r2, r3
- 80008ba:      43db            mvns    r3, r3
- 80008bc:      69ba            ldr     r2, [r7, #24]
- 80008be:      4013            ands    r3, r2
- 80008c0:      61bb            str     r3, [r7, #24]
+ 80084c8:      69fb            ldr     r3, [r7, #28]
+ 80084ca:      005b            lsls    r3, r3, #1
+ 80084cc:      2203            movs    r2, #3
+ 80084ce:      fa02 f303       lsl.w   r3, r2, r3
+ 80084d2:      43db            mvns    r3, r3
+ 80084d4:      69ba            ldr     r2, [r7, #24]
+ 80084d6:      4013            ands    r3, r2
+ 80084d8:      61bb            str     r3, [r7, #24]
         temp |= (GPIO_Init->Speed << (position * 2));
- 80008c2:      683b            ldr     r3, [r7, #0]
- 80008c4:      68da            ldr     r2, [r3, #12]
- 80008c6:      69fb            ldr     r3, [r7, #28]
- 80008c8:      005b            lsls    r3, r3, #1
- 80008ca:      fa02 f303       lsl.w   r3, r2, r3
- 80008ce:      69ba            ldr     r2, [r7, #24]
- 80008d0:      4313            orrs    r3, r2
- 80008d2:      61bb            str     r3, [r7, #24]
+ 80084da:      683b            ldr     r3, [r7, #0]
+ 80084dc:      68da            ldr     r2, [r3, #12]
+ 80084de:      69fb            ldr     r3, [r7, #28]
+ 80084e0:      005b            lsls    r3, r3, #1
+ 80084e2:      fa02 f303       lsl.w   r3, r2, r3
+ 80084e6:      69ba            ldr     r2, [r7, #24]
+ 80084e8:      4313            orrs    r3, r2
+ 80084ea:      61bb            str     r3, [r7, #24]
         GPIOx->OSPEEDR = temp;
- 80008d4:      687b            ldr     r3, [r7, #4]
- 80008d6:      69ba            ldr     r2, [r7, #24]
- 80008d8:      609a            str     r2, [r3, #8]
+ 80084ec:      687b            ldr     r3, [r7, #4]
+ 80084ee:      69ba            ldr     r2, [r7, #24]
+ 80084f0:      609a            str     r2, [r3, #8]
 
         /* Configure the IO Output Type */
         temp = GPIOx->OTYPER;
- 80008da:      687b            ldr     r3, [r7, #4]
- 80008dc:      685b            ldr     r3, [r3, #4]
- 80008de:      61bb            str     r3, [r7, #24]
+ 80084f2:      687b            ldr     r3, [r7, #4]
+ 80084f4:      685b            ldr     r3, [r3, #4]
+ 80084f6:      61bb            str     r3, [r7, #24]
         temp &= ~(GPIO_OTYPER_OT_0 << position) ;
- 80008e0:      2201            movs    r2, #1
- 80008e2:      69fb            ldr     r3, [r7, #28]
- 80008e4:      fa02 f303       lsl.w   r3, r2, r3
- 80008e8:      43db            mvns    r3, r3
- 80008ea:      69ba            ldr     r2, [r7, #24]
- 80008ec:      4013            ands    r3, r2
- 80008ee:      61bb            str     r3, [r7, #24]
+ 80084f8:      2201            movs    r2, #1
+ 80084fa:      69fb            ldr     r3, [r7, #28]
+ 80084fc:      fa02 f303       lsl.w   r3, r2, r3
+ 8008500:      43db            mvns    r3, r3
+ 8008502:      69ba            ldr     r2, [r7, #24]
+ 8008504:      4013            ands    r3, r2
+ 8008506:      61bb            str     r3, [r7, #24]
         temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4) << position);
- 80008f0:      683b            ldr     r3, [r7, #0]
- 80008f2:      685b            ldr     r3, [r3, #4]
- 80008f4:      091b            lsrs    r3, r3, #4
- 80008f6:      f003 0201       and.w   r2, r3, #1
- 80008fa:      69fb            ldr     r3, [r7, #28]
- 80008fc:      fa02 f303       lsl.w   r3, r2, r3
- 8000900:      69ba            ldr     r2, [r7, #24]
- 8000902:      4313            orrs    r3, r2
- 8000904:      61bb            str     r3, [r7, #24]
+ 8008508:      683b            ldr     r3, [r7, #0]
+ 800850a:      685b            ldr     r3, [r3, #4]
+ 800850c:      091b            lsrs    r3, r3, #4
+ 800850e:      f003 0201       and.w   r2, r3, #1
+ 8008512:      69fb            ldr     r3, [r7, #28]
+ 8008514:      fa02 f303       lsl.w   r3, r2, r3
+ 8008518:      69ba            ldr     r2, [r7, #24]
+ 800851a:      4313            orrs    r3, r2
+ 800851c:      61bb            str     r3, [r7, #24]
         GPIOx->OTYPER = temp;
- 8000906:      687b            ldr     r3, [r7, #4]
- 8000908:      69ba            ldr     r2, [r7, #24]
- 800090a:      605a            str     r2, [r3, #4]
+ 800851e:      687b            ldr     r3, [r7, #4]
+ 8008520:      69ba            ldr     r2, [r7, #24]
+ 8008522:      605a            str     r2, [r3, #4]
       }
 
       /* Activate the Pull-up or Pull down resistor for the current IO */
       temp = GPIOx->PUPDR;
- 800090c:      687b            ldr     r3, [r7, #4]
- 800090e:      68db            ldr     r3, [r3, #12]
- 8000910:      61bb            str     r3, [r7, #24]
+ 8008524:      687b            ldr     r3, [r7, #4]
+ 8008526:      68db            ldr     r3, [r3, #12]
+ 8008528:      61bb            str     r3, [r7, #24]
       temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
- 8000912:      69fb            ldr     r3, [r7, #28]
- 8000914:      005b            lsls    r3, r3, #1
- 8000916:      2203            movs    r2, #3
- 8000918:      fa02 f303       lsl.w   r3, r2, r3
- 800091c:      43db            mvns    r3, r3
- 800091e:      69ba            ldr     r2, [r7, #24]
- 8000920:      4013            ands    r3, r2
- 8000922:      61bb            str     r3, [r7, #24]
+ 800852a:      69fb            ldr     r3, [r7, #28]
+ 800852c:      005b            lsls    r3, r3, #1
+ 800852e:      2203            movs    r2, #3
+ 8008530:      fa02 f303       lsl.w   r3, r2, r3
+ 8008534:      43db            mvns    r3, r3
+ 8008536:      69ba            ldr     r2, [r7, #24]
+ 8008538:      4013            ands    r3, r2
+ 800853a:      61bb            str     r3, [r7, #24]
       temp |= ((GPIO_Init->Pull) << (position * 2));
- 8000924:      683b            ldr     r3, [r7, #0]
- 8000926:      689a            ldr     r2, [r3, #8]
- 8000928:      69fb            ldr     r3, [r7, #28]
- 800092a:      005b            lsls    r3, r3, #1
- 800092c:      fa02 f303       lsl.w   r3, r2, r3
- 8000930:      69ba            ldr     r2, [r7, #24]
- 8000932:      4313            orrs    r3, r2
- 8000934:      61bb            str     r3, [r7, #24]
+ 800853c:      683b            ldr     r3, [r7, #0]
+ 800853e:      689a            ldr     r2, [r3, #8]
+ 8008540:      69fb            ldr     r3, [r7, #28]
+ 8008542:      005b            lsls    r3, r3, #1
+ 8008544:      fa02 f303       lsl.w   r3, r2, r3
+ 8008548:      69ba            ldr     r2, [r7, #24]
+ 800854a:      4313            orrs    r3, r2
+ 800854c:      61bb            str     r3, [r7, #24]
       GPIOx->PUPDR = temp;
- 8000936:      687b            ldr     r3, [r7, #4]
- 8000938:      69ba            ldr     r2, [r7, #24]
- 800093a:      60da            str     r2, [r3, #12]
+ 800854e:      687b            ldr     r3, [r7, #4]
+ 8008550:      69ba            ldr     r2, [r7, #24]
+ 8008552:      60da            str     r2, [r3, #12]
 
       /*--------------------- EXTI Mode Configuration ------------------------*/
       /* Configure the External Interrupt or event for the current IO */
       if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
- 800093c:      683b            ldr     r3, [r7, #0]
- 800093e:      685b            ldr     r3, [r3, #4]
- 8000940:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 8000944:      2b00            cmp     r3, #0
- 8000946:      f000 80be       beq.w   8000ac6 <HAL_GPIO_Init+0x306>
+ 8008554:      683b            ldr     r3, [r7, #0]
+ 8008556:      685b            ldr     r3, [r3, #4]
+ 8008558:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 800855c:      2b00            cmp     r3, #0
+ 800855e:      f000 80be       beq.w   80086de <HAL_GPIO_Init+0x306>
       {
         /* Enable SYSCFG Clock */
         __HAL_RCC_SYSCFG_CLK_ENABLE();
- 800094a:      4b65            ldr     r3, [pc, #404]  ; (8000ae0 <HAL_GPIO_Init+0x320>)
- 800094c:      6c5b            ldr     r3, [r3, #68]   ; 0x44
- 800094e:      4a64            ldr     r2, [pc, #400]  ; (8000ae0 <HAL_GPIO_Init+0x320>)
- 8000950:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
- 8000954:      6453            str     r3, [r2, #68]   ; 0x44
- 8000956:      4b62            ldr     r3, [pc, #392]  ; (8000ae0 <HAL_GPIO_Init+0x320>)
- 8000958:      6c5b            ldr     r3, [r3, #68]   ; 0x44
- 800095a:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
- 800095e:      60fb            str     r3, [r7, #12]
- 8000960:      68fb            ldr     r3, [r7, #12]
+ 8008562:      4b65            ldr     r3, [pc, #404]  ; (80086f8 <HAL_GPIO_Init+0x320>)
+ 8008564:      6c5b            ldr     r3, [r3, #68]   ; 0x44
+ 8008566:      4a64            ldr     r2, [pc, #400]  ; (80086f8 <HAL_GPIO_Init+0x320>)
+ 8008568:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
+ 800856c:      6453            str     r3, [r2, #68]   ; 0x44
+ 800856e:      4b62            ldr     r3, [pc, #392]  ; (80086f8 <HAL_GPIO_Init+0x320>)
+ 8008570:      6c5b            ldr     r3, [r3, #68]   ; 0x44
+ 8008572:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
+ 8008576:      60fb            str     r3, [r7, #12]
+ 8008578:      68fb            ldr     r3, [r7, #12]
 
         temp = SYSCFG->EXTICR[position >> 2];
- 8000962:      4a60            ldr     r2, [pc, #384]  ; (8000ae4 <HAL_GPIO_Init+0x324>)
- 8000964:      69fb            ldr     r3, [r7, #28]
- 8000966:      089b            lsrs    r3, r3, #2
- 8000968:      3302            adds    r3, #2
- 800096a:      f852 3023       ldr.w   r3, [r2, r3, lsl #2]
- 800096e:      61bb            str     r3, [r7, #24]
+ 800857a:      4a60            ldr     r2, [pc, #384]  ; (80086fc <HAL_GPIO_Init+0x324>)
+ 800857c:      69fb            ldr     r3, [r7, #28]
+ 800857e:      089b            lsrs    r3, r3, #2
+ 8008580:      3302            adds    r3, #2
+ 8008582:      f852 3023       ldr.w   r3, [r2, r3, lsl #2]
+ 8008586:      61bb            str     r3, [r7, #24]
         temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03)));
- 8000970:      69fb            ldr     r3, [r7, #28]
- 8000972:      f003 0303       and.w   r3, r3, #3
- 8000976:      009b            lsls    r3, r3, #2
- 8000978:      220f            movs    r2, #15
- 800097a:      fa02 f303       lsl.w   r3, r2, r3
- 800097e:      43db            mvns    r3, r3
- 8000980:      69ba            ldr     r2, [r7, #24]
- 8000982:      4013            ands    r3, r2
- 8000984:      61bb            str     r3, [r7, #24]
+ 8008588:      69fb            ldr     r3, [r7, #28]
+ 800858a:      f003 0303       and.w   r3, r3, #3
+ 800858e:      009b            lsls    r3, r3, #2
+ 8008590:      220f            movs    r2, #15
+ 8008592:      fa02 f303       lsl.w   r3, r2, r3
+ 8008596:      43db            mvns    r3, r3
+ 8008598:      69ba            ldr     r2, [r7, #24]
+ 800859a:      4013            ands    r3, r2
+ 800859c:      61bb            str     r3, [r7, #24]
         temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)));
- 8000986:      687b            ldr     r3, [r7, #4]
- 8000988:      4a57            ldr     r2, [pc, #348]  ; (8000ae8 <HAL_GPIO_Init+0x328>)
- 800098a:      4293            cmp     r3, r2
- 800098c:      d037            beq.n   80009fe <HAL_GPIO_Init+0x23e>
- 800098e:      687b            ldr     r3, [r7, #4]
- 8000990:      4a56            ldr     r2, [pc, #344]  ; (8000aec <HAL_GPIO_Init+0x32c>)
- 8000992:      4293            cmp     r3, r2
- 8000994:      d031            beq.n   80009fa <HAL_GPIO_Init+0x23a>
- 8000996:      687b            ldr     r3, [r7, #4]
- 8000998:      4a55            ldr     r2, [pc, #340]  ; (8000af0 <HAL_GPIO_Init+0x330>)
- 800099a:      4293            cmp     r3, r2
- 800099c:      d02b            beq.n   80009f6 <HAL_GPIO_Init+0x236>
- 800099e:      687b            ldr     r3, [r7, #4]
- 80009a0:      4a54            ldr     r2, [pc, #336]  ; (8000af4 <HAL_GPIO_Init+0x334>)
- 80009a2:      4293            cmp     r3, r2
- 80009a4:      d025            beq.n   80009f2 <HAL_GPIO_Init+0x232>
- 80009a6:      687b            ldr     r3, [r7, #4]
- 80009a8:      4a53            ldr     r2, [pc, #332]  ; (8000af8 <HAL_GPIO_Init+0x338>)
- 80009aa:      4293            cmp     r3, r2
- 80009ac:      d01f            beq.n   80009ee <HAL_GPIO_Init+0x22e>
- 80009ae:      687b            ldr     r3, [r7, #4]
- 80009b0:      4a52            ldr     r2, [pc, #328]  ; (8000afc <HAL_GPIO_Init+0x33c>)
- 80009b2:      4293            cmp     r3, r2
- 80009b4:      d019            beq.n   80009ea <HAL_GPIO_Init+0x22a>
- 80009b6:      687b            ldr     r3, [r7, #4]
- 80009b8:      4a51            ldr     r2, [pc, #324]  ; (8000b00 <HAL_GPIO_Init+0x340>)
- 80009ba:      4293            cmp     r3, r2
- 80009bc:      d013            beq.n   80009e6 <HAL_GPIO_Init+0x226>
- 80009be:      687b            ldr     r3, [r7, #4]
- 80009c0:      4a50            ldr     r2, [pc, #320]  ; (8000b04 <HAL_GPIO_Init+0x344>)
- 80009c2:      4293            cmp     r3, r2
- 80009c4:      d00d            beq.n   80009e2 <HAL_GPIO_Init+0x222>
- 80009c6:      687b            ldr     r3, [r7, #4]
- 80009c8:      4a4f            ldr     r2, [pc, #316]  ; (8000b08 <HAL_GPIO_Init+0x348>)
- 80009ca:      4293            cmp     r3, r2
- 80009cc:      d007            beq.n   80009de <HAL_GPIO_Init+0x21e>
- 80009ce:      687b            ldr     r3, [r7, #4]
- 80009d0:      4a4e            ldr     r2, [pc, #312]  ; (8000b0c <HAL_GPIO_Init+0x34c>)
- 80009d2:      4293            cmp     r3, r2
- 80009d4:      d101            bne.n   80009da <HAL_GPIO_Init+0x21a>
- 80009d6:      2309            movs    r3, #9
- 80009d8:      e012            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009da:      230a            movs    r3, #10
- 80009dc:      e010            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009de:      2308            movs    r3, #8
- 80009e0:      e00e            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009e2:      2307            movs    r3, #7
- 80009e4:      e00c            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009e6:      2306            movs    r3, #6
- 80009e8:      e00a            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009ea:      2305            movs    r3, #5
- 80009ec:      e008            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009ee:      2304            movs    r3, #4
- 80009f0:      e006            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009f2:      2303            movs    r3, #3
- 80009f4:      e004            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009f6:      2302            movs    r3, #2
- 80009f8:      e002            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009fa:      2301            movs    r3, #1
- 80009fc:      e000            b.n     8000a00 <HAL_GPIO_Init+0x240>
- 80009fe:      2300            movs    r3, #0
- 8000a00:      69fa            ldr     r2, [r7, #28]
- 8000a02:      f002 0203       and.w   r2, r2, #3
- 8000a06:      0092            lsls    r2, r2, #2
- 8000a08:      4093            lsls    r3, r2
- 8000a0a:      69ba            ldr     r2, [r7, #24]
- 8000a0c:      4313            orrs    r3, r2
- 8000a0e:      61bb            str     r3, [r7, #24]
+ 800859e:      687b            ldr     r3, [r7, #4]
+ 80085a0:      4a57            ldr     r2, [pc, #348]  ; (8008700 <HAL_GPIO_Init+0x328>)
+ 80085a2:      4293            cmp     r3, r2
+ 80085a4:      d037            beq.n   8008616 <HAL_GPIO_Init+0x23e>
+ 80085a6:      687b            ldr     r3, [r7, #4]
+ 80085a8:      4a56            ldr     r2, [pc, #344]  ; (8008704 <HAL_GPIO_Init+0x32c>)
+ 80085aa:      4293            cmp     r3, r2
+ 80085ac:      d031            beq.n   8008612 <HAL_GPIO_Init+0x23a>
+ 80085ae:      687b            ldr     r3, [r7, #4]
+ 80085b0:      4a55            ldr     r2, [pc, #340]  ; (8008708 <HAL_GPIO_Init+0x330>)
+ 80085b2:      4293            cmp     r3, r2
+ 80085b4:      d02b            beq.n   800860e <HAL_GPIO_Init+0x236>
+ 80085b6:      687b            ldr     r3, [r7, #4]
+ 80085b8:      4a54            ldr     r2, [pc, #336]  ; (800870c <HAL_GPIO_Init+0x334>)
+ 80085ba:      4293            cmp     r3, r2
+ 80085bc:      d025            beq.n   800860a <HAL_GPIO_Init+0x232>
+ 80085be:      687b            ldr     r3, [r7, #4]
+ 80085c0:      4a53            ldr     r2, [pc, #332]  ; (8008710 <HAL_GPIO_Init+0x338>)
+ 80085c2:      4293            cmp     r3, r2
+ 80085c4:      d01f            beq.n   8008606 <HAL_GPIO_Init+0x22e>
+ 80085c6:      687b            ldr     r3, [r7, #4]
+ 80085c8:      4a52            ldr     r2, [pc, #328]  ; (8008714 <HAL_GPIO_Init+0x33c>)
+ 80085ca:      4293            cmp     r3, r2
+ 80085cc:      d019            beq.n   8008602 <HAL_GPIO_Init+0x22a>
+ 80085ce:      687b            ldr     r3, [r7, #4]
+ 80085d0:      4a51            ldr     r2, [pc, #324]  ; (8008718 <HAL_GPIO_Init+0x340>)
+ 80085d2:      4293            cmp     r3, r2
+ 80085d4:      d013            beq.n   80085fe <HAL_GPIO_Init+0x226>
+ 80085d6:      687b            ldr     r3, [r7, #4]
+ 80085d8:      4a50            ldr     r2, [pc, #320]  ; (800871c <HAL_GPIO_Init+0x344>)
+ 80085da:      4293            cmp     r3, r2
+ 80085dc:      d00d            beq.n   80085fa <HAL_GPIO_Init+0x222>
+ 80085de:      687b            ldr     r3, [r7, #4]
+ 80085e0:      4a4f            ldr     r2, [pc, #316]  ; (8008720 <HAL_GPIO_Init+0x348>)
+ 80085e2:      4293            cmp     r3, r2
+ 80085e4:      d007            beq.n   80085f6 <HAL_GPIO_Init+0x21e>
+ 80085e6:      687b            ldr     r3, [r7, #4]
+ 80085e8:      4a4e            ldr     r2, [pc, #312]  ; (8008724 <HAL_GPIO_Init+0x34c>)
+ 80085ea:      4293            cmp     r3, r2
+ 80085ec:      d101            bne.n   80085f2 <HAL_GPIO_Init+0x21a>
+ 80085ee:      2309            movs    r3, #9
+ 80085f0:      e012            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 80085f2:      230a            movs    r3, #10
+ 80085f4:      e010            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 80085f6:      2308            movs    r3, #8
+ 80085f8:      e00e            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 80085fa:      2307            movs    r3, #7
+ 80085fc:      e00c            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 80085fe:      2306            movs    r3, #6
+ 8008600:      e00a            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 8008602:      2305            movs    r3, #5
+ 8008604:      e008            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 8008606:      2304            movs    r3, #4
+ 8008608:      e006            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 800860a:      2303            movs    r3, #3
+ 800860c:      e004            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 800860e:      2302            movs    r3, #2
+ 8008610:      e002            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 8008612:      2301            movs    r3, #1
+ 8008614:      e000            b.n     8008618 <HAL_GPIO_Init+0x240>
+ 8008616:      2300            movs    r3, #0
+ 8008618:      69fa            ldr     r2, [r7, #28]
+ 800861a:      f002 0203       and.w   r2, r2, #3
+ 800861e:      0092            lsls    r2, r2, #2
+ 8008620:      4093            lsls    r3, r2
+ 8008622:      69ba            ldr     r2, [r7, #24]
+ 8008624:      4313            orrs    r3, r2
+ 8008626:      61bb            str     r3, [r7, #24]
         SYSCFG->EXTICR[position >> 2] = temp;
- 8000a10:      4934            ldr     r1, [pc, #208]  ; (8000ae4 <HAL_GPIO_Init+0x324>)
- 8000a12:      69fb            ldr     r3, [r7, #28]
- 8000a14:      089b            lsrs    r3, r3, #2
- 8000a16:      3302            adds    r3, #2
- 8000a18:      69ba            ldr     r2, [r7, #24]
- 8000a1a:      f841 2023       str.w   r2, [r1, r3, lsl #2]
+ 8008628:      4934            ldr     r1, [pc, #208]  ; (80086fc <HAL_GPIO_Init+0x324>)
+ 800862a:      69fb            ldr     r3, [r7, #28]
+ 800862c:      089b            lsrs    r3, r3, #2
+ 800862e:      3302            adds    r3, #2
+ 8008630:      69ba            ldr     r2, [r7, #24]
+ 8008632:      f841 2023       str.w   r2, [r1, r3, lsl #2]
 
         /* Clear EXTI line configuration */
         temp = EXTI->IMR;
- 8000a1e:      4b3c            ldr     r3, [pc, #240]  ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000a20:      681b            ldr     r3, [r3, #0]
- 8000a22:      61bb            str     r3, [r7, #24]
+ 8008636:      4b3c            ldr     r3, [pc, #240]  ; (8008728 <HAL_GPIO_Init+0x350>)
+ 8008638:      681b            ldr     r3, [r3, #0]
+ 800863a:      61bb            str     r3, [r7, #24]
         temp &= ~((uint32_t)iocurrent);
- 8000a24:      693b            ldr     r3, [r7, #16]
- 8000a26:      43db            mvns    r3, r3
- 8000a28:      69ba            ldr     r2, [r7, #24]
- 8000a2a:      4013            ands    r3, r2
- 8000a2c:      61bb            str     r3, [r7, #24]
+ 800863c:      693b            ldr     r3, [r7, #16]
+ 800863e:      43db            mvns    r3, r3
+ 8008640:      69ba            ldr     r2, [r7, #24]
+ 8008642:      4013            ands    r3, r2
+ 8008644:      61bb            str     r3, [r7, #24]
         if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
- 8000a2e:      683b            ldr     r3, [r7, #0]
- 8000a30:      685b            ldr     r3, [r3, #4]
- 8000a32:      f403 3380       and.w   r3, r3, #65536  ; 0x10000
- 8000a36:      2b00            cmp     r3, #0
- 8000a38:      d003            beq.n   8000a42 <HAL_GPIO_Init+0x282>
+ 8008646:      683b            ldr     r3, [r7, #0]
+ 8008648:      685b            ldr     r3, [r3, #4]
+ 800864a:      f403 3380       and.w   r3, r3, #65536  ; 0x10000
+ 800864e:      2b00            cmp     r3, #0
+ 8008650:      d003            beq.n   800865a <HAL_GPIO_Init+0x282>
         {
           temp |= iocurrent;
- 8000a3a:      69ba            ldr     r2, [r7, #24]
- 8000a3c:      693b            ldr     r3, [r7, #16]
- 8000a3e:      4313            orrs    r3, r2
- 8000a40:      61bb            str     r3, [r7, #24]
+ 8008652:      69ba            ldr     r2, [r7, #24]
+ 8008654:      693b            ldr     r3, [r7, #16]
+ 8008656:      4313            orrs    r3, r2
+ 8008658:      61bb            str     r3, [r7, #24]
         }
         EXTI->IMR = temp;
- 8000a42:      4a33            ldr     r2, [pc, #204]  ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000a44:      69bb            ldr     r3, [r7, #24]
- 8000a46:      6013            str     r3, [r2, #0]
+ 800865a:      4a33            ldr     r2, [pc, #204]  ; (8008728 <HAL_GPIO_Init+0x350>)
+ 800865c:      69bb            ldr     r3, [r7, #24]
+ 800865e:      6013            str     r3, [r2, #0]
 
         temp = EXTI->EMR;
- 8000a48:      4b31            ldr     r3, [pc, #196]  ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000a4a:      685b            ldr     r3, [r3, #4]
- 8000a4c:      61bb            str     r3, [r7, #24]
+ 8008660:      4b31            ldr     r3, [pc, #196]  ; (8008728 <HAL_GPIO_Init+0x350>)
+ 8008662:      685b            ldr     r3, [r3, #4]
+ 8008664:      61bb            str     r3, [r7, #24]
         temp &= ~((uint32_t)iocurrent);
- 8000a4e:      693b            ldr     r3, [r7, #16]
- 8000a50:      43db            mvns    r3, r3
- 8000a52:      69ba            ldr     r2, [r7, #24]
- 8000a54:      4013            ands    r3, r2
- 8000a56:      61bb            str     r3, [r7, #24]
+ 8008666:      693b            ldr     r3, [r7, #16]
+ 8008668:      43db            mvns    r3, r3
+ 800866a:      69ba            ldr     r2, [r7, #24]
+ 800866c:      4013            ands    r3, r2
+ 800866e:      61bb            str     r3, [r7, #24]
         if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
- 8000a58:      683b            ldr     r3, [r7, #0]
- 8000a5a:      685b            ldr     r3, [r3, #4]
- 8000a5c:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
- 8000a60:      2b00            cmp     r3, #0
- 8000a62:      d003            beq.n   8000a6c <HAL_GPIO_Init+0x2ac>
+ 8008670:      683b            ldr     r3, [r7, #0]
+ 8008672:      685b            ldr     r3, [r3, #4]
+ 8008674:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
+ 8008678:      2b00            cmp     r3, #0
+ 800867a:      d003            beq.n   8008684 <HAL_GPIO_Init+0x2ac>
         {
           temp |= iocurrent;
- 8000a64:      69ba            ldr     r2, [r7, #24]
- 8000a66:      693b            ldr     r3, [r7, #16]
- 8000a68:      4313            orrs    r3, r2
- 8000a6a:      61bb            str     r3, [r7, #24]
+ 800867c:      69ba            ldr     r2, [r7, #24]
+ 800867e:      693b            ldr     r3, [r7, #16]
+ 8008680:      4313            orrs    r3, r2
+ 8008682:      61bb            str     r3, [r7, #24]
         }
         EXTI->EMR = temp;
- 8000a6c:      4a28            ldr     r2, [pc, #160]  ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000a6e:      69bb            ldr     r3, [r7, #24]
- 8000a70:      6053            str     r3, [r2, #4]
+ 8008684:      4a28            ldr     r2, [pc, #160]  ; (8008728 <HAL_GPIO_Init+0x350>)
+ 8008686:      69bb            ldr     r3, [r7, #24]
+ 8008688:      6053            str     r3, [r2, #4]
 
         /* Clear Rising Falling edge configuration */
         temp = EXTI->RTSR;
- 8000a72:      4b27            ldr     r3, [pc, #156]  ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000a74:      689b            ldr     r3, [r3, #8]
- 8000a76:      61bb            str     r3, [r7, #24]
+ 800868a:      4b27            ldr     r3, [pc, #156]  ; (8008728 <HAL_GPIO_Init+0x350>)
+ 800868c:      689b            ldr     r3, [r3, #8]
+ 800868e:      61bb            str     r3, [r7, #24]
         temp &= ~((uint32_t)iocurrent);
- 8000a78:      693b            ldr     r3, [r7, #16]
- 8000a7a:      43db            mvns    r3, r3
- 8000a7c:      69ba            ldr     r2, [r7, #24]
- 8000a7e:      4013            ands    r3, r2
- 8000a80:      61bb            str     r3, [r7, #24]
+ 8008690:      693b            ldr     r3, [r7, #16]
+ 8008692:      43db            mvns    r3, r3
+ 8008694:      69ba            ldr     r2, [r7, #24]
+ 8008696:      4013            ands    r3, r2
+ 8008698:      61bb            str     r3, [r7, #24]
         if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
- 8000a82:      683b            ldr     r3, [r7, #0]
- 8000a84:      685b            ldr     r3, [r3, #4]
- 8000a86:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
- 8000a8a:      2b00            cmp     r3, #0
- 8000a8c:      d003            beq.n   8000a96 <HAL_GPIO_Init+0x2d6>
+ 800869a:      683b            ldr     r3, [r7, #0]
+ 800869c:      685b            ldr     r3, [r3, #4]
+ 800869e:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
+ 80086a2:      2b00            cmp     r3, #0
+ 80086a4:      d003            beq.n   80086ae <HAL_GPIO_Init+0x2d6>
         {
           temp |= iocurrent;
- 8000a8e:      69ba            ldr     r2, [r7, #24]
- 8000a90:      693b            ldr     r3, [r7, #16]
- 8000a92:      4313            orrs    r3, r2
- 8000a94:      61bb            str     r3, [r7, #24]
+ 80086a6:      69ba            ldr     r2, [r7, #24]
+ 80086a8:      693b            ldr     r3, [r7, #16]
+ 80086aa:      4313            orrs    r3, r2
+ 80086ac:      61bb            str     r3, [r7, #24]
         }
         EXTI->RTSR = temp;
- 8000a96:      4a1e            ldr     r2, [pc, #120]  ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000a98:      69bb            ldr     r3, [r7, #24]
- 8000a9a:      6093            str     r3, [r2, #8]
+ 80086ae:      4a1e            ldr     r2, [pc, #120]  ; (8008728 <HAL_GPIO_Init+0x350>)
+ 80086b0:      69bb            ldr     r3, [r7, #24]
+ 80086b2:      6093            str     r3, [r2, #8]
 
         temp = EXTI->FTSR;
- 8000a9c:      4b1c            ldr     r3, [pc, #112]  ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000a9e:      68db            ldr     r3, [r3, #12]
- 8000aa0:      61bb            str     r3, [r7, #24]
+ 80086b4:      4b1c            ldr     r3, [pc, #112]  ; (8008728 <HAL_GPIO_Init+0x350>)
+ 80086b6:      68db            ldr     r3, [r3, #12]
+ 80086b8:      61bb            str     r3, [r7, #24]
         temp &= ~((uint32_t)iocurrent);
- 8000aa2:      693b            ldr     r3, [r7, #16]
- 8000aa4:      43db            mvns    r3, r3
- 8000aa6:      69ba            ldr     r2, [r7, #24]
- 8000aa8:      4013            ands    r3, r2
- 8000aaa:      61bb            str     r3, [r7, #24]
+ 80086ba:      693b            ldr     r3, [r7, #16]
+ 80086bc:      43db            mvns    r3, r3
+ 80086be:      69ba            ldr     r2, [r7, #24]
+ 80086c0:      4013            ands    r3, r2
+ 80086c2:      61bb            str     r3, [r7, #24]
         if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
- 8000aac:      683b            ldr     r3, [r7, #0]
- 8000aae:      685b            ldr     r3, [r3, #4]
- 8000ab0:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
- 8000ab4:      2b00            cmp     r3, #0
- 8000ab6:      d003            beq.n   8000ac0 <HAL_GPIO_Init+0x300>
+ 80086c4:      683b            ldr     r3, [r7, #0]
+ 80086c6:      685b            ldr     r3, [r3, #4]
+ 80086c8:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
+ 80086cc:      2b00            cmp     r3, #0
+ 80086ce:      d003            beq.n   80086d8 <HAL_GPIO_Init+0x300>
         {
           temp |= iocurrent;
- 8000ab8:      69ba            ldr     r2, [r7, #24]
- 8000aba:      693b            ldr     r3, [r7, #16]
- 8000abc:      4313            orrs    r3, r2
- 8000abe:      61bb            str     r3, [r7, #24]
+ 80086d0:      69ba            ldr     r2, [r7, #24]
+ 80086d2:      693b            ldr     r3, [r7, #16]
+ 80086d4:      4313            orrs    r3, r2
+ 80086d6:      61bb            str     r3, [r7, #24]
         }
         EXTI->FTSR = temp;
- 8000ac0:      4a13            ldr     r2, [pc, #76]   ; (8000b10 <HAL_GPIO_Init+0x350>)
- 8000ac2:      69bb            ldr     r3, [r7, #24]
- 8000ac4:      60d3            str     r3, [r2, #12]
+ 80086d8:      4a13            ldr     r2, [pc, #76]   ; (8008728 <HAL_GPIO_Init+0x350>)
+ 80086da:      69bb            ldr     r3, [r7, #24]
+ 80086dc:      60d3            str     r3, [r2, #12]
   for(position = 0; position < GPIO_NUMBER; position++)
- 8000ac6:      69fb            ldr     r3, [r7, #28]
- 8000ac8:      3301            adds    r3, #1
- 8000aca:      61fb            str     r3, [r7, #28]
- 8000acc:      69fb            ldr     r3, [r7, #28]
- 8000ace:      2b0f            cmp     r3, #15
- 8000ad0:      f67f ae86       bls.w   80007e0 <HAL_GPIO_Init+0x20>
+ 80086de:      69fb            ldr     r3, [r7, #28]
+ 80086e0:      3301            adds    r3, #1
+ 80086e2:      61fb            str     r3, [r7, #28]
+ 80086e4:      69fb            ldr     r3, [r7, #28]
+ 80086e6:      2b0f            cmp     r3, #15
+ 80086e8:      f67f ae86       bls.w   80083f8 <HAL_GPIO_Init+0x20>
       }
     }
   }
 }
- 8000ad4:      bf00            nop
- 8000ad6:      3724            adds    r7, #36 ; 0x24
- 8000ad8:      46bd            mov     sp, r7
- 8000ada:      f85d 7b04       ldr.w   r7, [sp], #4
- 8000ade:      4770            bx      lr
- 8000ae0:      40023800        .word   0x40023800
- 8000ae4:      40013800        .word   0x40013800
- 8000ae8:      40020000        .word   0x40020000
- 8000aec:      40020400        .word   0x40020400
- 8000af0:      40020800        .word   0x40020800
- 8000af4:      40020c00        .word   0x40020c00
- 8000af8:      40021000        .word   0x40021000
- 8000afc:      40021400        .word   0x40021400
- 8000b00:      40021800        .word   0x40021800
- 8000b04:      40021c00        .word   0x40021c00
- 8000b08:      40022000        .word   0x40022000
- 8000b0c:      40022400        .word   0x40022400
- 8000b10:      40013c00        .word   0x40013c00
-
-08000b14 <HAL_RCC_OscConfig>:
+ 80086ec:      bf00            nop
+ 80086ee:      3724            adds    r7, #36 ; 0x24
+ 80086f0:      46bd            mov     sp, r7
+ 80086f2:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80086f6:      4770            bx      lr
+ 80086f8:      40023800        .word   0x40023800
+ 80086fc:      40013800        .word   0x40013800
+ 8008700:      40020000        .word   0x40020000
+ 8008704:      40020400        .word   0x40020400
+ 8008708:      40020800        .word   0x40020800
+ 800870c:      40020c00        .word   0x40020c00
+ 8008710:      40021000        .word   0x40021000
+ 8008714:      40021400        .word   0x40021400
+ 8008718:      40021800        .word   0x40021800
+ 800871c:      40021c00        .word   0x40021c00
+ 8008720:      40022000        .word   0x40022000
+ 8008724:      40022400        .word   0x40022400
+ 8008728:      40013c00        .word   0x40013c00
+
+0800872c <HAL_RCC_OscConfig>:
   *         supported by this function. User should request a transition to HSE Off
   *         first and then HSE On or HSE Bypass.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef  *RCC_OscInitStruct)
 {
- 8000b14:      b580            push    {r7, lr}
- 8000b16:      b086            sub     sp, #24
- 8000b18:      af00            add     r7, sp, #0
- 8000b1a:      6078            str     r0, [r7, #4]
+ 800872c:      b580            push    {r7, lr}
+ 800872e:      b086            sub     sp, #24
+ 8008730:      af00            add     r7, sp, #0
+ 8008732:      6078            str     r0, [r7, #4]
   uint32_t tickstart;
   FlagStatus pwrclkchanged = RESET;
- 8000b1c:      2300            movs    r3, #0
- 8000b1e:      75fb            strb    r3, [r7, #23]
+ 8008734:      2300            movs    r3, #0
+ 8008736:      75fb            strb    r3, [r7, #23]
 
   /* Check Null pointer */
   if(RCC_OscInitStruct == NULL)
- 8000b20:      687b            ldr     r3, [r7, #4]
- 8000b22:      2b00            cmp     r3, #0
- 8000b24:      d101            bne.n   8000b2a <HAL_RCC_OscConfig+0x16>
+ 8008738:      687b            ldr     r3, [r7, #4]
+ 800873a:      2b00            cmp     r3, #0
+ 800873c:      d101            bne.n   8008742 <HAL_RCC_OscConfig+0x16>
   {
     return HAL_ERROR;
- 8000b26:      2301            movs    r3, #1
- 8000b28:      e25e            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 800873e:      2301            movs    r3, #1
+ 8008740:      e25e            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
 
   /* Check the parameters */
   assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
 
   /*------------------------------- HSE Configuration ------------------------*/
   if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
- 8000b2a:      687b            ldr     r3, [r7, #4]
- 8000b2c:      681b            ldr     r3, [r3, #0]
- 8000b2e:      f003 0301       and.w   r3, r3, #1
- 8000b32:      2b00            cmp     r3, #0
- 8000b34:      f000 8087       beq.w   8000c46 <HAL_RCC_OscConfig+0x132>
+ 8008742:      687b            ldr     r3, [r7, #4]
+ 8008744:      681b            ldr     r3, [r3, #0]
+ 8008746:      f003 0301       and.w   r3, r3, #1
+ 800874a:      2b00            cmp     r3, #0
+ 800874c:      f000 8087       beq.w   800885e <HAL_RCC_OscConfig+0x132>
   {
     /* Check the parameters */
     assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
     /* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
     if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
- 8000b38:      4b96            ldr     r3, [pc, #600]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b3a:      689b            ldr     r3, [r3, #8]
- 8000b3c:      f003 030c       and.w   r3, r3, #12
- 8000b40:      2b04            cmp     r3, #4
- 8000b42:      d00c            beq.n   8000b5e <HAL_RCC_OscConfig+0x4a>
+ 8008750:      4b96            ldr     r3, [pc, #600]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008752:      689b            ldr     r3, [r3, #8]
+ 8008754:      f003 030c       and.w   r3, r3, #12
+ 8008758:      2b04            cmp     r3, #4
+ 800875a:      d00c            beq.n   8008776 <HAL_RCC_OscConfig+0x4a>
        || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
- 8000b44:      4b93            ldr     r3, [pc, #588]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b46:      689b            ldr     r3, [r3, #8]
- 8000b48:      f003 030c       and.w   r3, r3, #12
- 8000b4c:      2b08            cmp     r3, #8
- 8000b4e:      d112            bne.n   8000b76 <HAL_RCC_OscConfig+0x62>
- 8000b50:      4b90            ldr     r3, [pc, #576]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b52:      685b            ldr     r3, [r3, #4]
- 8000b54:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
- 8000b58:      f5b3 0f80       cmp.w   r3, #4194304    ; 0x400000
- 8000b5c:      d10b            bne.n   8000b76 <HAL_RCC_OscConfig+0x62>
+ 800875c:      4b93            ldr     r3, [pc, #588]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800875e:      689b            ldr     r3, [r3, #8]
+ 8008760:      f003 030c       and.w   r3, r3, #12
+ 8008764:      2b08            cmp     r3, #8
+ 8008766:      d112            bne.n   800878e <HAL_RCC_OscConfig+0x62>
+ 8008768:      4b90            ldr     r3, [pc, #576]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800876a:      685b            ldr     r3, [r3, #4]
+ 800876c:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
+ 8008770:      f5b3 0f80       cmp.w   r3, #4194304    ; 0x400000
+ 8008774:      d10b            bne.n   800878e <HAL_RCC_OscConfig+0x62>
     {
       if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
- 8000b5e:      4b8d            ldr     r3, [pc, #564]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b60:      681b            ldr     r3, [r3, #0]
- 8000b62:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
- 8000b66:      2b00            cmp     r3, #0
- 8000b68:      d06c            beq.n   8000c44 <HAL_RCC_OscConfig+0x130>
- 8000b6a:      687b            ldr     r3, [r7, #4]
- 8000b6c:      685b            ldr     r3, [r3, #4]
- 8000b6e:      2b00            cmp     r3, #0
- 8000b70:      d168            bne.n   8000c44 <HAL_RCC_OscConfig+0x130>
+ 8008776:      4b8d            ldr     r3, [pc, #564]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008778:      681b            ldr     r3, [r3, #0]
+ 800877a:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
+ 800877e:      2b00            cmp     r3, #0
+ 8008780:      d06c            beq.n   800885c <HAL_RCC_OscConfig+0x130>
+ 8008782:      687b            ldr     r3, [r7, #4]
+ 8008784:      685b            ldr     r3, [r3, #4]
+ 8008786:      2b00            cmp     r3, #0
+ 8008788:      d168            bne.n   800885c <HAL_RCC_OscConfig+0x130>
       {
         return HAL_ERROR;
- 8000b72:      2301            movs    r3, #1
- 8000b74:      e238            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 800878a:      2301            movs    r3, #1
+ 800878c:      e238            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
       }
     }
     else
     {
       /* Set the new HSE configuration ---------------------------------------*/
       __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
- 8000b76:      687b            ldr     r3, [r7, #4]
- 8000b78:      685b            ldr     r3, [r3, #4]
- 8000b7a:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
- 8000b7e:      d106            bne.n   8000b8e <HAL_RCC_OscConfig+0x7a>
- 8000b80:      4b84            ldr     r3, [pc, #528]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b82:      681b            ldr     r3, [r3, #0]
- 8000b84:      4a83            ldr     r2, [pc, #524]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b86:      f443 3380       orr.w   r3, r3, #65536  ; 0x10000
- 8000b8a:      6013            str     r3, [r2, #0]
- 8000b8c:      e02e            b.n     8000bec <HAL_RCC_OscConfig+0xd8>
- 8000b8e:      687b            ldr     r3, [r7, #4]
- 8000b90:      685b            ldr     r3, [r3, #4]
- 8000b92:      2b00            cmp     r3, #0
- 8000b94:      d10c            bne.n   8000bb0 <HAL_RCC_OscConfig+0x9c>
- 8000b96:      4b7f            ldr     r3, [pc, #508]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b98:      681b            ldr     r3, [r3, #0]
- 8000b9a:      4a7e            ldr     r2, [pc, #504]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000b9c:      f423 3380       bic.w   r3, r3, #65536  ; 0x10000
- 8000ba0:      6013            str     r3, [r2, #0]
- 8000ba2:      4b7c            ldr     r3, [pc, #496]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000ba4:      681b            ldr     r3, [r3, #0]
- 8000ba6:      4a7b            ldr     r2, [pc, #492]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000ba8:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
- 8000bac:      6013            str     r3, [r2, #0]
- 8000bae:      e01d            b.n     8000bec <HAL_RCC_OscConfig+0xd8>
- 8000bb0:      687b            ldr     r3, [r7, #4]
- 8000bb2:      685b            ldr     r3, [r3, #4]
- 8000bb4:      f5b3 2fa0       cmp.w   r3, #327680     ; 0x50000
- 8000bb8:      d10c            bne.n   8000bd4 <HAL_RCC_OscConfig+0xc0>
- 8000bba:      4b76            ldr     r3, [pc, #472]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000bbc:      681b            ldr     r3, [r3, #0]
- 8000bbe:      4a75            ldr     r2, [pc, #468]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000bc0:      f443 2380       orr.w   r3, r3, #262144 ; 0x40000
- 8000bc4:      6013            str     r3, [r2, #0]
- 8000bc6:      4b73            ldr     r3, [pc, #460]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000bc8:      681b            ldr     r3, [r3, #0]
- 8000bca:      4a72            ldr     r2, [pc, #456]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000bcc:      f443 3380       orr.w   r3, r3, #65536  ; 0x10000
- 8000bd0:      6013            str     r3, [r2, #0]
- 8000bd2:      e00b            b.n     8000bec <HAL_RCC_OscConfig+0xd8>
- 8000bd4:      4b6f            ldr     r3, [pc, #444]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000bd6:      681b            ldr     r3, [r3, #0]
- 8000bd8:      4a6e            ldr     r2, [pc, #440]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000bda:      f423 3380       bic.w   r3, r3, #65536  ; 0x10000
- 8000bde:      6013            str     r3, [r2, #0]
- 8000be0:      4b6c            ldr     r3, [pc, #432]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000be2:      681b            ldr     r3, [r3, #0]
- 8000be4:      4a6b            ldr     r2, [pc, #428]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000be6:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
- 8000bea:      6013            str     r3, [r2, #0]
+ 800878e:      687b            ldr     r3, [r7, #4]
+ 8008790:      685b            ldr     r3, [r3, #4]
+ 8008792:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
+ 8008796:      d106            bne.n   80087a6 <HAL_RCC_OscConfig+0x7a>
+ 8008798:      4b84            ldr     r3, [pc, #528]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800879a:      681b            ldr     r3, [r3, #0]
+ 800879c:      4a83            ldr     r2, [pc, #524]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800879e:      f443 3380       orr.w   r3, r3, #65536  ; 0x10000
+ 80087a2:      6013            str     r3, [r2, #0]
+ 80087a4:      e02e            b.n     8008804 <HAL_RCC_OscConfig+0xd8>
+ 80087a6:      687b            ldr     r3, [r7, #4]
+ 80087a8:      685b            ldr     r3, [r3, #4]
+ 80087aa:      2b00            cmp     r3, #0
+ 80087ac:      d10c            bne.n   80087c8 <HAL_RCC_OscConfig+0x9c>
+ 80087ae:      4b7f            ldr     r3, [pc, #508]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087b0:      681b            ldr     r3, [r3, #0]
+ 80087b2:      4a7e            ldr     r2, [pc, #504]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087b4:      f423 3380       bic.w   r3, r3, #65536  ; 0x10000
+ 80087b8:      6013            str     r3, [r2, #0]
+ 80087ba:      4b7c            ldr     r3, [pc, #496]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087bc:      681b            ldr     r3, [r3, #0]
+ 80087be:      4a7b            ldr     r2, [pc, #492]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087c0:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
+ 80087c4:      6013            str     r3, [r2, #0]
+ 80087c6:      e01d            b.n     8008804 <HAL_RCC_OscConfig+0xd8>
+ 80087c8:      687b            ldr     r3, [r7, #4]
+ 80087ca:      685b            ldr     r3, [r3, #4]
+ 80087cc:      f5b3 2fa0       cmp.w   r3, #327680     ; 0x50000
+ 80087d0:      d10c            bne.n   80087ec <HAL_RCC_OscConfig+0xc0>
+ 80087d2:      4b76            ldr     r3, [pc, #472]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087d4:      681b            ldr     r3, [r3, #0]
+ 80087d6:      4a75            ldr     r2, [pc, #468]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087d8:      f443 2380       orr.w   r3, r3, #262144 ; 0x40000
+ 80087dc:      6013            str     r3, [r2, #0]
+ 80087de:      4b73            ldr     r3, [pc, #460]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087e0:      681b            ldr     r3, [r3, #0]
+ 80087e2:      4a72            ldr     r2, [pc, #456]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087e4:      f443 3380       orr.w   r3, r3, #65536  ; 0x10000
+ 80087e8:      6013            str     r3, [r2, #0]
+ 80087ea:      e00b            b.n     8008804 <HAL_RCC_OscConfig+0xd8>
+ 80087ec:      4b6f            ldr     r3, [pc, #444]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087ee:      681b            ldr     r3, [r3, #0]
+ 80087f0:      4a6e            ldr     r2, [pc, #440]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087f2:      f423 3380       bic.w   r3, r3, #65536  ; 0x10000
+ 80087f6:      6013            str     r3, [r2, #0]
+ 80087f8:      4b6c            ldr     r3, [pc, #432]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087fa:      681b            ldr     r3, [r3, #0]
+ 80087fc:      4a6b            ldr     r2, [pc, #428]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80087fe:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
+ 8008802:      6013            str     r3, [r2, #0]
 
       /* Check the HSE State */
       if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
- 8000bec:      687b            ldr     r3, [r7, #4]
- 8000bee:      685b            ldr     r3, [r3, #4]
- 8000bf0:      2b00            cmp     r3, #0
- 8000bf2:      d013            beq.n   8000c1c <HAL_RCC_OscConfig+0x108>
+ 8008804:      687b            ldr     r3, [r7, #4]
+ 8008806:      685b            ldr     r3, [r3, #4]
+ 8008808:      2b00            cmp     r3, #0
+ 800880a:      d013            beq.n   8008834 <HAL_RCC_OscConfig+0x108>
       {
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8000bf4:      f7ff fcf2       bl      80005dc <HAL_GetTick>
- 8000bf8:      6138            str     r0, [r7, #16]
+ 800880c:      f7ff fc42       bl      8008094 <HAL_GetTick>
+ 8008810:      6138            str     r0, [r7, #16]
 
         /* Wait till HSE is ready */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
- 8000bfa:      e008            b.n     8000c0e <HAL_RCC_OscConfig+0xfa>
+ 8008812:      e008            b.n     8008826 <HAL_RCC_OscConfig+0xfa>
         {
           if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
- 8000bfc:      f7ff fcee       bl      80005dc <HAL_GetTick>
- 8000c00:      4602            mov     r2, r0
- 8000c02:      693b            ldr     r3, [r7, #16]
- 8000c04:      1ad3            subs    r3, r2, r3
- 8000c06:      2b64            cmp     r3, #100        ; 0x64
- 8000c08:      d901            bls.n   8000c0e <HAL_RCC_OscConfig+0xfa>
+ 8008814:      f7ff fc3e       bl      8008094 <HAL_GetTick>
+ 8008818:      4602            mov     r2, r0
+ 800881a:      693b            ldr     r3, [r7, #16]
+ 800881c:      1ad3            subs    r3, r2, r3
+ 800881e:      2b64            cmp     r3, #100        ; 0x64
+ 8008820:      d901            bls.n   8008826 <HAL_RCC_OscConfig+0xfa>
           {
             return HAL_TIMEOUT;
- 8000c0a:      2303            movs    r3, #3
- 8000c0c:      e1ec            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008822:      2303            movs    r3, #3
+ 8008824:      e1ec            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
- 8000c0e:      4b61            ldr     r3, [pc, #388]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c10:      681b            ldr     r3, [r3, #0]
- 8000c12:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
- 8000c16:      2b00            cmp     r3, #0
- 8000c18:      d0f0            beq.n   8000bfc <HAL_RCC_OscConfig+0xe8>
- 8000c1a:      e014            b.n     8000c46 <HAL_RCC_OscConfig+0x132>
+ 8008826:      4b61            ldr     r3, [pc, #388]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008828:      681b            ldr     r3, [r3, #0]
+ 800882a:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
+ 800882e:      2b00            cmp     r3, #0
+ 8008830:      d0f0            beq.n   8008814 <HAL_RCC_OscConfig+0xe8>
+ 8008832:      e014            b.n     800885e <HAL_RCC_OscConfig+0x132>
         }
       }
       else
       {
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8000c1c:      f7ff fcde       bl      80005dc <HAL_GetTick>
- 8000c20:      6138            str     r0, [r7, #16]
+ 8008834:      f7ff fc2e       bl      8008094 <HAL_GetTick>
+ 8008838:      6138            str     r0, [r7, #16]
 
         /* Wait till HSE is bypassed or disabled */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
- 8000c22:      e008            b.n     8000c36 <HAL_RCC_OscConfig+0x122>
+ 800883a:      e008            b.n     800884e <HAL_RCC_OscConfig+0x122>
         {
            if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
- 8000c24:      f7ff fcda       bl      80005dc <HAL_GetTick>
- 8000c28:      4602            mov     r2, r0
- 8000c2a:      693b            ldr     r3, [r7, #16]
- 8000c2c:      1ad3            subs    r3, r2, r3
- 8000c2e:      2b64            cmp     r3, #100        ; 0x64
- 8000c30:      d901            bls.n   8000c36 <HAL_RCC_OscConfig+0x122>
+ 800883c:      f7ff fc2a       bl      8008094 <HAL_GetTick>
+ 8008840:      4602            mov     r2, r0
+ 8008842:      693b            ldr     r3, [r7, #16]
+ 8008844:      1ad3            subs    r3, r2, r3
+ 8008846:      2b64            cmp     r3, #100        ; 0x64
+ 8008848:      d901            bls.n   800884e <HAL_RCC_OscConfig+0x122>
           {
             return HAL_TIMEOUT;
- 8000c32:      2303            movs    r3, #3
- 8000c34:      e1d8            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 800884a:      2303            movs    r3, #3
+ 800884c:      e1d8            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
- 8000c36:      4b57            ldr     r3, [pc, #348]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c38:      681b            ldr     r3, [r3, #0]
- 8000c3a:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
- 8000c3e:      2b00            cmp     r3, #0
- 8000c40:      d1f0            bne.n   8000c24 <HAL_RCC_OscConfig+0x110>
- 8000c42:      e000            b.n     8000c46 <HAL_RCC_OscConfig+0x132>
+ 800884e:      4b57            ldr     r3, [pc, #348]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008850:      681b            ldr     r3, [r3, #0]
+ 8008852:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
+ 8008856:      2b00            cmp     r3, #0
+ 8008858:      d1f0            bne.n   800883c <HAL_RCC_OscConfig+0x110>
+ 800885a:      e000            b.n     800885e <HAL_RCC_OscConfig+0x132>
       if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
- 8000c44:      bf00            nop
+ 800885c:      bf00            nop
         }
       }
     }
   }
   /*----------------------------- HSI Configuration --------------------------*/
   if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
- 8000c46:      687b            ldr     r3, [r7, #4]
- 8000c48:      681b            ldr     r3, [r3, #0]
- 8000c4a:      f003 0302       and.w   r3, r3, #2
- 8000c4e:      2b00            cmp     r3, #0
- 8000c50:      d069            beq.n   8000d26 <HAL_RCC_OscConfig+0x212>
+ 800885e:      687b            ldr     r3, [r7, #4]
+ 8008860:      681b            ldr     r3, [r3, #0]
+ 8008862:      f003 0302       and.w   r3, r3, #2
+ 8008866:      2b00            cmp     r3, #0
+ 8008868:      d069            beq.n   800893e <HAL_RCC_OscConfig+0x212>
     /* Check the parameters */
     assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
     assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
 
     /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
     if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
- 8000c52:      4b50            ldr     r3, [pc, #320]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c54:      689b            ldr     r3, [r3, #8]
- 8000c56:      f003 030c       and.w   r3, r3, #12
- 8000c5a:      2b00            cmp     r3, #0
- 8000c5c:      d00b            beq.n   8000c76 <HAL_RCC_OscConfig+0x162>
+ 800886a:      4b50            ldr     r3, [pc, #320]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800886c:      689b            ldr     r3, [r3, #8]
+ 800886e:      f003 030c       and.w   r3, r3, #12
+ 8008872:      2b00            cmp     r3, #0
+ 8008874:      d00b            beq.n   800888e <HAL_RCC_OscConfig+0x162>
        || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
- 8000c5e:      4b4d            ldr     r3, [pc, #308]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c60:      689b            ldr     r3, [r3, #8]
- 8000c62:      f003 030c       and.w   r3, r3, #12
- 8000c66:      2b08            cmp     r3, #8
- 8000c68:      d11c            bne.n   8000ca4 <HAL_RCC_OscConfig+0x190>
- 8000c6a:      4b4a            ldr     r3, [pc, #296]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c6c:      685b            ldr     r3, [r3, #4]
- 8000c6e:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
- 8000c72:      2b00            cmp     r3, #0
- 8000c74:      d116            bne.n   8000ca4 <HAL_RCC_OscConfig+0x190>
+ 8008876:      4b4d            ldr     r3, [pc, #308]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008878:      689b            ldr     r3, [r3, #8]
+ 800887a:      f003 030c       and.w   r3, r3, #12
+ 800887e:      2b08            cmp     r3, #8
+ 8008880:      d11c            bne.n   80088bc <HAL_RCC_OscConfig+0x190>
+ 8008882:      4b4a            ldr     r3, [pc, #296]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008884:      685b            ldr     r3, [r3, #4]
+ 8008886:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
+ 800888a:      2b00            cmp     r3, #0
+ 800888c:      d116            bne.n   80088bc <HAL_RCC_OscConfig+0x190>
     {
       /* When HSI is used as system clock it will not disabled */
       if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
- 8000c76:      4b47            ldr     r3, [pc, #284]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c78:      681b            ldr     r3, [r3, #0]
- 8000c7a:      f003 0302       and.w   r3, r3, #2
- 8000c7e:      2b00            cmp     r3, #0
- 8000c80:      d005            beq.n   8000c8e <HAL_RCC_OscConfig+0x17a>
- 8000c82:      687b            ldr     r3, [r7, #4]
- 8000c84:      68db            ldr     r3, [r3, #12]
- 8000c86:      2b01            cmp     r3, #1
- 8000c88:      d001            beq.n   8000c8e <HAL_RCC_OscConfig+0x17a>
+ 800888e:      4b47            ldr     r3, [pc, #284]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008890:      681b            ldr     r3, [r3, #0]
+ 8008892:      f003 0302       and.w   r3, r3, #2
+ 8008896:      2b00            cmp     r3, #0
+ 8008898:      d005            beq.n   80088a6 <HAL_RCC_OscConfig+0x17a>
+ 800889a:      687b            ldr     r3, [r7, #4]
+ 800889c:      68db            ldr     r3, [r3, #12]
+ 800889e:      2b01            cmp     r3, #1
+ 80088a0:      d001            beq.n   80088a6 <HAL_RCC_OscConfig+0x17a>
       {
         return HAL_ERROR;
- 8000c8a:      2301            movs    r3, #1
- 8000c8c:      e1ac            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 80088a2:      2301            movs    r3, #1
+ 80088a4:      e1ac            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
       }
       /* Otherwise, just the calibration is allowed */
       else
       {
         /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
         __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
- 8000c8e:      4b41            ldr     r3, [pc, #260]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c90:      681b            ldr     r3, [r3, #0]
- 8000c92:      f023 02f8       bic.w   r2, r3, #248    ; 0xf8
- 8000c96:      687b            ldr     r3, [r7, #4]
- 8000c98:      691b            ldr     r3, [r3, #16]
- 8000c9a:      00db            lsls    r3, r3, #3
- 8000c9c:      493d            ldr     r1, [pc, #244]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000c9e:      4313            orrs    r3, r2
- 8000ca0:      600b            str     r3, [r1, #0]
+ 80088a6:      4b41            ldr     r3, [pc, #260]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80088a8:      681b            ldr     r3, [r3, #0]
+ 80088aa:      f023 02f8       bic.w   r2, r3, #248    ; 0xf8
+ 80088ae:      687b            ldr     r3, [r7, #4]
+ 80088b0:      691b            ldr     r3, [r3, #16]
+ 80088b2:      00db            lsls    r3, r3, #3
+ 80088b4:      493d            ldr     r1, [pc, #244]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80088b6:      4313            orrs    r3, r2
+ 80088b8:      600b            str     r3, [r1, #0]
       if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
- 8000ca2:      e040            b.n     8000d26 <HAL_RCC_OscConfig+0x212>
+ 80088ba:      e040            b.n     800893e <HAL_RCC_OscConfig+0x212>
       }
     }
     else
     {
       /* Check the HSI State */
       if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)
- 8000ca4:      687b            ldr     r3, [r7, #4]
- 8000ca6:      68db            ldr     r3, [r3, #12]
- 8000ca8:      2b00            cmp     r3, #0
- 8000caa:      d023            beq.n   8000cf4 <HAL_RCC_OscConfig+0x1e0>
+ 80088bc:      687b            ldr     r3, [r7, #4]
+ 80088be:      68db            ldr     r3, [r3, #12]
+ 80088c0:      2b00            cmp     r3, #0
+ 80088c2:      d023            beq.n   800890c <HAL_RCC_OscConfig+0x1e0>
       {
         /* Enable the Internal High Speed oscillator (HSI). */
         __HAL_RCC_HSI_ENABLE();
- 8000cac:      4b39            ldr     r3, [pc, #228]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000cae:      681b            ldr     r3, [r3, #0]
- 8000cb0:      4a38            ldr     r2, [pc, #224]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000cb2:      f043 0301       orr.w   r3, r3, #1
- 8000cb6:      6013            str     r3, [r2, #0]
+ 80088c4:      4b39            ldr     r3, [pc, #228]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80088c6:      681b            ldr     r3, [r3, #0]
+ 80088c8:      4a38            ldr     r2, [pc, #224]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80088ca:      f043 0301       orr.w   r3, r3, #1
+ 80088ce:      6013            str     r3, [r2, #0]
 
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8000cb8:      f7ff fc90       bl      80005dc <HAL_GetTick>
- 8000cbc:      6138            str     r0, [r7, #16]
+ 80088d0:      f7ff fbe0       bl      8008094 <HAL_GetTick>
+ 80088d4:      6138            str     r0, [r7, #16]
 
         /* Wait till HSI is ready */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
- 8000cbe:      e008            b.n     8000cd2 <HAL_RCC_OscConfig+0x1be>
+ 80088d6:      e008            b.n     80088ea <HAL_RCC_OscConfig+0x1be>
         {
           if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
- 8000cc0:      f7ff fc8c       bl      80005dc <HAL_GetTick>
- 8000cc4:      4602            mov     r2, r0
- 8000cc6:      693b            ldr     r3, [r7, #16]
- 8000cc8:      1ad3            subs    r3, r2, r3
- 8000cca:      2b02            cmp     r3, #2
- 8000ccc:      d901            bls.n   8000cd2 <HAL_RCC_OscConfig+0x1be>
+ 80088d8:      f7ff fbdc       bl      8008094 <HAL_GetTick>
+ 80088dc:      4602            mov     r2, r0
+ 80088de:      693b            ldr     r3, [r7, #16]
+ 80088e0:      1ad3            subs    r3, r2, r3
+ 80088e2:      2b02            cmp     r3, #2
+ 80088e4:      d901            bls.n   80088ea <HAL_RCC_OscConfig+0x1be>
           {
             return HAL_TIMEOUT;
- 8000cce:      2303            movs    r3, #3
- 8000cd0:      e18a            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 80088e6:      2303            movs    r3, #3
+ 80088e8:      e18a            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
- 8000cd2:      4b30            ldr     r3, [pc, #192]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000cd4:      681b            ldr     r3, [r3, #0]
- 8000cd6:      f003 0302       and.w   r3, r3, #2
- 8000cda:      2b00            cmp     r3, #0
- 8000cdc:      d0f0            beq.n   8000cc0 <HAL_RCC_OscConfig+0x1ac>
+ 80088ea:      4b30            ldr     r3, [pc, #192]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80088ec:      681b            ldr     r3, [r3, #0]
+ 80088ee:      f003 0302       and.w   r3, r3, #2
+ 80088f2:      2b00            cmp     r3, #0
+ 80088f4:      d0f0            beq.n   80088d8 <HAL_RCC_OscConfig+0x1ac>
           }
         }
 
         /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
         __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
- 8000cde:      4b2d            ldr     r3, [pc, #180]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000ce0:      681b            ldr     r3, [r3, #0]
- 8000ce2:      f023 02f8       bic.w   r2, r3, #248    ; 0xf8
- 8000ce6:      687b            ldr     r3, [r7, #4]
- 8000ce8:      691b            ldr     r3, [r3, #16]
- 8000cea:      00db            lsls    r3, r3, #3
- 8000cec:      4929            ldr     r1, [pc, #164]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000cee:      4313            orrs    r3, r2
- 8000cf0:      600b            str     r3, [r1, #0]
- 8000cf2:      e018            b.n     8000d26 <HAL_RCC_OscConfig+0x212>
+ 80088f6:      4b2d            ldr     r3, [pc, #180]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 80088f8:      681b            ldr     r3, [r3, #0]
+ 80088fa:      f023 02f8       bic.w   r2, r3, #248    ; 0xf8
+ 80088fe:      687b            ldr     r3, [r7, #4]
+ 8008900:      691b            ldr     r3, [r3, #16]
+ 8008902:      00db            lsls    r3, r3, #3
+ 8008904:      4929            ldr     r1, [pc, #164]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008906:      4313            orrs    r3, r2
+ 8008908:      600b            str     r3, [r1, #0]
+ 800890a:      e018            b.n     800893e <HAL_RCC_OscConfig+0x212>
       }
       else
       {
         /* Disable the Internal High Speed oscillator (HSI). */
         __HAL_RCC_HSI_DISABLE();
- 8000cf4:      4b27            ldr     r3, [pc, #156]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000cf6:      681b            ldr     r3, [r3, #0]
- 8000cf8:      4a26            ldr     r2, [pc, #152]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000cfa:      f023 0301       bic.w   r3, r3, #1
- 8000cfe:      6013            str     r3, [r2, #0]
+ 800890c:      4b27            ldr     r3, [pc, #156]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800890e:      681b            ldr     r3, [r3, #0]
+ 8008910:      4a26            ldr     r2, [pc, #152]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008912:      f023 0301       bic.w   r3, r3, #1
+ 8008916:      6013            str     r3, [r2, #0]
 
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8000d00:      f7ff fc6c       bl      80005dc <HAL_GetTick>
- 8000d04:      6138            str     r0, [r7, #16]
+ 8008918:      f7ff fbbc       bl      8008094 <HAL_GetTick>
+ 800891c:      6138            str     r0, [r7, #16]
 
         /* Wait till HSI is ready */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
- 8000d06:      e008            b.n     8000d1a <HAL_RCC_OscConfig+0x206>
+ 800891e:      e008            b.n     8008932 <HAL_RCC_OscConfig+0x206>
         {
           if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
- 8000d08:      f7ff fc68       bl      80005dc <HAL_GetTick>
- 8000d0c:      4602            mov     r2, r0
- 8000d0e:      693b            ldr     r3, [r7, #16]
- 8000d10:      1ad3            subs    r3, r2, r3
- 8000d12:      2b02            cmp     r3, #2
- 8000d14:      d901            bls.n   8000d1a <HAL_RCC_OscConfig+0x206>
+ 8008920:      f7ff fbb8       bl      8008094 <HAL_GetTick>
+ 8008924:      4602            mov     r2, r0
+ 8008926:      693b            ldr     r3, [r7, #16]
+ 8008928:      1ad3            subs    r3, r2, r3
+ 800892a:      2b02            cmp     r3, #2
+ 800892c:      d901            bls.n   8008932 <HAL_RCC_OscConfig+0x206>
           {
             return HAL_TIMEOUT;
- 8000d16:      2303            movs    r3, #3
- 8000d18:      e166            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 800892e:      2303            movs    r3, #3
+ 8008930:      e166            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
- 8000d1a:      4b1e            ldr     r3, [pc, #120]  ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000d1c:      681b            ldr     r3, [r3, #0]
- 8000d1e:      f003 0302       and.w   r3, r3, #2
- 8000d22:      2b00            cmp     r3, #0
- 8000d24:      d1f0            bne.n   8000d08 <HAL_RCC_OscConfig+0x1f4>
+ 8008932:      4b1e            ldr     r3, [pc, #120]  ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008934:      681b            ldr     r3, [r3, #0]
+ 8008936:      f003 0302       and.w   r3, r3, #2
+ 800893a:      2b00            cmp     r3, #0
+ 800893c:      d1f0            bne.n   8008920 <HAL_RCC_OscConfig+0x1f4>
         }
       }
     }
   }
   /*------------------------------ LSI Configuration -------------------------*/
   if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
- 8000d26:      687b            ldr     r3, [r7, #4]
- 8000d28:      681b            ldr     r3, [r3, #0]
- 8000d2a:      f003 0308       and.w   r3, r3, #8
- 8000d2e:      2b00            cmp     r3, #0
- 8000d30:      d038            beq.n   8000da4 <HAL_RCC_OscConfig+0x290>
+ 800893e:      687b            ldr     r3, [r7, #4]
+ 8008940:      681b            ldr     r3, [r3, #0]
+ 8008942:      f003 0308       and.w   r3, r3, #8
+ 8008946:      2b00            cmp     r3, #0
+ 8008948:      d038            beq.n   80089bc <HAL_RCC_OscConfig+0x290>
   {
     /* Check the parameters */
     assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
 
     /* Check the LSI State */
     if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)
- 8000d32:      687b            ldr     r3, [r7, #4]
- 8000d34:      695b            ldr     r3, [r3, #20]
- 8000d36:      2b00            cmp     r3, #0
- 8000d38:      d019            beq.n   8000d6e <HAL_RCC_OscConfig+0x25a>
+ 800894a:      687b            ldr     r3, [r7, #4]
+ 800894c:      695b            ldr     r3, [r3, #20]
+ 800894e:      2b00            cmp     r3, #0
+ 8008950:      d019            beq.n   8008986 <HAL_RCC_OscConfig+0x25a>
     {
       /* Enable the Internal Low Speed oscillator (LSI). */
       __HAL_RCC_LSI_ENABLE();
- 8000d3a:      4b16            ldr     r3, [pc, #88]   ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000d3c:      6f5b            ldr     r3, [r3, #116]  ; 0x74
- 8000d3e:      4a15            ldr     r2, [pc, #84]   ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000d40:      f043 0301       orr.w   r3, r3, #1
- 8000d44:      6753            str     r3, [r2, #116]  ; 0x74
+ 8008952:      4b16            ldr     r3, [pc, #88]   ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008954:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 8008956:      4a15            ldr     r2, [pc, #84]   ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008958:      f043 0301       orr.w   r3, r3, #1
+ 800895c:      6753            str     r3, [r2, #116]  ; 0x74
 
       /* Get Start Tick*/
       tickstart = HAL_GetTick();
- 8000d46:      f7ff fc49       bl      80005dc <HAL_GetTick>
- 8000d4a:      6138            str     r0, [r7, #16]
+ 800895e:      f7ff fb99       bl      8008094 <HAL_GetTick>
+ 8008962:      6138            str     r0, [r7, #16]
 
       /* Wait till LSI is ready */
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
- 8000d4c:      e008            b.n     8000d60 <HAL_RCC_OscConfig+0x24c>
+ 8008964:      e008            b.n     8008978 <HAL_RCC_OscConfig+0x24c>
       {
         if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
- 8000d4e:      f7ff fc45       bl      80005dc <HAL_GetTick>
- 8000d52:      4602            mov     r2, r0
- 8000d54:      693b            ldr     r3, [r7, #16]
- 8000d56:      1ad3            subs    r3, r2, r3
- 8000d58:      2b02            cmp     r3, #2
- 8000d5a:      d901            bls.n   8000d60 <HAL_RCC_OscConfig+0x24c>
+ 8008966:      f7ff fb95       bl      8008094 <HAL_GetTick>
+ 800896a:      4602            mov     r2, r0
+ 800896c:      693b            ldr     r3, [r7, #16]
+ 800896e:      1ad3            subs    r3, r2, r3
+ 8008970:      2b02            cmp     r3, #2
+ 8008972:      d901            bls.n   8008978 <HAL_RCC_OscConfig+0x24c>
         {
           return HAL_TIMEOUT;
- 8000d5c:      2303            movs    r3, #3
- 8000d5e:      e143            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008974:      2303            movs    r3, #3
+ 8008976:      e143            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
- 8000d60:      4b0c            ldr     r3, [pc, #48]   ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000d62:      6f5b            ldr     r3, [r3, #116]  ; 0x74
- 8000d64:      f003 0302       and.w   r3, r3, #2
- 8000d68:      2b00            cmp     r3, #0
- 8000d6a:      d0f0            beq.n   8000d4e <HAL_RCC_OscConfig+0x23a>
- 8000d6c:      e01a            b.n     8000da4 <HAL_RCC_OscConfig+0x290>
+ 8008978:      4b0c            ldr     r3, [pc, #48]   ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800897a:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 800897c:      f003 0302       and.w   r3, r3, #2
+ 8008980:      2b00            cmp     r3, #0
+ 8008982:      d0f0            beq.n   8008966 <HAL_RCC_OscConfig+0x23a>
+ 8008984:      e01a            b.n     80089bc <HAL_RCC_OscConfig+0x290>
       }
     }
     else
     {
       /* Disable the Internal Low Speed oscillator (LSI). */
       __HAL_RCC_LSI_DISABLE();
- 8000d6e:      4b09            ldr     r3, [pc, #36]   ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000d70:      6f5b            ldr     r3, [r3, #116]  ; 0x74
- 8000d72:      4a08            ldr     r2, [pc, #32]   ; (8000d94 <HAL_RCC_OscConfig+0x280>)
- 8000d74:      f023 0301       bic.w   r3, r3, #1
- 8000d78:      6753            str     r3, [r2, #116]  ; 0x74
+ 8008986:      4b09            ldr     r3, [pc, #36]   ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 8008988:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 800898a:      4a08            ldr     r2, [pc, #32]   ; (80089ac <HAL_RCC_OscConfig+0x280>)
+ 800898c:      f023 0301       bic.w   r3, r3, #1
+ 8008990:      6753            str     r3, [r2, #116]  ; 0x74
 
       /* Get Start Tick*/
       tickstart = HAL_GetTick();
- 8000d7a:      f7ff fc2f       bl      80005dc <HAL_GetTick>
- 8000d7e:      6138            str     r0, [r7, #16]
+ 8008992:      f7ff fb7f       bl      8008094 <HAL_GetTick>
+ 8008996:      6138            str     r0, [r7, #16]
 
       /* Wait till LSI is ready */
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
- 8000d80:      e00a            b.n     8000d98 <HAL_RCC_OscConfig+0x284>
+ 8008998:      e00a            b.n     80089b0 <HAL_RCC_OscConfig+0x284>
       {
         if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
- 8000d82:      f7ff fc2b       bl      80005dc <HAL_GetTick>
- 8000d86:      4602            mov     r2, r0
- 8000d88:      693b            ldr     r3, [r7, #16]
- 8000d8a:      1ad3            subs    r3, r2, r3
- 8000d8c:      2b02            cmp     r3, #2
- 8000d8e:      d903            bls.n   8000d98 <HAL_RCC_OscConfig+0x284>
+ 800899a:      f7ff fb7b       bl      8008094 <HAL_GetTick>
+ 800899e:      4602            mov     r2, r0
+ 80089a0:      693b            ldr     r3, [r7, #16]
+ 80089a2:      1ad3            subs    r3, r2, r3
+ 80089a4:      2b02            cmp     r3, #2
+ 80089a6:      d903            bls.n   80089b0 <HAL_RCC_OscConfig+0x284>
         {
           return HAL_TIMEOUT;
- 8000d90:      2303            movs    r3, #3
- 8000d92:      e129            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
- 8000d94:      40023800        .word   0x40023800
+ 80089a8:      2303            movs    r3, #3
+ 80089aa:      e129            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
+ 80089ac:      40023800        .word   0x40023800
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
- 8000d98:      4b95            ldr     r3, [pc, #596]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000d9a:      6f5b            ldr     r3, [r3, #116]  ; 0x74
- 8000d9c:      f003 0302       and.w   r3, r3, #2
- 8000da0:      2b00            cmp     r3, #0
- 8000da2:      d1ee            bne.n   8000d82 <HAL_RCC_OscConfig+0x26e>
+ 80089b0:      4b95            ldr     r3, [pc, #596]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 80089b2:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 80089b4:      f003 0302       and.w   r3, r3, #2
+ 80089b8:      2b00            cmp     r3, #0
+ 80089ba:      d1ee            bne.n   800899a <HAL_RCC_OscConfig+0x26e>
         }
       }
     }
   }
   /*------------------------------ LSE Configuration -------------------------*/
   if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
- 8000da4:      687b            ldr     r3, [r7, #4]
- 8000da6:      681b            ldr     r3, [r3, #0]
- 8000da8:      f003 0304       and.w   r3, r3, #4
- 8000dac:      2b00            cmp     r3, #0
- 8000dae:      f000 80a4       beq.w   8000efa <HAL_RCC_OscConfig+0x3e6>
+ 80089bc:      687b            ldr     r3, [r7, #4]
+ 80089be:      681b            ldr     r3, [r3, #0]
+ 80089c0:      f003 0304       and.w   r3, r3, #4
+ 80089c4:      2b00            cmp     r3, #0
+ 80089c6:      f000 80a4       beq.w   8008b12 <HAL_RCC_OscConfig+0x3e6>
     /* Check the parameters */
     assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
 
     /* Update LSE configuration in Backup Domain control register    */
     /* Requires to enable write access to Backup Domain of necessary */
     if(__HAL_RCC_PWR_IS_CLK_DISABLED())
- 8000db2:      4b8f            ldr     r3, [pc, #572]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000db4:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8000db6:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 8000dba:      2b00            cmp     r3, #0
- 8000dbc:      d10d            bne.n   8000dda <HAL_RCC_OscConfig+0x2c6>
+ 80089ca:      4b8f            ldr     r3, [pc, #572]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 80089cc:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80089ce:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 80089d2:      2b00            cmp     r3, #0
+ 80089d4:      d10d            bne.n   80089f2 <HAL_RCC_OscConfig+0x2c6>
     {
       /* Enable Power Clock*/
       __HAL_RCC_PWR_CLK_ENABLE();
- 8000dbe:      4b8c            ldr     r3, [pc, #560]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000dc0:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8000dc2:      4a8b            ldr     r2, [pc, #556]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000dc4:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
- 8000dc8:      6413            str     r3, [r2, #64]   ; 0x40
- 8000dca:      4b89            ldr     r3, [pc, #548]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000dcc:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8000dce:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 8000dd2:      60fb            str     r3, [r7, #12]
- 8000dd4:      68fb            ldr     r3, [r7, #12]
+ 80089d6:      4b8c            ldr     r3, [pc, #560]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 80089d8:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80089da:      4a8b            ldr     r2, [pc, #556]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 80089dc:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
+ 80089e0:      6413            str     r3, [r2, #64]   ; 0x40
+ 80089e2:      4b89            ldr     r3, [pc, #548]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 80089e4:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80089e6:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 80089ea:      60fb            str     r3, [r7, #12]
+ 80089ec:      68fb            ldr     r3, [r7, #12]
       pwrclkchanged = SET;
- 8000dd6:      2301            movs    r3, #1
- 8000dd8:      75fb            strb    r3, [r7, #23]
+ 80089ee:      2301            movs    r3, #1
+ 80089f0:      75fb            strb    r3, [r7, #23]
     }
 
     if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
- 8000dda:      4b86            ldr     r3, [pc, #536]  ; (8000ff4 <HAL_RCC_OscConfig+0x4e0>)
- 8000ddc:      681b            ldr     r3, [r3, #0]
- 8000dde:      f403 7380       and.w   r3, r3, #256    ; 0x100
- 8000de2:      2b00            cmp     r3, #0
- 8000de4:      d118            bne.n   8000e18 <HAL_RCC_OscConfig+0x304>
+ 80089f2:      4b86            ldr     r3, [pc, #536]  ; (8008c0c <HAL_RCC_OscConfig+0x4e0>)
+ 80089f4:      681b            ldr     r3, [r3, #0]
+ 80089f6:      f403 7380       and.w   r3, r3, #256    ; 0x100
+ 80089fa:      2b00            cmp     r3, #0
+ 80089fc:      d118            bne.n   8008a30 <HAL_RCC_OscConfig+0x304>
     {
       /* Enable write access to Backup domain */
       PWR->CR1 |= PWR_CR1_DBP;
- 8000de6:      4b83            ldr     r3, [pc, #524]  ; (8000ff4 <HAL_RCC_OscConfig+0x4e0>)
- 8000de8:      681b            ldr     r3, [r3, #0]
- 8000dea:      4a82            ldr     r2, [pc, #520]  ; (8000ff4 <HAL_RCC_OscConfig+0x4e0>)
- 8000dec:      f443 7380       orr.w   r3, r3, #256    ; 0x100
- 8000df0:      6013            str     r3, [r2, #0]
+ 80089fe:      4b83            ldr     r3, [pc, #524]  ; (8008c0c <HAL_RCC_OscConfig+0x4e0>)
+ 8008a00:      681b            ldr     r3, [r3, #0]
+ 8008a02:      4a82            ldr     r2, [pc, #520]  ; (8008c0c <HAL_RCC_OscConfig+0x4e0>)
+ 8008a04:      f443 7380       orr.w   r3, r3, #256    ; 0x100
+ 8008a08:      6013            str     r3, [r2, #0]
 
       /* Wait for Backup domain Write protection disable */
       tickstart = HAL_GetTick();
- 8000df2:      f7ff fbf3       bl      80005dc <HAL_GetTick>
- 8000df6:      6138            str     r0, [r7, #16]
+ 8008a0a:      f7ff fb43       bl      8008094 <HAL_GetTick>
+ 8008a0e:      6138            str     r0, [r7, #16]
 
       while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
- 8000df8:      e008            b.n     8000e0c <HAL_RCC_OscConfig+0x2f8>
+ 8008a10:      e008            b.n     8008a24 <HAL_RCC_OscConfig+0x2f8>
       {
         if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)
- 8000dfa:      f7ff fbef       bl      80005dc <HAL_GetTick>
- 8000dfe:      4602            mov     r2, r0
- 8000e00:      693b            ldr     r3, [r7, #16]
- 8000e02:      1ad3            subs    r3, r2, r3
- 8000e04:      2b64            cmp     r3, #100        ; 0x64
- 8000e06:      d901            bls.n   8000e0c <HAL_RCC_OscConfig+0x2f8>
+ 8008a12:      f7ff fb3f       bl      8008094 <HAL_GetTick>
+ 8008a16:      4602            mov     r2, r0
+ 8008a18:      693b            ldr     r3, [r7, #16]
+ 8008a1a:      1ad3            subs    r3, r2, r3
+ 8008a1c:      2b64            cmp     r3, #100        ; 0x64
+ 8008a1e:      d901            bls.n   8008a24 <HAL_RCC_OscConfig+0x2f8>
         {
           return HAL_TIMEOUT;
- 8000e08:      2303            movs    r3, #3
- 8000e0a:      e0ed            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008a20:      2303            movs    r3, #3
+ 8008a22:      e0ed            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
       while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
- 8000e0c:      4b79            ldr     r3, [pc, #484]  ; (8000ff4 <HAL_RCC_OscConfig+0x4e0>)
- 8000e0e:      681b            ldr     r3, [r3, #0]
- 8000e10:      f403 7380       and.w   r3, r3, #256    ; 0x100
- 8000e14:      2b00            cmp     r3, #0
- 8000e16:      d0f0            beq.n   8000dfa <HAL_RCC_OscConfig+0x2e6>
+ 8008a24:      4b79            ldr     r3, [pc, #484]  ; (8008c0c <HAL_RCC_OscConfig+0x4e0>)
+ 8008a26:      681b            ldr     r3, [r3, #0]
+ 8008a28:      f403 7380       and.w   r3, r3, #256    ; 0x100
+ 8008a2c:      2b00            cmp     r3, #0
+ 8008a2e:      d0f0            beq.n   8008a12 <HAL_RCC_OscConfig+0x2e6>
         }
       }
     }
 
     /* Set the new LSE configuration -----------------------------------------*/
     __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
- 8000e18:      687b            ldr     r3, [r7, #4]
- 8000e1a:      689b            ldr     r3, [r3, #8]
- 8000e1c:      2b01            cmp     r3, #1
- 8000e1e:      d106            bne.n   8000e2e <HAL_RCC_OscConfig+0x31a>
- 8000e20:      4b73            ldr     r3, [pc, #460]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e22:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000e24:      4a72            ldr     r2, [pc, #456]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e26:      f043 0301       orr.w   r3, r3, #1
- 8000e2a:      6713            str     r3, [r2, #112]  ; 0x70
- 8000e2c:      e02d            b.n     8000e8a <HAL_RCC_OscConfig+0x376>
- 8000e2e:      687b            ldr     r3, [r7, #4]
- 8000e30:      689b            ldr     r3, [r3, #8]
- 8000e32:      2b00            cmp     r3, #0
- 8000e34:      d10c            bne.n   8000e50 <HAL_RCC_OscConfig+0x33c>
- 8000e36:      4b6e            ldr     r3, [pc, #440]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e38:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000e3a:      4a6d            ldr     r2, [pc, #436]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e3c:      f023 0301       bic.w   r3, r3, #1
- 8000e40:      6713            str     r3, [r2, #112]  ; 0x70
- 8000e42:      4b6b            ldr     r3, [pc, #428]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e44:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000e46:      4a6a            ldr     r2, [pc, #424]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e48:      f023 0304       bic.w   r3, r3, #4
- 8000e4c:      6713            str     r3, [r2, #112]  ; 0x70
- 8000e4e:      e01c            b.n     8000e8a <HAL_RCC_OscConfig+0x376>
- 8000e50:      687b            ldr     r3, [r7, #4]
- 8000e52:      689b            ldr     r3, [r3, #8]
- 8000e54:      2b05            cmp     r3, #5
- 8000e56:      d10c            bne.n   8000e72 <HAL_RCC_OscConfig+0x35e>
- 8000e58:      4b65            ldr     r3, [pc, #404]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e5a:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000e5c:      4a64            ldr     r2, [pc, #400]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e5e:      f043 0304       orr.w   r3, r3, #4
- 8000e62:      6713            str     r3, [r2, #112]  ; 0x70
- 8000e64:      4b62            ldr     r3, [pc, #392]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e66:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000e68:      4a61            ldr     r2, [pc, #388]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e6a:      f043 0301       orr.w   r3, r3, #1
- 8000e6e:      6713            str     r3, [r2, #112]  ; 0x70
- 8000e70:      e00b            b.n     8000e8a <HAL_RCC_OscConfig+0x376>
- 8000e72:      4b5f            ldr     r3, [pc, #380]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e74:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000e76:      4a5e            ldr     r2, [pc, #376]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e78:      f023 0301       bic.w   r3, r3, #1
- 8000e7c:      6713            str     r3, [r2, #112]  ; 0x70
- 8000e7e:      4b5c            ldr     r3, [pc, #368]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e80:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000e82:      4a5b            ldr     r2, [pc, #364]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000e84:      f023 0304       bic.w   r3, r3, #4
- 8000e88:      6713            str     r3, [r2, #112]  ; 0x70
+ 8008a30:      687b            ldr     r3, [r7, #4]
+ 8008a32:      689b            ldr     r3, [r3, #8]
+ 8008a34:      2b01            cmp     r3, #1
+ 8008a36:      d106            bne.n   8008a46 <HAL_RCC_OscConfig+0x31a>
+ 8008a38:      4b73            ldr     r3, [pc, #460]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a3a:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008a3c:      4a72            ldr     r2, [pc, #456]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a3e:      f043 0301       orr.w   r3, r3, #1
+ 8008a42:      6713            str     r3, [r2, #112]  ; 0x70
+ 8008a44:      e02d            b.n     8008aa2 <HAL_RCC_OscConfig+0x376>
+ 8008a46:      687b            ldr     r3, [r7, #4]
+ 8008a48:      689b            ldr     r3, [r3, #8]
+ 8008a4a:      2b00            cmp     r3, #0
+ 8008a4c:      d10c            bne.n   8008a68 <HAL_RCC_OscConfig+0x33c>
+ 8008a4e:      4b6e            ldr     r3, [pc, #440]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a50:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008a52:      4a6d            ldr     r2, [pc, #436]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a54:      f023 0301       bic.w   r3, r3, #1
+ 8008a58:      6713            str     r3, [r2, #112]  ; 0x70
+ 8008a5a:      4b6b            ldr     r3, [pc, #428]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a5c:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008a5e:      4a6a            ldr     r2, [pc, #424]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a60:      f023 0304       bic.w   r3, r3, #4
+ 8008a64:      6713            str     r3, [r2, #112]  ; 0x70
+ 8008a66:      e01c            b.n     8008aa2 <HAL_RCC_OscConfig+0x376>
+ 8008a68:      687b            ldr     r3, [r7, #4]
+ 8008a6a:      689b            ldr     r3, [r3, #8]
+ 8008a6c:      2b05            cmp     r3, #5
+ 8008a6e:      d10c            bne.n   8008a8a <HAL_RCC_OscConfig+0x35e>
+ 8008a70:      4b65            ldr     r3, [pc, #404]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a72:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008a74:      4a64            ldr     r2, [pc, #400]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a76:      f043 0304       orr.w   r3, r3, #4
+ 8008a7a:      6713            str     r3, [r2, #112]  ; 0x70
+ 8008a7c:      4b62            ldr     r3, [pc, #392]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a7e:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008a80:      4a61            ldr     r2, [pc, #388]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a82:      f043 0301       orr.w   r3, r3, #1
+ 8008a86:      6713            str     r3, [r2, #112]  ; 0x70
+ 8008a88:      e00b            b.n     8008aa2 <HAL_RCC_OscConfig+0x376>
+ 8008a8a:      4b5f            ldr     r3, [pc, #380]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a8c:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008a8e:      4a5e            ldr     r2, [pc, #376]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a90:      f023 0301       bic.w   r3, r3, #1
+ 8008a94:      6713            str     r3, [r2, #112]  ; 0x70
+ 8008a96:      4b5c            ldr     r3, [pc, #368]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a98:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008a9a:      4a5b            ldr     r2, [pc, #364]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008a9c:      f023 0304       bic.w   r3, r3, #4
+ 8008aa0:      6713            str     r3, [r2, #112]  ; 0x70
     /* Check the LSE State */
     if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
- 8000e8a:      687b            ldr     r3, [r7, #4]
- 8000e8c:      689b            ldr     r3, [r3, #8]
- 8000e8e:      2b00            cmp     r3, #0
- 8000e90:      d015            beq.n   8000ebe <HAL_RCC_OscConfig+0x3aa>
+ 8008aa2:      687b            ldr     r3, [r7, #4]
+ 8008aa4:      689b            ldr     r3, [r3, #8]
+ 8008aa6:      2b00            cmp     r3, #0
+ 8008aa8:      d015            beq.n   8008ad6 <HAL_RCC_OscConfig+0x3aa>
     {
       /* Get Start Tick*/
       tickstart = HAL_GetTick();
- 8000e92:      f7ff fba3       bl      80005dc <HAL_GetTick>
- 8000e96:      6138            str     r0, [r7, #16]
+ 8008aaa:      f7ff faf3       bl      8008094 <HAL_GetTick>
+ 8008aae:      6138            str     r0, [r7, #16]
 
       /* Wait till LSE is ready */
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 8000e98:      e00a            b.n     8000eb0 <HAL_RCC_OscConfig+0x39c>
+ 8008ab0:      e00a            b.n     8008ac8 <HAL_RCC_OscConfig+0x39c>
       {
         if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
- 8000e9a:      f7ff fb9f       bl      80005dc <HAL_GetTick>
- 8000e9e:      4602            mov     r2, r0
- 8000ea0:      693b            ldr     r3, [r7, #16]
- 8000ea2:      1ad3            subs    r3, r2, r3
- 8000ea4:      f241 3288       movw    r2, #5000       ; 0x1388
- 8000ea8:      4293            cmp     r3, r2
- 8000eaa:      d901            bls.n   8000eb0 <HAL_RCC_OscConfig+0x39c>
+ 8008ab2:      f7ff faef       bl      8008094 <HAL_GetTick>
+ 8008ab6:      4602            mov     r2, r0
+ 8008ab8:      693b            ldr     r3, [r7, #16]
+ 8008aba:      1ad3            subs    r3, r2, r3
+ 8008abc:      f241 3288       movw    r2, #5000       ; 0x1388
+ 8008ac0:      4293            cmp     r3, r2
+ 8008ac2:      d901            bls.n   8008ac8 <HAL_RCC_OscConfig+0x39c>
         {
           return HAL_TIMEOUT;
- 8000eac:      2303            movs    r3, #3
- 8000eae:      e09b            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008ac4:      2303            movs    r3, #3
+ 8008ac6:      e09b            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 8000eb0:      4b4f            ldr     r3, [pc, #316]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000eb2:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000eb4:      f003 0302       and.w   r3, r3, #2
- 8000eb8:      2b00            cmp     r3, #0
- 8000eba:      d0ee            beq.n   8000e9a <HAL_RCC_OscConfig+0x386>
- 8000ebc:      e014            b.n     8000ee8 <HAL_RCC_OscConfig+0x3d4>
+ 8008ac8:      4b4f            ldr     r3, [pc, #316]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008aca:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008acc:      f003 0302       and.w   r3, r3, #2
+ 8008ad0:      2b00            cmp     r3, #0
+ 8008ad2:      d0ee            beq.n   8008ab2 <HAL_RCC_OscConfig+0x386>
+ 8008ad4:      e014            b.n     8008b00 <HAL_RCC_OscConfig+0x3d4>
       }
     }
     else
     {
       /* Get Start Tick*/
       tickstart = HAL_GetTick();
- 8000ebe:      f7ff fb8d       bl      80005dc <HAL_GetTick>
- 8000ec2:      6138            str     r0, [r7, #16]
+ 8008ad6:      f7ff fadd       bl      8008094 <HAL_GetTick>
+ 8008ada:      6138            str     r0, [r7, #16]
 
       /* Wait till LSE is ready */
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
- 8000ec4:      e00a            b.n     8000edc <HAL_RCC_OscConfig+0x3c8>
+ 8008adc:      e00a            b.n     8008af4 <HAL_RCC_OscConfig+0x3c8>
       {
         if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
- 8000ec6:      f7ff fb89       bl      80005dc <HAL_GetTick>
- 8000eca:      4602            mov     r2, r0
- 8000ecc:      693b            ldr     r3, [r7, #16]
- 8000ece:      1ad3            subs    r3, r2, r3
- 8000ed0:      f241 3288       movw    r2, #5000       ; 0x1388
- 8000ed4:      4293            cmp     r3, r2
- 8000ed6:      d901            bls.n   8000edc <HAL_RCC_OscConfig+0x3c8>
+ 8008ade:      f7ff fad9       bl      8008094 <HAL_GetTick>
+ 8008ae2:      4602            mov     r2, r0
+ 8008ae4:      693b            ldr     r3, [r7, #16]
+ 8008ae6:      1ad3            subs    r3, r2, r3
+ 8008ae8:      f241 3288       movw    r2, #5000       ; 0x1388
+ 8008aec:      4293            cmp     r3, r2
+ 8008aee:      d901            bls.n   8008af4 <HAL_RCC_OscConfig+0x3c8>
         {
           return HAL_TIMEOUT;
- 8000ed8:      2303            movs    r3, #3
- 8000eda:      e085            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008af0:      2303            movs    r3, #3
+ 8008af2:      e085            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
       while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
- 8000edc:      4b44            ldr     r3, [pc, #272]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000ede:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8000ee0:      f003 0302       and.w   r3, r3, #2
- 8000ee4:      2b00            cmp     r3, #0
- 8000ee6:      d1ee            bne.n   8000ec6 <HAL_RCC_OscConfig+0x3b2>
+ 8008af4:      4b44            ldr     r3, [pc, #272]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008af6:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8008af8:      f003 0302       and.w   r3, r3, #2
+ 8008afc:      2b00            cmp     r3, #0
+ 8008afe:      d1ee            bne.n   8008ade <HAL_RCC_OscConfig+0x3b2>
         }
       }
     }
 
     /* Restore clock configuration if changed */
     if(pwrclkchanged == SET)
- 8000ee8:      7dfb            ldrb    r3, [r7, #23]
- 8000eea:      2b01            cmp     r3, #1
- 8000eec:      d105            bne.n   8000efa <HAL_RCC_OscConfig+0x3e6>
+ 8008b00:      7dfb            ldrb    r3, [r7, #23]
+ 8008b02:      2b01            cmp     r3, #1
+ 8008b04:      d105            bne.n   8008b12 <HAL_RCC_OscConfig+0x3e6>
     {
       __HAL_RCC_PWR_CLK_DISABLE();
- 8000eee:      4b40            ldr     r3, [pc, #256]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000ef0:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8000ef2:      4a3f            ldr     r2, [pc, #252]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000ef4:      f023 5380       bic.w   r3, r3, #268435456      ; 0x10000000
- 8000ef8:      6413            str     r3, [r2, #64]   ; 0x40
+ 8008b06:      4b40            ldr     r3, [pc, #256]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b08:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 8008b0a:      4a3f            ldr     r2, [pc, #252]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b0c:      f023 5380       bic.w   r3, r3, #268435456      ; 0x10000000
+ 8008b10:      6413            str     r3, [r2, #64]   ; 0x40
     }
   }
   /*-------------------------------- PLL Configuration -----------------------*/
   /* Check the parameters */
   assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
   if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
- 8000efa:      687b            ldr     r3, [r7, #4]
- 8000efc:      699b            ldr     r3, [r3, #24]
- 8000efe:      2b00            cmp     r3, #0
- 8000f00:      d071            beq.n   8000fe6 <HAL_RCC_OscConfig+0x4d2>
+ 8008b12:      687b            ldr     r3, [r7, #4]
+ 8008b14:      699b            ldr     r3, [r3, #24]
+ 8008b16:      2b00            cmp     r3, #0
+ 8008b18:      d071            beq.n   8008bfe <HAL_RCC_OscConfig+0x4d2>
   {
     /* Check if the PLL is used as system clock or not */
     if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
- 8000f02:      4b3b            ldr     r3, [pc, #236]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000f04:      689b            ldr     r3, [r3, #8]
- 8000f06:      f003 030c       and.w   r3, r3, #12
- 8000f0a:      2b08            cmp     r3, #8
- 8000f0c:      d069            beq.n   8000fe2 <HAL_RCC_OscConfig+0x4ce>
+ 8008b1a:      4b3b            ldr     r3, [pc, #236]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b1c:      689b            ldr     r3, [r3, #8]
+ 8008b1e:      f003 030c       and.w   r3, r3, #12
+ 8008b22:      2b08            cmp     r3, #8
+ 8008b24:      d069            beq.n   8008bfa <HAL_RCC_OscConfig+0x4ce>
     {
       if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
- 8000f0e:      687b            ldr     r3, [r7, #4]
- 8000f10:      699b            ldr     r3, [r3, #24]
- 8000f12:      2b02            cmp     r3, #2
- 8000f14:      d14b            bne.n   8000fae <HAL_RCC_OscConfig+0x49a>
+ 8008b26:      687b            ldr     r3, [r7, #4]
+ 8008b28:      699b            ldr     r3, [r3, #24]
+ 8008b2a:      2b02            cmp     r3, #2
+ 8008b2c:      d14b            bne.n   8008bc6 <HAL_RCC_OscConfig+0x49a>
 #if defined (RCC_PLLCFGR_PLLR)
         assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR));
 #endif
 
         /* Disable the main PLL. */
         __HAL_RCC_PLL_DISABLE();
- 8000f16:      4b36            ldr     r3, [pc, #216]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000f18:      681b            ldr     r3, [r3, #0]
- 8000f1a:      4a35            ldr     r2, [pc, #212]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000f1c:      f023 7380       bic.w   r3, r3, #16777216       ; 0x1000000
- 8000f20:      6013            str     r3, [r2, #0]
+ 8008b2e:      4b36            ldr     r3, [pc, #216]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b30:      681b            ldr     r3, [r3, #0]
+ 8008b32:      4a35            ldr     r2, [pc, #212]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b34:      f023 7380       bic.w   r3, r3, #16777216       ; 0x1000000
+ 8008b38:      6013            str     r3, [r2, #0]
 
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8000f22:      f7ff fb5b       bl      80005dc <HAL_GetTick>
- 8000f26:      6138            str     r0, [r7, #16]
+ 8008b3a:      f7ff faab       bl      8008094 <HAL_GetTick>
+ 8008b3e:      6138            str     r0, [r7, #16]
 
         /* Wait till PLL is ready */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8000f28:      e008            b.n     8000f3c <HAL_RCC_OscConfig+0x428>
+ 8008b40:      e008            b.n     8008b54 <HAL_RCC_OscConfig+0x428>
         {
           if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
- 8000f2a:      f7ff fb57       bl      80005dc <HAL_GetTick>
- 8000f2e:      4602            mov     r2, r0
- 8000f30:      693b            ldr     r3, [r7, #16]
- 8000f32:      1ad3            subs    r3, r2, r3
- 8000f34:      2b02            cmp     r3, #2
- 8000f36:      d901            bls.n   8000f3c <HAL_RCC_OscConfig+0x428>
+ 8008b42:      f7ff faa7       bl      8008094 <HAL_GetTick>
+ 8008b46:      4602            mov     r2, r0
+ 8008b48:      693b            ldr     r3, [r7, #16]
+ 8008b4a:      1ad3            subs    r3, r2, r3
+ 8008b4c:      2b02            cmp     r3, #2
+ 8008b4e:      d901            bls.n   8008b54 <HAL_RCC_OscConfig+0x428>
           {
             return HAL_TIMEOUT;
- 8000f38:      2303            movs    r3, #3
- 8000f3a:      e055            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008b50:      2303            movs    r3, #3
+ 8008b52:      e055            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8000f3c:      4b2c            ldr     r3, [pc, #176]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000f3e:      681b            ldr     r3, [r3, #0]
- 8000f40:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
- 8000f44:      2b00            cmp     r3, #0
- 8000f46:      d1f0            bne.n   8000f2a <HAL_RCC_OscConfig+0x416>
+ 8008b54:      4b2c            ldr     r3, [pc, #176]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b56:      681b            ldr     r3, [r3, #0]
+ 8008b58:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
+ 8008b5c:      2b00            cmp     r3, #0
+ 8008b5e:      d1f0            bne.n   8008b42 <HAL_RCC_OscConfig+0x416>
           }
         }
 
         /* Configure the main PLL clock source, multiplication and division factors. */
 #if defined (RCC_PLLCFGR_PLLR)
         __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
- 8000f48:      687b            ldr     r3, [r7, #4]
- 8000f4a:      69da            ldr     r2, [r3, #28]
- 8000f4c:      687b            ldr     r3, [r7, #4]
- 8000f4e:      6a1b            ldr     r3, [r3, #32]
- 8000f50:      431a            orrs    r2, r3
- 8000f52:      687b            ldr     r3, [r7, #4]
- 8000f54:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8000f56:      019b            lsls    r3, r3, #6
- 8000f58:      431a            orrs    r2, r3
- 8000f5a:      687b            ldr     r3, [r7, #4]
- 8000f5c:      6a9b            ldr     r3, [r3, #40]   ; 0x28
- 8000f5e:      085b            lsrs    r3, r3, #1
- 8000f60:      3b01            subs    r3, #1
- 8000f62:      041b            lsls    r3, r3, #16
- 8000f64:      431a            orrs    r2, r3
- 8000f66:      687b            ldr     r3, [r7, #4]
- 8000f68:      6adb            ldr     r3, [r3, #44]   ; 0x2c
- 8000f6a:      061b            lsls    r3, r3, #24
- 8000f6c:      431a            orrs    r2, r3
- 8000f6e:      687b            ldr     r3, [r7, #4]
- 8000f70:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8000f72:      071b            lsls    r3, r3, #28
- 8000f74:      491e            ldr     r1, [pc, #120]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000f76:      4313            orrs    r3, r2
- 8000f78:      604b            str     r3, [r1, #4]
+ 8008b60:      687b            ldr     r3, [r7, #4]
+ 8008b62:      69da            ldr     r2, [r3, #28]
+ 8008b64:      687b            ldr     r3, [r7, #4]
+ 8008b66:      6a1b            ldr     r3, [r3, #32]
+ 8008b68:      431a            orrs    r2, r3
+ 8008b6a:      687b            ldr     r3, [r7, #4]
+ 8008b6c:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8008b6e:      019b            lsls    r3, r3, #6
+ 8008b70:      431a            orrs    r2, r3
+ 8008b72:      687b            ldr     r3, [r7, #4]
+ 8008b74:      6a9b            ldr     r3, [r3, #40]   ; 0x28
+ 8008b76:      085b            lsrs    r3, r3, #1
+ 8008b78:      3b01            subs    r3, #1
+ 8008b7a:      041b            lsls    r3, r3, #16
+ 8008b7c:      431a            orrs    r2, r3
+ 8008b7e:      687b            ldr     r3, [r7, #4]
+ 8008b80:      6adb            ldr     r3, [r3, #44]   ; 0x2c
+ 8008b82:      061b            lsls    r3, r3, #24
+ 8008b84:      431a            orrs    r2, r3
+ 8008b86:      687b            ldr     r3, [r7, #4]
+ 8008b88:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 8008b8a:      071b            lsls    r3, r3, #28
+ 8008b8c:      491e            ldr     r1, [pc, #120]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b8e:      4313            orrs    r3, r2
+ 8008b90:      604b            str     r3, [r1, #4]
                              RCC_OscInitStruct->PLL.PLLP,
                              RCC_OscInitStruct->PLL.PLLQ);
 #endif
 
         /* Enable the main PLL. */
         __HAL_RCC_PLL_ENABLE();
- 8000f7a:      4b1d            ldr     r3, [pc, #116]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000f7c:      681b            ldr     r3, [r3, #0]
- 8000f7e:      4a1c            ldr     r2, [pc, #112]  ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000f80:      f043 7380       orr.w   r3, r3, #16777216       ; 0x1000000
- 8000f84:      6013            str     r3, [r2, #0]
+ 8008b92:      4b1d            ldr     r3, [pc, #116]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b94:      681b            ldr     r3, [r3, #0]
+ 8008b96:      4a1c            ldr     r2, [pc, #112]  ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008b98:      f043 7380       orr.w   r3, r3, #16777216       ; 0x1000000
+ 8008b9c:      6013            str     r3, [r2, #0]
 
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8000f86:      f7ff fb29       bl      80005dc <HAL_GetTick>
- 8000f8a:      6138            str     r0, [r7, #16]
+ 8008b9e:      f7ff fa79       bl      8008094 <HAL_GetTick>
+ 8008ba2:      6138            str     r0, [r7, #16]
 
         /* Wait till PLL is ready */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
- 8000f8c:      e008            b.n     8000fa0 <HAL_RCC_OscConfig+0x48c>
+ 8008ba4:      e008            b.n     8008bb8 <HAL_RCC_OscConfig+0x48c>
         {
           if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
- 8000f8e:      f7ff fb25       bl      80005dc <HAL_GetTick>
- 8000f92:      4602            mov     r2, r0
- 8000f94:      693b            ldr     r3, [r7, #16]
- 8000f96:      1ad3            subs    r3, r2, r3
- 8000f98:      2b02            cmp     r3, #2
- 8000f9a:      d901            bls.n   8000fa0 <HAL_RCC_OscConfig+0x48c>
+ 8008ba6:      f7ff fa75       bl      8008094 <HAL_GetTick>
+ 8008baa:      4602            mov     r2, r0
+ 8008bac:      693b            ldr     r3, [r7, #16]
+ 8008bae:      1ad3            subs    r3, r2, r3
+ 8008bb0:      2b02            cmp     r3, #2
+ 8008bb2:      d901            bls.n   8008bb8 <HAL_RCC_OscConfig+0x48c>
           {
             return HAL_TIMEOUT;
- 8000f9c:      2303            movs    r3, #3
- 8000f9e:      e023            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008bb4:      2303            movs    r3, #3
+ 8008bb6:      e023            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
- 8000fa0:      4b13            ldr     r3, [pc, #76]   ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000fa2:      681b            ldr     r3, [r3, #0]
- 8000fa4:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
- 8000fa8:      2b00            cmp     r3, #0
- 8000faa:      d0f0            beq.n   8000f8e <HAL_RCC_OscConfig+0x47a>
- 8000fac:      e01b            b.n     8000fe6 <HAL_RCC_OscConfig+0x4d2>
+ 8008bb8:      4b13            ldr     r3, [pc, #76]   ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008bba:      681b            ldr     r3, [r3, #0]
+ 8008bbc:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
+ 8008bc0:      2b00            cmp     r3, #0
+ 8008bc2:      d0f0            beq.n   8008ba6 <HAL_RCC_OscConfig+0x47a>
+ 8008bc4:      e01b            b.n     8008bfe <HAL_RCC_OscConfig+0x4d2>
         }
       }
       else
       {
         /* Disable the main PLL. */
         __HAL_RCC_PLL_DISABLE();
- 8000fae:      4b10            ldr     r3, [pc, #64]   ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000fb0:      681b            ldr     r3, [r3, #0]
- 8000fb2:      4a0f            ldr     r2, [pc, #60]   ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000fb4:      f023 7380       bic.w   r3, r3, #16777216       ; 0x1000000
- 8000fb8:      6013            str     r3, [r2, #0]
+ 8008bc6:      4b10            ldr     r3, [pc, #64]   ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008bc8:      681b            ldr     r3, [r3, #0]
+ 8008bca:      4a0f            ldr     r2, [pc, #60]   ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008bcc:      f023 7380       bic.w   r3, r3, #16777216       ; 0x1000000
+ 8008bd0:      6013            str     r3, [r2, #0]
 
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8000fba:      f7ff fb0f       bl      80005dc <HAL_GetTick>
- 8000fbe:      6138            str     r0, [r7, #16]
+ 8008bd2:      f7ff fa5f       bl      8008094 <HAL_GetTick>
+ 8008bd6:      6138            str     r0, [r7, #16]
 
         /* Wait till PLL is ready */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8000fc0:      e008            b.n     8000fd4 <HAL_RCC_OscConfig+0x4c0>
+ 8008bd8:      e008            b.n     8008bec <HAL_RCC_OscConfig+0x4c0>
         {
           if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
- 8000fc2:      f7ff fb0b       bl      80005dc <HAL_GetTick>
- 8000fc6:      4602            mov     r2, r0
- 8000fc8:      693b            ldr     r3, [r7, #16]
- 8000fca:      1ad3            subs    r3, r2, r3
- 8000fcc:      2b02            cmp     r3, #2
- 8000fce:      d901            bls.n   8000fd4 <HAL_RCC_OscConfig+0x4c0>
+ 8008bda:      f7ff fa5b       bl      8008094 <HAL_GetTick>
+ 8008bde:      4602            mov     r2, r0
+ 8008be0:      693b            ldr     r3, [r7, #16]
+ 8008be2:      1ad3            subs    r3, r2, r3
+ 8008be4:      2b02            cmp     r3, #2
+ 8008be6:      d901            bls.n   8008bec <HAL_RCC_OscConfig+0x4c0>
           {
             return HAL_TIMEOUT;
- 8000fd0:      2303            movs    r3, #3
- 8000fd2:      e009            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008be8:      2303            movs    r3, #3
+ 8008bea:      e009            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
- 8000fd4:      4b06            ldr     r3, [pc, #24]   ; (8000ff0 <HAL_RCC_OscConfig+0x4dc>)
- 8000fd6:      681b            ldr     r3, [r3, #0]
- 8000fd8:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
- 8000fdc:      2b00            cmp     r3, #0
- 8000fde:      d1f0            bne.n   8000fc2 <HAL_RCC_OscConfig+0x4ae>
- 8000fe0:      e001            b.n     8000fe6 <HAL_RCC_OscConfig+0x4d2>
+ 8008bec:      4b06            ldr     r3, [pc, #24]   ; (8008c08 <HAL_RCC_OscConfig+0x4dc>)
+ 8008bee:      681b            ldr     r3, [r3, #0]
+ 8008bf0:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
+ 8008bf4:      2b00            cmp     r3, #0
+ 8008bf6:      d1f0            bne.n   8008bda <HAL_RCC_OscConfig+0x4ae>
+ 8008bf8:      e001            b.n     8008bfe <HAL_RCC_OscConfig+0x4d2>
         }
       }
     }
     else
     {
       return HAL_ERROR;
- 8000fe2:      2301            movs    r3, #1
- 8000fe4:      e000            b.n     8000fe8 <HAL_RCC_OscConfig+0x4d4>
+ 8008bfa:      2301            movs    r3, #1
+ 8008bfc:      e000            b.n     8008c00 <HAL_RCC_OscConfig+0x4d4>
     }
   }
   return HAL_OK;
- 8000fe6:      2300            movs    r3, #0
+ 8008bfe:      2300            movs    r3, #0
 }
- 8000fe8:      4618            mov     r0, r3
- 8000fea:      3718            adds    r7, #24
- 8000fec:      46bd            mov     sp, r7
- 8000fee:      bd80            pop     {r7, pc}
- 8000ff0:      40023800        .word   0x40023800
- 8000ff4:      40007000        .word   0x40007000
-
-08000ff8 <HAL_RCC_ClockConfig>:
+ 8008c00:      4618            mov     r0, r3
+ 8008c02:      3718            adds    r7, #24
+ 8008c04:      46bd            mov     sp, r7
+ 8008c06:      bd80            pop     {r7, pc}
+ 8008c08:      40023800        .word   0x40023800
+ 8008c0c:      40007000        .word   0x40007000
+
+08008c10 <HAL_RCC_ClockConfig>:
   *         HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency
   *         (for more details refer to section above "Initialization/de-initialization functions")
   * @retval None
   */
 HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, uint32_t FLatency)
 {
- 8000ff8:      b580            push    {r7, lr}
- 8000ffa:      b084            sub     sp, #16
- 8000ffc:      af00            add     r7, sp, #0
- 8000ffe:      6078            str     r0, [r7, #4]
- 8001000:      6039            str     r1, [r7, #0]
+ 8008c10:      b580            push    {r7, lr}
+ 8008c12:      b084            sub     sp, #16
+ 8008c14:      af00            add     r7, sp, #0
+ 8008c16:      6078            str     r0, [r7, #4]
+ 8008c18:      6039            str     r1, [r7, #0]
   uint32_t tickstart = 0;
- 8001002:      2300            movs    r3, #0
- 8001004:      60fb            str     r3, [r7, #12]
+ 8008c1a:      2300            movs    r3, #0
+ 8008c1c:      60fb            str     r3, [r7, #12]
 
   /* Check Null pointer */
   if(RCC_ClkInitStruct == NULL)
- 8001006:      687b            ldr     r3, [r7, #4]
- 8001008:      2b00            cmp     r3, #0
- 800100a:      d101            bne.n   8001010 <HAL_RCC_ClockConfig+0x18>
+ 8008c1e:      687b            ldr     r3, [r7, #4]
+ 8008c20:      2b00            cmp     r3, #0
+ 8008c22:      d101            bne.n   8008c28 <HAL_RCC_ClockConfig+0x18>
   {
     return HAL_ERROR;
- 800100c:      2301            movs    r3, #1
- 800100e:      e0ce            b.n     80011ae <HAL_RCC_ClockConfig+0x1b6>
+ 8008c24:      2301            movs    r3, #1
+ 8008c26:      e0ce            b.n     8008dc6 <HAL_RCC_ClockConfig+0x1b6>
   /* To correctly read data from FLASH memory, the number of wait states (LATENCY)
      must be correctly programmed according to the frequency of the CPU clock
      (HCLK) and the supply voltage of the device. */
 
   /* Increasing the CPU frequency */
   if(FLatency > __HAL_FLASH_GET_LATENCY())
- 8001010:      4b69            ldr     r3, [pc, #420]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 8001012:      681b            ldr     r3, [r3, #0]
- 8001014:      f003 030f       and.w   r3, r3, #15
- 8001018:      683a            ldr     r2, [r7, #0]
- 800101a:      429a            cmp     r2, r3
- 800101c:      d910            bls.n   8001040 <HAL_RCC_ClockConfig+0x48>
+ 8008c28:      4b69            ldr     r3, [pc, #420]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008c2a:      681b            ldr     r3, [r3, #0]
+ 8008c2c:      f003 030f       and.w   r3, r3, #15
+ 8008c30:      683a            ldr     r2, [r7, #0]
+ 8008c32:      429a            cmp     r2, r3
+ 8008c34:      d910            bls.n   8008c58 <HAL_RCC_ClockConfig+0x48>
   {
     /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
     __HAL_FLASH_SET_LATENCY(FLatency);
- 800101e:      4b66            ldr     r3, [pc, #408]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 8001020:      681b            ldr     r3, [r3, #0]
- 8001022:      f023 020f       bic.w   r2, r3, #15
- 8001026:      4964            ldr     r1, [pc, #400]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 8001028:      683b            ldr     r3, [r7, #0]
- 800102a:      4313            orrs    r3, r2
- 800102c:      600b            str     r3, [r1, #0]
+ 8008c36:      4b66            ldr     r3, [pc, #408]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008c38:      681b            ldr     r3, [r3, #0]
+ 8008c3a:      f023 020f       bic.w   r2, r3, #15
+ 8008c3e:      4964            ldr     r1, [pc, #400]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008c40:      683b            ldr     r3, [r7, #0]
+ 8008c42:      4313            orrs    r3, r2
+ 8008c44:      600b            str     r3, [r1, #0]
 
     /* Check that the new number of wait states is taken into account to access the Flash
     memory by reading the FLASH_ACR register */
     if(__HAL_FLASH_GET_LATENCY() != FLatency)
- 800102e:      4b62            ldr     r3, [pc, #392]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 8001030:      681b            ldr     r3, [r3, #0]
- 8001032:      f003 030f       and.w   r3, r3, #15
- 8001036:      683a            ldr     r2, [r7, #0]
- 8001038:      429a            cmp     r2, r3
- 800103a:      d001            beq.n   8001040 <HAL_RCC_ClockConfig+0x48>
+ 8008c46:      4b62            ldr     r3, [pc, #392]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008c48:      681b            ldr     r3, [r3, #0]
+ 8008c4a:      f003 030f       and.w   r3, r3, #15
+ 8008c4e:      683a            ldr     r2, [r7, #0]
+ 8008c50:      429a            cmp     r2, r3
+ 8008c52:      d001            beq.n   8008c58 <HAL_RCC_ClockConfig+0x48>
     {
       return HAL_ERROR;
- 800103c:      2301            movs    r3, #1
- 800103e:      e0b6            b.n     80011ae <HAL_RCC_ClockConfig+0x1b6>
+ 8008c54:      2301            movs    r3, #1
+ 8008c56:      e0b6            b.n     8008dc6 <HAL_RCC_ClockConfig+0x1b6>
     }
   }
 
   /*-------------------------- HCLK Configuration --------------------------*/
   if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
- 8001040:      687b            ldr     r3, [r7, #4]
- 8001042:      681b            ldr     r3, [r3, #0]
- 8001044:      f003 0302       and.w   r3, r3, #2
- 8001048:      2b00            cmp     r3, #0
- 800104a:      d020            beq.n   800108e <HAL_RCC_ClockConfig+0x96>
+ 8008c58:      687b            ldr     r3, [r7, #4]
+ 8008c5a:      681b            ldr     r3, [r3, #0]
+ 8008c5c:      f003 0302       and.w   r3, r3, #2
+ 8008c60:      2b00            cmp     r3, #0
+ 8008c62:      d020            beq.n   8008ca6 <HAL_RCC_ClockConfig+0x96>
   {
     /* Set the highest APBx dividers in order to ensure that we do not go through
        a non-spec phase whatever we decrease or increase HCLK. */
     if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
- 800104c:      687b            ldr     r3, [r7, #4]
- 800104e:      681b            ldr     r3, [r3, #0]
- 8001050:      f003 0304       and.w   r3, r3, #4
- 8001054:      2b00            cmp     r3, #0
- 8001056:      d005            beq.n   8001064 <HAL_RCC_ClockConfig+0x6c>
+ 8008c64:      687b            ldr     r3, [r7, #4]
+ 8008c66:      681b            ldr     r3, [r3, #0]
+ 8008c68:      f003 0304       and.w   r3, r3, #4
+ 8008c6c:      2b00            cmp     r3, #0
+ 8008c6e:      d005            beq.n   8008c7c <HAL_RCC_ClockConfig+0x6c>
     {
       MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
- 8001058:      4b58            ldr     r3, [pc, #352]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 800105a:      689b            ldr     r3, [r3, #8]
- 800105c:      4a57            ldr     r2, [pc, #348]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 800105e:      f443 53e0       orr.w   r3, r3, #7168   ; 0x1c00
- 8001062:      6093            str     r3, [r2, #8]
+ 8008c70:      4b58            ldr     r3, [pc, #352]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008c72:      689b            ldr     r3, [r3, #8]
+ 8008c74:      4a57            ldr     r2, [pc, #348]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008c76:      f443 53e0       orr.w   r3, r3, #7168   ; 0x1c00
+ 8008c7a:      6093            str     r3, [r2, #8]
     }
 
     if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
- 8001064:      687b            ldr     r3, [r7, #4]
- 8001066:      681b            ldr     r3, [r3, #0]
- 8001068:      f003 0308       and.w   r3, r3, #8
- 800106c:      2b00            cmp     r3, #0
- 800106e:      d005            beq.n   800107c <HAL_RCC_ClockConfig+0x84>
+ 8008c7c:      687b            ldr     r3, [r7, #4]
+ 8008c7e:      681b            ldr     r3, [r3, #0]
+ 8008c80:      f003 0308       and.w   r3, r3, #8
+ 8008c84:      2b00            cmp     r3, #0
+ 8008c86:      d005            beq.n   8008c94 <HAL_RCC_ClockConfig+0x84>
     {
       MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
- 8001070:      4b52            ldr     r3, [pc, #328]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 8001072:      689b            ldr     r3, [r3, #8]
- 8001074:      4a51            ldr     r2, [pc, #324]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 8001076:      f443 4360       orr.w   r3, r3, #57344  ; 0xe000
- 800107a:      6093            str     r3, [r2, #8]
+ 8008c88:      4b52            ldr     r3, [pc, #328]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008c8a:      689b            ldr     r3, [r3, #8]
+ 8008c8c:      4a51            ldr     r2, [pc, #324]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008c8e:      f443 4360       orr.w   r3, r3, #57344  ; 0xe000
+ 8008c92:      6093            str     r3, [r2, #8]
     }
 
     /* Set the new HCLK clock divider */
     assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider));
     MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider);
- 800107c:      4b4f            ldr     r3, [pc, #316]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 800107e:      689b            ldr     r3, [r3, #8]
- 8001080:      f023 02f0       bic.w   r2, r3, #240    ; 0xf0
- 8001084:      687b            ldr     r3, [r7, #4]
- 8001086:      689b            ldr     r3, [r3, #8]
- 8001088:      494c            ldr     r1, [pc, #304]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 800108a:      4313            orrs    r3, r2
- 800108c:      608b            str     r3, [r1, #8]
+ 8008c94:      4b4f            ldr     r3, [pc, #316]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008c96:      689b            ldr     r3, [r3, #8]
+ 8008c98:      f023 02f0       bic.w   r2, r3, #240    ; 0xf0
+ 8008c9c:      687b            ldr     r3, [r7, #4]
+ 8008c9e:      689b            ldr     r3, [r3, #8]
+ 8008ca0:      494c            ldr     r1, [pc, #304]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008ca2:      4313            orrs    r3, r2
+ 8008ca4:      608b            str     r3, [r1, #8]
   }
 
   /*------------------------- SYSCLK Configuration ---------------------------*/
   if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
- 800108e:      687b            ldr     r3, [r7, #4]
- 8001090:      681b            ldr     r3, [r3, #0]
- 8001092:      f003 0301       and.w   r3, r3, #1
- 8001096:      2b00            cmp     r3, #0
- 8001098:      d040            beq.n   800111c <HAL_RCC_ClockConfig+0x124>
+ 8008ca6:      687b            ldr     r3, [r7, #4]
+ 8008ca8:      681b            ldr     r3, [r3, #0]
+ 8008caa:      f003 0301       and.w   r3, r3, #1
+ 8008cae:      2b00            cmp     r3, #0
+ 8008cb0:      d040            beq.n   8008d34 <HAL_RCC_ClockConfig+0x124>
   {
     assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
 
     /* HSE is selected as System Clock Source */
     if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
- 800109a:      687b            ldr     r3, [r7, #4]
- 800109c:      685b            ldr     r3, [r3, #4]
- 800109e:      2b01            cmp     r3, #1
- 80010a0:      d107            bne.n   80010b2 <HAL_RCC_ClockConfig+0xba>
+ 8008cb2:      687b            ldr     r3, [r7, #4]
+ 8008cb4:      685b            ldr     r3, [r3, #4]
+ 8008cb6:      2b01            cmp     r3, #1
+ 8008cb8:      d107            bne.n   8008cca <HAL_RCC_ClockConfig+0xba>
     {
       /* Check the HSE ready flag */
       if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
- 80010a2:      4b46            ldr     r3, [pc, #280]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 80010a4:      681b            ldr     r3, [r3, #0]
- 80010a6:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
- 80010aa:      2b00            cmp     r3, #0
- 80010ac:      d115            bne.n   80010da <HAL_RCC_ClockConfig+0xe2>
+ 8008cba:      4b46            ldr     r3, [pc, #280]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008cbc:      681b            ldr     r3, [r3, #0]
+ 8008cbe:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
+ 8008cc2:      2b00            cmp     r3, #0
+ 8008cc4:      d115            bne.n   8008cf2 <HAL_RCC_ClockConfig+0xe2>
       {
         return HAL_ERROR;
- 80010ae:      2301            movs    r3, #1
- 80010b0:      e07d            b.n     80011ae <HAL_RCC_ClockConfig+0x1b6>
+ 8008cc6:      2301            movs    r3, #1
+ 8008cc8:      e07d            b.n     8008dc6 <HAL_RCC_ClockConfig+0x1b6>
       }
     }
     /* PLL is selected as System Clock Source */
     else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
- 80010b2:      687b            ldr     r3, [r7, #4]
- 80010b4:      685b            ldr     r3, [r3, #4]
- 80010b6:      2b02            cmp     r3, #2
- 80010b8:      d107            bne.n   80010ca <HAL_RCC_ClockConfig+0xd2>
+ 8008cca:      687b            ldr     r3, [r7, #4]
+ 8008ccc:      685b            ldr     r3, [r3, #4]
+ 8008cce:      2b02            cmp     r3, #2
+ 8008cd0:      d107            bne.n   8008ce2 <HAL_RCC_ClockConfig+0xd2>
     {
       /* Check the PLL ready flag */
       if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
- 80010ba:      4b40            ldr     r3, [pc, #256]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 80010bc:      681b            ldr     r3, [r3, #0]
- 80010be:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
- 80010c2:      2b00            cmp     r3, #0
- 80010c4:      d109            bne.n   80010da <HAL_RCC_ClockConfig+0xe2>
+ 8008cd2:      4b40            ldr     r3, [pc, #256]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008cd4:      681b            ldr     r3, [r3, #0]
+ 8008cd6:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
+ 8008cda:      2b00            cmp     r3, #0
+ 8008cdc:      d109            bne.n   8008cf2 <HAL_RCC_ClockConfig+0xe2>
       {
         return HAL_ERROR;
- 80010c6:      2301            movs    r3, #1
- 80010c8:      e071            b.n     80011ae <HAL_RCC_ClockConfig+0x1b6>
+ 8008cde:      2301            movs    r3, #1
+ 8008ce0:      e071            b.n     8008dc6 <HAL_RCC_ClockConfig+0x1b6>
     }
     /* HSI is selected as System Clock Source */
     else
     {
       /* Check the HSI ready flag */
       if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
- 80010ca:      4b3c            ldr     r3, [pc, #240]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 80010cc:      681b            ldr     r3, [r3, #0]
- 80010ce:      f003 0302       and.w   r3, r3, #2
- 80010d2:      2b00            cmp     r3, #0
- 80010d4:      d101            bne.n   80010da <HAL_RCC_ClockConfig+0xe2>
+ 8008ce2:      4b3c            ldr     r3, [pc, #240]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008ce4:      681b            ldr     r3, [r3, #0]
+ 8008ce6:      f003 0302       and.w   r3, r3, #2
+ 8008cea:      2b00            cmp     r3, #0
+ 8008cec:      d101            bne.n   8008cf2 <HAL_RCC_ClockConfig+0xe2>
       {
         return HAL_ERROR;
- 80010d6:      2301            movs    r3, #1
- 80010d8:      e069            b.n     80011ae <HAL_RCC_ClockConfig+0x1b6>
+ 8008cee:      2301            movs    r3, #1
+ 8008cf0:      e069            b.n     8008dc6 <HAL_RCC_ClockConfig+0x1b6>
       }
     }
 
     __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource);
- 80010da:      4b38            ldr     r3, [pc, #224]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 80010dc:      689b            ldr     r3, [r3, #8]
- 80010de:      f023 0203       bic.w   r2, r3, #3
- 80010e2:      687b            ldr     r3, [r7, #4]
- 80010e4:      685b            ldr     r3, [r3, #4]
- 80010e6:      4935            ldr     r1, [pc, #212]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 80010e8:      4313            orrs    r3, r2
- 80010ea:      608b            str     r3, [r1, #8]
+ 8008cf2:      4b38            ldr     r3, [pc, #224]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008cf4:      689b            ldr     r3, [r3, #8]
+ 8008cf6:      f023 0203       bic.w   r2, r3, #3
+ 8008cfa:      687b            ldr     r3, [r7, #4]
+ 8008cfc:      685b            ldr     r3, [r3, #4]
+ 8008cfe:      4935            ldr     r1, [pc, #212]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008d00:      4313            orrs    r3, r2
+ 8008d02:      608b            str     r3, [r1, #8]
 
     /* Get Start Tick*/
     tickstart = HAL_GetTick();
- 80010ec:      f7ff fa76       bl      80005dc <HAL_GetTick>
- 80010f0:      60f8            str     r0, [r7, #12]
+ 8008d04:      f7ff f9c6       bl      8008094 <HAL_GetTick>
+ 8008d08:      60f8            str     r0, [r7, #12]
 
     while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
- 80010f2:      e00a            b.n     800110a <HAL_RCC_ClockConfig+0x112>
+ 8008d0a:      e00a            b.n     8008d22 <HAL_RCC_ClockConfig+0x112>
     {
       if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE)
- 80010f4:      f7ff fa72       bl      80005dc <HAL_GetTick>
- 80010f8:      4602            mov     r2, r0
- 80010fa:      68fb            ldr     r3, [r7, #12]
- 80010fc:      1ad3            subs    r3, r2, r3
- 80010fe:      f241 3288       movw    r2, #5000       ; 0x1388
- 8001102:      4293            cmp     r3, r2
- 8001104:      d901            bls.n   800110a <HAL_RCC_ClockConfig+0x112>
+ 8008d0c:      f7ff f9c2       bl      8008094 <HAL_GetTick>
+ 8008d10:      4602            mov     r2, r0
+ 8008d12:      68fb            ldr     r3, [r7, #12]
+ 8008d14:      1ad3            subs    r3, r2, r3
+ 8008d16:      f241 3288       movw    r2, #5000       ; 0x1388
+ 8008d1a:      4293            cmp     r3, r2
+ 8008d1c:      d901            bls.n   8008d22 <HAL_RCC_ClockConfig+0x112>
       {
         return HAL_TIMEOUT;
- 8001106:      2303            movs    r3, #3
- 8001108:      e051            b.n     80011ae <HAL_RCC_ClockConfig+0x1b6>
+ 8008d1e:      2303            movs    r3, #3
+ 8008d20:      e051            b.n     8008dc6 <HAL_RCC_ClockConfig+0x1b6>
     while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos))
- 800110a:      4b2c            ldr     r3, [pc, #176]  ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 800110c:      689b            ldr     r3, [r3, #8]
- 800110e:      f003 020c       and.w   r2, r3, #12
- 8001112:      687b            ldr     r3, [r7, #4]
- 8001114:      685b            ldr     r3, [r3, #4]
- 8001116:      009b            lsls    r3, r3, #2
- 8001118:      429a            cmp     r2, r3
- 800111a:      d1eb            bne.n   80010f4 <HAL_RCC_ClockConfig+0xfc>
+ 8008d22:      4b2c            ldr     r3, [pc, #176]  ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008d24:      689b            ldr     r3, [r3, #8]
+ 8008d26:      f003 020c       and.w   r2, r3, #12
+ 8008d2a:      687b            ldr     r3, [r7, #4]
+ 8008d2c:      685b            ldr     r3, [r3, #4]
+ 8008d2e:      009b            lsls    r3, r3, #2
+ 8008d30:      429a            cmp     r2, r3
+ 8008d32:      d1eb            bne.n   8008d0c <HAL_RCC_ClockConfig+0xfc>
       }
     }
   }
 
   /* Decreasing the number of wait states because of lower CPU frequency */
   if(FLatency < __HAL_FLASH_GET_LATENCY())
- 800111c:      4b26            ldr     r3, [pc, #152]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 800111e:      681b            ldr     r3, [r3, #0]
- 8001120:      f003 030f       and.w   r3, r3, #15
- 8001124:      683a            ldr     r2, [r7, #0]
- 8001126:      429a            cmp     r2, r3
- 8001128:      d210            bcs.n   800114c <HAL_RCC_ClockConfig+0x154>
+ 8008d34:      4b26            ldr     r3, [pc, #152]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008d36:      681b            ldr     r3, [r3, #0]
+ 8008d38:      f003 030f       and.w   r3, r3, #15
+ 8008d3c:      683a            ldr     r2, [r7, #0]
+ 8008d3e:      429a            cmp     r2, r3
+ 8008d40:      d210            bcs.n   8008d64 <HAL_RCC_ClockConfig+0x154>
   {
     /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
     __HAL_FLASH_SET_LATENCY(FLatency);
- 800112a:      4b23            ldr     r3, [pc, #140]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 800112c:      681b            ldr     r3, [r3, #0]
- 800112e:      f023 020f       bic.w   r2, r3, #15
- 8001132:      4921            ldr     r1, [pc, #132]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 8001134:      683b            ldr     r3, [r7, #0]
- 8001136:      4313            orrs    r3, r2
- 8001138:      600b            str     r3, [r1, #0]
+ 8008d42:      4b23            ldr     r3, [pc, #140]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008d44:      681b            ldr     r3, [r3, #0]
+ 8008d46:      f023 020f       bic.w   r2, r3, #15
+ 8008d4a:      4921            ldr     r1, [pc, #132]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008d4c:      683b            ldr     r3, [r7, #0]
+ 8008d4e:      4313            orrs    r3, r2
+ 8008d50:      600b            str     r3, [r1, #0]
 
     /* Check that the new number of wait states is taken into account to access the Flash
     memory by reading the FLASH_ACR register */
     if(__HAL_FLASH_GET_LATENCY() != FLatency)
- 800113a:      4b1f            ldr     r3, [pc, #124]  ; (80011b8 <HAL_RCC_ClockConfig+0x1c0>)
- 800113c:      681b            ldr     r3, [r3, #0]
- 800113e:      f003 030f       and.w   r3, r3, #15
- 8001142:      683a            ldr     r2, [r7, #0]
- 8001144:      429a            cmp     r2, r3
- 8001146:      d001            beq.n   800114c <HAL_RCC_ClockConfig+0x154>
+ 8008d52:      4b1f            ldr     r3, [pc, #124]  ; (8008dd0 <HAL_RCC_ClockConfig+0x1c0>)
+ 8008d54:      681b            ldr     r3, [r3, #0]
+ 8008d56:      f003 030f       and.w   r3, r3, #15
+ 8008d5a:      683a            ldr     r2, [r7, #0]
+ 8008d5c:      429a            cmp     r2, r3
+ 8008d5e:      d001            beq.n   8008d64 <HAL_RCC_ClockConfig+0x154>
     {
       return HAL_ERROR;
- 8001148:      2301            movs    r3, #1
- 800114a:      e030            b.n     80011ae <HAL_RCC_ClockConfig+0x1b6>
+ 8008d60:      2301            movs    r3, #1
+ 8008d62:      e030            b.n     8008dc6 <HAL_RCC_ClockConfig+0x1b6>
     }
   }
 
   /*-------------------------- PCLK1 Configuration ---------------------------*/
   if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
- 800114c:      687b            ldr     r3, [r7, #4]
- 800114e:      681b            ldr     r3, [r3, #0]
- 8001150:      f003 0304       and.w   r3, r3, #4
- 8001154:      2b00            cmp     r3, #0
- 8001156:      d008            beq.n   800116a <HAL_RCC_ClockConfig+0x172>
+ 8008d64:      687b            ldr     r3, [r7, #4]
+ 8008d66:      681b            ldr     r3, [r3, #0]
+ 8008d68:      f003 0304       and.w   r3, r3, #4
+ 8008d6c:      2b00            cmp     r3, #0
+ 8008d6e:      d008            beq.n   8008d82 <HAL_RCC_ClockConfig+0x172>
   {
     assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
     MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
- 8001158:      4b18            ldr     r3, [pc, #96]   ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 800115a:      689b            ldr     r3, [r3, #8]
- 800115c:      f423 52e0       bic.w   r2, r3, #7168   ; 0x1c00
- 8001160:      687b            ldr     r3, [r7, #4]
- 8001162:      68db            ldr     r3, [r3, #12]
- 8001164:      4915            ldr     r1, [pc, #84]   ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 8001166:      4313            orrs    r3, r2
- 8001168:      608b            str     r3, [r1, #8]
+ 8008d70:      4b18            ldr     r3, [pc, #96]   ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008d72:      689b            ldr     r3, [r3, #8]
+ 8008d74:      f423 52e0       bic.w   r2, r3, #7168   ; 0x1c00
+ 8008d78:      687b            ldr     r3, [r7, #4]
+ 8008d7a:      68db            ldr     r3, [r3, #12]
+ 8008d7c:      4915            ldr     r1, [pc, #84]   ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008d7e:      4313            orrs    r3, r2
+ 8008d80:      608b            str     r3, [r1, #8]
   }
 
   /*-------------------------- PCLK2 Configuration ---------------------------*/
   if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
- 800116a:      687b            ldr     r3, [r7, #4]
- 800116c:      681b            ldr     r3, [r3, #0]
- 800116e:      f003 0308       and.w   r3, r3, #8
- 8001172:      2b00            cmp     r3, #0
- 8001174:      d009            beq.n   800118a <HAL_RCC_ClockConfig+0x192>
+ 8008d82:      687b            ldr     r3, [r7, #4]
+ 8008d84:      681b            ldr     r3, [r3, #0]
+ 8008d86:      f003 0308       and.w   r3, r3, #8
+ 8008d8a:      2b00            cmp     r3, #0
+ 8008d8c:      d009            beq.n   8008da2 <HAL_RCC_ClockConfig+0x192>
   {
     assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
     MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
- 8001176:      4b11            ldr     r3, [pc, #68]   ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 8001178:      689b            ldr     r3, [r3, #8]
- 800117a:      f423 4260       bic.w   r2, r3, #57344  ; 0xe000
- 800117e:      687b            ldr     r3, [r7, #4]
- 8001180:      691b            ldr     r3, [r3, #16]
- 8001182:      00db            lsls    r3, r3, #3
- 8001184:      490d            ldr     r1, [pc, #52]   ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 8001186:      4313            orrs    r3, r2
- 8001188:      608b            str     r3, [r1, #8]
+ 8008d8e:      4b11            ldr     r3, [pc, #68]   ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008d90:      689b            ldr     r3, [r3, #8]
+ 8008d92:      f423 4260       bic.w   r2, r3, #57344  ; 0xe000
+ 8008d96:      687b            ldr     r3, [r7, #4]
+ 8008d98:      691b            ldr     r3, [r3, #16]
+ 8008d9a:      00db            lsls    r3, r3, #3
+ 8008d9c:      490d            ldr     r1, [pc, #52]   ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008d9e:      4313            orrs    r3, r2
+ 8008da0:      608b            str     r3, [r1, #8]
   }
 
   /* Update the SystemCoreClock global variable */
   SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
- 800118a:      f000 f81d       bl      80011c8 <HAL_RCC_GetSysClockFreq>
- 800118e:      4601            mov     r1, r0
- 8001190:      4b0a            ldr     r3, [pc, #40]   ; (80011bc <HAL_RCC_ClockConfig+0x1c4>)
- 8001192:      689b            ldr     r3, [r3, #8]
- 8001194:      091b            lsrs    r3, r3, #4
- 8001196:      f003 030f       and.w   r3, r3, #15
- 800119a:      4a09            ldr     r2, [pc, #36]   ; (80011c0 <HAL_RCC_ClockConfig+0x1c8>)
- 800119c:      5cd3            ldrb    r3, [r2, r3]
- 800119e:      fa21 f303       lsr.w   r3, r1, r3
- 80011a2:      4a08            ldr     r2, [pc, #32]   ; (80011c4 <HAL_RCC_ClockConfig+0x1cc>)
- 80011a4:      6013            str     r3, [r2, #0]
+ 8008da2:      f000 f81d       bl      8008de0 <HAL_RCC_GetSysClockFreq>
+ 8008da6:      4601            mov     r1, r0
+ 8008da8:      4b0a            ldr     r3, [pc, #40]   ; (8008dd4 <HAL_RCC_ClockConfig+0x1c4>)
+ 8008daa:      689b            ldr     r3, [r3, #8]
+ 8008dac:      091b            lsrs    r3, r3, #4
+ 8008dae:      f003 030f       and.w   r3, r3, #15
+ 8008db2:      4a09            ldr     r2, [pc, #36]   ; (8008dd8 <HAL_RCC_ClockConfig+0x1c8>)
+ 8008db4:      5cd3            ldrb    r3, [r2, r3]
+ 8008db6:      fa21 f303       lsr.w   r3, r1, r3
+ 8008dba:      4a08            ldr     r2, [pc, #32]   ; (8008ddc <HAL_RCC_ClockConfig+0x1cc>)
+ 8008dbc:      6013            str     r3, [r2, #0]
 
   /* Configure the source of time base considering new system clocks settings*/
   HAL_InitTick (TICK_INT_PRIORITY);
- 80011a6:      2000            movs    r0, #0
- 80011a8:      f7ff f9d4       bl      8000554 <HAL_InitTick>
+ 8008dbe:      2000            movs    r0, #0
+ 8008dc0:      f7ff f924       bl      800800c <HAL_InitTick>
 
   return HAL_OK;
- 80011ac:      2300            movs    r3, #0
+ 8008dc4:      2300            movs    r3, #0
 }
- 80011ae:      4618            mov     r0, r3
- 80011b0:      3710            adds    r7, #16
- 80011b2:      46bd            mov     sp, r7
- 80011b4:      bd80            pop     {r7, pc}
- 80011b6:      bf00            nop
- 80011b8:      40023c00        .word   0x40023c00
- 80011bc:      40023800        .word   0x40023800
- 80011c0:      08002878        .word   0x08002878
- 80011c4:      20000008        .word   0x20000008
-
-080011c8 <HAL_RCC_GetSysClockFreq>:
+ 8008dc6:      4618            mov     r0, r3
+ 8008dc8:      3710            adds    r7, #16
+ 8008dca:      46bd            mov     sp, r7
+ 8008dcc:      bd80            pop     {r7, pc}
+ 8008dce:      bf00            nop
+ 8008dd0:      40023c00        .word   0x40023c00
+ 8008dd4:      40023800        .word   0x40023800
+ 8008dd8:      08012378        .word   0x08012378
+ 8008ddc:      20000008        .word   0x20000008
+
+08008de0 <HAL_RCC_GetSysClockFreq>:
   *
   *
   * @retval SYSCLK frequency
   */
 uint32_t HAL_RCC_GetSysClockFreq(void)
 {
- 80011c8:      b5f0            push    {r4, r5, r6, r7, lr}
- 80011ca:      b085            sub     sp, #20
- 80011cc:      af00            add     r7, sp, #0
+ 8008de0:      b5f0            push    {r4, r5, r6, r7, lr}
+ 8008de2:      b085            sub     sp, #20
+ 8008de4:      af00            add     r7, sp, #0
   uint32_t pllm = 0, pllvco = 0, pllp = 0;
- 80011ce:      2300            movs    r3, #0
- 80011d0:      607b            str     r3, [r7, #4]
- 80011d2:      2300            movs    r3, #0
- 80011d4:      60fb            str     r3, [r7, #12]
- 80011d6:      2300            movs    r3, #0
- 80011d8:      603b            str     r3, [r7, #0]
+ 8008de6:      2300            movs    r3, #0
+ 8008de8:      607b            str     r3, [r7, #4]
+ 8008dea:      2300            movs    r3, #0
+ 8008dec:      60fb            str     r3, [r7, #12]
+ 8008dee:      2300            movs    r3, #0
+ 8008df0:      603b            str     r3, [r7, #0]
   uint32_t sysclockfreq = 0;
- 80011da:      2300            movs    r3, #0
- 80011dc:      60bb            str     r3, [r7, #8]
+ 8008df2:      2300            movs    r3, #0
+ 8008df4:      60bb            str     r3, [r7, #8]
 
   /* Get SYSCLK source -------------------------------------------------------*/
   switch (RCC->CFGR & RCC_CFGR_SWS)
- 80011de:      4b50            ldr     r3, [pc, #320]  ; (8001320 <HAL_RCC_GetSysClockFreq+0x158>)
- 80011e0:      689b            ldr     r3, [r3, #8]
- 80011e2:      f003 030c       and.w   r3, r3, #12
- 80011e6:      2b04            cmp     r3, #4
- 80011e8:      d007            beq.n   80011fa <HAL_RCC_GetSysClockFreq+0x32>
- 80011ea:      2b08            cmp     r3, #8
- 80011ec:      d008            beq.n   8001200 <HAL_RCC_GetSysClockFreq+0x38>
- 80011ee:      2b00            cmp     r3, #0
- 80011f0:      f040 808d       bne.w   800130e <HAL_RCC_GetSysClockFreq+0x146>
+ 8008df6:      4b50            ldr     r3, [pc, #320]  ; (8008f38 <HAL_RCC_GetSysClockFreq+0x158>)
+ 8008df8:      689b            ldr     r3, [r3, #8]
+ 8008dfa:      f003 030c       and.w   r3, r3, #12
+ 8008dfe:      2b04            cmp     r3, #4
+ 8008e00:      d007            beq.n   8008e12 <HAL_RCC_GetSysClockFreq+0x32>
+ 8008e02:      2b08            cmp     r3, #8
+ 8008e04:      d008            beq.n   8008e18 <HAL_RCC_GetSysClockFreq+0x38>
+ 8008e06:      2b00            cmp     r3, #0
+ 8008e08:      f040 808d       bne.w   8008f26 <HAL_RCC_GetSysClockFreq+0x146>
   {
     case RCC_SYSCLKSOURCE_STATUS_HSI:  /* HSI used as system clock source */
     {
       sysclockfreq = HSI_VALUE;
- 80011f4:      4b4b            ldr     r3, [pc, #300]  ; (8001324 <HAL_RCC_GetSysClockFreq+0x15c>)
- 80011f6:      60bb            str     r3, [r7, #8]
+ 8008e0c:      4b4b            ldr     r3, [pc, #300]  ; (8008f3c <HAL_RCC_GetSysClockFreq+0x15c>)
+ 8008e0e:      60bb            str     r3, [r7, #8]
        break;
- 80011f8:      e08c            b.n     8001314 <HAL_RCC_GetSysClockFreq+0x14c>
+ 8008e10:      e08c            b.n     8008f2c <HAL_RCC_GetSysClockFreq+0x14c>
     }
     case RCC_SYSCLKSOURCE_STATUS_HSE:  /* HSE used as system clock  source */
     {
       sysclockfreq = HSE_VALUE;
- 80011fa:      4b4b            ldr     r3, [pc, #300]  ; (8001328 <HAL_RCC_GetSysClockFreq+0x160>)
- 80011fc:      60bb            str     r3, [r7, #8]
+ 8008e12:      4b4b            ldr     r3, [pc, #300]  ; (8008f40 <HAL_RCC_GetSysClockFreq+0x160>)
+ 8008e14:      60bb            str     r3, [r7, #8]
       break;
- 80011fe:      e089            b.n     8001314 <HAL_RCC_GetSysClockFreq+0x14c>
+ 8008e16:      e089            b.n     8008f2c <HAL_RCC_GetSysClockFreq+0x14c>
     }
     case RCC_SYSCLKSOURCE_STATUS_PLLCLK:  /* PLL used as system clock  source */
     {
       /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN
       SYSCLK = PLL_VCO / PLLP */
       pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
- 8001200:      4b47            ldr     r3, [pc, #284]  ; (8001320 <HAL_RCC_GetSysClockFreq+0x158>)
- 8001202:      685b            ldr     r3, [r3, #4]
- 8001204:      f003 033f       and.w   r3, r3, #63     ; 0x3f
- 8001208:      607b            str     r3, [r7, #4]
+ 8008e18:      4b47            ldr     r3, [pc, #284]  ; (8008f38 <HAL_RCC_GetSysClockFreq+0x158>)
+ 8008e1a:      685b            ldr     r3, [r3, #4]
+ 8008e1c:      f003 033f       and.w   r3, r3, #63     ; 0x3f
+ 8008e20:      607b            str     r3, [r7, #4]
       if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
- 800120a:      4b45            ldr     r3, [pc, #276]  ; (8001320 <HAL_RCC_GetSysClockFreq+0x158>)
- 800120c:      685b            ldr     r3, [r3, #4]
- 800120e:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
- 8001212:      2b00            cmp     r3, #0
- 8001214:      d023            beq.n   800125e <HAL_RCC_GetSysClockFreq+0x96>
+ 8008e22:      4b45            ldr     r3, [pc, #276]  ; (8008f38 <HAL_RCC_GetSysClockFreq+0x158>)
+ 8008e24:      685b            ldr     r3, [r3, #4]
+ 8008e26:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
+ 8008e2a:      2b00            cmp     r3, #0
+ 8008e2c:      d023            beq.n   8008e76 <HAL_RCC_GetSysClockFreq+0x96>
       {
         /* HSE used as PLL clock source */
         pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
- 8001216:      4b42            ldr     r3, [pc, #264]  ; (8001320 <HAL_RCC_GetSysClockFreq+0x158>)
- 8001218:      685b            ldr     r3, [r3, #4]
- 800121a:      099b            lsrs    r3, r3, #6
- 800121c:      f04f 0400       mov.w   r4, #0
- 8001220:      f240 11ff       movw    r1, #511        ; 0x1ff
- 8001224:      f04f 0200       mov.w   r2, #0
- 8001228:      ea03 0501       and.w   r5, r3, r1
- 800122c:      ea04 0602       and.w   r6, r4, r2
- 8001230:      4a3d            ldr     r2, [pc, #244]  ; (8001328 <HAL_RCC_GetSysClockFreq+0x160>)
- 8001232:      fb02 f106       mul.w   r1, r2, r6
- 8001236:      2200            movs    r2, #0
- 8001238:      fb02 f205       mul.w   r2, r2, r5
- 800123c:      440a            add     r2, r1
- 800123e:      493a            ldr     r1, [pc, #232]  ; (8001328 <HAL_RCC_GetSysClockFreq+0x160>)
- 8001240:      fba5 0101       umull   r0, r1, r5, r1
- 8001244:      1853            adds    r3, r2, r1
- 8001246:      4619            mov     r1, r3
- 8001248:      687b            ldr     r3, [r7, #4]
- 800124a:      f04f 0400       mov.w   r4, #0
- 800124e:      461a            mov     r2, r3
- 8001250:      4623            mov     r3, r4
- 8001252:      f7fe fff1       bl      8000238 <__aeabi_uldivmod>
- 8001256:      4603            mov     r3, r0
- 8001258:      460c            mov     r4, r1
- 800125a:      60fb            str     r3, [r7, #12]
- 800125c:      e049            b.n     80012f2 <HAL_RCC_GetSysClockFreq+0x12a>
+ 8008e2e:      4b42            ldr     r3, [pc, #264]  ; (8008f38 <HAL_RCC_GetSysClockFreq+0x158>)
+ 8008e30:      685b            ldr     r3, [r3, #4]
+ 8008e32:      099b            lsrs    r3, r3, #6
+ 8008e34:      f04f 0400       mov.w   r4, #0
+ 8008e38:      f240 11ff       movw    r1, #511        ; 0x1ff
+ 8008e3c:      f04f 0200       mov.w   r2, #0
+ 8008e40:      ea03 0501       and.w   r5, r3, r1
+ 8008e44:      ea04 0602       and.w   r6, r4, r2
+ 8008e48:      4a3d            ldr     r2, [pc, #244]  ; (8008f40 <HAL_RCC_GetSysClockFreq+0x160>)
+ 8008e4a:      fb02 f106       mul.w   r1, r2, r6
+ 8008e4e:      2200            movs    r2, #0
+ 8008e50:      fb02 f205       mul.w   r2, r2, r5
+ 8008e54:      440a            add     r2, r1
+ 8008e56:      493a            ldr     r1, [pc, #232]  ; (8008f40 <HAL_RCC_GetSysClockFreq+0x160>)
+ 8008e58:      fba5 0101       umull   r0, r1, r5, r1
+ 8008e5c:      1853            adds    r3, r2, r1
+ 8008e5e:      4619            mov     r1, r3
+ 8008e60:      687b            ldr     r3, [r7, #4]
+ 8008e62:      f04f 0400       mov.w   r4, #0
+ 8008e66:      461a            mov     r2, r3
+ 8008e68:      4623            mov     r3, r4
+ 8008e6a:      f7fd ffbb       bl      8006de4 <__aeabi_uldivmod>
+ 8008e6e:      4603            mov     r3, r0
+ 8008e70:      460c            mov     r4, r1
+ 8008e72:      60fb            str     r3, [r7, #12]
+ 8008e74:      e049            b.n     8008f0a <HAL_RCC_GetSysClockFreq+0x12a>
       }
       else
       {
         /* HSI used as PLL clock source */
         pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
- 800125e:      4b30            ldr     r3, [pc, #192]  ; (8001320 <HAL_RCC_GetSysClockFreq+0x158>)
- 8001260:      685b            ldr     r3, [r3, #4]
- 8001262:      099b            lsrs    r3, r3, #6
- 8001264:      f04f 0400       mov.w   r4, #0
- 8001268:      f240 11ff       movw    r1, #511        ; 0x1ff
- 800126c:      f04f 0200       mov.w   r2, #0
- 8001270:      ea03 0501       and.w   r5, r3, r1
- 8001274:      ea04 0602       and.w   r6, r4, r2
- 8001278:      4629            mov     r1, r5
- 800127a:      4632            mov     r2, r6
- 800127c:      f04f 0300       mov.w   r3, #0
- 8001280:      f04f 0400       mov.w   r4, #0
- 8001284:      0154            lsls    r4, r2, #5
- 8001286:      ea44 64d1       orr.w   r4, r4, r1, lsr #27
- 800128a:      014b            lsls    r3, r1, #5
- 800128c:      4619            mov     r1, r3
- 800128e:      4622            mov     r2, r4
- 8001290:      1b49            subs    r1, r1, r5
- 8001292:      eb62 0206       sbc.w   r2, r2, r6
- 8001296:      f04f 0300       mov.w   r3, #0
- 800129a:      f04f 0400       mov.w   r4, #0
- 800129e:      0194            lsls    r4, r2, #6
- 80012a0:      ea44 6491       orr.w   r4, r4, r1, lsr #26
- 80012a4:      018b            lsls    r3, r1, #6
- 80012a6:      1a5b            subs    r3, r3, r1
- 80012a8:      eb64 0402       sbc.w   r4, r4, r2
- 80012ac:      f04f 0100       mov.w   r1, #0
- 80012b0:      f04f 0200       mov.w   r2, #0
- 80012b4:      00e2            lsls    r2, r4, #3
- 80012b6:      ea42 7253       orr.w   r2, r2, r3, lsr #29
- 80012ba:      00d9            lsls    r1, r3, #3
- 80012bc:      460b            mov     r3, r1
- 80012be:      4614            mov     r4, r2
- 80012c0:      195b            adds    r3, r3, r5
- 80012c2:      eb44 0406       adc.w   r4, r4, r6
- 80012c6:      f04f 0100       mov.w   r1, #0
- 80012ca:      f04f 0200       mov.w   r2, #0
- 80012ce:      02a2            lsls    r2, r4, #10
- 80012d0:      ea42 5293       orr.w   r2, r2, r3, lsr #22
- 80012d4:      0299            lsls    r1, r3, #10
- 80012d6:      460b            mov     r3, r1
- 80012d8:      4614            mov     r4, r2
- 80012da:      4618            mov     r0, r3
- 80012dc:      4621            mov     r1, r4
- 80012de:      687b            ldr     r3, [r7, #4]
- 80012e0:      f04f 0400       mov.w   r4, #0
- 80012e4:      461a            mov     r2, r3
- 80012e6:      4623            mov     r3, r4
- 80012e8:      f7fe ffa6       bl      8000238 <__aeabi_uldivmod>
- 80012ec:      4603            mov     r3, r0
- 80012ee:      460c            mov     r4, r1
- 80012f0:      60fb            str     r3, [r7, #12]
+ 8008e76:      4b30            ldr     r3, [pc, #192]  ; (8008f38 <HAL_RCC_GetSysClockFreq+0x158>)
+ 8008e78:      685b            ldr     r3, [r3, #4]
+ 8008e7a:      099b            lsrs    r3, r3, #6
+ 8008e7c:      f04f 0400       mov.w   r4, #0
+ 8008e80:      f240 11ff       movw    r1, #511        ; 0x1ff
+ 8008e84:      f04f 0200       mov.w   r2, #0
+ 8008e88:      ea03 0501       and.w   r5, r3, r1
+ 8008e8c:      ea04 0602       and.w   r6, r4, r2
+ 8008e90:      4629            mov     r1, r5
+ 8008e92:      4632            mov     r2, r6
+ 8008e94:      f04f 0300       mov.w   r3, #0
+ 8008e98:      f04f 0400       mov.w   r4, #0
+ 8008e9c:      0154            lsls    r4, r2, #5
+ 8008e9e:      ea44 64d1       orr.w   r4, r4, r1, lsr #27
+ 8008ea2:      014b            lsls    r3, r1, #5
+ 8008ea4:      4619            mov     r1, r3
+ 8008ea6:      4622            mov     r2, r4
+ 8008ea8:      1b49            subs    r1, r1, r5
+ 8008eaa:      eb62 0206       sbc.w   r2, r2, r6
+ 8008eae:      f04f 0300       mov.w   r3, #0
+ 8008eb2:      f04f 0400       mov.w   r4, #0
+ 8008eb6:      0194            lsls    r4, r2, #6
+ 8008eb8:      ea44 6491       orr.w   r4, r4, r1, lsr #26
+ 8008ebc:      018b            lsls    r3, r1, #6
+ 8008ebe:      1a5b            subs    r3, r3, r1
+ 8008ec0:      eb64 0402       sbc.w   r4, r4, r2
+ 8008ec4:      f04f 0100       mov.w   r1, #0
+ 8008ec8:      f04f 0200       mov.w   r2, #0
+ 8008ecc:      00e2            lsls    r2, r4, #3
+ 8008ece:      ea42 7253       orr.w   r2, r2, r3, lsr #29
+ 8008ed2:      00d9            lsls    r1, r3, #3
+ 8008ed4:      460b            mov     r3, r1
+ 8008ed6:      4614            mov     r4, r2
+ 8008ed8:      195b            adds    r3, r3, r5
+ 8008eda:      eb44 0406       adc.w   r4, r4, r6
+ 8008ede:      f04f 0100       mov.w   r1, #0
+ 8008ee2:      f04f 0200       mov.w   r2, #0
+ 8008ee6:      02a2            lsls    r2, r4, #10
+ 8008ee8:      ea42 5293       orr.w   r2, r2, r3, lsr #22
+ 8008eec:      0299            lsls    r1, r3, #10
+ 8008eee:      460b            mov     r3, r1
+ 8008ef0:      4614            mov     r4, r2
+ 8008ef2:      4618            mov     r0, r3
+ 8008ef4:      4621            mov     r1, r4
+ 8008ef6:      687b            ldr     r3, [r7, #4]
+ 8008ef8:      f04f 0400       mov.w   r4, #0
+ 8008efc:      461a            mov     r2, r3
+ 8008efe:      4623            mov     r3, r4
+ 8008f00:      f7fd ff70       bl      8006de4 <__aeabi_uldivmod>
+ 8008f04:      4603            mov     r3, r0
+ 8008f06:      460c            mov     r4, r1
+ 8008f08:      60fb            str     r3, [r7, #12]
       }
       pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1 ) *2);
- 80012f2:      4b0b            ldr     r3, [pc, #44]   ; (8001320 <HAL_RCC_GetSysClockFreq+0x158>)
- 80012f4:      685b            ldr     r3, [r3, #4]
- 80012f6:      0c1b            lsrs    r3, r3, #16
- 80012f8:      f003 0303       and.w   r3, r3, #3
- 80012fc:      3301            adds    r3, #1
- 80012fe:      005b            lsls    r3, r3, #1
- 8001300:      603b            str     r3, [r7, #0]
+ 8008f0a:      4b0b            ldr     r3, [pc, #44]   ; (8008f38 <HAL_RCC_GetSysClockFreq+0x158>)
+ 8008f0c:      685b            ldr     r3, [r3, #4]
+ 8008f0e:      0c1b            lsrs    r3, r3, #16
+ 8008f10:      f003 0303       and.w   r3, r3, #3
+ 8008f14:      3301            adds    r3, #1
+ 8008f16:      005b            lsls    r3, r3, #1
+ 8008f18:      603b            str     r3, [r7, #0]
 
       sysclockfreq = pllvco/pllp;
- 8001302:      68fa            ldr     r2, [r7, #12]
- 8001304:      683b            ldr     r3, [r7, #0]
- 8001306:      fbb2 f3f3       udiv    r3, r2, r3
- 800130a:      60bb            str     r3, [r7, #8]
+ 8008f1a:      68fa            ldr     r2, [r7, #12]
+ 8008f1c:      683b            ldr     r3, [r7, #0]
+ 8008f1e:      fbb2 f3f3       udiv    r3, r2, r3
+ 8008f22:      60bb            str     r3, [r7, #8]
       break;
- 800130c:      e002            b.n     8001314 <HAL_RCC_GetSysClockFreq+0x14c>
+ 8008f24:      e002            b.n     8008f2c <HAL_RCC_GetSysClockFreq+0x14c>
     }
     default:
     {
       sysclockfreq = HSI_VALUE;
- 800130e:      4b05            ldr     r3, [pc, #20]   ; (8001324 <HAL_RCC_GetSysClockFreq+0x15c>)
- 8001310:      60bb            str     r3, [r7, #8]
+ 8008f26:      4b05            ldr     r3, [pc, #20]   ; (8008f3c <HAL_RCC_GetSysClockFreq+0x15c>)
+ 8008f28:      60bb            str     r3, [r7, #8]
       break;
- 8001312:      bf00            nop
+ 8008f2a:      bf00            nop
     }
   }
   return sysclockfreq;
- 8001314:      68bb            ldr     r3, [r7, #8]
+ 8008f2c:      68bb            ldr     r3, [r7, #8]
 }
- 8001316:      4618            mov     r0, r3
- 8001318:      3714            adds    r7, #20
- 800131a:      46bd            mov     sp, r7
- 800131c:      bdf0            pop     {r4, r5, r6, r7, pc}
- 800131e:      bf00            nop
- 8001320:      40023800        .word   0x40023800
- 8001324:      00f42400        .word   0x00f42400
- 8001328:      017d7840        .word   0x017d7840
-
-0800132c <HAL_RCC_GetHCLKFreq>:
+ 8008f2e:      4618            mov     r0, r3
+ 8008f30:      3714            adds    r7, #20
+ 8008f32:      46bd            mov     sp, r7
+ 8008f34:      bdf0            pop     {r4, r5, r6, r7, pc}
+ 8008f36:      bf00            nop
+ 8008f38:      40023800        .word   0x40023800
+ 8008f3c:      00f42400        .word   0x00f42400
+ 8008f40:      017d7840        .word   0x017d7840
+
+08008f44 <HAL_RCC_GetHCLKFreq>:
   *         right HCLK value. Otherwise, any configuration based on this function will be incorrect.
   * @note   The SystemCoreClock CMSIS variable is used to store System Clock Frequency.
   * @retval HCLK frequency
   */
 uint32_t HAL_RCC_GetHCLKFreq(void)
 {
- 800132c:      b480            push    {r7}
- 800132e:      af00            add     r7, sp, #0
+ 8008f44:      b480            push    {r7}
+ 8008f46:      af00            add     r7, sp, #0
   return SystemCoreClock;
- 8001330:      4b03            ldr     r3, [pc, #12]   ; (8001340 <HAL_RCC_GetHCLKFreq+0x14>)
- 8001332:      681b            ldr     r3, [r3, #0]
+ 8008f48:      4b03            ldr     r3, [pc, #12]   ; (8008f58 <HAL_RCC_GetHCLKFreq+0x14>)
+ 8008f4a:      681b            ldr     r3, [r3, #0]
 }
- 8001334:      4618            mov     r0, r3
- 8001336:      46bd            mov     sp, r7
- 8001338:      f85d 7b04       ldr.w   r7, [sp], #4
- 800133c:      4770            bx      lr
- 800133e:      bf00            nop
- 8001340:      20000008        .word   0x20000008
-
-08001344 <HAL_RCC_GetPCLK1Freq>:
+ 8008f4c:      4618            mov     r0, r3
+ 8008f4e:      46bd            mov     sp, r7
+ 8008f50:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8008f54:      4770            bx      lr
+ 8008f56:      bf00            nop
+ 8008f58:      20000008        .word   0x20000008
+
+08008f5c <HAL_RCC_GetPCLK1Freq>:
   * @note   Each time PCLK1 changes, this function must be called to update the
   *         right PCLK1 value. Otherwise, any configuration based on this function will be incorrect.
   * @retval PCLK1 frequency
   */
 uint32_t HAL_RCC_GetPCLK1Freq(void)
 {
- 8001344:      b580            push    {r7, lr}
- 8001346:      af00            add     r7, sp, #0
+ 8008f5c:      b580            push    {r7, lr}
+ 8008f5e:      af00            add     r7, sp, #0
   /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
   return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1)>> RCC_CFGR_PPRE1_Pos]);
- 8001348:      f7ff fff0       bl      800132c <HAL_RCC_GetHCLKFreq>
- 800134c:      4601            mov     r1, r0
- 800134e:      4b05            ldr     r3, [pc, #20]   ; (8001364 <HAL_RCC_GetPCLK1Freq+0x20>)
- 8001350:      689b            ldr     r3, [r3, #8]
- 8001352:      0a9b            lsrs    r3, r3, #10
- 8001354:      f003 0307       and.w   r3, r3, #7
- 8001358:      4a03            ldr     r2, [pc, #12]   ; (8001368 <HAL_RCC_GetPCLK1Freq+0x24>)
- 800135a:      5cd3            ldrb    r3, [r2, r3]
- 800135c:      fa21 f303       lsr.w   r3, r1, r3
+ 8008f60:      f7ff fff0       bl      8008f44 <HAL_RCC_GetHCLKFreq>
+ 8008f64:      4601            mov     r1, r0
+ 8008f66:      4b05            ldr     r3, [pc, #20]   ; (8008f7c <HAL_RCC_GetPCLK1Freq+0x20>)
+ 8008f68:      689b            ldr     r3, [r3, #8]
+ 8008f6a:      0a9b            lsrs    r3, r3, #10
+ 8008f6c:      f003 0307       and.w   r3, r3, #7
+ 8008f70:      4a03            ldr     r2, [pc, #12]   ; (8008f80 <HAL_RCC_GetPCLK1Freq+0x24>)
+ 8008f72:      5cd3            ldrb    r3, [r2, r3]
+ 8008f74:      fa21 f303       lsr.w   r3, r1, r3
 }
- 8001360:      4618            mov     r0, r3
- 8001362:      bd80            pop     {r7, pc}
- 8001364:      40023800        .word   0x40023800
- 8001368:      08002888        .word   0x08002888
+ 8008f78:      4618            mov     r0, r3
+ 8008f7a:      bd80            pop     {r7, pc}
+ 8008f7c:      40023800        .word   0x40023800
+ 8008f80:      08012388        .word   0x08012388
 
-0800136c <HAL_RCC_GetPCLK2Freq>:
+08008f84 <HAL_RCC_GetPCLK2Freq>:
   * @note   Each time PCLK2 changes, this function must be called to update the
   *         right PCLK2 value. Otherwise, any configuration based on this function will be incorrect.
   * @retval PCLK2 frequency
   */
 uint32_t HAL_RCC_GetPCLK2Freq(void)
 {
- 800136c:      b580            push    {r7, lr}
- 800136e:      af00            add     r7, sp, #0
+ 8008f84:      b580            push    {r7, lr}
+ 8008f86:      af00            add     r7, sp, #0
   /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
   return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2)>> RCC_CFGR_PPRE2_Pos]);
- 8001370:      f7ff ffdc       bl      800132c <HAL_RCC_GetHCLKFreq>
- 8001374:      4601            mov     r1, r0
- 8001376:      4b05            ldr     r3, [pc, #20]   ; (800138c <HAL_RCC_GetPCLK2Freq+0x20>)
- 8001378:      689b            ldr     r3, [r3, #8]
- 800137a:      0b5b            lsrs    r3, r3, #13
- 800137c:      f003 0307       and.w   r3, r3, #7
- 8001380:      4a03            ldr     r2, [pc, #12]   ; (8001390 <HAL_RCC_GetPCLK2Freq+0x24>)
- 8001382:      5cd3            ldrb    r3, [r2, r3]
- 8001384:      fa21 f303       lsr.w   r3, r1, r3
+ 8008f88:      f7ff ffdc       bl      8008f44 <HAL_RCC_GetHCLKFreq>
+ 8008f8c:      4601            mov     r1, r0
+ 8008f8e:      4b05            ldr     r3, [pc, #20]   ; (8008fa4 <HAL_RCC_GetPCLK2Freq+0x20>)
+ 8008f90:      689b            ldr     r3, [r3, #8]
+ 8008f92:      0b5b            lsrs    r3, r3, #13
+ 8008f94:      f003 0307       and.w   r3, r3, #7
+ 8008f98:      4a03            ldr     r2, [pc, #12]   ; (8008fa8 <HAL_RCC_GetPCLK2Freq+0x24>)
+ 8008f9a:      5cd3            ldrb    r3, [r2, r3]
+ 8008f9c:      fa21 f303       lsr.w   r3, r1, r3
 }
- 8001388:      4618            mov     r0, r3
- 800138a:      bd80            pop     {r7, pc}
- 800138c:      40023800        .word   0x40023800
- 8001390:      08002888        .word   0x08002888
+ 8008fa0:      4618            mov     r0, r3
+ 8008fa2:      bd80            pop     {r7, pc}
+ 8008fa4:      40023800        .word   0x40023800
+ 8008fa8:      08012388        .word   0x08012388
 
-08001394 <HAL_RCCEx_PeriphCLKConfig>:
+08008fac <HAL_RCCEx_PeriphCLKConfig>:
   *         the backup registers) are set to their reset values.
   *
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClkInit)
 {
- 8001394:      b580            push    {r7, lr}
- 8001396:      b088            sub     sp, #32
- 8001398:      af00            add     r7, sp, #0
- 800139a:      6078            str     r0, [r7, #4]
+ 8008fac:      b580            push    {r7, lr}
+ 8008fae:      b088            sub     sp, #32
+ 8008fb0:      af00            add     r7, sp, #0
+ 8008fb2:      6078            str     r0, [r7, #4]
   uint32_t tickstart = 0;
- 800139c:      2300            movs    r3, #0
- 800139e:      617b            str     r3, [r7, #20]
+ 8008fb4:      2300            movs    r3, #0
+ 8008fb6:      617b            str     r3, [r7, #20]
   uint32_t tmpreg0 = 0;
- 80013a0:      2300            movs    r3, #0
- 80013a2:      613b            str     r3, [r7, #16]
+ 8008fb8:      2300            movs    r3, #0
+ 8008fba:      613b            str     r3, [r7, #16]
   uint32_t tmpreg1 = 0;
- 80013a4:      2300            movs    r3, #0
- 80013a6:      60fb            str     r3, [r7, #12]
+ 8008fbc:      2300            movs    r3, #0
+ 8008fbe:      60fb            str     r3, [r7, #12]
   uint32_t plli2sused = 0;
- 80013a8:      2300            movs    r3, #0
- 80013aa:      61fb            str     r3, [r7, #28]
+ 8008fc0:      2300            movs    r3, #0
+ 8008fc2:      61fb            str     r3, [r7, #28]
   uint32_t pllsaiused = 0;
- 80013ac:      2300            movs    r3, #0
- 80013ae:      61bb            str     r3, [r7, #24]
+ 8008fc4:      2300            movs    r3, #0
+ 8008fc6:      61bb            str     r3, [r7, #24]
 
   /* Check the parameters */
   assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection));
 
   /*----------------------------------- I2S configuration ----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S))
- 80013b0:      687b            ldr     r3, [r7, #4]
- 80013b2:      681b            ldr     r3, [r3, #0]
- 80013b4:      f003 0301       and.w   r3, r3, #1
- 80013b8:      2b00            cmp     r3, #0
- 80013ba:      d012            beq.n   80013e2 <HAL_RCCEx_PeriphCLKConfig+0x4e>
+ 8008fc8:      687b            ldr     r3, [r7, #4]
+ 8008fca:      681b            ldr     r3, [r3, #0]
+ 8008fcc:      f003 0301       and.w   r3, r3, #1
+ 8008fd0:      2b00            cmp     r3, #0
+ 8008fd2:      d012            beq.n   8008ffa <HAL_RCCEx_PeriphCLKConfig+0x4e>
   {
     /* Check the parameters */
     assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection));
 
     /* Configure I2S Clock source */
     __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);
- 80013bc:      4b69            ldr     r3, [pc, #420]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80013be:      689b            ldr     r3, [r3, #8]
- 80013c0:      4a68            ldr     r2, [pc, #416]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80013c2:      f423 0300       bic.w   r3, r3, #8388608        ; 0x800000
- 80013c6:      6093            str     r3, [r2, #8]
- 80013c8:      4b66            ldr     r3, [pc, #408]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80013ca:      689a            ldr     r2, [r3, #8]
- 80013cc:      687b            ldr     r3, [r7, #4]
- 80013ce:      6b5b            ldr     r3, [r3, #52]   ; 0x34
- 80013d0:      4964            ldr     r1, [pc, #400]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80013d2:      4313            orrs    r3, r2
- 80013d4:      608b            str     r3, [r1, #8]
+ 8008fd4:      4b69            ldr     r3, [pc, #420]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8008fd6:      689b            ldr     r3, [r3, #8]
+ 8008fd8:      4a68            ldr     r2, [pc, #416]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8008fda:      f423 0300       bic.w   r3, r3, #8388608        ; 0x800000
+ 8008fde:      6093            str     r3, [r2, #8]
+ 8008fe0:      4b66            ldr     r3, [pc, #408]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8008fe2:      689a            ldr     r2, [r3, #8]
+ 8008fe4:      687b            ldr     r3, [r7, #4]
+ 8008fe6:      6b5b            ldr     r3, [r3, #52]   ; 0x34
+ 8008fe8:      4964            ldr     r1, [pc, #400]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8008fea:      4313            orrs    r3, r2
+ 8008fec:      608b            str     r3, [r1, #8]
 
     /* Enable the PLLI2S when it's used as clock source for I2S */
     if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)
- 80013d6:      687b            ldr     r3, [r7, #4]
- 80013d8:      6b5b            ldr     r3, [r3, #52]   ; 0x34
- 80013da:      2b00            cmp     r3, #0
- 80013dc:      d101            bne.n   80013e2 <HAL_RCCEx_PeriphCLKConfig+0x4e>
+ 8008fee:      687b            ldr     r3, [r7, #4]
+ 8008ff0:      6b5b            ldr     r3, [r3, #52]   ; 0x34
+ 8008ff2:      2b00            cmp     r3, #0
+ 8008ff4:      d101            bne.n   8008ffa <HAL_RCCEx_PeriphCLKConfig+0x4e>
     {
       plli2sused = 1;
- 80013de:      2301            movs    r3, #1
- 80013e0:      61fb            str     r3, [r7, #28]
+ 8008ff6:      2301            movs    r3, #1
+ 8008ff8:      61fb            str     r3, [r7, #28]
     }
   }
 
   /*------------------------------------ SAI1 configuration --------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1))
- 80013e2:      687b            ldr     r3, [r7, #4]
- 80013e4:      681b            ldr     r3, [r3, #0]
- 80013e6:      f403 2300       and.w   r3, r3, #524288 ; 0x80000
- 80013ea:      2b00            cmp     r3, #0
- 80013ec:      d017            beq.n   800141e <HAL_RCCEx_PeriphCLKConfig+0x8a>
+ 8008ffa:      687b            ldr     r3, [r7, #4]
+ 8008ffc:      681b            ldr     r3, [r3, #0]
+ 8008ffe:      f403 2300       and.w   r3, r3, #524288 ; 0x80000
+ 8009002:      2b00            cmp     r3, #0
+ 8009004:      d017            beq.n   8009036 <HAL_RCCEx_PeriphCLKConfig+0x8a>
   {
     /* Check the parameters */
     assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection));
 
     /* Configure SAI1 Clock source */
     __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection);
- 80013ee:      4b5d            ldr     r3, [pc, #372]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80013f0:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 80013f4:      f423 1240       bic.w   r2, r3, #3145728        ; 0x300000
- 80013f8:      687b            ldr     r3, [r7, #4]
- 80013fa:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
- 80013fc:      4959            ldr     r1, [pc, #356]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80013fe:      4313            orrs    r3, r2
- 8001400:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 8009006:      4b5d            ldr     r3, [pc, #372]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009008:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 800900c:      f423 1240       bic.w   r2, r3, #3145728        ; 0x300000
+ 8009010:      687b            ldr     r3, [r7, #4]
+ 8009012:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
+ 8009014:      4959            ldr     r1, [pc, #356]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009016:      4313            orrs    r3, r2
+ 8009018:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
     /* Enable the PLLI2S when it's used as clock source for SAI */
     if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)
- 8001404:      687b            ldr     r3, [r7, #4]
- 8001406:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
- 8001408:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
- 800140c:      d101            bne.n   8001412 <HAL_RCCEx_PeriphCLKConfig+0x7e>
+ 800901c:      687b            ldr     r3, [r7, #4]
+ 800901e:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
+ 8009020:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
+ 8009024:      d101            bne.n   800902a <HAL_RCCEx_PeriphCLKConfig+0x7e>
     {
       plli2sused = 1;
- 800140e:      2301            movs    r3, #1
- 8001410:      61fb            str     r3, [r7, #28]
+ 8009026:      2301            movs    r3, #1
+ 8009028:      61fb            str     r3, [r7, #28]
     }
     /* Enable the PLLSAI when it's used as clock source for SAI */
     if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)
- 8001412:      687b            ldr     r3, [r7, #4]
- 8001414:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
- 8001416:      2b00            cmp     r3, #0
- 8001418:      d101            bne.n   800141e <HAL_RCCEx_PeriphCLKConfig+0x8a>
+ 800902a:      687b            ldr     r3, [r7, #4]
+ 800902c:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
+ 800902e:      2b00            cmp     r3, #0
+ 8009030:      d101            bne.n   8009036 <HAL_RCCEx_PeriphCLKConfig+0x8a>
     {
       pllsaiused = 1;
- 800141a:      2301            movs    r3, #1
- 800141c:      61bb            str     r3, [r7, #24]
+ 8009032:      2301            movs    r3, #1
+ 8009034:      61bb            str     r3, [r7, #24]
     }
   }
 
   /*------------------------------------ SAI2 configuration --------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2))
- 800141e:      687b            ldr     r3, [r7, #4]
- 8001420:      681b            ldr     r3, [r3, #0]
- 8001422:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
- 8001426:      2b00            cmp     r3, #0
- 8001428:      d017            beq.n   800145a <HAL_RCCEx_PeriphCLKConfig+0xc6>
+ 8009036:      687b            ldr     r3, [r7, #4]
+ 8009038:      681b            ldr     r3, [r3, #0]
+ 800903a:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
+ 800903e:      2b00            cmp     r3, #0
+ 8009040:      d017            beq.n   8009072 <HAL_RCCEx_PeriphCLKConfig+0xc6>
   {
     /* Check the parameters */
     assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection));
 
     /* Configure SAI2 Clock source */
     __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection);
- 800142a:      4b4e            ldr     r3, [pc, #312]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800142c:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 8001430:      f423 0240       bic.w   r2, r3, #12582912       ; 0xc00000
- 8001434:      687b            ldr     r3, [r7, #4]
- 8001436:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8001438:      494a            ldr     r1, [pc, #296]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800143a:      4313            orrs    r3, r2
- 800143c:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 8009042:      4b4e            ldr     r3, [pc, #312]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009044:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 8009048:      f423 0240       bic.w   r2, r3, #12582912       ; 0xc00000
+ 800904c:      687b            ldr     r3, [r7, #4]
+ 800904e:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 8009050:      494a            ldr     r1, [pc, #296]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009052:      4313            orrs    r3, r2
+ 8009054:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
 
     /* Enable the PLLI2S when it's used as clock source for SAI */
     if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)
- 8001440:      687b            ldr     r3, [r7, #4]
- 8001442:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8001444:      f5b3 0f80       cmp.w   r3, #4194304    ; 0x400000
- 8001448:      d101            bne.n   800144e <HAL_RCCEx_PeriphCLKConfig+0xba>
+ 8009058:      687b            ldr     r3, [r7, #4]
+ 800905a:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800905c:      f5b3 0f80       cmp.w   r3, #4194304    ; 0x400000
+ 8009060:      d101            bne.n   8009066 <HAL_RCCEx_PeriphCLKConfig+0xba>
     {
       plli2sused = 1;
- 800144a:      2301            movs    r3, #1
- 800144c:      61fb            str     r3, [r7, #28]
+ 8009062:      2301            movs    r3, #1
+ 8009064:      61fb            str     r3, [r7, #28]
     }
     /* Enable the PLLSAI when it's used as clock source for SAI */
     if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)
- 800144e:      687b            ldr     r3, [r7, #4]
- 8001450:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8001452:      2b00            cmp     r3, #0
- 8001454:      d101            bne.n   800145a <HAL_RCCEx_PeriphCLKConfig+0xc6>
+ 8009066:      687b            ldr     r3, [r7, #4]
+ 8009068:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800906a:      2b00            cmp     r3, #0
+ 800906c:      d101            bne.n   8009072 <HAL_RCCEx_PeriphCLKConfig+0xc6>
     {
       pllsaiused = 1;
- 8001456:      2301            movs    r3, #1
- 8001458:      61bb            str     r3, [r7, #24]
+ 800906e:      2301            movs    r3, #1
+ 8009070:      61bb            str     r3, [r7, #24]
     }
   }
 
   /*-------------------------------------- SPDIF-RX Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)
- 800145a:      687b            ldr     r3, [r7, #4]
- 800145c:      681b            ldr     r3, [r3, #0]
- 800145e:      f003 7380       and.w   r3, r3, #16777216       ; 0x1000000
- 8001462:      2b00            cmp     r3, #0
- 8001464:      d001            beq.n   800146a <HAL_RCCEx_PeriphCLKConfig+0xd6>
+ 8009072:      687b            ldr     r3, [r7, #4]
+ 8009074:      681b            ldr     r3, [r3, #0]
+ 8009076:      f003 7380       and.w   r3, r3, #16777216       ; 0x1000000
+ 800907a:      2b00            cmp     r3, #0
+ 800907c:      d001            beq.n   8009082 <HAL_RCCEx_PeriphCLKConfig+0xd6>
   {
       plli2sused = 1;
- 8001466:      2301            movs    r3, #1
- 8001468:      61fb            str     r3, [r7, #28]
+ 800907e:      2301            movs    r3, #1
+ 8009080:      61fb            str     r3, [r7, #28]
   }
 
   /*------------------------------------ RTC configuration --------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC))
- 800146a:      687b            ldr     r3, [r7, #4]
- 800146c:      681b            ldr     r3, [r3, #0]
- 800146e:      f003 0320       and.w   r3, r3, #32
- 8001472:      2b00            cmp     r3, #0
- 8001474:      f000 808b       beq.w   800158e <HAL_RCCEx_PeriphCLKConfig+0x1fa>
+ 8009082:      687b            ldr     r3, [r7, #4]
+ 8009084:      681b            ldr     r3, [r3, #0]
+ 8009086:      f003 0320       and.w   r3, r3, #32
+ 800908a:      2b00            cmp     r3, #0
+ 800908c:      f000 808b       beq.w   80091a6 <HAL_RCCEx_PeriphCLKConfig+0x1fa>
   {
     /* Check for RTC Parameters used to output RTCCLK */
     assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection));
 
     /* Enable Power Clock*/
     __HAL_RCC_PWR_CLK_ENABLE();
- 8001478:      4b3a            ldr     r3, [pc, #232]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800147a:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 800147c:      4a39            ldr     r2, [pc, #228]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800147e:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
- 8001482:      6413            str     r3, [r2, #64]   ; 0x40
- 8001484:      4b37            ldr     r3, [pc, #220]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8001486:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8001488:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 800148c:      60bb            str     r3, [r7, #8]
- 800148e:      68bb            ldr     r3, [r7, #8]
+ 8009090:      4b3a            ldr     r3, [pc, #232]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009092:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 8009094:      4a39            ldr     r2, [pc, #228]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009096:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
+ 800909a:      6413            str     r3, [r2, #64]   ; 0x40
+ 800909c:      4b37            ldr     r3, [pc, #220]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 800909e:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80090a0:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 80090a4:      60bb            str     r3, [r7, #8]
+ 80090a6:      68bb            ldr     r3, [r7, #8]
 
     /* Enable write access to Backup domain */
     PWR->CR1 |= PWR_CR1_DBP;
- 8001490:      4b35            ldr     r3, [pc, #212]  ; (8001568 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
- 8001492:      681b            ldr     r3, [r3, #0]
- 8001494:      4a34            ldr     r2, [pc, #208]  ; (8001568 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
- 8001496:      f443 7380       orr.w   r3, r3, #256    ; 0x100
- 800149a:      6013            str     r3, [r2, #0]
+ 80090a8:      4b35            ldr     r3, [pc, #212]  ; (8009180 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
+ 80090aa:      681b            ldr     r3, [r3, #0]
+ 80090ac:      4a34            ldr     r2, [pc, #208]  ; (8009180 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
+ 80090ae:      f443 7380       orr.w   r3, r3, #256    ; 0x100
+ 80090b2:      6013            str     r3, [r2, #0]
 
     /* Get Start Tick*/
     tickstart = HAL_GetTick();
- 800149c:      f7ff f89e       bl      80005dc <HAL_GetTick>
- 80014a0:      6178            str     r0, [r7, #20]
+ 80090b4:      f7fe ffee       bl      8008094 <HAL_GetTick>
+ 80090b8:      6178            str     r0, [r7, #20]
 
     /* Wait for Backup domain Write protection disable */
     while((PWR->CR1 & PWR_CR1_DBP) == RESET)
- 80014a2:      e008            b.n     80014b6 <HAL_RCCEx_PeriphCLKConfig+0x122>
+ 80090ba:      e008            b.n     80090ce <HAL_RCCEx_PeriphCLKConfig+0x122>
     {
       if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
- 80014a4:      f7ff f89a       bl      80005dc <HAL_GetTick>
- 80014a8:      4602            mov     r2, r0
- 80014aa:      697b            ldr     r3, [r7, #20]
- 80014ac:      1ad3            subs    r3, r2, r3
- 80014ae:      2b64            cmp     r3, #100        ; 0x64
- 80014b0:      d901            bls.n   80014b6 <HAL_RCCEx_PeriphCLKConfig+0x122>
+ 80090bc:      f7fe ffea       bl      8008094 <HAL_GetTick>
+ 80090c0:      4602            mov     r2, r0
+ 80090c2:      697b            ldr     r3, [r7, #20]
+ 80090c4:      1ad3            subs    r3, r2, r3
+ 80090c6:      2b64            cmp     r3, #100        ; 0x64
+ 80090c8:      d901            bls.n   80090ce <HAL_RCCEx_PeriphCLKConfig+0x122>
       {
         return HAL_TIMEOUT;
- 80014b2:      2303            movs    r3, #3
- 80014b4:      e38d            b.n     8001bd2 <HAL_RCCEx_PeriphCLKConfig+0x83e>
+ 80090ca:      2303            movs    r3, #3
+ 80090cc:      e38d            b.n     80097ea <HAL_RCCEx_PeriphCLKConfig+0x83e>
     while((PWR->CR1 & PWR_CR1_DBP) == RESET)
- 80014b6:      4b2c            ldr     r3, [pc, #176]  ; (8001568 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
- 80014b8:      681b            ldr     r3, [r3, #0]
- 80014ba:      f403 7380       and.w   r3, r3, #256    ; 0x100
- 80014be:      2b00            cmp     r3, #0
- 80014c0:      d0f0            beq.n   80014a4 <HAL_RCCEx_PeriphCLKConfig+0x110>
+ 80090ce:      4b2c            ldr     r3, [pc, #176]  ; (8009180 <HAL_RCCEx_PeriphCLKConfig+0x1d4>)
+ 80090d0:      681b            ldr     r3, [r3, #0]
+ 80090d2:      f403 7380       and.w   r3, r3, #256    ; 0x100
+ 80090d6:      2b00            cmp     r3, #0
+ 80090d8:      d0f0            beq.n   80090bc <HAL_RCCEx_PeriphCLKConfig+0x110>
       }
     }
 
     /* Reset the Backup domain only if the RTC Clock source selection is modified */
     tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL);
- 80014c2:      4b28            ldr     r3, [pc, #160]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80014c4:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 80014c6:      f403 7340       and.w   r3, r3, #768    ; 0x300
- 80014ca:      613b            str     r3, [r7, #16]
+ 80090da:      4b28            ldr     r3, [pc, #160]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 80090dc:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 80090de:      f403 7340       and.w   r3, r3, #768    ; 0x300
+ 80090e2:      613b            str     r3, [r7, #16]
 
     if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)))
- 80014cc:      693b            ldr     r3, [r7, #16]
- 80014ce:      2b00            cmp     r3, #0
- 80014d0:      d035            beq.n   800153e <HAL_RCCEx_PeriphCLKConfig+0x1aa>
- 80014d2:      687b            ldr     r3, [r7, #4]
- 80014d4:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 80014d6:      f403 7340       and.w   r3, r3, #768    ; 0x300
- 80014da:      693a            ldr     r2, [r7, #16]
- 80014dc:      429a            cmp     r2, r3
- 80014de:      d02e            beq.n   800153e <HAL_RCCEx_PeriphCLKConfig+0x1aa>
+ 80090e4:      693b            ldr     r3, [r7, #16]
+ 80090e6:      2b00            cmp     r3, #0
+ 80090e8:      d035            beq.n   8009156 <HAL_RCCEx_PeriphCLKConfig+0x1aa>
+ 80090ea:      687b            ldr     r3, [r7, #4]
+ 80090ec:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 80090ee:      f403 7340       and.w   r3, r3, #768    ; 0x300
+ 80090f2:      693a            ldr     r2, [r7, #16]
+ 80090f4:      429a            cmp     r2, r3
+ 80090f6:      d02e            beq.n   8009156 <HAL_RCCEx_PeriphCLKConfig+0x1aa>
     {
       /* Store the content of BDCR register before the reset of Backup Domain */
       tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
- 80014e0:      4b20            ldr     r3, [pc, #128]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80014e2:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 80014e4:      f423 7340       bic.w   r3, r3, #768    ; 0x300
- 80014e8:      613b            str     r3, [r7, #16]
+ 80090f8:      4b20            ldr     r3, [pc, #128]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 80090fa:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 80090fc:      f423 7340       bic.w   r3, r3, #768    ; 0x300
+ 8009100:      613b            str     r3, [r7, #16]
 
       /* RTC Clock selection can be changed only if the Backup Domain is reset */
       __HAL_RCC_BACKUPRESET_FORCE();
- 80014ea:      4b1e            ldr     r3, [pc, #120]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80014ec:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 80014ee:      4a1d            ldr     r2, [pc, #116]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80014f0:      f443 3380       orr.w   r3, r3, #65536  ; 0x10000
- 80014f4:      6713            str     r3, [r2, #112]  ; 0x70
+ 8009102:      4b1e            ldr     r3, [pc, #120]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009104:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8009106:      4a1d            ldr     r2, [pc, #116]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009108:      f443 3380       orr.w   r3, r3, #65536  ; 0x10000
+ 800910c:      6713            str     r3, [r2, #112]  ; 0x70
       __HAL_RCC_BACKUPRESET_RELEASE();
- 80014f6:      4b1b            ldr     r3, [pc, #108]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80014f8:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 80014fa:      4a1a            ldr     r2, [pc, #104]  ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 80014fc:      f423 3380       bic.w   r3, r3, #65536  ; 0x10000
- 8001500:      6713            str     r3, [r2, #112]  ; 0x70
+ 800910e:      4b1b            ldr     r3, [pc, #108]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009110:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8009112:      4a1a            ldr     r2, [pc, #104]  ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009114:      f423 3380       bic.w   r3, r3, #65536  ; 0x10000
+ 8009118:      6713            str     r3, [r2, #112]  ; 0x70
 
       /* Restore the Content of BDCR register */
       RCC->BDCR = tmpreg0;
- 8001502:      4a18            ldr     r2, [pc, #96]   ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8001504:      693b            ldr     r3, [r7, #16]
- 8001506:      6713            str     r3, [r2, #112]  ; 0x70
+ 800911a:      4a18            ldr     r2, [pc, #96]   ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 800911c:      693b            ldr     r3, [r7, #16]
+ 800911e:      6713            str     r3, [r2, #112]  ; 0x70
 
       /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */
       if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON))
- 8001508:      4b16            ldr     r3, [pc, #88]   ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800150a:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 800150c:      f003 0301       and.w   r3, r3, #1
- 8001510:      2b01            cmp     r3, #1
- 8001512:      d114            bne.n   800153e <HAL_RCCEx_PeriphCLKConfig+0x1aa>
+ 8009120:      4b16            ldr     r3, [pc, #88]   ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009122:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8009124:      f003 0301       and.w   r3, r3, #1
+ 8009128:      2b01            cmp     r3, #1
+ 800912a:      d114            bne.n   8009156 <HAL_RCCEx_PeriphCLKConfig+0x1aa>
       {
         /* Get Start Tick*/
         tickstart = HAL_GetTick();
- 8001514:      f7ff f862       bl      80005dc <HAL_GetTick>
- 8001518:      6178            str     r0, [r7, #20]
+ 800912c:      f7fe ffb2       bl      8008094 <HAL_GetTick>
+ 8009130:      6178            str     r0, [r7, #20]
 
         /* Wait till LSE is ready */
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 800151a:      e00a            b.n     8001532 <HAL_RCCEx_PeriphCLKConfig+0x19e>
+ 8009132:      e00a            b.n     800914a <HAL_RCCEx_PeriphCLKConfig+0x19e>
         {
           if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
- 800151c:      f7ff f85e       bl      80005dc <HAL_GetTick>
- 8001520:      4602            mov     r2, r0
- 8001522:      697b            ldr     r3, [r7, #20]
- 8001524:      1ad3            subs    r3, r2, r3
- 8001526:      f241 3288       movw    r2, #5000       ; 0x1388
- 800152a:      4293            cmp     r3, r2
- 800152c:      d901            bls.n   8001532 <HAL_RCCEx_PeriphCLKConfig+0x19e>
+ 8009134:      f7fe ffae       bl      8008094 <HAL_GetTick>
+ 8009138:      4602            mov     r2, r0
+ 800913a:      697b            ldr     r3, [r7, #20]
+ 800913c:      1ad3            subs    r3, r2, r3
+ 800913e:      f241 3288       movw    r2, #5000       ; 0x1388
+ 8009142:      4293            cmp     r3, r2
+ 8009144:      d901            bls.n   800914a <HAL_RCCEx_PeriphCLKConfig+0x19e>
           {
             return HAL_TIMEOUT;
- 800152e:      2303            movs    r3, #3
- 8001530:      e34f            b.n     8001bd2 <HAL_RCCEx_PeriphCLKConfig+0x83e>
+ 8009146:      2303            movs    r3, #3
+ 8009148:      e34f            b.n     80097ea <HAL_RCCEx_PeriphCLKConfig+0x83e>
         while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
- 8001532:      4b0c            ldr     r3, [pc, #48]   ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 8001534:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 8001536:      f003 0302       and.w   r3, r3, #2
- 800153a:      2b00            cmp     r3, #0
- 800153c:      d0ee            beq.n   800151c <HAL_RCCEx_PeriphCLKConfig+0x188>
+ 800914a:      4b0c            ldr     r3, [pc, #48]   ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 800914c:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 800914e:      f003 0302       and.w   r3, r3, #2
+ 8009152:      2b00            cmp     r3, #0
+ 8009154:      d0ee            beq.n   8009134 <HAL_RCCEx_PeriphCLKConfig+0x188>
           }
         }
       }
     }
     __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
- 800153e:      687b            ldr     r3, [r7, #4]
- 8001540:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8001542:      f403 7340       and.w   r3, r3, #768    ; 0x300
- 8001546:      f5b3 7f40       cmp.w   r3, #768        ; 0x300
- 800154a:      d111            bne.n   8001570 <HAL_RCCEx_PeriphCLKConfig+0x1dc>
- 800154c:      4b05            ldr     r3, [pc, #20]   ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800154e:      689b            ldr     r3, [r3, #8]
- 8001550:      f423 12f8       bic.w   r2, r3, #2031616        ; 0x1f0000
- 8001554:      687b            ldr     r3, [r7, #4]
- 8001556:      6b19            ldr     r1, [r3, #48]   ; 0x30
- 8001558:      4b04            ldr     r3, [pc, #16]   ; (800156c <HAL_RCCEx_PeriphCLKConfig+0x1d8>)
- 800155a:      400b            ands    r3, r1
- 800155c:      4901            ldr     r1, [pc, #4]    ; (8001564 <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
- 800155e:      4313            orrs    r3, r2
- 8001560:      608b            str     r3, [r1, #8]
- 8001562:      e00b            b.n     800157c <HAL_RCCEx_PeriphCLKConfig+0x1e8>
- 8001564:      40023800        .word   0x40023800
- 8001568:      40007000        .word   0x40007000
- 800156c:      0ffffcff        .word   0x0ffffcff
- 8001570:      4bb3            ldr     r3, [pc, #716]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001572:      689b            ldr     r3, [r3, #8]
- 8001574:      4ab2            ldr     r2, [pc, #712]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001576:      f423 13f8       bic.w   r3, r3, #2031616        ; 0x1f0000
- 800157a:      6093            str     r3, [r2, #8]
- 800157c:      4bb0            ldr     r3, [pc, #704]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800157e:      6f1a            ldr     r2, [r3, #112]  ; 0x70
- 8001580:      687b            ldr     r3, [r7, #4]
- 8001582:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8001584:      f3c3 030b       ubfx    r3, r3, #0, #12
- 8001588:      49ad            ldr     r1, [pc, #692]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800158a:      4313            orrs    r3, r2
- 800158c:      670b            str     r3, [r1, #112]  ; 0x70
+ 8009156:      687b            ldr     r3, [r7, #4]
+ 8009158:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800915a:      f403 7340       and.w   r3, r3, #768    ; 0x300
+ 800915e:      f5b3 7f40       cmp.w   r3, #768        ; 0x300
+ 8009162:      d111            bne.n   8009188 <HAL_RCCEx_PeriphCLKConfig+0x1dc>
+ 8009164:      4b05            ldr     r3, [pc, #20]   ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009166:      689b            ldr     r3, [r3, #8]
+ 8009168:      f423 12f8       bic.w   r2, r3, #2031616        ; 0x1f0000
+ 800916c:      687b            ldr     r3, [r7, #4]
+ 800916e:      6b19            ldr     r1, [r3, #48]   ; 0x30
+ 8009170:      4b04            ldr     r3, [pc, #16]   ; (8009184 <HAL_RCCEx_PeriphCLKConfig+0x1d8>)
+ 8009172:      400b            ands    r3, r1
+ 8009174:      4901            ldr     r1, [pc, #4]    ; (800917c <HAL_RCCEx_PeriphCLKConfig+0x1d0>)
+ 8009176:      4313            orrs    r3, r2
+ 8009178:      608b            str     r3, [r1, #8]
+ 800917a:      e00b            b.n     8009194 <HAL_RCCEx_PeriphCLKConfig+0x1e8>
+ 800917c:      40023800        .word   0x40023800
+ 8009180:      40007000        .word   0x40007000
+ 8009184:      0ffffcff        .word   0x0ffffcff
+ 8009188:      4bb3            ldr     r3, [pc, #716]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800918a:      689b            ldr     r3, [r3, #8]
+ 800918c:      4ab2            ldr     r2, [pc, #712]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800918e:      f423 13f8       bic.w   r3, r3, #2031616        ; 0x1f0000
+ 8009192:      6093            str     r3, [r2, #8]
+ 8009194:      4bb0            ldr     r3, [pc, #704]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009196:      6f1a            ldr     r2, [r3, #112]  ; 0x70
+ 8009198:      687b            ldr     r3, [r7, #4]
+ 800919a:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800919c:      f3c3 030b       ubfx    r3, r3, #0, #12
+ 80091a0:      49ad            ldr     r1, [pc, #692]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80091a2:      4313            orrs    r3, r2
+ 80091a4:      670b            str     r3, [r1, #112]  ; 0x70
   }
 
   /*------------------------------------ TIM configuration --------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM))
- 800158e:      687b            ldr     r3, [r7, #4]
- 8001590:      681b            ldr     r3, [r3, #0]
- 8001592:      f003 0310       and.w   r3, r3, #16
- 8001596:      2b00            cmp     r3, #0
- 8001598:      d010            beq.n   80015bc <HAL_RCCEx_PeriphCLKConfig+0x228>
+ 80091a6:      687b            ldr     r3, [r7, #4]
+ 80091a8:      681b            ldr     r3, [r3, #0]
+ 80091aa:      f003 0310       and.w   r3, r3, #16
+ 80091ae:      2b00            cmp     r3, #0
+ 80091b0:      d010            beq.n   80091d4 <HAL_RCCEx_PeriphCLKConfig+0x228>
   {
     /* Check the parameters */
     assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection));
 
     /* Configure Timer Prescaler */
     __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection);
- 800159a:      4ba9            ldr     r3, [pc, #676]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800159c:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 80015a0:      4aa7            ldr     r2, [pc, #668]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80015a2:      f023 7380       bic.w   r3, r3, #16777216       ; 0x1000000
- 80015a6:      f8c2 308c       str.w   r3, [r2, #140]  ; 0x8c
- 80015aa:      4ba5            ldr     r3, [pc, #660]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80015ac:      f8d3 208c       ldr.w   r2, [r3, #140]  ; 0x8c
- 80015b0:      687b            ldr     r3, [r7, #4]
- 80015b2:      6b9b            ldr     r3, [r3, #56]   ; 0x38
- 80015b4:      49a2            ldr     r1, [pc, #648]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80015b6:      4313            orrs    r3, r2
- 80015b8:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 80091b2:      4ba9            ldr     r3, [pc, #676]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80091b4:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 80091b8:      4aa7            ldr     r2, [pc, #668]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80091ba:      f023 7380       bic.w   r3, r3, #16777216       ; 0x1000000
+ 80091be:      f8c2 308c       str.w   r3, [r2, #140]  ; 0x8c
+ 80091c2:      4ba5            ldr     r3, [pc, #660]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80091c4:      f8d3 208c       ldr.w   r2, [r3, #140]  ; 0x8c
+ 80091c8:      687b            ldr     r3, [r7, #4]
+ 80091ca:      6b9b            ldr     r3, [r3, #56]   ; 0x38
+ 80091cc:      49a2            ldr     r1, [pc, #648]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80091ce:      4313            orrs    r3, r2
+ 80091d0:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
   }
 
   /*-------------------------------------- I2C1 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)
- 80015bc:      687b            ldr     r3, [r7, #4]
- 80015be:      681b            ldr     r3, [r3, #0]
- 80015c0:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
- 80015c4:      2b00            cmp     r3, #0
- 80015c6:      d00a            beq.n   80015de <HAL_RCCEx_PeriphCLKConfig+0x24a>
+ 80091d4:      687b            ldr     r3, [r7, #4]
+ 80091d6:      681b            ldr     r3, [r3, #0]
+ 80091d8:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
+ 80091dc:      2b00            cmp     r3, #0
+ 80091de:      d00a            beq.n   80091f6 <HAL_RCCEx_PeriphCLKConfig+0x24a>
   {
     /* Check the parameters */
     assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));
 
     /* Configure the I2C1 clock source */
     __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);
- 80015c8:      4b9d            ldr     r3, [pc, #628]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80015ca:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80015ce:      f423 3240       bic.w   r2, r3, #196608 ; 0x30000
- 80015d2:      687b            ldr     r3, [r7, #4]
- 80015d4:      6e5b            ldr     r3, [r3, #100]  ; 0x64
- 80015d6:      499a            ldr     r1, [pc, #616]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80015d8:      4313            orrs    r3, r2
- 80015da:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 80091e0:      4b9d            ldr     r3, [pc, #628]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80091e2:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80091e6:      f423 3240       bic.w   r2, r3, #196608 ; 0x30000
+ 80091ea:      687b            ldr     r3, [r7, #4]
+ 80091ec:      6e5b            ldr     r3, [r3, #100]  ; 0x64
+ 80091ee:      499a            ldr     r1, [pc, #616]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80091f0:      4313            orrs    r3, r2
+ 80091f2:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- I2C2 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2)
- 80015de:      687b            ldr     r3, [r7, #4]
- 80015e0:      681b            ldr     r3, [r3, #0]
- 80015e2:      f403 4300       and.w   r3, r3, #32768  ; 0x8000
- 80015e6:      2b00            cmp     r3, #0
- 80015e8:      d00a            beq.n   8001600 <HAL_RCCEx_PeriphCLKConfig+0x26c>
+ 80091f6:      687b            ldr     r3, [r7, #4]
+ 80091f8:      681b            ldr     r3, [r3, #0]
+ 80091fa:      f403 4300       and.w   r3, r3, #32768  ; 0x8000
+ 80091fe:      2b00            cmp     r3, #0
+ 8009200:      d00a            beq.n   8009218 <HAL_RCCEx_PeriphCLKConfig+0x26c>
   {
     /* Check the parameters */
     assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection));
 
     /* Configure the I2C2 clock source */
     __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection);
- 80015ea:      4b95            ldr     r3, [pc, #596]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80015ec:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80015f0:      f423 2240       bic.w   r2, r3, #786432 ; 0xc0000
- 80015f4:      687b            ldr     r3, [r7, #4]
- 80015f6:      6e9b            ldr     r3, [r3, #104]  ; 0x68
- 80015f8:      4991            ldr     r1, [pc, #580]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80015fa:      4313            orrs    r3, r2
- 80015fc:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009202:      4b95            ldr     r3, [pc, #596]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009204:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009208:      f423 2240       bic.w   r2, r3, #786432 ; 0xc0000
+ 800920c:      687b            ldr     r3, [r7, #4]
+ 800920e:      6e9b            ldr     r3, [r3, #104]  ; 0x68
+ 8009210:      4991            ldr     r1, [pc, #580]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009212:      4313            orrs    r3, r2
+ 8009214:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- I2C3 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)
- 8001600:      687b            ldr     r3, [r7, #4]
- 8001602:      681b            ldr     r3, [r3, #0]
- 8001604:      f403 3380       and.w   r3, r3, #65536  ; 0x10000
- 8001608:      2b00            cmp     r3, #0
- 800160a:      d00a            beq.n   8001622 <HAL_RCCEx_PeriphCLKConfig+0x28e>
+ 8009218:      687b            ldr     r3, [r7, #4]
+ 800921a:      681b            ldr     r3, [r3, #0]
+ 800921c:      f403 3380       and.w   r3, r3, #65536  ; 0x10000
+ 8009220:      2b00            cmp     r3, #0
+ 8009222:      d00a            beq.n   800923a <HAL_RCCEx_PeriphCLKConfig+0x28e>
   {
     /* Check the parameters */
     assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));
 
     /* Configure the I2C3 clock source */
     __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);
- 800160c:      4b8c            ldr     r3, [pc, #560]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800160e:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001612:      f423 1240       bic.w   r2, r3, #3145728        ; 0x300000
- 8001616:      687b            ldr     r3, [r7, #4]
- 8001618:      6edb            ldr     r3, [r3, #108]  ; 0x6c
- 800161a:      4989            ldr     r1, [pc, #548]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800161c:      4313            orrs    r3, r2
- 800161e:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009224:      4b8c            ldr     r3, [pc, #560]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009226:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800922a:      f423 1240       bic.w   r2, r3, #3145728        ; 0x300000
+ 800922e:      687b            ldr     r3, [r7, #4]
+ 8009230:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 8009232:      4989            ldr     r1, [pc, #548]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009234:      4313            orrs    r3, r2
+ 8009236:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- I2C4 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4)
- 8001622:      687b            ldr     r3, [r7, #4]
- 8001624:      681b            ldr     r3, [r3, #0]
- 8001626:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
- 800162a:      2b00            cmp     r3, #0
- 800162c:      d00a            beq.n   8001644 <HAL_RCCEx_PeriphCLKConfig+0x2b0>
+ 800923a:      687b            ldr     r3, [r7, #4]
+ 800923c:      681b            ldr     r3, [r3, #0]
+ 800923e:      f403 3300       and.w   r3, r3, #131072 ; 0x20000
+ 8009242:      2b00            cmp     r3, #0
+ 8009244:      d00a            beq.n   800925c <HAL_RCCEx_PeriphCLKConfig+0x2b0>
   {
     /* Check the parameters */
     assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection));
 
     /* Configure the I2C4 clock source */
     __HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection);
- 800162e:      4b84            ldr     r3, [pc, #528]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001630:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001634:      f423 0240       bic.w   r2, r3, #12582912       ; 0xc00000
- 8001638:      687b            ldr     r3, [r7, #4]
- 800163a:      6f1b            ldr     r3, [r3, #112]  ; 0x70
- 800163c:      4980            ldr     r1, [pc, #512]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800163e:      4313            orrs    r3, r2
- 8001640:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009246:      4b84            ldr     r3, [pc, #528]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009248:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800924c:      f423 0240       bic.w   r2, r3, #12582912       ; 0xc00000
+ 8009250:      687b            ldr     r3, [r7, #4]
+ 8009252:      6f1b            ldr     r3, [r3, #112]  ; 0x70
+ 8009254:      4980            ldr     r1, [pc, #512]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009256:      4313            orrs    r3, r2
+ 8009258:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- USART1 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)
- 8001644:      687b            ldr     r3, [r7, #4]
- 8001646:      681b            ldr     r3, [r3, #0]
- 8001648:      f003 0340       and.w   r3, r3, #64     ; 0x40
- 800164c:      2b00            cmp     r3, #0
- 800164e:      d00a            beq.n   8001666 <HAL_RCCEx_PeriphCLKConfig+0x2d2>
+ 800925c:      687b            ldr     r3, [r7, #4]
+ 800925e:      681b            ldr     r3, [r3, #0]
+ 8009260:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 8009264:      2b00            cmp     r3, #0
+ 8009266:      d00a            beq.n   800927e <HAL_RCCEx_PeriphCLKConfig+0x2d2>
   {
     /* Check the parameters */
     assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));
 
     /* Configure the USART1 clock source */
     __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);
- 8001650:      4b7b            ldr     r3, [pc, #492]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001652:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001656:      f023 0203       bic.w   r2, r3, #3
- 800165a:      687b            ldr     r3, [r7, #4]
- 800165c:      6c5b            ldr     r3, [r3, #68]   ; 0x44
- 800165e:      4978            ldr     r1, [pc, #480]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001660:      4313            orrs    r3, r2
- 8001662:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009268:      4b7b            ldr     r3, [pc, #492]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800926a:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800926e:      f023 0203       bic.w   r2, r3, #3
+ 8009272:      687b            ldr     r3, [r7, #4]
+ 8009274:      6c5b            ldr     r3, [r3, #68]   ; 0x44
+ 8009276:      4978            ldr     r1, [pc, #480]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009278:      4313            orrs    r3, r2
+ 800927a:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- USART2 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)
- 8001666:      687b            ldr     r3, [r7, #4]
- 8001668:      681b            ldr     r3, [r3, #0]
- 800166a:      f003 0380       and.w   r3, r3, #128    ; 0x80
- 800166e:      2b00            cmp     r3, #0
- 8001670:      d00a            beq.n   8001688 <HAL_RCCEx_PeriphCLKConfig+0x2f4>
+ 800927e:      687b            ldr     r3, [r7, #4]
+ 8009280:      681b            ldr     r3, [r3, #0]
+ 8009282:      f003 0380       and.w   r3, r3, #128    ; 0x80
+ 8009286:      2b00            cmp     r3, #0
+ 8009288:      d00a            beq.n   80092a0 <HAL_RCCEx_PeriphCLKConfig+0x2f4>
   {
     /* Check the parameters */
     assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));
 
     /* Configure the USART2 clock source */
     __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);
- 8001672:      4b73            ldr     r3, [pc, #460]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001674:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001678:      f023 020c       bic.w   r2, r3, #12
- 800167c:      687b            ldr     r3, [r7, #4]
- 800167e:      6c9b            ldr     r3, [r3, #72]   ; 0x48
- 8001680:      496f            ldr     r1, [pc, #444]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001682:      4313            orrs    r3, r2
- 8001684:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 800928a:      4b73            ldr     r3, [pc, #460]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800928c:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009290:      f023 020c       bic.w   r2, r3, #12
+ 8009294:      687b            ldr     r3, [r7, #4]
+ 8009296:      6c9b            ldr     r3, [r3, #72]   ; 0x48
+ 8009298:      496f            ldr     r1, [pc, #444]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800929a:      4313            orrs    r3, r2
+ 800929c:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- USART3 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3)
- 8001688:      687b            ldr     r3, [r7, #4]
- 800168a:      681b            ldr     r3, [r3, #0]
- 800168c:      f403 7380       and.w   r3, r3, #256    ; 0x100
- 8001690:      2b00            cmp     r3, #0
- 8001692:      d00a            beq.n   80016aa <HAL_RCCEx_PeriphCLKConfig+0x316>
+ 80092a0:      687b            ldr     r3, [r7, #4]
+ 80092a2:      681b            ldr     r3, [r3, #0]
+ 80092a4:      f403 7380       and.w   r3, r3, #256    ; 0x100
+ 80092a8:      2b00            cmp     r3, #0
+ 80092aa:      d00a            beq.n   80092c2 <HAL_RCCEx_PeriphCLKConfig+0x316>
   {
     /* Check the parameters */
     assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection));
 
     /* Configure the USART3 clock source */
     __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection);
- 8001694:      4b6a            ldr     r3, [pc, #424]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001696:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 800169a:      f023 0230       bic.w   r2, r3, #48     ; 0x30
- 800169e:      687b            ldr     r3, [r7, #4]
- 80016a0:      6cdb            ldr     r3, [r3, #76]   ; 0x4c
- 80016a2:      4967            ldr     r1, [pc, #412]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80016a4:      4313            orrs    r3, r2
- 80016a6:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 80092ac:      4b6a            ldr     r3, [pc, #424]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80092ae:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80092b2:      f023 0230       bic.w   r2, r3, #48     ; 0x30
+ 80092b6:      687b            ldr     r3, [r7, #4]
+ 80092b8:      6cdb            ldr     r3, [r3, #76]   ; 0x4c
+ 80092ba:      4967            ldr     r1, [pc, #412]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80092bc:      4313            orrs    r3, r2
+ 80092be:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- UART4 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4)
- 80016aa:      687b            ldr     r3, [r7, #4]
- 80016ac:      681b            ldr     r3, [r3, #0]
- 80016ae:      f403 7300       and.w   r3, r3, #512    ; 0x200
- 80016b2:      2b00            cmp     r3, #0
- 80016b4:      d00a            beq.n   80016cc <HAL_RCCEx_PeriphCLKConfig+0x338>
+ 80092c2:      687b            ldr     r3, [r7, #4]
+ 80092c4:      681b            ldr     r3, [r3, #0]
+ 80092c6:      f403 7300       and.w   r3, r3, #512    ; 0x200
+ 80092ca:      2b00            cmp     r3, #0
+ 80092cc:      d00a            beq.n   80092e4 <HAL_RCCEx_PeriphCLKConfig+0x338>
   {
     /* Check the parameters */
     assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection));
 
     /* Configure the UART4 clock source */
     __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection);
- 80016b6:      4b62            ldr     r3, [pc, #392]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80016b8:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80016bc:      f023 02c0       bic.w   r2, r3, #192    ; 0xc0
- 80016c0:      687b            ldr     r3, [r7, #4]
- 80016c2:      6d1b            ldr     r3, [r3, #80]   ; 0x50
- 80016c4:      495e            ldr     r1, [pc, #376]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80016c6:      4313            orrs    r3, r2
- 80016c8:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 80092ce:      4b62            ldr     r3, [pc, #392]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80092d0:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80092d4:      f023 02c0       bic.w   r2, r3, #192    ; 0xc0
+ 80092d8:      687b            ldr     r3, [r7, #4]
+ 80092da:      6d1b            ldr     r3, [r3, #80]   ; 0x50
+ 80092dc:      495e            ldr     r1, [pc, #376]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80092de:      4313            orrs    r3, r2
+ 80092e0:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- UART5 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5)
- 80016cc:      687b            ldr     r3, [r7, #4]
- 80016ce:      681b            ldr     r3, [r3, #0]
- 80016d0:      f403 6380       and.w   r3, r3, #1024   ; 0x400
- 80016d4:      2b00            cmp     r3, #0
- 80016d6:      d00a            beq.n   80016ee <HAL_RCCEx_PeriphCLKConfig+0x35a>
+ 80092e4:      687b            ldr     r3, [r7, #4]
+ 80092e6:      681b            ldr     r3, [r3, #0]
+ 80092e8:      f403 6380       and.w   r3, r3, #1024   ; 0x400
+ 80092ec:      2b00            cmp     r3, #0
+ 80092ee:      d00a            beq.n   8009306 <HAL_RCCEx_PeriphCLKConfig+0x35a>
   {
     /* Check the parameters */
     assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection));
 
     /* Configure the UART5 clock source */
     __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection);
- 80016d8:      4b59            ldr     r3, [pc, #356]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80016da:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80016de:      f423 7240       bic.w   r2, r3, #768    ; 0x300
- 80016e2:      687b            ldr     r3, [r7, #4]
- 80016e4:      6d5b            ldr     r3, [r3, #84]   ; 0x54
- 80016e6:      4956            ldr     r1, [pc, #344]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80016e8:      4313            orrs    r3, r2
- 80016ea:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 80092f0:      4b59            ldr     r3, [pc, #356]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80092f2:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80092f6:      f423 7240       bic.w   r2, r3, #768    ; 0x300
+ 80092fa:      687b            ldr     r3, [r7, #4]
+ 80092fc:      6d5b            ldr     r3, [r3, #84]   ; 0x54
+ 80092fe:      4956            ldr     r1, [pc, #344]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009300:      4313            orrs    r3, r2
+ 8009302:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- USART6 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6)
- 80016ee:      687b            ldr     r3, [r7, #4]
- 80016f0:      681b            ldr     r3, [r3, #0]
- 80016f2:      f403 6300       and.w   r3, r3, #2048   ; 0x800
- 80016f6:      2b00            cmp     r3, #0
- 80016f8:      d00a            beq.n   8001710 <HAL_RCCEx_PeriphCLKConfig+0x37c>
+ 8009306:      687b            ldr     r3, [r7, #4]
+ 8009308:      681b            ldr     r3, [r3, #0]
+ 800930a:      f403 6300       and.w   r3, r3, #2048   ; 0x800
+ 800930e:      2b00            cmp     r3, #0
+ 8009310:      d00a            beq.n   8009328 <HAL_RCCEx_PeriphCLKConfig+0x37c>
   {
     /* Check the parameters */
     assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection));
 
     /* Configure the USART6 clock source */
     __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection);
- 80016fa:      4b51            ldr     r3, [pc, #324]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80016fc:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001700:      f423 6240       bic.w   r2, r3, #3072   ; 0xc00
- 8001704:      687b            ldr     r3, [r7, #4]
- 8001706:      6d9b            ldr     r3, [r3, #88]   ; 0x58
- 8001708:      494d            ldr     r1, [pc, #308]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800170a:      4313            orrs    r3, r2
- 800170c:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009312:      4b51            ldr     r3, [pc, #324]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009314:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009318:      f423 6240       bic.w   r2, r3, #3072   ; 0xc00
+ 800931c:      687b            ldr     r3, [r7, #4]
+ 800931e:      6d9b            ldr     r3, [r3, #88]   ; 0x58
+ 8009320:      494d            ldr     r1, [pc, #308]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009322:      4313            orrs    r3, r2
+ 8009324:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- UART7 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7)
- 8001710:      687b            ldr     r3, [r7, #4]
- 8001712:      681b            ldr     r3, [r3, #0]
- 8001714:      f403 5380       and.w   r3, r3, #4096   ; 0x1000
- 8001718:      2b00            cmp     r3, #0
- 800171a:      d00a            beq.n   8001732 <HAL_RCCEx_PeriphCLKConfig+0x39e>
+ 8009328:      687b            ldr     r3, [r7, #4]
+ 800932a:      681b            ldr     r3, [r3, #0]
+ 800932c:      f403 5380       and.w   r3, r3, #4096   ; 0x1000
+ 8009330:      2b00            cmp     r3, #0
+ 8009332:      d00a            beq.n   800934a <HAL_RCCEx_PeriphCLKConfig+0x39e>
   {
     /* Check the parameters */
     assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection));
 
     /* Configure the UART7 clock source */
     __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection);
- 800171c:      4b48            ldr     r3, [pc, #288]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800171e:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001722:      f423 5240       bic.w   r2, r3, #12288  ; 0x3000
- 8001726:      687b            ldr     r3, [r7, #4]
- 8001728:      6ddb            ldr     r3, [r3, #92]   ; 0x5c
- 800172a:      4945            ldr     r1, [pc, #276]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800172c:      4313            orrs    r3, r2
- 800172e:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009334:      4b48            ldr     r3, [pc, #288]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009336:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800933a:      f423 5240       bic.w   r2, r3, #12288  ; 0x3000
+ 800933e:      687b            ldr     r3, [r7, #4]
+ 8009340:      6ddb            ldr     r3, [r3, #92]   ; 0x5c
+ 8009342:      4945            ldr     r1, [pc, #276]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009344:      4313            orrs    r3, r2
+ 8009346:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- UART8 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8)
- 8001732:      687b            ldr     r3, [r7, #4]
- 8001734:      681b            ldr     r3, [r3, #0]
- 8001736:      f403 5300       and.w   r3, r3, #8192   ; 0x2000
- 800173a:      2b00            cmp     r3, #0
- 800173c:      d00a            beq.n   8001754 <HAL_RCCEx_PeriphCLKConfig+0x3c0>
+ 800934a:      687b            ldr     r3, [r7, #4]
+ 800934c:      681b            ldr     r3, [r3, #0]
+ 800934e:      f403 5300       and.w   r3, r3, #8192   ; 0x2000
+ 8009352:      2b00            cmp     r3, #0
+ 8009354:      d00a            beq.n   800936c <HAL_RCCEx_PeriphCLKConfig+0x3c0>
   {
     /* Check the parameters */
     assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection));
 
     /* Configure the UART8 clock source */
     __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection);
- 800173e:      4b40            ldr     r3, [pc, #256]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001740:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001744:      f423 4240       bic.w   r2, r3, #49152  ; 0xc000
- 8001748:      687b            ldr     r3, [r7, #4]
- 800174a:      6e1b            ldr     r3, [r3, #96]   ; 0x60
- 800174c:      493c            ldr     r1, [pc, #240]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800174e:      4313            orrs    r3, r2
- 8001750:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009356:      4b40            ldr     r3, [pc, #256]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009358:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800935c:      f423 4240       bic.w   r2, r3, #49152  ; 0xc000
+ 8009360:      687b            ldr     r3, [r7, #4]
+ 8009362:      6e1b            ldr     r3, [r3, #96]   ; 0x60
+ 8009364:      493c            ldr     r1, [pc, #240]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009366:      4313            orrs    r3, r2
+ 8009368:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*--------------------------------------- CEC Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC)
- 8001754:      687b            ldr     r3, [r7, #4]
- 8001756:      681b            ldr     r3, [r3, #0]
- 8001758:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
- 800175c:      2b00            cmp     r3, #0
- 800175e:      d00a            beq.n   8001776 <HAL_RCCEx_PeriphCLKConfig+0x3e2>
+ 800936c:      687b            ldr     r3, [r7, #4]
+ 800936e:      681b            ldr     r3, [r3, #0]
+ 8009370:      f403 0380       and.w   r3, r3, #4194304        ; 0x400000
+ 8009374:      2b00            cmp     r3, #0
+ 8009376:      d00a            beq.n   800938e <HAL_RCCEx_PeriphCLKConfig+0x3e2>
   {
     /* Check the parameters */
     assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection));
 
     /* Configure the CEC clock source */
     __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection);
- 8001760:      4b37            ldr     r3, [pc, #220]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001762:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001766:      f023 6280       bic.w   r2, r3, #67108864       ; 0x4000000
- 800176a:      687b            ldr     r3, [r7, #4]
- 800176c:      6f9b            ldr     r3, [r3, #120]  ; 0x78
- 800176e:      4934            ldr     r1, [pc, #208]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001770:      4313            orrs    r3, r2
- 8001772:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009378:      4b37            ldr     r3, [pc, #220]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800937a:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800937e:      f023 6280       bic.w   r2, r3, #67108864       ; 0x4000000
+ 8009382:      687b            ldr     r3, [r7, #4]
+ 8009384:      6f9b            ldr     r3, [r3, #120]  ; 0x78
+ 8009386:      4934            ldr     r1, [pc, #208]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009388:      4313            orrs    r3, r2
+ 800938a:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*-------------------------------------- CK48 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48)
- 8001776:      687b            ldr     r3, [r7, #4]
- 8001778:      681b            ldr     r3, [r3, #0]
- 800177a:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
- 800177e:      2b00            cmp     r3, #0
- 8001780:      d011            beq.n   80017a6 <HAL_RCCEx_PeriphCLKConfig+0x412>
+ 800938e:      687b            ldr     r3, [r7, #4]
+ 8009390:      681b            ldr     r3, [r3, #0]
+ 8009392:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
+ 8009396:      2b00            cmp     r3, #0
+ 8009398:      d011            beq.n   80093be <HAL_RCCEx_PeriphCLKConfig+0x412>
   {
     /* Check the parameters */
     assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection));
 
     /* Configure the CLK48 source */
     __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection);
- 8001782:      4b2f            ldr     r3, [pc, #188]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001784:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001788:      f023 6200       bic.w   r2, r3, #134217728      ; 0x8000000
- 800178c:      687b            ldr     r3, [r7, #4]
- 800178e:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 8001790:      492b            ldr     r1, [pc, #172]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 8001792:      4313            orrs    r3, r2
- 8001794:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 800939a:      4b2f            ldr     r3, [pc, #188]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800939c:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80093a0:      f023 6200       bic.w   r2, r3, #134217728      ; 0x8000000
+ 80093a4:      687b            ldr     r3, [r7, #4]
+ 80093a6:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 80093a8:      492b            ldr     r1, [pc, #172]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80093aa:      4313            orrs    r3, r2
+ 80093ac:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
 
     /* Enable the PLLSAI when it's used as clock source for CK48 */
     if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP)
- 8001798:      687b            ldr     r3, [r7, #4]
- 800179a:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 800179c:      f1b3 6f00       cmp.w   r3, #134217728  ; 0x8000000
- 80017a0:      d101            bne.n   80017a6 <HAL_RCCEx_PeriphCLKConfig+0x412>
+ 80093b0:      687b            ldr     r3, [r7, #4]
+ 80093b2:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 80093b4:      f1b3 6f00       cmp.w   r3, #134217728  ; 0x8000000
+ 80093b8:      d101            bne.n   80093be <HAL_RCCEx_PeriphCLKConfig+0x412>
     {
       pllsaiused = 1;
- 80017a2:      2301            movs    r3, #1
- 80017a4:      61bb            str     r3, [r7, #24]
+ 80093ba:      2301            movs    r3, #1
+ 80093bc:      61bb            str     r3, [r7, #24]
     }
   }
 
   /*-------------------------------------- LTDC Configuration -----------------------------------*/
 #if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC)
- 80017a6:      687b            ldr     r3, [r7, #4]
- 80017a8:      681b            ldr     r3, [r3, #0]
- 80017aa:      f003 0308       and.w   r3, r3, #8
- 80017ae:      2b00            cmp     r3, #0
- 80017b0:      d001            beq.n   80017b6 <HAL_RCCEx_PeriphCLKConfig+0x422>
+ 80093be:      687b            ldr     r3, [r7, #4]
+ 80093c0:      681b            ldr     r3, [r3, #0]
+ 80093c2:      f003 0308       and.w   r3, r3, #8
+ 80093c6:      2b00            cmp     r3, #0
+ 80093c8:      d001            beq.n   80093ce <HAL_RCCEx_PeriphCLKConfig+0x422>
   {
     pllsaiused = 1;
- 80017b2:      2301            movs    r3, #1
- 80017b4:      61bb            str     r3, [r7, #24]
+ 80093ca:      2301            movs    r3, #1
+ 80093cc:      61bb            str     r3, [r7, #24]
   }
 #endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */
 
   /*-------------------------------------- LPTIM1 Configuration -----------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1)
- 80017b6:      687b            ldr     r3, [r7, #4]
- 80017b8:      681b            ldr     r3, [r3, #0]
- 80017ba:      f403 2380       and.w   r3, r3, #262144 ; 0x40000
- 80017be:      2b00            cmp     r3, #0
- 80017c0:      d00a            beq.n   80017d8 <HAL_RCCEx_PeriphCLKConfig+0x444>
+ 80093ce:      687b            ldr     r3, [r7, #4]
+ 80093d0:      681b            ldr     r3, [r3, #0]
+ 80093d2:      f403 2380       and.w   r3, r3, #262144 ; 0x40000
+ 80093d6:      2b00            cmp     r3, #0
+ 80093d8:      d00a            beq.n   80093f0 <HAL_RCCEx_PeriphCLKConfig+0x444>
   {
     /* Check the parameters */
     assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection));
 
     /* Configure the LTPIM1 clock source */
     __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection);
- 80017c2:      4b1f            ldr     r3, [pc, #124]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80017c4:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80017c8:      f023 7240       bic.w   r2, r3, #50331648       ; 0x3000000
- 80017cc:      687b            ldr     r3, [r7, #4]
- 80017ce:      6f5b            ldr     r3, [r3, #116]  ; 0x74
- 80017d0:      491b            ldr     r1, [pc, #108]  ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80017d2:      4313            orrs    r3, r2
- 80017d4:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 80093da:      4b1f            ldr     r3, [pc, #124]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80093dc:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80093e0:      f023 7240       bic.w   r2, r3, #50331648       ; 0x3000000
+ 80093e4:      687b            ldr     r3, [r7, #4]
+ 80093e6:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 80093e8:      491b            ldr     r1, [pc, #108]  ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80093ea:      4313            orrs    r3, r2
+ 80093ec:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
    }
 
   /*------------------------------------- SDMMC1 Configuration ------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1)
- 80017d8:      687b            ldr     r3, [r7, #4]
- 80017da:      681b            ldr     r3, [r3, #0]
- 80017dc:      f403 0300       and.w   r3, r3, #8388608        ; 0x800000
- 80017e0:      2b00            cmp     r3, #0
- 80017e2:      d00b            beq.n   80017fc <HAL_RCCEx_PeriphCLKConfig+0x468>
+ 80093f0:      687b            ldr     r3, [r7, #4]
+ 80093f2:      681b            ldr     r3, [r3, #0]
+ 80093f4:      f403 0300       and.w   r3, r3, #8388608        ; 0x800000
+ 80093f8:      2b00            cmp     r3, #0
+ 80093fa:      d00b            beq.n   8009414 <HAL_RCCEx_PeriphCLKConfig+0x468>
   {
     /* Check the parameters */
     assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection));
 
     /* Configure the SDMMC1 clock source */
     __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection);
- 80017e4:      4b16            ldr     r3, [pc, #88]   ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80017e6:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80017ea:      f023 5280       bic.w   r2, r3, #268435456      ; 0x10000000
- 80017ee:      687b            ldr     r3, [r7, #4]
- 80017f0:      f8d3 3080       ldr.w   r3, [r3, #128]  ; 0x80
- 80017f4:      4912            ldr     r1, [pc, #72]   ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 80017f6:      4313            orrs    r3, r2
- 80017f8:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 80093fc:      4b16            ldr     r3, [pc, #88]   ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 80093fe:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009402:      f023 5280       bic.w   r2, r3, #268435456      ; 0x10000000
+ 8009406:      687b            ldr     r3, [r7, #4]
+ 8009408:      f8d3 3080       ldr.w   r3, [r3, #128]  ; 0x80
+ 800940c:      4912            ldr     r1, [pc, #72]   ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 800940e:      4313            orrs    r3, r2
+ 8009410:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
 #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)
   /*------------------------------------- SDMMC2 Configuration ------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2)
- 80017fc:      687b            ldr     r3, [r7, #4]
- 80017fe:      681b            ldr     r3, [r3, #0]
- 8001800:      f003 6380       and.w   r3, r3, #67108864       ; 0x4000000
- 8001804:      2b00            cmp     r3, #0
- 8001806:      d00b            beq.n   8001820 <HAL_RCCEx_PeriphCLKConfig+0x48c>
+ 8009414:      687b            ldr     r3, [r7, #4]
+ 8009416:      681b            ldr     r3, [r3, #0]
+ 8009418:      f003 6380       and.w   r3, r3, #67108864       ; 0x4000000
+ 800941c:      2b00            cmp     r3, #0
+ 800941e:      d00b            beq.n   8009438 <HAL_RCCEx_PeriphCLKConfig+0x48c>
   {
     /* Check the parameters */
     assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection));
 
     /* Configure the SDMMC2 clock source */
     __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection);
- 8001808:      4b0d            ldr     r3, [pc, #52]   ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800180a:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 800180e:      f023 5200       bic.w   r2, r3, #536870912      ; 0x20000000
- 8001812:      687b            ldr     r3, [r7, #4]
- 8001814:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
- 8001818:      4909            ldr     r1, [pc, #36]   ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800181a:      4313            orrs    r3, r2
- 800181c:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
+ 8009420:      4b0d            ldr     r3, [pc, #52]   ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009422:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009426:      f023 5200       bic.w   r2, r3, #536870912      ; 0x20000000
+ 800942a:      687b            ldr     r3, [r7, #4]
+ 800942c:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
+ 8009430:      4909            ldr     r1, [pc, #36]   ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009432:      4313            orrs    r3, r2
+ 8009434:      f8c1 3090       str.w   r3, [r1, #144]  ; 0x90
   }
 
   /*------------------------------------- DFSDM1 Configuration -------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1)
- 8001820:      687b            ldr     r3, [r7, #4]
- 8001822:      681b            ldr     r3, [r3, #0]
- 8001824:      f003 6300       and.w   r3, r3, #134217728      ; 0x8000000
- 8001828:      2b00            cmp     r3, #0
- 800182a:      d00f            beq.n   800184c <HAL_RCCEx_PeriphCLKConfig+0x4b8>
+ 8009438:      687b            ldr     r3, [r7, #4]
+ 800943a:      681b            ldr     r3, [r3, #0]
+ 800943c:      f003 6300       and.w   r3, r3, #134217728      ; 0x8000000
+ 8009440:      2b00            cmp     r3, #0
+ 8009442:      d00f            beq.n   8009464 <HAL_RCCEx_PeriphCLKConfig+0x4b8>
   {
     /* Check the parameters */
     assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection));
 
     /* Configure the DFSDM1 interface clock source */
     __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection);
- 800182c:      4b04            ldr     r3, [pc, #16]   ; (8001840 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
- 800182e:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 8001832:      f023 7200       bic.w   r2, r3, #33554432       ; 0x2000000
- 8001836:      687b            ldr     r3, [r7, #4]
- 8001838:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 800183c:      e002            b.n     8001844 <HAL_RCCEx_PeriphCLKConfig+0x4b0>
- 800183e:      bf00            nop
- 8001840:      40023800        .word   0x40023800
- 8001844:      4985            ldr     r1, [pc, #532]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001846:      4313            orrs    r3, r2
- 8001848:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 8009444:      4b04            ldr     r3, [pc, #16]   ; (8009458 <HAL_RCCEx_PeriphCLKConfig+0x4ac>)
+ 8009446:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 800944a:      f023 7200       bic.w   r2, r3, #33554432       ; 0x2000000
+ 800944e:      687b            ldr     r3, [r7, #4]
+ 8009450:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 8009454:      e002            b.n     800945c <HAL_RCCEx_PeriphCLKConfig+0x4b0>
+ 8009456:      bf00            nop
+ 8009458:      40023800        .word   0x40023800
+ 800945c:      4985            ldr     r1, [pc, #532]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 800945e:      4313            orrs    r3, r2
+ 8009460:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
   }
 
   /*------------------------------------- DFSDM AUDIO Configuration -------------------------------------*/
   if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO)
- 800184c:      687b            ldr     r3, [r7, #4]
- 800184e:      681b            ldr     r3, [r3, #0]
- 8001850:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 8001854:      2b00            cmp     r3, #0
- 8001856:      d00b            beq.n   8001870 <HAL_RCCEx_PeriphCLKConfig+0x4dc>
+ 8009464:      687b            ldr     r3, [r7, #4]
+ 8009466:      681b            ldr     r3, [r3, #0]
+ 8009468:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 800946c:      2b00            cmp     r3, #0
+ 800946e:      d00b            beq.n   8009488 <HAL_RCCEx_PeriphCLKConfig+0x4dc>
   {
     /* Check the parameters */
     assert_param(IS_RCC_DFSDM1AUDIOCLKSOURCE(PeriphClkInit->Dfsdm1AudioClockSelection));
 
     /* Configure the DFSDM interface clock source */
     __HAL_RCC_DFSDM1AUDIO_CONFIG(PeriphClkInit->Dfsdm1AudioClockSelection);
- 8001858:      4b80            ldr     r3, [pc, #512]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800185a:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 800185e:      f023 6280       bic.w   r2, r3, #67108864       ; 0x4000000
- 8001862:      687b            ldr     r3, [r7, #4]
- 8001864:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 8001868:      497c            ldr     r1, [pc, #496]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800186a:      4313            orrs    r3, r2
- 800186c:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 8009470:      4b80            ldr     r3, [pc, #512]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009472:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 8009476:      f023 6280       bic.w   r2, r3, #67108864       ; 0x4000000
+ 800947a:      687b            ldr     r3, [r7, #4]
+ 800947c:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 8009480:      497c            ldr     r1, [pc, #496]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009482:      4313            orrs    r3, r2
+ 8009484:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
   }
 #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */
 
   /*-------------------------------------- PLLI2S Configuration ---------------------------------*/
   /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2, I2S or SPDIF-RX */
   if((plli2sused == 1) || (PeriphClkInit->PeriphClockSelection == RCC_PERIPHCLK_PLLI2S))
- 8001870:      69fb            ldr     r3, [r7, #28]
- 8001872:      2b01            cmp     r3, #1
- 8001874:      d005            beq.n   8001882 <HAL_RCCEx_PeriphCLKConfig+0x4ee>
- 8001876:      687b            ldr     r3, [r7, #4]
- 8001878:      681b            ldr     r3, [r3, #0]
- 800187a:      f1b3 7f00       cmp.w   r3, #33554432   ; 0x2000000
- 800187e:      f040 80d6       bne.w   8001a2e <HAL_RCCEx_PeriphCLKConfig+0x69a>
+ 8009488:      69fb            ldr     r3, [r7, #28]
+ 800948a:      2b01            cmp     r3, #1
+ 800948c:      d005            beq.n   800949a <HAL_RCCEx_PeriphCLKConfig+0x4ee>
+ 800948e:      687b            ldr     r3, [r7, #4]
+ 8009490:      681b            ldr     r3, [r3, #0]
+ 8009492:      f1b3 7f00       cmp.w   r3, #33554432   ; 0x2000000
+ 8009496:      f040 80d6       bne.w   8009646 <HAL_RCCEx_PeriphCLKConfig+0x69a>
   {
     /* Disable the PLLI2S */
     __HAL_RCC_PLLI2S_DISABLE();
- 8001882:      4b76            ldr     r3, [pc, #472]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001884:      681b            ldr     r3, [r3, #0]
- 8001886:      4a75            ldr     r2, [pc, #468]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001888:      f023 6380       bic.w   r3, r3, #67108864       ; 0x4000000
- 800188c:      6013            str     r3, [r2, #0]
+ 800949a:      4b76            ldr     r3, [pc, #472]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 800949c:      681b            ldr     r3, [r3, #0]
+ 800949e:      4a75            ldr     r2, [pc, #468]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 80094a0:      f023 6380       bic.w   r3, r3, #67108864       ; 0x4000000
+ 80094a4:      6013            str     r3, [r2, #0]
 
     /* Get Start Tick*/
     tickstart = HAL_GetTick();
- 800188e:      f7fe fea5       bl      80005dc <HAL_GetTick>
- 8001892:      6178            str     r0, [r7, #20]
+ 80094a6:      f7fe fdf5       bl      8008094 <HAL_GetTick>
+ 80094aa:      6178            str     r0, [r7, #20]
 
     /* Wait till PLLI2S is disabled */
     while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  != RESET)
- 8001894:      e008            b.n     80018a8 <HAL_RCCEx_PeriphCLKConfig+0x514>
+ 80094ac:      e008            b.n     80094c0 <HAL_RCCEx_PeriphCLKConfig+0x514>
     {
       if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
- 8001896:      f7fe fea1       bl      80005dc <HAL_GetTick>
- 800189a:      4602            mov     r2, r0
- 800189c:      697b            ldr     r3, [r7, #20]
- 800189e:      1ad3            subs    r3, r2, r3
- 80018a0:      2b64            cmp     r3, #100        ; 0x64
- 80018a2:      d901            bls.n   80018a8 <HAL_RCCEx_PeriphCLKConfig+0x514>
+ 80094ae:      f7fe fdf1       bl      8008094 <HAL_GetTick>
+ 80094b2:      4602            mov     r2, r0
+ 80094b4:      697b            ldr     r3, [r7, #20]
+ 80094b6:      1ad3            subs    r3, r2, r3
+ 80094b8:      2b64            cmp     r3, #100        ; 0x64
+ 80094ba:      d901            bls.n   80094c0 <HAL_RCCEx_PeriphCLKConfig+0x514>
       {
         /* return in case of Timeout detected */
         return HAL_TIMEOUT;
- 80018a4:      2303            movs    r3, #3
- 80018a6:      e194            b.n     8001bd2 <HAL_RCCEx_PeriphCLKConfig+0x83e>
+ 80094bc:      2303            movs    r3, #3
+ 80094be:      e194            b.n     80097ea <HAL_RCCEx_PeriphCLKConfig+0x83e>
     while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  != RESET)
- 80018a8:      4b6c            ldr     r3, [pc, #432]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80018aa:      681b            ldr     r3, [r3, #0]
- 80018ac:      f003 6300       and.w   r3, r3, #134217728      ; 0x8000000
- 80018b0:      2b00            cmp     r3, #0
- 80018b2:      d1f0            bne.n   8001896 <HAL_RCCEx_PeriphCLKConfig+0x502>
+ 80094c0:      4b6c            ldr     r3, [pc, #432]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 80094c2:      681b            ldr     r3, [r3, #0]
+ 80094c4:      f003 6300       and.w   r3, r3, #134217728      ; 0x8000000
+ 80094c8:      2b00            cmp     r3, #0
+ 80094ca:      d1f0            bne.n   80094ae <HAL_RCCEx_PeriphCLKConfig+0x502>
 
     /* check for common PLLI2S Parameters */
     assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN));
 
     /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/
     if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S)))
- 80018b4:      687b            ldr     r3, [r7, #4]
- 80018b6:      681b            ldr     r3, [r3, #0]
- 80018b8:      f003 0301       and.w   r3, r3, #1
- 80018bc:      2b00            cmp     r3, #0
- 80018be:      d021            beq.n   8001904 <HAL_RCCEx_PeriphCLKConfig+0x570>
- 80018c0:      687b            ldr     r3, [r7, #4]
- 80018c2:      6b5b            ldr     r3, [r3, #52]   ; 0x34
- 80018c4:      2b00            cmp     r3, #0
- 80018c6:      d11d            bne.n   8001904 <HAL_RCCEx_PeriphCLKConfig+0x570>
+ 80094cc:      687b            ldr     r3, [r7, #4]
+ 80094ce:      681b            ldr     r3, [r3, #0]
+ 80094d0:      f003 0301       and.w   r3, r3, #1
+ 80094d4:      2b00            cmp     r3, #0
+ 80094d6:      d021            beq.n   800951c <HAL_RCCEx_PeriphCLKConfig+0x570>
+ 80094d8:      687b            ldr     r3, [r7, #4]
+ 80094da:      6b5b            ldr     r3, [r3, #52]   ; 0x34
+ 80094dc:      2b00            cmp     r3, #0
+ 80094de:      d11d            bne.n   800951c <HAL_RCCEx_PeriphCLKConfig+0x570>
     {
       /* check for Parameters */
       assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR));
 
       /* Read PLLI2SP and PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuration) */
       tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);
- 80018c8:      4b64            ldr     r3, [pc, #400]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80018ca:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
- 80018ce:      0c1b            lsrs    r3, r3, #16
- 80018d0:      f003 0303       and.w   r3, r3, #3
- 80018d4:      613b            str     r3, [r7, #16]
+ 80094e0:      4b64            ldr     r3, [pc, #400]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 80094e2:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
+ 80094e6:      0c1b            lsrs    r3, r3, #16
+ 80094e8:      f003 0303       and.w   r3, r3, #3
+ 80094ec:      613b            str     r3, [r7, #16]
       tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
- 80018d6:      4b61            ldr     r3, [pc, #388]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80018d8:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
- 80018dc:      0e1b            lsrs    r3, r3, #24
- 80018de:      f003 030f       and.w   r3, r3, #15
- 80018e2:      60fb            str     r3, [r7, #12]
+ 80094ee:      4b61            ldr     r3, [pc, #388]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 80094f0:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
+ 80094f4:      0e1b            lsrs    r3, r3, #24
+ 80094f6:      f003 030f       and.w   r3, r3, #15
+ 80094fa:      60fb            str     r3, [r7, #12]
       /* Configure the PLLI2S division factors */
       /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */
       /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */
       __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, tmpreg1, PeriphClkInit->PLLI2S.PLLI2SR);
- 80018e4:      687b            ldr     r3, [r7, #4]
- 80018e6:      685b            ldr     r3, [r3, #4]
- 80018e8:      019a            lsls    r2, r3, #6
- 80018ea:      693b            ldr     r3, [r7, #16]
- 80018ec:      041b            lsls    r3, r3, #16
- 80018ee:      431a            orrs    r2, r3
- 80018f0:      68fb            ldr     r3, [r7, #12]
- 80018f2:      061b            lsls    r3, r3, #24
- 80018f4:      431a            orrs    r2, r3
- 80018f6:      687b            ldr     r3, [r7, #4]
- 80018f8:      689b            ldr     r3, [r3, #8]
- 80018fa:      071b            lsls    r3, r3, #28
- 80018fc:      4957            ldr     r1, [pc, #348]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80018fe:      4313            orrs    r3, r2
- 8001900:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
+ 80094fc:      687b            ldr     r3, [r7, #4]
+ 80094fe:      685b            ldr     r3, [r3, #4]
+ 8009500:      019a            lsls    r2, r3, #6
+ 8009502:      693b            ldr     r3, [r7, #16]
+ 8009504:      041b            lsls    r3, r3, #16
+ 8009506:      431a            orrs    r2, r3
+ 8009508:      68fb            ldr     r3, [r7, #12]
+ 800950a:      061b            lsls    r3, r3, #24
+ 800950c:      431a            orrs    r2, r3
+ 800950e:      687b            ldr     r3, [r7, #4]
+ 8009510:      689b            ldr     r3, [r3, #8]
+ 8009512:      071b            lsls    r3, r3, #28
+ 8009514:      4957            ldr     r1, [pc, #348]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009516:      4313            orrs    r3, r2
+ 8009518:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
     }
 
     /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/
     if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||
- 8001904:      687b            ldr     r3, [r7, #4]
- 8001906:      681b            ldr     r3, [r3, #0]
- 8001908:      f403 2300       and.w   r3, r3, #524288 ; 0x80000
- 800190c:      2b00            cmp     r3, #0
- 800190e:      d004            beq.n   800191a <HAL_RCCEx_PeriphCLKConfig+0x586>
- 8001910:      687b            ldr     r3, [r7, #4]
- 8001912:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
- 8001914:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
- 8001918:      d00a            beq.n   8001930 <HAL_RCCEx_PeriphCLKConfig+0x59c>
+ 800951c:      687b            ldr     r3, [r7, #4]
+ 800951e:      681b            ldr     r3, [r3, #0]
+ 8009520:      f403 2300       and.w   r3, r3, #524288 ; 0x80000
+ 8009524:      2b00            cmp     r3, #0
+ 8009526:      d004            beq.n   8009532 <HAL_RCCEx_PeriphCLKConfig+0x586>
+ 8009528:      687b            ldr     r3, [r7, #4]
+ 800952a:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
+ 800952c:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
+ 8009530:      d00a            beq.n   8009548 <HAL_RCCEx_PeriphCLKConfig+0x59c>
        ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))
- 800191a:      687b            ldr     r3, [r7, #4]
- 800191c:      681b            ldr     r3, [r3, #0]
- 800191e:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
+ 8009532:      687b            ldr     r3, [r7, #4]
+ 8009534:      681b            ldr     r3, [r3, #0]
+ 8009536:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
     if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) ||
- 8001922:      2b00            cmp     r3, #0
- 8001924:      d02e            beq.n   8001984 <HAL_RCCEx_PeriphCLKConfig+0x5f0>
+ 800953a:      2b00            cmp     r3, #0
+ 800953c:      d02e            beq.n   800959c <HAL_RCCEx_PeriphCLKConfig+0x5f0>
        ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S)))
- 8001926:      687b            ldr     r3, [r7, #4]
- 8001928:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 800192a:      f5b3 0f80       cmp.w   r3, #4194304    ; 0x400000
- 800192e:      d129            bne.n   8001984 <HAL_RCCEx_PeriphCLKConfig+0x5f0>
+ 800953e:      687b            ldr     r3, [r7, #4]
+ 8009540:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 8009542:      f5b3 0f80       cmp.w   r3, #4194304    ; 0x400000
+ 8009546:      d129            bne.n   800959c <HAL_RCCEx_PeriphCLKConfig+0x5f0>
       assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));
       /* Check for PLLI2S/DIVQ parameters */
       assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ));
 
       /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI configuration) */
       tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos);
- 8001930:      4b4a            ldr     r3, [pc, #296]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001932:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
- 8001936:      0c1b            lsrs    r3, r3, #16
- 8001938:      f003 0303       and.w   r3, r3, #3
- 800193c:      613b            str     r3, [r7, #16]
+ 8009548:      4b4a            ldr     r3, [pc, #296]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 800954a:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
+ 800954e:      0c1b            lsrs    r3, r3, #16
+ 8009550:      f003 0303       and.w   r3, r3, #3
+ 8009554:      613b            str     r3, [r7, #16]
       tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
- 800193e:      4b47            ldr     r3, [pc, #284]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001940:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
- 8001944:      0f1b            lsrs    r3, r3, #28
- 8001946:      f003 0307       and.w   r3, r3, #7
- 800194a:      60fb            str     r3, [r7, #12]
+ 8009556:      4b47            ldr     r3, [pc, #284]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009558:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
+ 800955c:      0f1b            lsrs    r3, r3, #28
+ 800955e:      f003 0307       and.w   r3, r3, #7
+ 8009562:      60fb            str     r3, [r7, #12]
       /* Configure the PLLI2S division factors */
       /* PLLI2S_VCO Input  = PLL_SOURCE/PLLM */
       /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */
       /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */
       __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, tmpreg0, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg1);
- 800194c:      687b            ldr     r3, [r7, #4]
- 800194e:      685b            ldr     r3, [r3, #4]
- 8001950:      019a            lsls    r2, r3, #6
- 8001952:      693b            ldr     r3, [r7, #16]
- 8001954:      041b            lsls    r3, r3, #16
- 8001956:      431a            orrs    r2, r3
- 8001958:      687b            ldr     r3, [r7, #4]
- 800195a:      68db            ldr     r3, [r3, #12]
- 800195c:      061b            lsls    r3, r3, #24
- 800195e:      431a            orrs    r2, r3
- 8001960:      68fb            ldr     r3, [r7, #12]
- 8001962:      071b            lsls    r3, r3, #28
- 8001964:      493d            ldr     r1, [pc, #244]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001966:      4313            orrs    r3, r2
- 8001968:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
+ 8009564:      687b            ldr     r3, [r7, #4]
+ 8009566:      685b            ldr     r3, [r3, #4]
+ 8009568:      019a            lsls    r2, r3, #6
+ 800956a:      693b            ldr     r3, [r7, #16]
+ 800956c:      041b            lsls    r3, r3, #16
+ 800956e:      431a            orrs    r2, r3
+ 8009570:      687b            ldr     r3, [r7, #4]
+ 8009572:      68db            ldr     r3, [r3, #12]
+ 8009574:      061b            lsls    r3, r3, #24
+ 8009576:      431a            orrs    r2, r3
+ 8009578:      68fb            ldr     r3, [r7, #12]
+ 800957a:      071b            lsls    r3, r3, #28
+ 800957c:      493d            ldr     r1, [pc, #244]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 800957e:      4313            orrs    r3, r2
+ 8009580:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
 
       /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */
       __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ);
- 800196c:      4b3b            ldr     r3, [pc, #236]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800196e:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 8001972:      f023 021f       bic.w   r2, r3, #31
- 8001976:      687b            ldr     r3, [r7, #4]
- 8001978:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 800197a:      3b01            subs    r3, #1
- 800197c:      4937            ldr     r1, [pc, #220]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 800197e:      4313            orrs    r3, r2
- 8001980:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 8009584:      4b3b            ldr     r3, [pc, #236]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009586:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 800958a:      f023 021f       bic.w   r2, r3, #31
+ 800958e:      687b            ldr     r3, [r7, #4]
+ 8009590:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8009592:      3b01            subs    r3, #1
+ 8009594:      4937            ldr     r1, [pc, #220]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009596:      4313            orrs    r3, r2
+ 8009598:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
     }
 
     /*----------------- In Case of PLLI2S is selected as source clock for SPDIF-RX -------------------*/
     if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX)
- 8001984:      687b            ldr     r3, [r7, #4]
- 8001986:      681b            ldr     r3, [r3, #0]
- 8001988:      f003 7380       and.w   r3, r3, #16777216       ; 0x1000000
- 800198c:      2b00            cmp     r3, #0
- 800198e:      d01d            beq.n   80019cc <HAL_RCCEx_PeriphCLKConfig+0x638>
+ 800959c:      687b            ldr     r3, [r7, #4]
+ 800959e:      681b            ldr     r3, [r3, #0]
+ 80095a0:      f003 7380       and.w   r3, r3, #16777216       ; 0x1000000
+ 80095a4:      2b00            cmp     r3, #0
+ 80095a6:      d01d            beq.n   80095e4 <HAL_RCCEx_PeriphCLKConfig+0x638>
     {
       /* check for Parameters */
       assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP));
 
      /* Read PLLI2SR value from PLLI2SCFGR register (this value is not needed for SPDIF-RX configuration) */
       tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos);
- 8001990:      4b32            ldr     r3, [pc, #200]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001992:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
- 8001996:      0e1b            lsrs    r3, r3, #24
- 8001998:      f003 030f       and.w   r3, r3, #15
- 800199c:      613b            str     r3, [r7, #16]
+ 80095a8:      4b32            ldr     r3, [pc, #200]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 80095aa:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
+ 80095ae:      0e1b            lsrs    r3, r3, #24
+ 80095b0:      f003 030f       and.w   r3, r3, #15
+ 80095b4:      613b            str     r3, [r7, #16]
       tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos);
- 800199e:      4b2f            ldr     r3, [pc, #188]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80019a0:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
- 80019a4:      0f1b            lsrs    r3, r3, #28
- 80019a6:      f003 0307       and.w   r3, r3, #7
- 80019aa:      60fb            str     r3, [r7, #12]
+ 80095b6:      4b2f            ldr     r3, [pc, #188]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 80095b8:      f8d3 3084       ldr.w   r3, [r3, #132]  ; 0x84
+ 80095bc:      0f1b            lsrs    r3, r3, #28
+ 80095be:      f003 0307       and.w   r3, r3, #7
+ 80095c2:      60fb            str     r3, [r7, #12]
       /* Configure the PLLI2S division factors */
       /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */
       /* SPDIFCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */
       __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, tmpreg0, tmpreg1);
- 80019ac:      687b            ldr     r3, [r7, #4]
- 80019ae:      685b            ldr     r3, [r3, #4]
- 80019b0:      019a            lsls    r2, r3, #6
- 80019b2:      687b            ldr     r3, [r7, #4]
- 80019b4:      691b            ldr     r3, [r3, #16]
- 80019b6:      041b            lsls    r3, r3, #16
- 80019b8:      431a            orrs    r2, r3
- 80019ba:      693b            ldr     r3, [r7, #16]
- 80019bc:      061b            lsls    r3, r3, #24
- 80019be:      431a            orrs    r2, r3
- 80019c0:      68fb            ldr     r3, [r7, #12]
- 80019c2:      071b            lsls    r3, r3, #28
- 80019c4:      4925            ldr     r1, [pc, #148]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80019c6:      4313            orrs    r3, r2
- 80019c8:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
+ 80095c4:      687b            ldr     r3, [r7, #4]
+ 80095c6:      685b            ldr     r3, [r3, #4]
+ 80095c8:      019a            lsls    r2, r3, #6
+ 80095ca:      687b            ldr     r3, [r7, #4]
+ 80095cc:      691b            ldr     r3, [r3, #16]
+ 80095ce:      041b            lsls    r3, r3, #16
+ 80095d0:      431a            orrs    r2, r3
+ 80095d2:      693b            ldr     r3, [r7, #16]
+ 80095d4:      061b            lsls    r3, r3, #24
+ 80095d6:      431a            orrs    r2, r3
+ 80095d8:      68fb            ldr     r3, [r7, #12]
+ 80095da:      071b            lsls    r3, r3, #28
+ 80095dc:      4925            ldr     r1, [pc, #148]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 80095de:      4313            orrs    r3, r2
+ 80095e0:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
     }
 
     /*----------------- In Case of PLLI2S is just selected  -----------------*/
     if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)
- 80019cc:      687b            ldr     r3, [r7, #4]
- 80019ce:      681b            ldr     r3, [r3, #0]
- 80019d0:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
- 80019d4:      2b00            cmp     r3, #0
- 80019d6:      d011            beq.n   80019fc <HAL_RCCEx_PeriphCLKConfig+0x668>
+ 80095e4:      687b            ldr     r3, [r7, #4]
+ 80095e6:      681b            ldr     r3, [r3, #0]
+ 80095e8:      f003 7300       and.w   r3, r3, #33554432       ; 0x2000000
+ 80095ec:      2b00            cmp     r3, #0
+ 80095ee:      d011            beq.n   8009614 <HAL_RCCEx_PeriphCLKConfig+0x668>
       assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ));
 
       /* Configure the PLLI2S division factors */
       /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */
       /* SPDIFRXCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */
       __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, PeriphClkInit->PLLI2S.PLLI2SQ, PeriphClkInit->PLLI2S.PLLI2SR);
- 80019d8:      687b            ldr     r3, [r7, #4]
- 80019da:      685b            ldr     r3, [r3, #4]
- 80019dc:      019a            lsls    r2, r3, #6
- 80019de:      687b            ldr     r3, [r7, #4]
- 80019e0:      691b            ldr     r3, [r3, #16]
- 80019e2:      041b            lsls    r3, r3, #16
- 80019e4:      431a            orrs    r2, r3
- 80019e6:      687b            ldr     r3, [r7, #4]
- 80019e8:      68db            ldr     r3, [r3, #12]
- 80019ea:      061b            lsls    r3, r3, #24
- 80019ec:      431a            orrs    r2, r3
- 80019ee:      687b            ldr     r3, [r7, #4]
- 80019f0:      689b            ldr     r3, [r3, #8]
- 80019f2:      071b            lsls    r3, r3, #28
- 80019f4:      4919            ldr     r1, [pc, #100]  ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80019f6:      4313            orrs    r3, r2
- 80019f8:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
+ 80095f0:      687b            ldr     r3, [r7, #4]
+ 80095f2:      685b            ldr     r3, [r3, #4]
+ 80095f4:      019a            lsls    r2, r3, #6
+ 80095f6:      687b            ldr     r3, [r7, #4]
+ 80095f8:      691b            ldr     r3, [r3, #16]
+ 80095fa:      041b            lsls    r3, r3, #16
+ 80095fc:      431a            orrs    r2, r3
+ 80095fe:      687b            ldr     r3, [r7, #4]
+ 8009600:      68db            ldr     r3, [r3, #12]
+ 8009602:      061b            lsls    r3, r3, #24
+ 8009604:      431a            orrs    r2, r3
+ 8009606:      687b            ldr     r3, [r7, #4]
+ 8009608:      689b            ldr     r3, [r3, #8]
+ 800960a:      071b            lsls    r3, r3, #28
+ 800960c:      4919            ldr     r1, [pc, #100]  ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 800960e:      4313            orrs    r3, r2
+ 8009610:      f8c1 3084       str.w   r3, [r1, #132]  ; 0x84
     }
 
     /* Enable the PLLI2S */
     __HAL_RCC_PLLI2S_ENABLE();
- 80019fc:      4b17            ldr     r3, [pc, #92]   ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 80019fe:      681b            ldr     r3, [r3, #0]
- 8001a00:      4a16            ldr     r2, [pc, #88]   ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001a02:      f043 6380       orr.w   r3, r3, #67108864       ; 0x4000000
- 8001a06:      6013            str     r3, [r2, #0]
+ 8009614:      4b17            ldr     r3, [pc, #92]   ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009616:      681b            ldr     r3, [r3, #0]
+ 8009618:      4a16            ldr     r2, [pc, #88]   ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 800961a:      f043 6380       orr.w   r3, r3, #67108864       ; 0x4000000
+ 800961e:      6013            str     r3, [r2, #0]
 
     /* Get Start Tick*/
     tickstart = HAL_GetTick();
- 8001a08:      f7fe fde8       bl      80005dc <HAL_GetTick>
- 8001a0c:      6178            str     r0, [r7, #20]
+ 8009620:      f7fe fd38       bl      8008094 <HAL_GetTick>
+ 8009624:      6178            str     r0, [r7, #20]
 
     /* Wait till PLLI2S is ready */
     while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  == RESET)
- 8001a0e:      e008            b.n     8001a22 <HAL_RCCEx_PeriphCLKConfig+0x68e>
+ 8009626:      e008            b.n     800963a <HAL_RCCEx_PeriphCLKConfig+0x68e>
     {
       if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE)
- 8001a10:      f7fe fde4       bl      80005dc <HAL_GetTick>
- 8001a14:      4602            mov     r2, r0
- 8001a16:      697b            ldr     r3, [r7, #20]
- 8001a18:      1ad3            subs    r3, r2, r3
- 8001a1a:      2b64            cmp     r3, #100        ; 0x64
- 8001a1c:      d901            bls.n   8001a22 <HAL_RCCEx_PeriphCLKConfig+0x68e>
+ 8009628:      f7fe fd34       bl      8008094 <HAL_GetTick>
+ 800962c:      4602            mov     r2, r0
+ 800962e:      697b            ldr     r3, [r7, #20]
+ 8009630:      1ad3            subs    r3, r2, r3
+ 8009632:      2b64            cmp     r3, #100        ; 0x64
+ 8009634:      d901            bls.n   800963a <HAL_RCCEx_PeriphCLKConfig+0x68e>
       {
         /* return in case of Timeout detected */
         return HAL_TIMEOUT;
- 8001a1e:      2303            movs    r3, #3
- 8001a20:      e0d7            b.n     8001bd2 <HAL_RCCEx_PeriphCLKConfig+0x83e>
+ 8009636:      2303            movs    r3, #3
+ 8009638:      e0d7            b.n     80097ea <HAL_RCCEx_PeriphCLKConfig+0x83e>
     while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY)  == RESET)
- 8001a22:      4b0e            ldr     r3, [pc, #56]   ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001a24:      681b            ldr     r3, [r3, #0]
- 8001a26:      f003 6300       and.w   r3, r3, #134217728      ; 0x8000000
- 8001a2a:      2b00            cmp     r3, #0
- 8001a2c:      d0f0            beq.n   8001a10 <HAL_RCCEx_PeriphCLKConfig+0x67c>
+ 800963a:      4b0e            ldr     r3, [pc, #56]   ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 800963c:      681b            ldr     r3, [r3, #0]
+ 800963e:      f003 6300       and.w   r3, r3, #134217728      ; 0x8000000
+ 8009642:      2b00            cmp     r3, #0
+ 8009644:      d0f0            beq.n   8009628 <HAL_RCCEx_PeriphCLKConfig+0x67c>
     }
   }
 
   /*-------------------------------------- PLLSAI Configuration ---------------------------------*/
   /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 */
   if(pllsaiused == 1)
- 8001a2e:      69bb            ldr     r3, [r7, #24]
- 8001a30:      2b01            cmp     r3, #1
- 8001a32:      f040 80cd       bne.w   8001bd0 <HAL_RCCEx_PeriphCLKConfig+0x83c>
+ 8009646:      69bb            ldr     r3, [r7, #24]
+ 8009648:      2b01            cmp     r3, #1
+ 800964a:      f040 80cd       bne.w   80097e8 <HAL_RCCEx_PeriphCLKConfig+0x83c>
   {
     /* Disable PLLSAI Clock */
     __HAL_RCC_PLLSAI_DISABLE();
- 8001a36:      4b09            ldr     r3, [pc, #36]   ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001a38:      681b            ldr     r3, [r3, #0]
- 8001a3a:      4a08            ldr     r2, [pc, #32]   ; (8001a5c <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
- 8001a3c:      f023 5380       bic.w   r3, r3, #268435456      ; 0x10000000
- 8001a40:      6013            str     r3, [r2, #0]
+ 800964e:      4b09            ldr     r3, [pc, #36]   ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009650:      681b            ldr     r3, [r3, #0]
+ 8009652:      4a08            ldr     r2, [pc, #32]   ; (8009674 <HAL_RCCEx_PeriphCLKConfig+0x6c8>)
+ 8009654:      f023 5380       bic.w   r3, r3, #268435456      ; 0x10000000
+ 8009658:      6013            str     r3, [r2, #0]
 
     /* Get Start Tick*/
     tickstart = HAL_GetTick();
- 8001a42:      f7fe fdcb       bl      80005dc <HAL_GetTick>
- 8001a46:      6178            str     r0, [r7, #20]
+ 800965a:      f7fe fd1b       bl      8008094 <HAL_GetTick>
+ 800965e:      6178            str     r0, [r7, #20]
 
     /* Wait till PLLSAI is disabled */
     while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
- 8001a48:      e00a            b.n     8001a60 <HAL_RCCEx_PeriphCLKConfig+0x6cc>
+ 8009660:      e00a            b.n     8009678 <HAL_RCCEx_PeriphCLKConfig+0x6cc>
     {
       if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
- 8001a4a:      f7fe fdc7       bl      80005dc <HAL_GetTick>
- 8001a4e:      4602            mov     r2, r0
- 8001a50:      697b            ldr     r3, [r7, #20]
- 8001a52:      1ad3            subs    r3, r2, r3
- 8001a54:      2b64            cmp     r3, #100        ; 0x64
- 8001a56:      d903            bls.n   8001a60 <HAL_RCCEx_PeriphCLKConfig+0x6cc>
+ 8009662:      f7fe fd17       bl      8008094 <HAL_GetTick>
+ 8009666:      4602            mov     r2, r0
+ 8009668:      697b            ldr     r3, [r7, #20]
+ 800966a:      1ad3            subs    r3, r2, r3
+ 800966c:      2b64            cmp     r3, #100        ; 0x64
+ 800966e:      d903            bls.n   8009678 <HAL_RCCEx_PeriphCLKConfig+0x6cc>
       {
         /* return in case of Timeout detected */
         return HAL_TIMEOUT;
- 8001a58:      2303            movs    r3, #3
- 8001a5a:      e0ba            b.n     8001bd2 <HAL_RCCEx_PeriphCLKConfig+0x83e>
- 8001a5c:      40023800        .word   0x40023800
+ 8009670:      2303            movs    r3, #3
+ 8009672:      e0ba            b.n     80097ea <HAL_RCCEx_PeriphCLKConfig+0x83e>
+ 8009674:      40023800        .word   0x40023800
     while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET)
- 8001a60:      4b5e            ldr     r3, [pc, #376]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001a62:      681b            ldr     r3, [r3, #0]
- 8001a64:      f003 5300       and.w   r3, r3, #536870912      ; 0x20000000
- 8001a68:      f1b3 5f00       cmp.w   r3, #536870912  ; 0x20000000
- 8001a6c:      d0ed            beq.n   8001a4a <HAL_RCCEx_PeriphCLKConfig+0x6b6>
+ 8009678:      4b5e            ldr     r3, [pc, #376]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 800967a:      681b            ldr     r3, [r3, #0]
+ 800967c:      f003 5300       and.w   r3, r3, #536870912      ; 0x20000000
+ 8009680:      f1b3 5f00       cmp.w   r3, #536870912  ; 0x20000000
+ 8009684:      d0ed            beq.n   8009662 <HAL_RCCEx_PeriphCLKConfig+0x6b6>
 
     /* Check the PLLSAI division factors */
     assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN));
 
     /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/
     if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\
- 8001a6e:      687b            ldr     r3, [r7, #4]
- 8001a70:      681b            ldr     r3, [r3, #0]
- 8001a72:      f403 2300       and.w   r3, r3, #524288 ; 0x80000
- 8001a76:      2b00            cmp     r3, #0
- 8001a78:      d003            beq.n   8001a82 <HAL_RCCEx_PeriphCLKConfig+0x6ee>
- 8001a7a:      687b            ldr     r3, [r7, #4]
- 8001a7c:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
- 8001a7e:      2b00            cmp     r3, #0
- 8001a80:      d009            beq.n   8001a96 <HAL_RCCEx_PeriphCLKConfig+0x702>
+ 8009686:      687b            ldr     r3, [r7, #4]
+ 8009688:      681b            ldr     r3, [r3, #0]
+ 800968a:      f403 2300       and.w   r3, r3, #524288 ; 0x80000
+ 800968e:      2b00            cmp     r3, #0
+ 8009690:      d003            beq.n   800969a <HAL_RCCEx_PeriphCLKConfig+0x6ee>
+ 8009692:      687b            ldr     r3, [r7, #4]
+ 8009694:      6bdb            ldr     r3, [r3, #60]   ; 0x3c
+ 8009696:      2b00            cmp     r3, #0
+ 8009698:      d009            beq.n   80096ae <HAL_RCCEx_PeriphCLKConfig+0x702>
        ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))
- 8001a82:      687b            ldr     r3, [r7, #4]
- 8001a84:      681b            ldr     r3, [r3, #0]
- 8001a86:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
+ 800969a:      687b            ldr     r3, [r7, #4]
+ 800969c:      681b            ldr     r3, [r3, #0]
+ 800969e:      f403 1380       and.w   r3, r3, #1048576        ; 0x100000
     if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\
- 8001a8a:      2b00            cmp     r3, #0
- 8001a8c:      d02e            beq.n   8001aec <HAL_RCCEx_PeriphCLKConfig+0x758>
+ 80096a2:      2b00            cmp     r3, #0
+ 80096a4:      d02e            beq.n   8009704 <HAL_RCCEx_PeriphCLKConfig+0x758>
        ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI)))
- 8001a8e:      687b            ldr     r3, [r7, #4]
- 8001a90:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8001a92:      2b00            cmp     r3, #0
- 8001a94:      d12a            bne.n   8001aec <HAL_RCCEx_PeriphCLKConfig+0x758>
+ 80096a6:      687b            ldr     r3, [r7, #4]
+ 80096a8:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80096aa:      2b00            cmp     r3, #0
+ 80096ac:      d12a            bne.n   8009704 <HAL_RCCEx_PeriphCLKConfig+0x758>
       assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ));
       /* check for PLLSAI/DIVQ Parameter */
       assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ));
 
       /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuration) */
       tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);
- 8001a96:      4b51            ldr     r3, [pc, #324]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001a98:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 8001a9c:      0c1b            lsrs    r3, r3, #16
- 8001a9e:      f003 0303       and.w   r3, r3, #3
- 8001aa2:      613b            str     r3, [r7, #16]
+ 80096ae:      4b51            ldr     r3, [pc, #324]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80096b0:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 80096b4:      0c1b            lsrs    r3, r3, #16
+ 80096b6:      f003 0303       and.w   r3, r3, #3
+ 80096ba:      613b            str     r3, [r7, #16]
       tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
- 8001aa4:      4b4d            ldr     r3, [pc, #308]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001aa6:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 8001aaa:      0f1b            lsrs    r3, r3, #28
- 8001aac:      f003 0307       and.w   r3, r3, #7
- 8001ab0:      60fb            str     r3, [r7, #12]
+ 80096bc:      4b4d            ldr     r3, [pc, #308]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80096be:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 80096c2:      0f1b            lsrs    r3, r3, #28
+ 80096c4:      f003 0307       and.w   r3, r3, #7
+ 80096c8:      60fb            str     r3, [r7, #12]
       /* PLLSAI_VCO Input  = PLL_SOURCE/PLLM */
       /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */
       /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */
       __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAIQ, tmpreg1);
- 8001ab2:      687b            ldr     r3, [r7, #4]
- 8001ab4:      695b            ldr     r3, [r3, #20]
- 8001ab6:      019a            lsls    r2, r3, #6
- 8001ab8:      693b            ldr     r3, [r7, #16]
- 8001aba:      041b            lsls    r3, r3, #16
- 8001abc:      431a            orrs    r2, r3
- 8001abe:      687b            ldr     r3, [r7, #4]
- 8001ac0:      699b            ldr     r3, [r3, #24]
- 8001ac2:      061b            lsls    r3, r3, #24
- 8001ac4:      431a            orrs    r2, r3
- 8001ac6:      68fb            ldr     r3, [r7, #12]
- 8001ac8:      071b            lsls    r3, r3, #28
- 8001aca:      4944            ldr     r1, [pc, #272]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001acc:      4313            orrs    r3, r2
- 8001ace:      f8c1 3088       str.w   r3, [r1, #136]  ; 0x88
+ 80096ca:      687b            ldr     r3, [r7, #4]
+ 80096cc:      695b            ldr     r3, [r3, #20]
+ 80096ce:      019a            lsls    r2, r3, #6
+ 80096d0:      693b            ldr     r3, [r7, #16]
+ 80096d2:      041b            lsls    r3, r3, #16
+ 80096d4:      431a            orrs    r2, r3
+ 80096d6:      687b            ldr     r3, [r7, #4]
+ 80096d8:      699b            ldr     r3, [r3, #24]
+ 80096da:      061b            lsls    r3, r3, #24
+ 80096dc:      431a            orrs    r2, r3
+ 80096de:      68fb            ldr     r3, [r7, #12]
+ 80096e0:      071b            lsls    r3, r3, #28
+ 80096e2:      4944            ldr     r1, [pc, #272]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80096e4:      4313            orrs    r3, r2
+ 80096e6:      f8c1 3088       str.w   r3, [r1, #136]  ; 0x88
 
       /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */
       __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ);
- 8001ad2:      4b42            ldr     r3, [pc, #264]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001ad4:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 8001ad8:      f423 52f8       bic.w   r2, r3, #7936   ; 0x1f00
- 8001adc:      687b            ldr     r3, [r7, #4]
- 8001ade:      6a9b            ldr     r3, [r3, #40]   ; 0x28
- 8001ae0:      3b01            subs    r3, #1
- 8001ae2:      021b            lsls    r3, r3, #8
- 8001ae4:      493d            ldr     r1, [pc, #244]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001ae6:      4313            orrs    r3, r2
- 8001ae8:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 80096ea:      4b42            ldr     r3, [pc, #264]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80096ec:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 80096f0:      f423 52f8       bic.w   r2, r3, #7936   ; 0x1f00
+ 80096f4:      687b            ldr     r3, [r7, #4]
+ 80096f6:      6a9b            ldr     r3, [r3, #40]   ; 0x28
+ 80096f8:      3b01            subs    r3, #1
+ 80096fa:      021b            lsls    r3, r3, #8
+ 80096fc:      493d            ldr     r1, [pc, #244]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80096fe:      4313            orrs    r3, r2
+ 8009700:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
     }
 
     /*----------------- In Case of PLLSAI is selected as source clock for CLK48 -------------------*/
     /* In Case of PLLI2S is selected as source clock for CK48 */
     if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP))
- 8001aec:      687b            ldr     r3, [r7, #4]
- 8001aee:      681b            ldr     r3, [r3, #0]
- 8001af0:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
- 8001af4:      2b00            cmp     r3, #0
- 8001af6:      d022            beq.n   8001b3e <HAL_RCCEx_PeriphCLKConfig+0x7aa>
- 8001af8:      687b            ldr     r3, [r7, #4]
- 8001afa:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 8001afc:      f1b3 6f00       cmp.w   r3, #134217728  ; 0x8000000
- 8001b00:      d11d            bne.n   8001b3e <HAL_RCCEx_PeriphCLKConfig+0x7aa>
+ 8009704:      687b            ldr     r3, [r7, #4]
+ 8009706:      681b            ldr     r3, [r3, #0]
+ 8009708:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
+ 800970c:      2b00            cmp     r3, #0
+ 800970e:      d022            beq.n   8009756 <HAL_RCCEx_PeriphCLKConfig+0x7aa>
+ 8009710:      687b            ldr     r3, [r7, #4]
+ 8009712:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 8009714:      f1b3 6f00       cmp.w   r3, #134217728  ; 0x8000000
+ 8009718:      d11d            bne.n   8009756 <HAL_RCCEx_PeriphCLKConfig+0x7aa>
     {
       /* check for Parameters */
       assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP));
       /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 configuration) */
       tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
- 8001b02:      4b36            ldr     r3, [pc, #216]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b04:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 8001b08:      0e1b            lsrs    r3, r3, #24
- 8001b0a:      f003 030f       and.w   r3, r3, #15
- 8001b0e:      613b            str     r3, [r7, #16]
+ 800971a:      4b36            ldr     r3, [pc, #216]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 800971c:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 8009720:      0e1b            lsrs    r3, r3, #24
+ 8009722:      f003 030f       and.w   r3, r3, #15
+ 8009726:      613b            str     r3, [r7, #16]
       tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos);
- 8001b10:      4b32            ldr     r3, [pc, #200]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b12:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 8001b16:      0f1b            lsrs    r3, r3, #28
- 8001b18:      f003 0307       and.w   r3, r3, #7
- 8001b1c:      60fb            str     r3, [r7, #12]
+ 8009728:      4b32            ldr     r3, [pc, #200]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 800972a:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 800972e:      0f1b            lsrs    r3, r3, #28
+ 8009730:      f003 0307       and.w   r3, r3, #7
+ 8009734:      60fb            str     r3, [r7, #12]
 
       /* Configure the PLLSAI division factors */
       /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */
       /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */
       __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg0, tmpreg1);
- 8001b1e:      687b            ldr     r3, [r7, #4]
- 8001b20:      695b            ldr     r3, [r3, #20]
- 8001b22:      019a            lsls    r2, r3, #6
- 8001b24:      687b            ldr     r3, [r7, #4]
- 8001b26:      6a1b            ldr     r3, [r3, #32]
- 8001b28:      041b            lsls    r3, r3, #16
- 8001b2a:      431a            orrs    r2, r3
- 8001b2c:      693b            ldr     r3, [r7, #16]
- 8001b2e:      061b            lsls    r3, r3, #24
- 8001b30:      431a            orrs    r2, r3
- 8001b32:      68fb            ldr     r3, [r7, #12]
- 8001b34:      071b            lsls    r3, r3, #28
- 8001b36:      4929            ldr     r1, [pc, #164]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b38:      4313            orrs    r3, r2
- 8001b3a:      f8c1 3088       str.w   r3, [r1, #136]  ; 0x88
+ 8009736:      687b            ldr     r3, [r7, #4]
+ 8009738:      695b            ldr     r3, [r3, #20]
+ 800973a:      019a            lsls    r2, r3, #6
+ 800973c:      687b            ldr     r3, [r7, #4]
+ 800973e:      6a1b            ldr     r3, [r3, #32]
+ 8009740:      041b            lsls    r3, r3, #16
+ 8009742:      431a            orrs    r2, r3
+ 8009744:      693b            ldr     r3, [r7, #16]
+ 8009746:      061b            lsls    r3, r3, #24
+ 8009748:      431a            orrs    r2, r3
+ 800974a:      68fb            ldr     r3, [r7, #12]
+ 800974c:      071b            lsls    r3, r3, #28
+ 800974e:      4929            ldr     r1, [pc, #164]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 8009750:      4313            orrs    r3, r2
+ 8009752:      f8c1 3088       str.w   r3, [r1, #136]  ; 0x88
     }
 
 #if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx)
     /*---------------------------- LTDC configuration -------------------------------*/
     if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == (RCC_PERIPHCLK_LTDC))
- 8001b3e:      687b            ldr     r3, [r7, #4]
- 8001b40:      681b            ldr     r3, [r3, #0]
- 8001b42:      f003 0308       and.w   r3, r3, #8
- 8001b46:      2b00            cmp     r3, #0
- 8001b48:      d028            beq.n   8001b9c <HAL_RCCEx_PeriphCLKConfig+0x808>
+ 8009756:      687b            ldr     r3, [r7, #4]
+ 8009758:      681b            ldr     r3, [r3, #0]
+ 800975a:      f003 0308       and.w   r3, r3, #8
+ 800975e:      2b00            cmp     r3, #0
+ 8009760:      d028            beq.n   80097b4 <HAL_RCCEx_PeriphCLKConfig+0x808>
     {
       assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->PLLSAI.PLLSAIR));
       assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR));
 
       /* Read PLLSAIP and PLLSAIQ value from PLLSAICFGR register (these value are not needed for LTDC configuration) */
       tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos);
- 8001b4a:      4b24            ldr     r3, [pc, #144]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b4c:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 8001b50:      0e1b            lsrs    r3, r3, #24
- 8001b52:      f003 030f       and.w   r3, r3, #15
- 8001b56:      613b            str     r3, [r7, #16]
+ 8009762:      4b24            ldr     r3, [pc, #144]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 8009764:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 8009768:      0e1b            lsrs    r3, r3, #24
+ 800976a:      f003 030f       and.w   r3, r3, #15
+ 800976e:      613b            str     r3, [r7, #16]
       tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos);
- 8001b58:      4b20            ldr     r3, [pc, #128]  ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b5a:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 8001b5e:      0c1b            lsrs    r3, r3, #16
- 8001b60:      f003 0303       and.w   r3, r3, #3
- 8001b64:      60fb            str     r3, [r7, #12]
+ 8009770:      4b20            ldr     r3, [pc, #128]  ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 8009772:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 8009776:      0c1b            lsrs    r3, r3, #16
+ 8009778:      f003 0303       and.w   r3, r3, #3
+ 800977c:      60fb            str     r3, [r7, #12]
 
       /* PLLSAI_VCO Input  = PLL_SOURCE/PLLM */
       /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */
       /* LTDC_CLK(first level) = PLLSAI_VCO Output/PLLSAIR */
       __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg1, tmpreg0, PeriphClkInit->PLLSAI.PLLSAIR);
- 8001b66:      687b            ldr     r3, [r7, #4]
- 8001b68:      695b            ldr     r3, [r3, #20]
- 8001b6a:      019a            lsls    r2, r3, #6
- 8001b6c:      68fb            ldr     r3, [r7, #12]
- 8001b6e:      041b            lsls    r3, r3, #16
- 8001b70:      431a            orrs    r2, r3
- 8001b72:      693b            ldr     r3, [r7, #16]
- 8001b74:      061b            lsls    r3, r3, #24
- 8001b76:      431a            orrs    r2, r3
- 8001b78:      687b            ldr     r3, [r7, #4]
- 8001b7a:      69db            ldr     r3, [r3, #28]
- 8001b7c:      071b            lsls    r3, r3, #28
- 8001b7e:      4917            ldr     r1, [pc, #92]   ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b80:      4313            orrs    r3, r2
- 8001b82:      f8c1 3088       str.w   r3, [r1, #136]  ; 0x88
+ 800977e:      687b            ldr     r3, [r7, #4]
+ 8009780:      695b            ldr     r3, [r3, #20]
+ 8009782:      019a            lsls    r2, r3, #6
+ 8009784:      68fb            ldr     r3, [r7, #12]
+ 8009786:      041b            lsls    r3, r3, #16
+ 8009788:      431a            orrs    r2, r3
+ 800978a:      693b            ldr     r3, [r7, #16]
+ 800978c:      061b            lsls    r3, r3, #24
+ 800978e:      431a            orrs    r2, r3
+ 8009790:      687b            ldr     r3, [r7, #4]
+ 8009792:      69db            ldr     r3, [r3, #28]
+ 8009794:      071b            lsls    r3, r3, #28
+ 8009796:      4917            ldr     r1, [pc, #92]   ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 8009798:      4313            orrs    r3, r2
+ 800979a:      f8c1 3088       str.w   r3, [r1, #136]  ; 0x88
 
       /* LTDC_CLK = LTDC_CLK(first level)/PLLSAIDIVR */
       __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR);
- 8001b86:      4b15            ldr     r3, [pc, #84]   ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b88:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
- 8001b8c:      f423 3240       bic.w   r2, r3, #196608 ; 0x30000
- 8001b90:      687b            ldr     r3, [r7, #4]
- 8001b92:      6adb            ldr     r3, [r3, #44]   ; 0x2c
- 8001b94:      4911            ldr     r1, [pc, #68]   ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b96:      4313            orrs    r3, r2
- 8001b98:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
+ 800979e:      4b15            ldr     r3, [pc, #84]   ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80097a0:      f8d3 308c       ldr.w   r3, [r3, #140]  ; 0x8c
+ 80097a4:      f423 3240       bic.w   r2, r3, #196608 ; 0x30000
+ 80097a8:      687b            ldr     r3, [r7, #4]
+ 80097aa:      6adb            ldr     r3, [r3, #44]   ; 0x2c
+ 80097ac:      4911            ldr     r1, [pc, #68]   ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80097ae:      4313            orrs    r3, r2
+ 80097b0:      f8c1 308c       str.w   r3, [r1, #140]  ; 0x8c
     }
 #endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx  */
 
     /* Enable PLLSAI Clock */
     __HAL_RCC_PLLSAI_ENABLE();
- 8001b9c:      4b0f            ldr     r3, [pc, #60]   ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001b9e:      681b            ldr     r3, [r3, #0]
- 8001ba0:      4a0e            ldr     r2, [pc, #56]   ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001ba2:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
- 8001ba6:      6013            str     r3, [r2, #0]
+ 80097b4:      4b0f            ldr     r3, [pc, #60]   ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80097b6:      681b            ldr     r3, [r3, #0]
+ 80097b8:      4a0e            ldr     r2, [pc, #56]   ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80097ba:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
+ 80097be:      6013            str     r3, [r2, #0]
 
     /* Get Start Tick*/
     tickstart = HAL_GetTick();
- 8001ba8:      f7fe fd18       bl      80005dc <HAL_GetTick>
- 8001bac:      6178            str     r0, [r7, #20]
+ 80097c0:      f7fe fc68       bl      8008094 <HAL_GetTick>
+ 80097c4:      6178            str     r0, [r7, #20]
 
     /* Wait till PLLSAI is ready */
     while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
- 8001bae:      e008            b.n     8001bc2 <HAL_RCCEx_PeriphCLKConfig+0x82e>
+ 80097c6:      e008            b.n     80097da <HAL_RCCEx_PeriphCLKConfig+0x82e>
     {
       if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE)
- 8001bb0:      f7fe fd14       bl      80005dc <HAL_GetTick>
- 8001bb4:      4602            mov     r2, r0
- 8001bb6:      697b            ldr     r3, [r7, #20]
- 8001bb8:      1ad3            subs    r3, r2, r3
- 8001bba:      2b64            cmp     r3, #100        ; 0x64
- 8001bbc:      d901            bls.n   8001bc2 <HAL_RCCEx_PeriphCLKConfig+0x82e>
+ 80097c8:      f7fe fc64       bl      8008094 <HAL_GetTick>
+ 80097cc:      4602            mov     r2, r0
+ 80097ce:      697b            ldr     r3, [r7, #20]
+ 80097d0:      1ad3            subs    r3, r2, r3
+ 80097d2:      2b64            cmp     r3, #100        ; 0x64
+ 80097d4:      d901            bls.n   80097da <HAL_RCCEx_PeriphCLKConfig+0x82e>
       {
         /* return in case of Timeout detected */
         return HAL_TIMEOUT;
- 8001bbe:      2303            movs    r3, #3
- 8001bc0:      e007            b.n     8001bd2 <HAL_RCCEx_PeriphCLKConfig+0x83e>
+ 80097d6:      2303            movs    r3, #3
+ 80097d8:      e007            b.n     80097ea <HAL_RCCEx_PeriphCLKConfig+0x83e>
     while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET)
- 8001bc2:      4b06            ldr     r3, [pc, #24]   ; (8001bdc <HAL_RCCEx_PeriphCLKConfig+0x848>)
- 8001bc4:      681b            ldr     r3, [r3, #0]
- 8001bc6:      f003 5300       and.w   r3, r3, #536870912      ; 0x20000000
- 8001bca:      f1b3 5f00       cmp.w   r3, #536870912  ; 0x20000000
- 8001bce:      d1ef            bne.n   8001bb0 <HAL_RCCEx_PeriphCLKConfig+0x81c>
+ 80097da:      4b06            ldr     r3, [pc, #24]   ; (80097f4 <HAL_RCCEx_PeriphCLKConfig+0x848>)
+ 80097dc:      681b            ldr     r3, [r3, #0]
+ 80097de:      f003 5300       and.w   r3, r3, #536870912      ; 0x20000000
+ 80097e2:      f1b3 5f00       cmp.w   r3, #536870912  ; 0x20000000
+ 80097e6:      d1ef            bne.n   80097c8 <HAL_RCCEx_PeriphCLKConfig+0x81c>
       }
     }
   }
   return HAL_OK;
- 8001bd0:      2300            movs    r3, #0
+ 80097e8:      2300            movs    r3, #0
+}
+ 80097ea:      4618            mov     r0, r3
+ 80097ec:      3720            adds    r7, #32
+ 80097ee:      46bd            mov     sp, r7
+ 80097f0:      bd80            pop     {r7, pc}
+ 80097f2:      bf00            nop
+ 80097f4:      40023800        .word   0x40023800
+
+080097f8 <HAL_TIM_Base_Start>:
+  * @brief  Starts the TIM Base generation.
+  * @param  htim TIM Base handle
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)
+{
+ 80097f8:      b480            push    {r7}
+ 80097fa:      b085            sub     sp, #20
+ 80097fc:      af00            add     r7, sp, #0
+ 80097fe:      6078            str     r0, [r7, #4]
+
+  /* Check the parameters */
+  assert_param(IS_TIM_INSTANCE(htim->Instance));
+
+  /* Set the TIM state */
+  htim->State = HAL_TIM_STATE_BUSY;
+ 8009800:      687b            ldr     r3, [r7, #4]
+ 8009802:      2202            movs    r2, #2
+ 8009804:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */
+  tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS;
+ 8009808:      687b            ldr     r3, [r7, #4]
+ 800980a:      681b            ldr     r3, [r3, #0]
+ 800980c:      689a            ldr     r2, [r3, #8]
+ 800980e:      4b0e            ldr     r3, [pc, #56]   ; (8009848 <HAL_TIM_Base_Start+0x50>)
+ 8009810:      4013            ands    r3, r2
+ 8009812:      60fb            str     r3, [r7, #12]
+  if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr))
+ 8009814:      68fb            ldr     r3, [r7, #12]
+ 8009816:      2b06            cmp     r3, #6
+ 8009818:      d00b            beq.n   8009832 <HAL_TIM_Base_Start+0x3a>
+ 800981a:      68fb            ldr     r3, [r7, #12]
+ 800981c:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
+ 8009820:      d007            beq.n   8009832 <HAL_TIM_Base_Start+0x3a>
+  {
+    __HAL_TIM_ENABLE(htim);
+ 8009822:      687b            ldr     r3, [r7, #4]
+ 8009824:      681b            ldr     r3, [r3, #0]
+ 8009826:      681a            ldr     r2, [r3, #0]
+ 8009828:      687b            ldr     r3, [r7, #4]
+ 800982a:      681b            ldr     r3, [r3, #0]
+ 800982c:      f042 0201       orr.w   r2, r2, #1
+ 8009830:      601a            str     r2, [r3, #0]
+  }
+
+  /* Change the TIM state*/
+  htim->State = HAL_TIM_STATE_READY;
+ 8009832:      687b            ldr     r3, [r7, #4]
+ 8009834:      2201            movs    r2, #1
+ 8009836:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  /* Return function status */
+  return HAL_OK;
+ 800983a:      2300            movs    r3, #0
+}
+ 800983c:      4618            mov     r0, r3
+ 800983e:      3714            adds    r7, #20
+ 8009840:      46bd            mov     sp, r7
+ 8009842:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8009846:      4770            bx      lr
+ 8009848:      00010007        .word   0x00010007
+
+0800984c <HAL_TIM_OnePulse_Init>:
+  *            @arg TIM_OPMODE_SINGLE: Only one pulse will be generated.
+  *            @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode)
+{
+ 800984c:      b580            push    {r7, lr}
+ 800984e:      b082            sub     sp, #8
+ 8009850:      af00            add     r7, sp, #0
+ 8009852:      6078            str     r0, [r7, #4]
+ 8009854:      6039            str     r1, [r7, #0]
+  /* Check the TIM handle allocation */
+  if (htim == NULL)
+ 8009856:      687b            ldr     r3, [r7, #4]
+ 8009858:      2b00            cmp     r3, #0
+ 800985a:      d101            bne.n   8009860 <HAL_TIM_OnePulse_Init+0x14>
+  {
+    return HAL_ERROR;
+ 800985c:      2301            movs    r3, #1
+ 800985e:      e02d            b.n     80098bc <HAL_TIM_OnePulse_Init+0x70>
+  assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
+  assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
+  assert_param(IS_TIM_OPM_MODE(OnePulseMode));
+  assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
+
+  if (htim->State == HAL_TIM_STATE_RESET)
+ 8009860:      687b            ldr     r3, [r7, #4]
+ 8009862:      f893 303d       ldrb.w  r3, [r3, #61]   ; 0x3d
+ 8009866:      b2db            uxtb    r3, r3
+ 8009868:      2b00            cmp     r3, #0
+ 800986a:      d106            bne.n   800987a <HAL_TIM_OnePulse_Init+0x2e>
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+ 800986c:      687b            ldr     r3, [r7, #4]
+ 800986e:      2200            movs    r2, #0
+ 8009870:      f883 203c       strb.w  r2, [r3, #60]   ; 0x3c
+    }
+    /* Init the low level hardware : GPIO, CLOCK, NVIC */
+    htim->OnePulse_MspInitCallback(htim);
+#else
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIM_OnePulse_MspInit(htim);
+ 8009874:      6878            ldr     r0, [r7, #4]
+ 8009876:      f002 fea1       bl      800c5bc <HAL_TIM_OnePulse_MspInit>
+#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
+  }
+
+  /* Set the TIM state */
+  htim->State = HAL_TIM_STATE_BUSY;
+ 800987a:      687b            ldr     r3, [r7, #4]
+ 800987c:      2202            movs    r2, #2
+ 800987e:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  /* Configure the Time base in the One Pulse Mode */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+ 8009882:      687b            ldr     r3, [r7, #4]
+ 8009884:      681a            ldr     r2, [r3, #0]
+ 8009886:      687b            ldr     r3, [r7, #4]
+ 8009888:      3304            adds    r3, #4
+ 800988a:      4619            mov     r1, r3
+ 800988c:      4610            mov     r0, r2
+ 800988e:      f000 f819       bl      80098c4 <TIM_Base_SetConfig>
+
+  /* Reset the OPM Bit */
+  htim->Instance->CR1 &= ~TIM_CR1_OPM;
+ 8009892:      687b            ldr     r3, [r7, #4]
+ 8009894:      681b            ldr     r3, [r3, #0]
+ 8009896:      681a            ldr     r2, [r3, #0]
+ 8009898:      687b            ldr     r3, [r7, #4]
+ 800989a:      681b            ldr     r3, [r3, #0]
+ 800989c:      f022 0208       bic.w   r2, r2, #8
+ 80098a0:      601a            str     r2, [r3, #0]
+
+  /* Configure the OPM Mode */
+  htim->Instance->CR1 |= OnePulseMode;
+ 80098a2:      687b            ldr     r3, [r7, #4]
+ 80098a4:      681b            ldr     r3, [r3, #0]
+ 80098a6:      6819            ldr     r1, [r3, #0]
+ 80098a8:      687b            ldr     r3, [r7, #4]
+ 80098aa:      681b            ldr     r3, [r3, #0]
+ 80098ac:      683a            ldr     r2, [r7, #0]
+ 80098ae:      430a            orrs    r2, r1
+ 80098b0:      601a            str     r2, [r3, #0]
+
+  /* Initialize the TIM state*/
+  htim->State = HAL_TIM_STATE_READY;
+ 80098b2:      687b            ldr     r3, [r7, #4]
+ 80098b4:      2201            movs    r2, #1
+ 80098b6:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  return HAL_OK;
+ 80098ba:      2300            movs    r3, #0
 }
- 8001bd2:      4618            mov     r0, r3
- 8001bd4:      3720            adds    r7, #32
- 8001bd6:      46bd            mov     sp, r7
- 8001bd8:      bd80            pop     {r7, pc}
- 8001bda:      bf00            nop
- 8001bdc:      40023800        .word   0x40023800
-
-08001be0 <HAL_UART_Init>:
+ 80098bc:      4618            mov     r0, r3
+ 80098be:      3708            adds    r7, #8
+ 80098c0:      46bd            mov     sp, r7
+ 80098c2:      bd80            pop     {r7, pc}
+
+080098c4 <TIM_Base_SetConfig>:
+  * @param  TIMx TIM peripheral
+  * @param  Structure TIM Base configuration structure
+  * @retval None
+  */
+void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
+{
+ 80098c4:      b480            push    {r7}
+ 80098c6:      b085            sub     sp, #20
+ 80098c8:      af00            add     r7, sp, #0
+ 80098ca:      6078            str     r0, [r7, #4]
+ 80098cc:      6039            str     r1, [r7, #0]
+  uint32_t tmpcr1;
+  tmpcr1 = TIMx->CR1;
+ 80098ce:      687b            ldr     r3, [r7, #4]
+ 80098d0:      681b            ldr     r3, [r3, #0]
+ 80098d2:      60fb            str     r3, [r7, #12]
+
+  /* Set TIM Time Base Unit parameters ---------------------------------------*/
+  if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
+ 80098d4:      687b            ldr     r3, [r7, #4]
+ 80098d6:      4a40            ldr     r2, [pc, #256]  ; (80099d8 <TIM_Base_SetConfig+0x114>)
+ 80098d8:      4293            cmp     r3, r2
+ 80098da:      d013            beq.n   8009904 <TIM_Base_SetConfig+0x40>
+ 80098dc:      687b            ldr     r3, [r7, #4]
+ 80098de:      f1b3 4f80       cmp.w   r3, #1073741824 ; 0x40000000
+ 80098e2:      d00f            beq.n   8009904 <TIM_Base_SetConfig+0x40>
+ 80098e4:      687b            ldr     r3, [r7, #4]
+ 80098e6:      4a3d            ldr     r2, [pc, #244]  ; (80099dc <TIM_Base_SetConfig+0x118>)
+ 80098e8:      4293            cmp     r3, r2
+ 80098ea:      d00b            beq.n   8009904 <TIM_Base_SetConfig+0x40>
+ 80098ec:      687b            ldr     r3, [r7, #4]
+ 80098ee:      4a3c            ldr     r2, [pc, #240]  ; (80099e0 <TIM_Base_SetConfig+0x11c>)
+ 80098f0:      4293            cmp     r3, r2
+ 80098f2:      d007            beq.n   8009904 <TIM_Base_SetConfig+0x40>
+ 80098f4:      687b            ldr     r3, [r7, #4]
+ 80098f6:      4a3b            ldr     r2, [pc, #236]  ; (80099e4 <TIM_Base_SetConfig+0x120>)
+ 80098f8:      4293            cmp     r3, r2
+ 80098fa:      d003            beq.n   8009904 <TIM_Base_SetConfig+0x40>
+ 80098fc:      687b            ldr     r3, [r7, #4]
+ 80098fe:      4a3a            ldr     r2, [pc, #232]  ; (80099e8 <TIM_Base_SetConfig+0x124>)
+ 8009900:      4293            cmp     r3, r2
+ 8009902:      d108            bne.n   8009916 <TIM_Base_SetConfig+0x52>
+  {
+    /* Select the Counter Mode */
+    tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
+ 8009904:      68fb            ldr     r3, [r7, #12]
+ 8009906:      f023 0370       bic.w   r3, r3, #112    ; 0x70
+ 800990a:      60fb            str     r3, [r7, #12]
+    tmpcr1 |= Structure->CounterMode;
+ 800990c:      683b            ldr     r3, [r7, #0]
+ 800990e:      685b            ldr     r3, [r3, #4]
+ 8009910:      68fa            ldr     r2, [r7, #12]
+ 8009912:      4313            orrs    r3, r2
+ 8009914:      60fb            str     r3, [r7, #12]
+  }
+
+  if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
+ 8009916:      687b            ldr     r3, [r7, #4]
+ 8009918:      4a2f            ldr     r2, [pc, #188]  ; (80099d8 <TIM_Base_SetConfig+0x114>)
+ 800991a:      4293            cmp     r3, r2
+ 800991c:      d02b            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 800991e:      687b            ldr     r3, [r7, #4]
+ 8009920:      f1b3 4f80       cmp.w   r3, #1073741824 ; 0x40000000
+ 8009924:      d027            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 8009926:      687b            ldr     r3, [r7, #4]
+ 8009928:      4a2c            ldr     r2, [pc, #176]  ; (80099dc <TIM_Base_SetConfig+0x118>)
+ 800992a:      4293            cmp     r3, r2
+ 800992c:      d023            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 800992e:      687b            ldr     r3, [r7, #4]
+ 8009930:      4a2b            ldr     r2, [pc, #172]  ; (80099e0 <TIM_Base_SetConfig+0x11c>)
+ 8009932:      4293            cmp     r3, r2
+ 8009934:      d01f            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 8009936:      687b            ldr     r3, [r7, #4]
+ 8009938:      4a2a            ldr     r2, [pc, #168]  ; (80099e4 <TIM_Base_SetConfig+0x120>)
+ 800993a:      4293            cmp     r3, r2
+ 800993c:      d01b            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 800993e:      687b            ldr     r3, [r7, #4]
+ 8009940:      4a29            ldr     r2, [pc, #164]  ; (80099e8 <TIM_Base_SetConfig+0x124>)
+ 8009942:      4293            cmp     r3, r2
+ 8009944:      d017            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 8009946:      687b            ldr     r3, [r7, #4]
+ 8009948:      4a28            ldr     r2, [pc, #160]  ; (80099ec <TIM_Base_SetConfig+0x128>)
+ 800994a:      4293            cmp     r3, r2
+ 800994c:      d013            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 800994e:      687b            ldr     r3, [r7, #4]
+ 8009950:      4a27            ldr     r2, [pc, #156]  ; (80099f0 <TIM_Base_SetConfig+0x12c>)
+ 8009952:      4293            cmp     r3, r2
+ 8009954:      d00f            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 8009956:      687b            ldr     r3, [r7, #4]
+ 8009958:      4a26            ldr     r2, [pc, #152]  ; (80099f4 <TIM_Base_SetConfig+0x130>)
+ 800995a:      4293            cmp     r3, r2
+ 800995c:      d00b            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 800995e:      687b            ldr     r3, [r7, #4]
+ 8009960:      4a25            ldr     r2, [pc, #148]  ; (80099f8 <TIM_Base_SetConfig+0x134>)
+ 8009962:      4293            cmp     r3, r2
+ 8009964:      d007            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 8009966:      687b            ldr     r3, [r7, #4]
+ 8009968:      4a24            ldr     r2, [pc, #144]  ; (80099fc <TIM_Base_SetConfig+0x138>)
+ 800996a:      4293            cmp     r3, r2
+ 800996c:      d003            beq.n   8009976 <TIM_Base_SetConfig+0xb2>
+ 800996e:      687b            ldr     r3, [r7, #4]
+ 8009970:      4a23            ldr     r2, [pc, #140]  ; (8009a00 <TIM_Base_SetConfig+0x13c>)
+ 8009972:      4293            cmp     r3, r2
+ 8009974:      d108            bne.n   8009988 <TIM_Base_SetConfig+0xc4>
+  {
+    /* Set the clock division */
+    tmpcr1 &= ~TIM_CR1_CKD;
+ 8009976:      68fb            ldr     r3, [r7, #12]
+ 8009978:      f423 7340       bic.w   r3, r3, #768    ; 0x300
+ 800997c:      60fb            str     r3, [r7, #12]
+    tmpcr1 |= (uint32_t)Structure->ClockDivision;
+ 800997e:      683b            ldr     r3, [r7, #0]
+ 8009980:      68db            ldr     r3, [r3, #12]
+ 8009982:      68fa            ldr     r2, [r7, #12]
+ 8009984:      4313            orrs    r3, r2
+ 8009986:      60fb            str     r3, [r7, #12]
+  }
+
+  /* Set the auto-reload preload */
+  MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
+ 8009988:      68fb            ldr     r3, [r7, #12]
+ 800998a:      f023 0280       bic.w   r2, r3, #128    ; 0x80
+ 800998e:      683b            ldr     r3, [r7, #0]
+ 8009990:      695b            ldr     r3, [r3, #20]
+ 8009992:      4313            orrs    r3, r2
+ 8009994:      60fb            str     r3, [r7, #12]
+
+  TIMx->CR1 = tmpcr1;
+ 8009996:      687b            ldr     r3, [r7, #4]
+ 8009998:      68fa            ldr     r2, [r7, #12]
+ 800999a:      601a            str     r2, [r3, #0]
+
+  /* Set the Autoreload value */
+  TIMx->ARR = (uint32_t)Structure->Period ;
+ 800999c:      683b            ldr     r3, [r7, #0]
+ 800999e:      689a            ldr     r2, [r3, #8]
+ 80099a0:      687b            ldr     r3, [r7, #4]
+ 80099a2:      62da            str     r2, [r3, #44]   ; 0x2c
+
+  /* Set the Prescaler value */
+  TIMx->PSC = Structure->Prescaler;
+ 80099a4:      683b            ldr     r3, [r7, #0]
+ 80099a6:      681a            ldr     r2, [r3, #0]
+ 80099a8:      687b            ldr     r3, [r7, #4]
+ 80099aa:      629a            str     r2, [r3, #40]   ; 0x28
+
+  if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
+ 80099ac:      687b            ldr     r3, [r7, #4]
+ 80099ae:      4a0a            ldr     r2, [pc, #40]   ; (80099d8 <TIM_Base_SetConfig+0x114>)
+ 80099b0:      4293            cmp     r3, r2
+ 80099b2:      d003            beq.n   80099bc <TIM_Base_SetConfig+0xf8>
+ 80099b4:      687b            ldr     r3, [r7, #4]
+ 80099b6:      4a0c            ldr     r2, [pc, #48]   ; (80099e8 <TIM_Base_SetConfig+0x124>)
+ 80099b8:      4293            cmp     r3, r2
+ 80099ba:      d103            bne.n   80099c4 <TIM_Base_SetConfig+0x100>
+  {
+    /* Set the Repetition Counter value */
+    TIMx->RCR = Structure->RepetitionCounter;
+ 80099bc:      683b            ldr     r3, [r7, #0]
+ 80099be:      691a            ldr     r2, [r3, #16]
+ 80099c0:      687b            ldr     r3, [r7, #4]
+ 80099c2:      631a            str     r2, [r3, #48]   ; 0x30
+  }
+
+  /* Generate an update event to reload the Prescaler
+     and the repetition counter (only for advanced timer) value immediately */
+  TIMx->EGR = TIM_EGR_UG;
+ 80099c4:      687b            ldr     r3, [r7, #4]
+ 80099c6:      2201            movs    r2, #1
+ 80099c8:      615a            str     r2, [r3, #20]
+}
+ 80099ca:      bf00            nop
+ 80099cc:      3714            adds    r7, #20
+ 80099ce:      46bd            mov     sp, r7
+ 80099d0:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80099d4:      4770            bx      lr
+ 80099d6:      bf00            nop
+ 80099d8:      40010000        .word   0x40010000
+ 80099dc:      40000400        .word   0x40000400
+ 80099e0:      40000800        .word   0x40000800
+ 80099e4:      40000c00        .word   0x40000c00
+ 80099e8:      40010400        .word   0x40010400
+ 80099ec:      40014000        .word   0x40014000
+ 80099f0:      40014400        .word   0x40014400
+ 80099f4:      40014800        .word   0x40014800
+ 80099f8:      40001800        .word   0x40001800
+ 80099fc:      40001c00        .word   0x40001c00
+ 8009a00:      40002000        .word   0x40002000
+
+08009a04 <HAL_UART_Init>:
   *        parameters in the UART_InitTypeDef and initialize the associated handle.
   * @param huart UART handle.
   * @retval HAL status
   */
 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
 {
- 8001be0:      b580            push    {r7, lr}
- 8001be2:      b082            sub     sp, #8
- 8001be4:      af00            add     r7, sp, #0
- 8001be6:      6078            str     r0, [r7, #4]
+ 8009a04:      b580            push    {r7, lr}
+ 8009a06:      b082            sub     sp, #8
+ 8009a08:      af00            add     r7, sp, #0
+ 8009a0a:      6078            str     r0, [r7, #4]
   /* Check the UART handle allocation */
   if (huart == NULL)
- 8001be8:      687b            ldr     r3, [r7, #4]
- 8001bea:      2b00            cmp     r3, #0
- 8001bec:      d101            bne.n   8001bf2 <HAL_UART_Init+0x12>
+ 8009a0c:      687b            ldr     r3, [r7, #4]
+ 8009a0e:      2b00            cmp     r3, #0
+ 8009a10:      d101            bne.n   8009a16 <HAL_UART_Init+0x12>
   {
     return HAL_ERROR;
- 8001bee:      2301            movs    r3, #1
- 8001bf0:      e040            b.n     8001c74 <HAL_UART_Init+0x94>
+ 8009a12:      2301            movs    r3, #1
+ 8009a14:      e040            b.n     8009a98 <HAL_UART_Init+0x94>
   {
     /* Check the parameters */
     assert_param(IS_UART_INSTANCE(huart->Instance));
   }
 
   if (huart->gState == HAL_UART_STATE_RESET)
- 8001bf2:      687b            ldr     r3, [r7, #4]
- 8001bf4:      6f5b            ldr     r3, [r3, #116]  ; 0x74
- 8001bf6:      2b00            cmp     r3, #0
- 8001bf8:      d106            bne.n   8001c08 <HAL_UART_Init+0x28>
+ 8009a16:      687b            ldr     r3, [r7, #4]
+ 8009a18:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 8009a1a:      2b00            cmp     r3, #0
+ 8009a1c:      d106            bne.n   8009a2c <HAL_UART_Init+0x28>
   {
     /* Allocate lock resource and initialize it */
     huart->Lock = HAL_UNLOCKED;
- 8001bfa:      687b            ldr     r3, [r7, #4]
- 8001bfc:      2200            movs    r2, #0
- 8001bfe:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+ 8009a1e:      687b            ldr     r3, [r7, #4]
+ 8009a20:      2200            movs    r2, #0
+ 8009a22:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
 
     /* Init the low level hardware */
     huart->MspInitCallback(huart);
 #else
     /* Init the low level hardware : GPIO, CLOCK */
     HAL_UART_MspInit(huart);
- 8001c02:      6878            ldr     r0, [r7, #4]
- 8001c04:      f000 fd20       bl      8002648 <HAL_UART_MspInit>
+ 8009a26:      6878            ldr     r0, [r7, #4]
+ 8009a28:      f002 fde6       bl      800c5f8 <HAL_UART_MspInit>
 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
   }
 
   huart->gState = HAL_UART_STATE_BUSY;
- 8001c08:      687b            ldr     r3, [r7, #4]
- 8001c0a:      2224            movs    r2, #36 ; 0x24
- 8001c0c:      675a            str     r2, [r3, #116]  ; 0x74
+ 8009a2c:      687b            ldr     r3, [r7, #4]
+ 8009a2e:      2224            movs    r2, #36 ; 0x24
+ 8009a30:      675a            str     r2, [r3, #116]  ; 0x74
 
   /* Disable the Peripheral */
   __HAL_UART_DISABLE(huart);
- 8001c0e:      687b            ldr     r3, [r7, #4]
- 8001c10:      681b            ldr     r3, [r3, #0]
- 8001c12:      681a            ldr     r2, [r3, #0]
- 8001c14:      687b            ldr     r3, [r7, #4]
- 8001c16:      681b            ldr     r3, [r3, #0]
- 8001c18:      f022 0201       bic.w   r2, r2, #1
- 8001c1c:      601a            str     r2, [r3, #0]
+ 8009a32:      687b            ldr     r3, [r7, #4]
+ 8009a34:      681b            ldr     r3, [r3, #0]
+ 8009a36:      681a            ldr     r2, [r3, #0]
+ 8009a38:      687b            ldr     r3, [r7, #4]
+ 8009a3a:      681b            ldr     r3, [r3, #0]
+ 8009a3c:      f022 0201       bic.w   r2, r2, #1
+ 8009a40:      601a            str     r2, [r3, #0]
 
   /* Set the UART Communication parameters */
   if (UART_SetConfig(huart) == HAL_ERROR)
- 8001c1e:      6878            ldr     r0, [r7, #4]
- 8001c20:      f000 f82c       bl      8001c7c <UART_SetConfig>
- 8001c24:      4603            mov     r3, r0
- 8001c26:      2b01            cmp     r3, #1
- 8001c28:      d101            bne.n   8001c2e <HAL_UART_Init+0x4e>
+ 8009a42:      6878            ldr     r0, [r7, #4]
+ 8009a44:      f000 f9f0       bl      8009e28 <UART_SetConfig>
+ 8009a48:      4603            mov     r3, r0
+ 8009a4a:      2b01            cmp     r3, #1
+ 8009a4c:      d101            bne.n   8009a52 <HAL_UART_Init+0x4e>
   {
     return HAL_ERROR;
- 8001c2a:      2301            movs    r3, #1
- 8001c2c:      e022            b.n     8001c74 <HAL_UART_Init+0x94>
+ 8009a4e:      2301            movs    r3, #1
+ 8009a50:      e022            b.n     8009a98 <HAL_UART_Init+0x94>
   }
 
   if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)
- 8001c2e:      687b            ldr     r3, [r7, #4]
- 8001c30:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8001c32:      2b00            cmp     r3, #0
- 8001c34:      d002            beq.n   8001c3c <HAL_UART_Init+0x5c>
+ 8009a52:      687b            ldr     r3, [r7, #4]
+ 8009a54:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8009a56:      2b00            cmp     r3, #0
+ 8009a58:      d002            beq.n   8009a60 <HAL_UART_Init+0x5c>
   {
     UART_AdvFeatureConfig(huart);
- 8001c36:      6878            ldr     r0, [r7, #4]
- 8001c38:      f000 fac4       bl      80021c4 <UART_AdvFeatureConfig>
+ 8009a5a:      6878            ldr     r0, [r7, #4]
+ 8009a5c:      f000 fc88       bl      800a370 <UART_AdvFeatureConfig>
   }
 
   /* In asynchronous mode, the following bits must be kept cleared:
   - LINEN and CLKEN bits in the USART_CR2 register,
   - SCEN, HDSEL and IREN  bits in the USART_CR3 register.*/
   CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
- 8001c3c:      687b            ldr     r3, [r7, #4]
- 8001c3e:      681b            ldr     r3, [r3, #0]
- 8001c40:      685a            ldr     r2, [r3, #4]
- 8001c42:      687b            ldr     r3, [r7, #4]
- 8001c44:      681b            ldr     r3, [r3, #0]
- 8001c46:      f422 4290       bic.w   r2, r2, #18432  ; 0x4800
- 8001c4a:      605a            str     r2, [r3, #4]
+ 8009a60:      687b            ldr     r3, [r7, #4]
+ 8009a62:      681b            ldr     r3, [r3, #0]
+ 8009a64:      685a            ldr     r2, [r3, #4]
+ 8009a66:      687b            ldr     r3, [r7, #4]
+ 8009a68:      681b            ldr     r3, [r3, #0]
+ 8009a6a:      f422 4290       bic.w   r2, r2, #18432  ; 0x4800
+ 8009a6e:      605a            str     r2, [r3, #4]
   CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
- 8001c4c:      687b            ldr     r3, [r7, #4]
- 8001c4e:      681b            ldr     r3, [r3, #0]
- 8001c50:      689a            ldr     r2, [r3, #8]
- 8001c52:      687b            ldr     r3, [r7, #4]
- 8001c54:      681b            ldr     r3, [r3, #0]
- 8001c56:      f022 022a       bic.w   r2, r2, #42     ; 0x2a
- 8001c5a:      609a            str     r2, [r3, #8]
+ 8009a70:      687b            ldr     r3, [r7, #4]
+ 8009a72:      681b            ldr     r3, [r3, #0]
+ 8009a74:      689a            ldr     r2, [r3, #8]
+ 8009a76:      687b            ldr     r3, [r7, #4]
+ 8009a78:      681b            ldr     r3, [r3, #0]
+ 8009a7a:      f022 022a       bic.w   r2, r2, #42     ; 0x2a
+ 8009a7e:      609a            str     r2, [r3, #8]
 
   /* Enable the Peripheral */
   __HAL_UART_ENABLE(huart);
- 8001c5c:      687b            ldr     r3, [r7, #4]
- 8001c5e:      681b            ldr     r3, [r3, #0]
- 8001c60:      681a            ldr     r2, [r3, #0]
- 8001c62:      687b            ldr     r3, [r7, #4]
- 8001c64:      681b            ldr     r3, [r3, #0]
- 8001c66:      f042 0201       orr.w   r2, r2, #1
- 8001c6a:      601a            str     r2, [r3, #0]
+ 8009a80:      687b            ldr     r3, [r7, #4]
+ 8009a82:      681b            ldr     r3, [r3, #0]
+ 8009a84:      681a            ldr     r2, [r3, #0]
+ 8009a86:      687b            ldr     r3, [r7, #4]
+ 8009a88:      681b            ldr     r3, [r3, #0]
+ 8009a8a:      f042 0201       orr.w   r2, r2, #1
+ 8009a8e:      601a            str     r2, [r3, #0]
 
   /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
   return (UART_CheckIdleState(huart));
- 8001c6c:      6878            ldr     r0, [r7, #4]
- 8001c6e:      f000 fb4b       bl      8002308 <UART_CheckIdleState>
- 8001c72:      4603            mov     r3, r0
+ 8009a90:      6878            ldr     r0, [r7, #4]
+ 8009a92:      f000 fd0f       bl      800a4b4 <UART_CheckIdleState>
+ 8009a96:      4603            mov     r3, r0
+}
+ 8009a98:      4618            mov     r0, r3
+ 8009a9a:      3708            adds    r7, #8
+ 8009a9c:      46bd            mov     sp, r7
+ 8009a9e:      bd80            pop     {r7, pc}
+
+08009aa0 <HAL_UART_Transmit>:
+  * @param Size    Amount of data to be sent.
+  * @param Timeout Timeout duration.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
+{
+ 8009aa0:      b580            push    {r7, lr}
+ 8009aa2:      b08a            sub     sp, #40 ; 0x28
+ 8009aa4:      af02            add     r7, sp, #8
+ 8009aa6:      60f8            str     r0, [r7, #12]
+ 8009aa8:      60b9            str     r1, [r7, #8]
+ 8009aaa:      603b            str     r3, [r7, #0]
+ 8009aac:      4613            mov     r3, r2
+ 8009aae:      80fb            strh    r3, [r7, #6]
+  uint8_t  *pdata8bits;
+  uint16_t *pdata16bits;
+  uint32_t tickstart;
+
+  /* Check that a Tx process is not already ongoing */
+  if (huart->gState == HAL_UART_STATE_READY)
+ 8009ab0:      68fb            ldr     r3, [r7, #12]
+ 8009ab2:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 8009ab4:      2b20            cmp     r3, #32
+ 8009ab6:      d17f            bne.n   8009bb8 <HAL_UART_Transmit+0x118>
+  {
+    if ((pData == NULL) || (Size == 0U))
+ 8009ab8:      68bb            ldr     r3, [r7, #8]
+ 8009aba:      2b00            cmp     r3, #0
+ 8009abc:      d002            beq.n   8009ac4 <HAL_UART_Transmit+0x24>
+ 8009abe:      88fb            ldrh    r3, [r7, #6]
+ 8009ac0:      2b00            cmp     r3, #0
+ 8009ac2:      d101            bne.n   8009ac8 <HAL_UART_Transmit+0x28>
+    {
+      return  HAL_ERROR;
+ 8009ac4:      2301            movs    r3, #1
+ 8009ac6:      e078            b.n     8009bba <HAL_UART_Transmit+0x11a>
+    }
+
+    /* Process Locked */
+    __HAL_LOCK(huart);
+ 8009ac8:      68fb            ldr     r3, [r7, #12]
+ 8009aca:      f893 3070       ldrb.w  r3, [r3, #112]  ; 0x70
+ 8009ace:      2b01            cmp     r3, #1
+ 8009ad0:      d101            bne.n   8009ad6 <HAL_UART_Transmit+0x36>
+ 8009ad2:      2302            movs    r3, #2
+ 8009ad4:      e071            b.n     8009bba <HAL_UART_Transmit+0x11a>
+ 8009ad6:      68fb            ldr     r3, [r7, #12]
+ 8009ad8:      2201            movs    r2, #1
+ 8009ada:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+    huart->ErrorCode = HAL_UART_ERROR_NONE;
+ 8009ade:      68fb            ldr     r3, [r7, #12]
+ 8009ae0:      2200            movs    r2, #0
+ 8009ae2:      67da            str     r2, [r3, #124]  ; 0x7c
+    huart->gState = HAL_UART_STATE_BUSY_TX;
+ 8009ae4:      68fb            ldr     r3, [r7, #12]
+ 8009ae6:      2221            movs    r2, #33 ; 0x21
+ 8009ae8:      675a            str     r2, [r3, #116]  ; 0x74
+
+    /* Init tickstart for timeout managment*/
+    tickstart = HAL_GetTick();
+ 8009aea:      f7fe fad3       bl      8008094 <HAL_GetTick>
+ 8009aee:      6178            str     r0, [r7, #20]
+
+    huart->TxXferSize  = Size;
+ 8009af0:      68fb            ldr     r3, [r7, #12]
+ 8009af2:      88fa            ldrh    r2, [r7, #6]
+ 8009af4:      f8a3 2050       strh.w  r2, [r3, #80]   ; 0x50
+    huart->TxXferCount = Size;
+ 8009af8:      68fb            ldr     r3, [r7, #12]
+ 8009afa:      88fa            ldrh    r2, [r7, #6]
+ 8009afc:      f8a3 2052       strh.w  r2, [r3, #82]   ; 0x52
+
+        /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */
+    if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
+ 8009b00:      68fb            ldr     r3, [r7, #12]
+ 8009b02:      689b            ldr     r3, [r3, #8]
+ 8009b04:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
+ 8009b08:      d108            bne.n   8009b1c <HAL_UART_Transmit+0x7c>
+ 8009b0a:      68fb            ldr     r3, [r7, #12]
+ 8009b0c:      691b            ldr     r3, [r3, #16]
+ 8009b0e:      2b00            cmp     r3, #0
+ 8009b10:      d104            bne.n   8009b1c <HAL_UART_Transmit+0x7c>
+    {
+      pdata8bits  = NULL;
+ 8009b12:      2300            movs    r3, #0
+ 8009b14:      61fb            str     r3, [r7, #28]
+      pdata16bits = (uint16_t *) pData;
+ 8009b16:      68bb            ldr     r3, [r7, #8]
+ 8009b18:      61bb            str     r3, [r7, #24]
+ 8009b1a:      e003            b.n     8009b24 <HAL_UART_Transmit+0x84>
+    }
+    else
+    {
+      pdata8bits  = pData;
+ 8009b1c:      68bb            ldr     r3, [r7, #8]
+ 8009b1e:      61fb            str     r3, [r7, #28]
+      pdata16bits = NULL;
+ 8009b20:      2300            movs    r3, #0
+ 8009b22:      61bb            str     r3, [r7, #24]
+    }
+
+    while (huart->TxXferCount > 0U)
+ 8009b24:      e02c            b.n     8009b80 <HAL_UART_Transmit+0xe0>
+    {
+      if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
+ 8009b26:      683b            ldr     r3, [r7, #0]
+ 8009b28:      9300            str     r3, [sp, #0]
+ 8009b2a:      697b            ldr     r3, [r7, #20]
+ 8009b2c:      2200            movs    r2, #0
+ 8009b2e:      2180            movs    r1, #128        ; 0x80
+ 8009b30:      68f8            ldr     r0, [r7, #12]
+ 8009b32:      f000 fcee       bl      800a512 <UART_WaitOnFlagUntilTimeout>
+ 8009b36:      4603            mov     r3, r0
+ 8009b38:      2b00            cmp     r3, #0
+ 8009b3a:      d001            beq.n   8009b40 <HAL_UART_Transmit+0xa0>
+      {
+        return HAL_TIMEOUT;
+ 8009b3c:      2303            movs    r3, #3
+ 8009b3e:      e03c            b.n     8009bba <HAL_UART_Transmit+0x11a>
+      }
+      if (pdata8bits == NULL)
+ 8009b40:      69fb            ldr     r3, [r7, #28]
+ 8009b42:      2b00            cmp     r3, #0
+ 8009b44:      d10b            bne.n   8009b5e <HAL_UART_Transmit+0xbe>
+      {
+        huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU);
+ 8009b46:      69bb            ldr     r3, [r7, #24]
+ 8009b48:      881b            ldrh    r3, [r3, #0]
+ 8009b4a:      461a            mov     r2, r3
+ 8009b4c:      68fb            ldr     r3, [r7, #12]
+ 8009b4e:      681b            ldr     r3, [r3, #0]
+ 8009b50:      f3c2 0208       ubfx    r2, r2, #0, #9
+ 8009b54:      629a            str     r2, [r3, #40]   ; 0x28
+        pdata16bits++;
+ 8009b56:      69bb            ldr     r3, [r7, #24]
+ 8009b58:      3302            adds    r3, #2
+ 8009b5a:      61bb            str     r3, [r7, #24]
+ 8009b5c:      e007            b.n     8009b6e <HAL_UART_Transmit+0xce>
+      }
+      else
+      {
+        huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU);
+ 8009b5e:      69fb            ldr     r3, [r7, #28]
+ 8009b60:      781a            ldrb    r2, [r3, #0]
+ 8009b62:      68fb            ldr     r3, [r7, #12]
+ 8009b64:      681b            ldr     r3, [r3, #0]
+ 8009b66:      629a            str     r2, [r3, #40]   ; 0x28
+        pdata8bits++;
+ 8009b68:      69fb            ldr     r3, [r7, #28]
+ 8009b6a:      3301            adds    r3, #1
+ 8009b6c:      61fb            str     r3, [r7, #28]
+      }
+      huart->TxXferCount--;
+ 8009b6e:      68fb            ldr     r3, [r7, #12]
+ 8009b70:      f8b3 3052       ldrh.w  r3, [r3, #82]   ; 0x52
+ 8009b74:      b29b            uxth    r3, r3
+ 8009b76:      3b01            subs    r3, #1
+ 8009b78:      b29a            uxth    r2, r3
+ 8009b7a:      68fb            ldr     r3, [r7, #12]
+ 8009b7c:      f8a3 2052       strh.w  r2, [r3, #82]   ; 0x52
+    while (huart->TxXferCount > 0U)
+ 8009b80:      68fb            ldr     r3, [r7, #12]
+ 8009b82:      f8b3 3052       ldrh.w  r3, [r3, #82]   ; 0x52
+ 8009b86:      b29b            uxth    r3, r3
+ 8009b88:      2b00            cmp     r3, #0
+ 8009b8a:      d1cc            bne.n   8009b26 <HAL_UART_Transmit+0x86>
+    }
+
+    if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)
+ 8009b8c:      683b            ldr     r3, [r7, #0]
+ 8009b8e:      9300            str     r3, [sp, #0]
+ 8009b90:      697b            ldr     r3, [r7, #20]
+ 8009b92:      2200            movs    r2, #0
+ 8009b94:      2140            movs    r1, #64 ; 0x40
+ 8009b96:      68f8            ldr     r0, [r7, #12]
+ 8009b98:      f000 fcbb       bl      800a512 <UART_WaitOnFlagUntilTimeout>
+ 8009b9c:      4603            mov     r3, r0
+ 8009b9e:      2b00            cmp     r3, #0
+ 8009ba0:      d001            beq.n   8009ba6 <HAL_UART_Transmit+0x106>
+    {
+      return HAL_TIMEOUT;
+ 8009ba2:      2303            movs    r3, #3
+ 8009ba4:      e009            b.n     8009bba <HAL_UART_Transmit+0x11a>
+    }
+
+    /* At end of Tx process, restore huart->gState to Ready */
+    huart->gState = HAL_UART_STATE_READY;
+ 8009ba6:      68fb            ldr     r3, [r7, #12]
+ 8009ba8:      2220            movs    r2, #32
+ 8009baa:      675a            str     r2, [r3, #116]  ; 0x74
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(huart);
+ 8009bac:      68fb            ldr     r3, [r7, #12]
+ 8009bae:      2200            movs    r2, #0
+ 8009bb0:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+    return HAL_OK;
+ 8009bb4:      2300            movs    r3, #0
+ 8009bb6:      e000            b.n     8009bba <HAL_UART_Transmit+0x11a>
+  }
+  else
+  {
+    return HAL_BUSY;
+ 8009bb8:      2302            movs    r3, #2
+  }
+}
+ 8009bba:      4618            mov     r0, r3
+ 8009bbc:      3720            adds    r7, #32
+ 8009bbe:      46bd            mov     sp, r7
+ 8009bc0:      bd80            pop     {r7, pc}
+       ...
+
+08009bc4 <HAL_UART_Transmit_DMA>:
+  * @param pData Pointer to data buffer.
+  * @param Size  Amount of data to be sent.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
+{
+ 8009bc4:      b580            push    {r7, lr}
+ 8009bc6:      b084            sub     sp, #16
+ 8009bc8:      af00            add     r7, sp, #0
+ 8009bca:      60f8            str     r0, [r7, #12]
+ 8009bcc:      60b9            str     r1, [r7, #8]
+ 8009bce:      4613            mov     r3, r2
+ 8009bd0:      80fb            strh    r3, [r7, #6]
+  /* Check that a Tx process is not already ongoing */
+  if (huart->gState == HAL_UART_STATE_READY)
+ 8009bd2:      68fb            ldr     r3, [r7, #12]
+ 8009bd4:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 8009bd6:      2b20            cmp     r3, #32
+ 8009bd8:      d164            bne.n   8009ca4 <HAL_UART_Transmit_DMA+0xe0>
+  {
+    if ((pData == NULL) || (Size == 0U))
+ 8009bda:      68bb            ldr     r3, [r7, #8]
+ 8009bdc:      2b00            cmp     r3, #0
+ 8009bde:      d002            beq.n   8009be6 <HAL_UART_Transmit_DMA+0x22>
+ 8009be0:      88fb            ldrh    r3, [r7, #6]
+ 8009be2:      2b00            cmp     r3, #0
+ 8009be4:      d101            bne.n   8009bea <HAL_UART_Transmit_DMA+0x26>
+    {
+      return HAL_ERROR;
+ 8009be6:      2301            movs    r3, #1
+ 8009be8:      e05d            b.n     8009ca6 <HAL_UART_Transmit_DMA+0xe2>
+    }
+
+    /* Process Locked */
+    __HAL_LOCK(huart);
+ 8009bea:      68fb            ldr     r3, [r7, #12]
+ 8009bec:      f893 3070       ldrb.w  r3, [r3, #112]  ; 0x70
+ 8009bf0:      2b01            cmp     r3, #1
+ 8009bf2:      d101            bne.n   8009bf8 <HAL_UART_Transmit_DMA+0x34>
+ 8009bf4:      2302            movs    r3, #2
+ 8009bf6:      e056            b.n     8009ca6 <HAL_UART_Transmit_DMA+0xe2>
+ 8009bf8:      68fb            ldr     r3, [r7, #12]
+ 8009bfa:      2201            movs    r2, #1
+ 8009bfc:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+    huart->pTxBuffPtr  = pData;
+ 8009c00:      68fb            ldr     r3, [r7, #12]
+ 8009c02:      68ba            ldr     r2, [r7, #8]
+ 8009c04:      64da            str     r2, [r3, #76]   ; 0x4c
+    huart->TxXferSize  = Size;
+ 8009c06:      68fb            ldr     r3, [r7, #12]
+ 8009c08:      88fa            ldrh    r2, [r7, #6]
+ 8009c0a:      f8a3 2050       strh.w  r2, [r3, #80]   ; 0x50
+    huart->TxXferCount = Size;
+ 8009c0e:      68fb            ldr     r3, [r7, #12]
+ 8009c10:      88fa            ldrh    r2, [r7, #6]
+ 8009c12:      f8a3 2052       strh.w  r2, [r3, #82]   ; 0x52
+
+    huart->ErrorCode = HAL_UART_ERROR_NONE;
+ 8009c16:      68fb            ldr     r3, [r7, #12]
+ 8009c18:      2200            movs    r2, #0
+ 8009c1a:      67da            str     r2, [r3, #124]  ; 0x7c
+    huart->gState = HAL_UART_STATE_BUSY_TX;
+ 8009c1c:      68fb            ldr     r3, [r7, #12]
+ 8009c1e:      2221            movs    r2, #33 ; 0x21
+ 8009c20:      675a            str     r2, [r3, #116]  ; 0x74
+
+    if (huart->hdmatx != NULL)
+ 8009c22:      68fb            ldr     r3, [r7, #12]
+ 8009c24:      6e9b            ldr     r3, [r3, #104]  ; 0x68
+ 8009c26:      2b00            cmp     r3, #0
+ 8009c28:      d02a            beq.n   8009c80 <HAL_UART_Transmit_DMA+0xbc>
+    {
+      /* Set the UART DMA transfer complete callback */
+      huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt;
+ 8009c2a:      68fb            ldr     r3, [r7, #12]
+ 8009c2c:      6e9b            ldr     r3, [r3, #104]  ; 0x68
+ 8009c2e:      4a20            ldr     r2, [pc, #128]  ; (8009cb0 <HAL_UART_Transmit_DMA+0xec>)
+ 8009c30:      63da            str     r2, [r3, #60]   ; 0x3c
+
+      /* Set the UART DMA Half transfer complete callback */
+      huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt;
+ 8009c32:      68fb            ldr     r3, [r7, #12]
+ 8009c34:      6e9b            ldr     r3, [r3, #104]  ; 0x68
+ 8009c36:      4a1f            ldr     r2, [pc, #124]  ; (8009cb4 <HAL_UART_Transmit_DMA+0xf0>)
+ 8009c38:      641a            str     r2, [r3, #64]   ; 0x40
+
+      /* Set the DMA error callback */
+      huart->hdmatx->XferErrorCallback = UART_DMAError;
+ 8009c3a:      68fb            ldr     r3, [r7, #12]
+ 8009c3c:      6e9b            ldr     r3, [r3, #104]  ; 0x68
+ 8009c3e:      4a1e            ldr     r2, [pc, #120]  ; (8009cb8 <HAL_UART_Transmit_DMA+0xf4>)
+ 8009c40:      64da            str     r2, [r3, #76]   ; 0x4c
+
+      /* Set the DMA abort callback */
+      huart->hdmatx->XferAbortCallback = NULL;
+ 8009c42:      68fb            ldr     r3, [r7, #12]
+ 8009c44:      6e9b            ldr     r3, [r3, #104]  ; 0x68
+ 8009c46:      2200            movs    r2, #0
+ 8009c48:      651a            str     r2, [r3, #80]   ; 0x50
+
+      /* Enable the UART transmit DMA channel */
+      if (HAL_DMA_Start_IT(huart->hdmatx, (uint32_t)huart->pTxBuffPtr, (uint32_t)&huart->Instance->TDR, Size) != HAL_OK)
+ 8009c4a:      68fb            ldr     r3, [r7, #12]
+ 8009c4c:      6e98            ldr     r0, [r3, #104]  ; 0x68
+ 8009c4e:      68fb            ldr     r3, [r7, #12]
+ 8009c50:      6cdb            ldr     r3, [r3, #76]   ; 0x4c
+ 8009c52:      4619            mov     r1, r3
+ 8009c54:      68fb            ldr     r3, [r7, #12]
+ 8009c56:      681b            ldr     r3, [r3, #0]
+ 8009c58:      3328            adds    r3, #40 ; 0x28
+ 8009c5a:      461a            mov     r2, r3
+ 8009c5c:      88fb            ldrh    r3, [r7, #6]
+ 8009c5e:      f7fe fb2c       bl      80082ba <HAL_DMA_Start_IT>
+ 8009c62:      4603            mov     r3, r0
+ 8009c64:      2b00            cmp     r3, #0
+ 8009c66:      d00b            beq.n   8009c80 <HAL_UART_Transmit_DMA+0xbc>
+      {
+        /* Set error code to DMA */
+        huart->ErrorCode = HAL_UART_ERROR_DMA;
+ 8009c68:      68fb            ldr     r3, [r7, #12]
+ 8009c6a:      2210            movs    r2, #16
+ 8009c6c:      67da            str     r2, [r3, #124]  ; 0x7c
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(huart);
+ 8009c6e:      68fb            ldr     r3, [r7, #12]
+ 8009c70:      2200            movs    r2, #0
+ 8009c72:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+        /* Restore huart->gState to ready */
+        huart->gState = HAL_UART_STATE_READY;
+ 8009c76:      68fb            ldr     r3, [r7, #12]
+ 8009c78:      2220            movs    r2, #32
+ 8009c7a:      675a            str     r2, [r3, #116]  ; 0x74
+
+        return HAL_ERROR;
+ 8009c7c:      2301            movs    r3, #1
+ 8009c7e:      e012            b.n     8009ca6 <HAL_UART_Transmit_DMA+0xe2>
+      }
+    }
+    /* Clear the TC flag in the ICR register */
+    __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
+ 8009c80:      68fb            ldr     r3, [r7, #12]
+ 8009c82:      681b            ldr     r3, [r3, #0]
+ 8009c84:      2240            movs    r2, #64 ; 0x40
+ 8009c86:      621a            str     r2, [r3, #32]
+
+    /* Process Unlocked */
+    __HAL_UNLOCK(huart);
+ 8009c88:      68fb            ldr     r3, [r7, #12]
+ 8009c8a:      2200            movs    r2, #0
+ 8009c8c:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+    /* Enable the DMA transfer for transmit request by setting the DMAT bit
+    in the UART CR3 register */
+    SET_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+ 8009c90:      68fb            ldr     r3, [r7, #12]
+ 8009c92:      681b            ldr     r3, [r3, #0]
+ 8009c94:      689a            ldr     r2, [r3, #8]
+ 8009c96:      68fb            ldr     r3, [r7, #12]
+ 8009c98:      681b            ldr     r3, [r3, #0]
+ 8009c9a:      f042 0280       orr.w   r2, r2, #128    ; 0x80
+ 8009c9e:      609a            str     r2, [r3, #8]
+
+    return HAL_OK;
+ 8009ca0:      2300            movs    r3, #0
+ 8009ca2:      e000            b.n     8009ca6 <HAL_UART_Transmit_DMA+0xe2>
+  }
+  else
+  {
+    return HAL_BUSY;
+ 8009ca4:      2302            movs    r3, #2
+  }
+}
+ 8009ca6:      4618            mov     r0, r3
+ 8009ca8:      3710            adds    r7, #16
+ 8009caa:      46bd            mov     sp, r7
+ 8009cac:      bd80            pop     {r7, pc}
+ 8009cae:      bf00            nop
+ 8009cb0:      0800a60d        .word   0x0800a60d
+ 8009cb4:      0800a65d        .word   0x0800a65d
+ 8009cb8:      0800a6f9        .word   0x0800a6f9
+
+08009cbc <HAL_UART_Receive_DMA>:
+  * @param pData Pointer to data buffer.
+  * @param Size  Amount of data to be received.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
+{
+ 8009cbc:      b580            push    {r7, lr}
+ 8009cbe:      b084            sub     sp, #16
+ 8009cc0:      af00            add     r7, sp, #0
+ 8009cc2:      60f8            str     r0, [r7, #12]
+ 8009cc4:      60b9            str     r1, [r7, #8]
+ 8009cc6:      4613            mov     r3, r2
+ 8009cc8:      80fb            strh    r3, [r7, #6]
+  /* Check that a Rx process is not already ongoing */
+  if (huart->RxState == HAL_UART_STATE_READY)
+ 8009cca:      68fb            ldr     r3, [r7, #12]
+ 8009ccc:      6f9b            ldr     r3, [r3, #120]  ; 0x78
+ 8009cce:      2b20            cmp     r3, #32
+ 8009cd0:      d16c            bne.n   8009dac <HAL_UART_Receive_DMA+0xf0>
+  {
+    if ((pData == NULL) || (Size == 0U))
+ 8009cd2:      68bb            ldr     r3, [r7, #8]
+ 8009cd4:      2b00            cmp     r3, #0
+ 8009cd6:      d002            beq.n   8009cde <HAL_UART_Receive_DMA+0x22>
+ 8009cd8:      88fb            ldrh    r3, [r7, #6]
+ 8009cda:      2b00            cmp     r3, #0
+ 8009cdc:      d101            bne.n   8009ce2 <HAL_UART_Receive_DMA+0x26>
+    {
+      return HAL_ERROR;
+ 8009cde:      2301            movs    r3, #1
+ 8009ce0:      e065            b.n     8009dae <HAL_UART_Receive_DMA+0xf2>
+    }
+
+    /* Process Locked */
+    __HAL_LOCK(huart);
+ 8009ce2:      68fb            ldr     r3, [r7, #12]
+ 8009ce4:      f893 3070       ldrb.w  r3, [r3, #112]  ; 0x70
+ 8009ce8:      2b01            cmp     r3, #1
+ 8009cea:      d101            bne.n   8009cf0 <HAL_UART_Receive_DMA+0x34>
+ 8009cec:      2302            movs    r3, #2
+ 8009cee:      e05e            b.n     8009dae <HAL_UART_Receive_DMA+0xf2>
+ 8009cf0:      68fb            ldr     r3, [r7, #12]
+ 8009cf2:      2201            movs    r2, #1
+ 8009cf4:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+    huart->pRxBuffPtr = pData;
+ 8009cf8:      68fb            ldr     r3, [r7, #12]
+ 8009cfa:      68ba            ldr     r2, [r7, #8]
+ 8009cfc:      655a            str     r2, [r3, #84]   ; 0x54
+    huart->RxXferSize = Size;
+ 8009cfe:      68fb            ldr     r3, [r7, #12]
+ 8009d00:      88fa            ldrh    r2, [r7, #6]
+ 8009d02:      f8a3 2058       strh.w  r2, [r3, #88]   ; 0x58
+
+    huart->ErrorCode = HAL_UART_ERROR_NONE;
+ 8009d06:      68fb            ldr     r3, [r7, #12]
+ 8009d08:      2200            movs    r2, #0
+ 8009d0a:      67da            str     r2, [r3, #124]  ; 0x7c
+    huart->RxState = HAL_UART_STATE_BUSY_RX;
+ 8009d0c:      68fb            ldr     r3, [r7, #12]
+ 8009d0e:      2222            movs    r2, #34 ; 0x22
+ 8009d10:      679a            str     r2, [r3, #120]  ; 0x78
+
+    if (huart->hdmarx != NULL)
+ 8009d12:      68fb            ldr     r3, [r7, #12]
+ 8009d14:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 8009d16:      2b00            cmp     r3, #0
+ 8009d18:      d02a            beq.n   8009d70 <HAL_UART_Receive_DMA+0xb4>
+    {
+      /* Set the UART DMA transfer complete callback */
+      huart->hdmarx->XferCpltCallback = UART_DMAReceiveCplt;
+ 8009d1a:      68fb            ldr     r3, [r7, #12]
+ 8009d1c:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 8009d1e:      4a26            ldr     r2, [pc, #152]  ; (8009db8 <HAL_UART_Receive_DMA+0xfc>)
+ 8009d20:      63da            str     r2, [r3, #60]   ; 0x3c
+
+      /* Set the UART DMA Half transfer complete callback */
+      huart->hdmarx->XferHalfCpltCallback = UART_DMARxHalfCplt;
+ 8009d22:      68fb            ldr     r3, [r7, #12]
+ 8009d24:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 8009d26:      4a25            ldr     r2, [pc, #148]  ; (8009dbc <HAL_UART_Receive_DMA+0x100>)
+ 8009d28:      641a            str     r2, [r3, #64]   ; 0x40
+
+      /* Set the DMA error callback */
+      huart->hdmarx->XferErrorCallback = UART_DMAError;
+ 8009d2a:      68fb            ldr     r3, [r7, #12]
+ 8009d2c:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 8009d2e:      4a24            ldr     r2, [pc, #144]  ; (8009dc0 <HAL_UART_Receive_DMA+0x104>)
+ 8009d30:      64da            str     r2, [r3, #76]   ; 0x4c
+
+      /* Set the DMA abort callback */
+      huart->hdmarx->XferAbortCallback = NULL;
+ 8009d32:      68fb            ldr     r3, [r7, #12]
+ 8009d34:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 8009d36:      2200            movs    r2, #0
+ 8009d38:      651a            str     r2, [r3, #80]   ; 0x50
+
+      /* Enable the DMA channel */
+      if (HAL_DMA_Start_IT(huart->hdmarx, (uint32_t)&huart->Instance->RDR, (uint32_t)huart->pRxBuffPtr, Size) != HAL_OK)
+ 8009d3a:      68fb            ldr     r3, [r7, #12]
+ 8009d3c:      6ed8            ldr     r0, [r3, #108]  ; 0x6c
+ 8009d3e:      68fb            ldr     r3, [r7, #12]
+ 8009d40:      681b            ldr     r3, [r3, #0]
+ 8009d42:      3324            adds    r3, #36 ; 0x24
+ 8009d44:      4619            mov     r1, r3
+ 8009d46:      68fb            ldr     r3, [r7, #12]
+ 8009d48:      6d5b            ldr     r3, [r3, #84]   ; 0x54
+ 8009d4a:      461a            mov     r2, r3
+ 8009d4c:      88fb            ldrh    r3, [r7, #6]
+ 8009d4e:      f7fe fab4       bl      80082ba <HAL_DMA_Start_IT>
+ 8009d52:      4603            mov     r3, r0
+ 8009d54:      2b00            cmp     r3, #0
+ 8009d56:      d00b            beq.n   8009d70 <HAL_UART_Receive_DMA+0xb4>
+      {
+        /* Set error code to DMA */
+        huart->ErrorCode = HAL_UART_ERROR_DMA;
+ 8009d58:      68fb            ldr     r3, [r7, #12]
+ 8009d5a:      2210            movs    r2, #16
+ 8009d5c:      67da            str     r2, [r3, #124]  ; 0x7c
+
+        /* Process Unlocked */
+        __HAL_UNLOCK(huart);
+ 8009d5e:      68fb            ldr     r3, [r7, #12]
+ 8009d60:      2200            movs    r2, #0
+ 8009d62:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+        /* Restore huart->gState to ready */
+        huart->gState = HAL_UART_STATE_READY;
+ 8009d66:      68fb            ldr     r3, [r7, #12]
+ 8009d68:      2220            movs    r2, #32
+ 8009d6a:      675a            str     r2, [r3, #116]  ; 0x74
+
+        return HAL_ERROR;
+ 8009d6c:      2301            movs    r3, #1
+ 8009d6e:      e01e            b.n     8009dae <HAL_UART_Receive_DMA+0xf2>
+      }
+    }
+    /* Process Unlocked */
+    __HAL_UNLOCK(huart);
+ 8009d70:      68fb            ldr     r3, [r7, #12]
+ 8009d72:      2200            movs    r2, #0
+ 8009d74:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+
+    /* Enable the UART Parity Error Interrupt */
+    SET_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+ 8009d78:      68fb            ldr     r3, [r7, #12]
+ 8009d7a:      681b            ldr     r3, [r3, #0]
+ 8009d7c:      681a            ldr     r2, [r3, #0]
+ 8009d7e:      68fb            ldr     r3, [r7, #12]
+ 8009d80:      681b            ldr     r3, [r3, #0]
+ 8009d82:      f442 7280       orr.w   r2, r2, #256    ; 0x100
+ 8009d86:      601a            str     r2, [r3, #0]
+
+    /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */
+    SET_BIT(huart->Instance->CR3, USART_CR3_EIE);
+ 8009d88:      68fb            ldr     r3, [r7, #12]
+ 8009d8a:      681b            ldr     r3, [r3, #0]
+ 8009d8c:      689a            ldr     r2, [r3, #8]
+ 8009d8e:      68fb            ldr     r3, [r7, #12]
+ 8009d90:      681b            ldr     r3, [r3, #0]
+ 8009d92:      f042 0201       orr.w   r2, r2, #1
+ 8009d96:      609a            str     r2, [r3, #8]
+
+    /* Enable the DMA transfer for the receiver request by setting the DMAR bit
+    in the UART CR3 register */
+    SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+ 8009d98:      68fb            ldr     r3, [r7, #12]
+ 8009d9a:      681b            ldr     r3, [r3, #0]
+ 8009d9c:      689a            ldr     r2, [r3, #8]
+ 8009d9e:      68fb            ldr     r3, [r7, #12]
+ 8009da0:      681b            ldr     r3, [r3, #0]
+ 8009da2:      f042 0240       orr.w   r2, r2, #64     ; 0x40
+ 8009da6:      609a            str     r2, [r3, #8]
+
+    return HAL_OK;
+ 8009da8:      2300            movs    r3, #0
+ 8009daa:      e000            b.n     8009dae <HAL_UART_Receive_DMA+0xf2>
+  }
+  else
+  {
+    return HAL_BUSY;
+ 8009dac:      2302            movs    r3, #2
+  }
+}
+ 8009dae:      4618            mov     r0, r3
+ 8009db0:      3710            adds    r7, #16
+ 8009db2:      46bd            mov     sp, r7
+ 8009db4:      bd80            pop     {r7, pc}
+ 8009db6:      bf00            nop
+ 8009db8:      0800a679        .word   0x0800a679
+ 8009dbc:      0800a6dd        .word   0x0800a6dd
+ 8009dc0:      0800a6f9        .word   0x0800a6f9
+
+08009dc4 <HAL_UART_TxCpltCallback>:
+  * @brief Tx Transfer completed callback.
+  * @param huart UART handle.
+  * @retval None
+  */
+__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
+{
+ 8009dc4:      b480            push    {r7}
+ 8009dc6:      b083            sub     sp, #12
+ 8009dc8:      af00            add     r7, sp, #0
+ 8009dca:      6078            str     r0, [r7, #4]
+  UNUSED(huart);
+
+  /* NOTE : This function should not be modified, when the callback is needed,
+            the HAL_UART_TxCpltCallback can be implemented in the user file.
+   */
+}
+ 8009dcc:      bf00            nop
+ 8009dce:      370c            adds    r7, #12
+ 8009dd0:      46bd            mov     sp, r7
+ 8009dd2:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8009dd6:      4770            bx      lr
+
+08009dd8 <HAL_UART_TxHalfCpltCallback>:
+  * @brief  Tx Half Transfer completed callback.
+  * @param  huart UART handle.
+  * @retval None
+  */
+__weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
+{
+ 8009dd8:      b480            push    {r7}
+ 8009dda:      b083            sub     sp, #12
+ 8009ddc:      af00            add     r7, sp, #0
+ 8009dde:      6078            str     r0, [r7, #4]
+  UNUSED(huart);
+
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_UART_TxHalfCpltCallback can be implemented in the user file.
+   */
+}
+ 8009de0:      bf00            nop
+ 8009de2:      370c            adds    r7, #12
+ 8009de4:      46bd            mov     sp, r7
+ 8009de6:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8009dea:      4770            bx      lr
+
+08009dec <HAL_UART_RxCpltCallback>:
+  * @brief  Rx Transfer completed callback.
+  * @param  huart UART handle.
+  * @retval None
+  */
+__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
+{
+ 8009dec:      b480            push    {r7}
+ 8009dee:      b083            sub     sp, #12
+ 8009df0:      af00            add     r7, sp, #0
+ 8009df2:      6078            str     r0, [r7, #4]
+  UNUSED(huart);
+
+  /* NOTE : This function should not be modified, when the callback is needed,
+            the HAL_UART_RxCpltCallback can be implemented in the user file.
+   */
+}
+ 8009df4:      bf00            nop
+ 8009df6:      370c            adds    r7, #12
+ 8009df8:      46bd            mov     sp, r7
+ 8009dfa:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8009dfe:      4770            bx      lr
+
+08009e00 <HAL_UART_RxHalfCpltCallback>:
+  * @brief  Rx Half Transfer completed callback.
+  * @param  huart UART handle.
+  * @retval None
+  */
+__weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
+{
+ 8009e00:      b480            push    {r7}
+ 8009e02:      b083            sub     sp, #12
+ 8009e04:      af00            add     r7, sp, #0
+ 8009e06:      6078            str     r0, [r7, #4]
+  UNUSED(huart);
+
+  /* NOTE: This function should not be modified, when the callback is needed,
+           the HAL_UART_RxHalfCpltCallback can be implemented in the user file.
+   */
+}
+ 8009e08:      bf00            nop
+ 8009e0a:      370c            adds    r7, #12
+ 8009e0c:      46bd            mov     sp, r7
+ 8009e0e:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8009e12:      4770            bx      lr
+
+08009e14 <HAL_UART_ErrorCallback>:
+  * @brief  UART error callback.
+  * @param  huart UART handle.
+  * @retval None
+  */
+__weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
+{
+ 8009e14:      b480            push    {r7}
+ 8009e16:      b083            sub     sp, #12
+ 8009e18:      af00            add     r7, sp, #0
+ 8009e1a:      6078            str     r0, [r7, #4]
+  UNUSED(huart);
+
+  /* NOTE : This function should not be modified, when the callback is needed,
+            the HAL_UART_ErrorCallback can be implemented in the user file.
+   */
 }
- 8001c74:      4618            mov     r0, r3
- 8001c76:      3708            adds    r7, #8
- 8001c78:      46bd            mov     sp, r7
- 8001c7a:      bd80            pop     {r7, pc}
+ 8009e1c:      bf00            nop
+ 8009e1e:      370c            adds    r7, #12
+ 8009e20:      46bd            mov     sp, r7
+ 8009e22:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8009e26:      4770            bx      lr
 
-08001c7c <UART_SetConfig>:
+08009e28 <UART_SetConfig>:
   * @brief Configure the UART peripheral.
   * @param huart UART handle.
   * @retval HAL status
   */
 HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
 {
- 8001c7c:      b580            push    {r7, lr}
- 8001c7e:      b088            sub     sp, #32
- 8001c80:      af00            add     r7, sp, #0
- 8001c82:      6078            str     r0, [r7, #4]
+ 8009e28:      b580            push    {r7, lr}
+ 8009e2a:      b088            sub     sp, #32
+ 8009e2c:      af00            add     r7, sp, #0
+ 8009e2e:      6078            str     r0, [r7, #4]
   uint32_t tmpreg;
   uint16_t brrtemp;
   UART_ClockSourceTypeDef clocksource;
   uint32_t usartdiv                   = 0x00000000U;
- 8001c84:      2300            movs    r3, #0
- 8001c86:      61bb            str     r3, [r7, #24]
+ 8009e30:      2300            movs    r3, #0
+ 8009e32:      61bb            str     r3, [r7, #24]
   HAL_StatusTypeDef ret               = HAL_OK;
- 8001c88:      2300            movs    r3, #0
- 8001c8a:      75fb            strb    r3, [r7, #23]
+ 8009e34:      2300            movs    r3, #0
+ 8009e36:      75fb            strb    r3, [r7, #23]
   *  the UART Word Length, Parity, Mode and oversampling:
   *  set the M bits according to huart->Init.WordLength value
   *  set PCE and PS bits according to huart->Init.Parity value
   *  set TE and RE bits according to huart->Init.Mode value
   *  set OVER8 bit according to huart->Init.OverSampling value */
   tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
- 8001c8c:      687b            ldr     r3, [r7, #4]
- 8001c8e:      689a            ldr     r2, [r3, #8]
- 8001c90:      687b            ldr     r3, [r7, #4]
- 8001c92:      691b            ldr     r3, [r3, #16]
- 8001c94:      431a            orrs    r2, r3
- 8001c96:      687b            ldr     r3, [r7, #4]
- 8001c98:      695b            ldr     r3, [r3, #20]
- 8001c9a:      431a            orrs    r2, r3
- 8001c9c:      687b            ldr     r3, [r7, #4]
- 8001c9e:      69db            ldr     r3, [r3, #28]
- 8001ca0:      4313            orrs    r3, r2
- 8001ca2:      613b            str     r3, [r7, #16]
+ 8009e38:      687b            ldr     r3, [r7, #4]
+ 8009e3a:      689a            ldr     r2, [r3, #8]
+ 8009e3c:      687b            ldr     r3, [r7, #4]
+ 8009e3e:      691b            ldr     r3, [r3, #16]
+ 8009e40:      431a            orrs    r2, r3
+ 8009e42:      687b            ldr     r3, [r7, #4]
+ 8009e44:      695b            ldr     r3, [r3, #20]
+ 8009e46:      431a            orrs    r2, r3
+ 8009e48:      687b            ldr     r3, [r7, #4]
+ 8009e4a:      69db            ldr     r3, [r3, #28]
+ 8009e4c:      4313            orrs    r3, r2
+ 8009e4e:      613b            str     r3, [r7, #16]
   MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
- 8001ca4:      687b            ldr     r3, [r7, #4]
- 8001ca6:      681b            ldr     r3, [r3, #0]
- 8001ca8:      681a            ldr     r2, [r3, #0]
- 8001caa:      4bb1            ldr     r3, [pc, #708]  ; (8001f70 <UART_SetConfig+0x2f4>)
- 8001cac:      4013            ands    r3, r2
- 8001cae:      687a            ldr     r2, [r7, #4]
- 8001cb0:      6812            ldr     r2, [r2, #0]
- 8001cb2:      6939            ldr     r1, [r7, #16]
- 8001cb4:      430b            orrs    r3, r1
- 8001cb6:      6013            str     r3, [r2, #0]
+ 8009e50:      687b            ldr     r3, [r7, #4]
+ 8009e52:      681b            ldr     r3, [r3, #0]
+ 8009e54:      681a            ldr     r2, [r3, #0]
+ 8009e56:      4bb1            ldr     r3, [pc, #708]  ; (800a11c <UART_SetConfig+0x2f4>)
+ 8009e58:      4013            ands    r3, r2
+ 8009e5a:      687a            ldr     r2, [r7, #4]
+ 8009e5c:      6812            ldr     r2, [r2, #0]
+ 8009e5e:      6939            ldr     r1, [r7, #16]
+ 8009e60:      430b            orrs    r3, r1
+ 8009e62:      6013            str     r3, [r2, #0]
 
   /*-------------------------- USART CR2 Configuration -----------------------*/
   /* Configure the UART Stop Bits: Set STOP[13:12] bits according
   * to huart->Init.StopBits value */
   MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
- 8001cb8:      687b            ldr     r3, [r7, #4]
- 8001cba:      681b            ldr     r3, [r3, #0]
- 8001cbc:      685b            ldr     r3, [r3, #4]
- 8001cbe:      f423 5140       bic.w   r1, r3, #12288  ; 0x3000
- 8001cc2:      687b            ldr     r3, [r7, #4]
- 8001cc4:      68da            ldr     r2, [r3, #12]
- 8001cc6:      687b            ldr     r3, [r7, #4]
- 8001cc8:      681b            ldr     r3, [r3, #0]
- 8001cca:      430a            orrs    r2, r1
- 8001ccc:      605a            str     r2, [r3, #4]
+ 8009e64:      687b            ldr     r3, [r7, #4]
+ 8009e66:      681b            ldr     r3, [r3, #0]
+ 8009e68:      685b            ldr     r3, [r3, #4]
+ 8009e6a:      f423 5140       bic.w   r1, r3, #12288  ; 0x3000
+ 8009e6e:      687b            ldr     r3, [r7, #4]
+ 8009e70:      68da            ldr     r2, [r3, #12]
+ 8009e72:      687b            ldr     r3, [r7, #4]
+ 8009e74:      681b            ldr     r3, [r3, #0]
+ 8009e76:      430a            orrs    r2, r1
+ 8009e78:      605a            str     r2, [r3, #4]
   /* Configure
   * - UART HardWare Flow Control: set CTSE and RTSE bits according
   *   to huart->Init.HwFlowCtl value
   * - one-bit sampling method versus three samples' majority rule according
   *   to huart->Init.OneBitSampling (not applicable to LPUART) */
   tmpreg = (uint32_t)huart->Init.HwFlowCtl;
- 8001cce:      687b            ldr     r3, [r7, #4]
- 8001cd0:      699b            ldr     r3, [r3, #24]
- 8001cd2:      613b            str     r3, [r7, #16]
+ 8009e7a:      687b            ldr     r3, [r7, #4]
+ 8009e7c:      699b            ldr     r3, [r3, #24]
+ 8009e7e:      613b            str     r3, [r7, #16]
 
   tmpreg |= huart->Init.OneBitSampling;
- 8001cd4:      687b            ldr     r3, [r7, #4]
- 8001cd6:      6a1b            ldr     r3, [r3, #32]
- 8001cd8:      693a            ldr     r2, [r7, #16]
- 8001cda:      4313            orrs    r3, r2
- 8001cdc:      613b            str     r3, [r7, #16]
+ 8009e80:      687b            ldr     r3, [r7, #4]
+ 8009e82:      6a1b            ldr     r3, [r3, #32]
+ 8009e84:      693a            ldr     r2, [r7, #16]
+ 8009e86:      4313            orrs    r3, r2
+ 8009e88:      613b            str     r3, [r7, #16]
   MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
- 8001cde:      687b            ldr     r3, [r7, #4]
- 8001ce0:      681b            ldr     r3, [r3, #0]
- 8001ce2:      689b            ldr     r3, [r3, #8]
- 8001ce4:      f423 6130       bic.w   r1, r3, #2816   ; 0xb00
- 8001ce8:      687b            ldr     r3, [r7, #4]
- 8001cea:      681b            ldr     r3, [r3, #0]
- 8001cec:      693a            ldr     r2, [r7, #16]
- 8001cee:      430a            orrs    r2, r1
- 8001cf0:      609a            str     r2, [r3, #8]
+ 8009e8a:      687b            ldr     r3, [r7, #4]
+ 8009e8c:      681b            ldr     r3, [r3, #0]
+ 8009e8e:      689b            ldr     r3, [r3, #8]
+ 8009e90:      f423 6130       bic.w   r1, r3, #2816   ; 0xb00
+ 8009e94:      687b            ldr     r3, [r7, #4]
+ 8009e96:      681b            ldr     r3, [r3, #0]
+ 8009e98:      693a            ldr     r2, [r7, #16]
+ 8009e9a:      430a            orrs    r2, r1
+ 8009e9c:      609a            str     r2, [r3, #8]
 
 
   /*-------------------------- USART BRR Configuration -----------------------*/
   UART_GETCLOCKSOURCE(huart, clocksource);
- 8001cf2:      687b            ldr     r3, [r7, #4]
- 8001cf4:      681b            ldr     r3, [r3, #0]
- 8001cf6:      4a9f            ldr     r2, [pc, #636]  ; (8001f74 <UART_SetConfig+0x2f8>)
- 8001cf8:      4293            cmp     r3, r2
- 8001cfa:      d121            bne.n   8001d40 <UART_SetConfig+0xc4>
- 8001cfc:      4b9e            ldr     r3, [pc, #632]  ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001cfe:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001d02:      f003 0303       and.w   r3, r3, #3
- 8001d06:      2b03            cmp     r3, #3
- 8001d08:      d816            bhi.n   8001d38 <UART_SetConfig+0xbc>
- 8001d0a:      a201            add     r2, pc, #4      ; (adr r2, 8001d10 <UART_SetConfig+0x94>)
- 8001d0c:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 8001d10:      08001d21        .word   0x08001d21
- 8001d14:      08001d2d        .word   0x08001d2d
- 8001d18:      08001d27        .word   0x08001d27
- 8001d1c:      08001d33        .word   0x08001d33
- 8001d20:      2301            movs    r3, #1
- 8001d22:      77fb            strb    r3, [r7, #31]
- 8001d24:      e151            b.n     8001fca <UART_SetConfig+0x34e>
- 8001d26:      2302            movs    r3, #2
- 8001d28:      77fb            strb    r3, [r7, #31]
- 8001d2a:      e14e            b.n     8001fca <UART_SetConfig+0x34e>
- 8001d2c:      2304            movs    r3, #4
- 8001d2e:      77fb            strb    r3, [r7, #31]
- 8001d30:      e14b            b.n     8001fca <UART_SetConfig+0x34e>
- 8001d32:      2308            movs    r3, #8
- 8001d34:      77fb            strb    r3, [r7, #31]
- 8001d36:      e148            b.n     8001fca <UART_SetConfig+0x34e>
- 8001d38:      2310            movs    r3, #16
- 8001d3a:      77fb            strb    r3, [r7, #31]
- 8001d3c:      bf00            nop
- 8001d3e:      e144            b.n     8001fca <UART_SetConfig+0x34e>
- 8001d40:      687b            ldr     r3, [r7, #4]
- 8001d42:      681b            ldr     r3, [r3, #0]
- 8001d44:      4a8d            ldr     r2, [pc, #564]  ; (8001f7c <UART_SetConfig+0x300>)
- 8001d46:      4293            cmp     r3, r2
- 8001d48:      d134            bne.n   8001db4 <UART_SetConfig+0x138>
- 8001d4a:      4b8b            ldr     r3, [pc, #556]  ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001d4c:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001d50:      f003 030c       and.w   r3, r3, #12
- 8001d54:      2b0c            cmp     r3, #12
- 8001d56:      d829            bhi.n   8001dac <UART_SetConfig+0x130>
- 8001d58:      a201            add     r2, pc, #4      ; (adr r2, 8001d60 <UART_SetConfig+0xe4>)
- 8001d5a:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 8001d5e:      bf00            nop
- 8001d60:      08001d95        .word   0x08001d95
- 8001d64:      08001dad        .word   0x08001dad
- 8001d68:      08001dad        .word   0x08001dad
- 8001d6c:      08001dad        .word   0x08001dad
- 8001d70:      08001da1        .word   0x08001da1
- 8001d74:      08001dad        .word   0x08001dad
- 8001d78:      08001dad        .word   0x08001dad
- 8001d7c:      08001dad        .word   0x08001dad
- 8001d80:      08001d9b        .word   0x08001d9b
- 8001d84:      08001dad        .word   0x08001dad
- 8001d88:      08001dad        .word   0x08001dad
- 8001d8c:      08001dad        .word   0x08001dad
- 8001d90:      08001da7        .word   0x08001da7
- 8001d94:      2300            movs    r3, #0
- 8001d96:      77fb            strb    r3, [r7, #31]
- 8001d98:      e117            b.n     8001fca <UART_SetConfig+0x34e>
- 8001d9a:      2302            movs    r3, #2
- 8001d9c:      77fb            strb    r3, [r7, #31]
- 8001d9e:      e114            b.n     8001fca <UART_SetConfig+0x34e>
- 8001da0:      2304            movs    r3, #4
- 8001da2:      77fb            strb    r3, [r7, #31]
- 8001da4:      e111            b.n     8001fca <UART_SetConfig+0x34e>
- 8001da6:      2308            movs    r3, #8
- 8001da8:      77fb            strb    r3, [r7, #31]
- 8001daa:      e10e            b.n     8001fca <UART_SetConfig+0x34e>
- 8001dac:      2310            movs    r3, #16
- 8001dae:      77fb            strb    r3, [r7, #31]
- 8001db0:      bf00            nop
- 8001db2:      e10a            b.n     8001fca <UART_SetConfig+0x34e>
- 8001db4:      687b            ldr     r3, [r7, #4]
- 8001db6:      681b            ldr     r3, [r3, #0]
- 8001db8:      4a71            ldr     r2, [pc, #452]  ; (8001f80 <UART_SetConfig+0x304>)
- 8001dba:      4293            cmp     r3, r2
- 8001dbc:      d120            bne.n   8001e00 <UART_SetConfig+0x184>
- 8001dbe:      4b6e            ldr     r3, [pc, #440]  ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001dc0:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001dc4:      f003 0330       and.w   r3, r3, #48     ; 0x30
- 8001dc8:      2b10            cmp     r3, #16
- 8001dca:      d00f            beq.n   8001dec <UART_SetConfig+0x170>
- 8001dcc:      2b10            cmp     r3, #16
- 8001dce:      d802            bhi.n   8001dd6 <UART_SetConfig+0x15a>
- 8001dd0:      2b00            cmp     r3, #0
- 8001dd2:      d005            beq.n   8001de0 <UART_SetConfig+0x164>
- 8001dd4:      e010            b.n     8001df8 <UART_SetConfig+0x17c>
- 8001dd6:      2b20            cmp     r3, #32
- 8001dd8:      d005            beq.n   8001de6 <UART_SetConfig+0x16a>
- 8001dda:      2b30            cmp     r3, #48 ; 0x30
- 8001ddc:      d009            beq.n   8001df2 <UART_SetConfig+0x176>
- 8001dde:      e00b            b.n     8001df8 <UART_SetConfig+0x17c>
- 8001de0:      2300            movs    r3, #0
- 8001de2:      77fb            strb    r3, [r7, #31]
- 8001de4:      e0f1            b.n     8001fca <UART_SetConfig+0x34e>
- 8001de6:      2302            movs    r3, #2
- 8001de8:      77fb            strb    r3, [r7, #31]
- 8001dea:      e0ee            b.n     8001fca <UART_SetConfig+0x34e>
- 8001dec:      2304            movs    r3, #4
- 8001dee:      77fb            strb    r3, [r7, #31]
- 8001df0:      e0eb            b.n     8001fca <UART_SetConfig+0x34e>
- 8001df2:      2308            movs    r3, #8
- 8001df4:      77fb            strb    r3, [r7, #31]
- 8001df6:      e0e8            b.n     8001fca <UART_SetConfig+0x34e>
- 8001df8:      2310            movs    r3, #16
- 8001dfa:      77fb            strb    r3, [r7, #31]
- 8001dfc:      bf00            nop
- 8001dfe:      e0e4            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e00:      687b            ldr     r3, [r7, #4]
- 8001e02:      681b            ldr     r3, [r3, #0]
- 8001e04:      4a5f            ldr     r2, [pc, #380]  ; (8001f84 <UART_SetConfig+0x308>)
- 8001e06:      4293            cmp     r3, r2
- 8001e08:      d120            bne.n   8001e4c <UART_SetConfig+0x1d0>
- 8001e0a:      4b5b            ldr     r3, [pc, #364]  ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001e0c:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001e10:      f003 03c0       and.w   r3, r3, #192    ; 0xc0
- 8001e14:      2b40            cmp     r3, #64 ; 0x40
- 8001e16:      d00f            beq.n   8001e38 <UART_SetConfig+0x1bc>
- 8001e18:      2b40            cmp     r3, #64 ; 0x40
- 8001e1a:      d802            bhi.n   8001e22 <UART_SetConfig+0x1a6>
- 8001e1c:      2b00            cmp     r3, #0
- 8001e1e:      d005            beq.n   8001e2c <UART_SetConfig+0x1b0>
- 8001e20:      e010            b.n     8001e44 <UART_SetConfig+0x1c8>
- 8001e22:      2b80            cmp     r3, #128        ; 0x80
- 8001e24:      d005            beq.n   8001e32 <UART_SetConfig+0x1b6>
- 8001e26:      2bc0            cmp     r3, #192        ; 0xc0
- 8001e28:      d009            beq.n   8001e3e <UART_SetConfig+0x1c2>
- 8001e2a:      e00b            b.n     8001e44 <UART_SetConfig+0x1c8>
- 8001e2c:      2300            movs    r3, #0
- 8001e2e:      77fb            strb    r3, [r7, #31]
- 8001e30:      e0cb            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e32:      2302            movs    r3, #2
- 8001e34:      77fb            strb    r3, [r7, #31]
- 8001e36:      e0c8            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e38:      2304            movs    r3, #4
- 8001e3a:      77fb            strb    r3, [r7, #31]
- 8001e3c:      e0c5            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e3e:      2308            movs    r3, #8
- 8001e40:      77fb            strb    r3, [r7, #31]
- 8001e42:      e0c2            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e44:      2310            movs    r3, #16
- 8001e46:      77fb            strb    r3, [r7, #31]
- 8001e48:      bf00            nop
- 8001e4a:      e0be            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e4c:      687b            ldr     r3, [r7, #4]
- 8001e4e:      681b            ldr     r3, [r3, #0]
- 8001e50:      4a4d            ldr     r2, [pc, #308]  ; (8001f88 <UART_SetConfig+0x30c>)
- 8001e52:      4293            cmp     r3, r2
- 8001e54:      d124            bne.n   8001ea0 <UART_SetConfig+0x224>
- 8001e56:      4b48            ldr     r3, [pc, #288]  ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001e58:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001e5c:      f403 7340       and.w   r3, r3, #768    ; 0x300
- 8001e60:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
- 8001e64:      d012            beq.n   8001e8c <UART_SetConfig+0x210>
- 8001e66:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
- 8001e6a:      d802            bhi.n   8001e72 <UART_SetConfig+0x1f6>
- 8001e6c:      2b00            cmp     r3, #0
- 8001e6e:      d007            beq.n   8001e80 <UART_SetConfig+0x204>
- 8001e70:      e012            b.n     8001e98 <UART_SetConfig+0x21c>
- 8001e72:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
- 8001e76:      d006            beq.n   8001e86 <UART_SetConfig+0x20a>
- 8001e78:      f5b3 7f40       cmp.w   r3, #768        ; 0x300
- 8001e7c:      d009            beq.n   8001e92 <UART_SetConfig+0x216>
- 8001e7e:      e00b            b.n     8001e98 <UART_SetConfig+0x21c>
- 8001e80:      2300            movs    r3, #0
- 8001e82:      77fb            strb    r3, [r7, #31]
- 8001e84:      e0a1            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e86:      2302            movs    r3, #2
- 8001e88:      77fb            strb    r3, [r7, #31]
- 8001e8a:      e09e            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e8c:      2304            movs    r3, #4
- 8001e8e:      77fb            strb    r3, [r7, #31]
- 8001e90:      e09b            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e92:      2308            movs    r3, #8
- 8001e94:      77fb            strb    r3, [r7, #31]
- 8001e96:      e098            b.n     8001fca <UART_SetConfig+0x34e>
- 8001e98:      2310            movs    r3, #16
- 8001e9a:      77fb            strb    r3, [r7, #31]
- 8001e9c:      bf00            nop
- 8001e9e:      e094            b.n     8001fca <UART_SetConfig+0x34e>
- 8001ea0:      687b            ldr     r3, [r7, #4]
- 8001ea2:      681b            ldr     r3, [r3, #0]
- 8001ea4:      4a39            ldr     r2, [pc, #228]  ; (8001f8c <UART_SetConfig+0x310>)
- 8001ea6:      4293            cmp     r3, r2
- 8001ea8:      d124            bne.n   8001ef4 <UART_SetConfig+0x278>
- 8001eaa:      4b33            ldr     r3, [pc, #204]  ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001eac:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001eb0:      f403 6340       and.w   r3, r3, #3072   ; 0xc00
- 8001eb4:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
- 8001eb8:      d012            beq.n   8001ee0 <UART_SetConfig+0x264>
- 8001eba:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
- 8001ebe:      d802            bhi.n   8001ec6 <UART_SetConfig+0x24a>
- 8001ec0:      2b00            cmp     r3, #0
- 8001ec2:      d007            beq.n   8001ed4 <UART_SetConfig+0x258>
- 8001ec4:      e012            b.n     8001eec <UART_SetConfig+0x270>
- 8001ec6:      f5b3 6f00       cmp.w   r3, #2048       ; 0x800
- 8001eca:      d006            beq.n   8001eda <UART_SetConfig+0x25e>
- 8001ecc:      f5b3 6f40       cmp.w   r3, #3072       ; 0xc00
- 8001ed0:      d009            beq.n   8001ee6 <UART_SetConfig+0x26a>
- 8001ed2:      e00b            b.n     8001eec <UART_SetConfig+0x270>
- 8001ed4:      2301            movs    r3, #1
- 8001ed6:      77fb            strb    r3, [r7, #31]
- 8001ed8:      e077            b.n     8001fca <UART_SetConfig+0x34e>
- 8001eda:      2302            movs    r3, #2
- 8001edc:      77fb            strb    r3, [r7, #31]
- 8001ede:      e074            b.n     8001fca <UART_SetConfig+0x34e>
- 8001ee0:      2304            movs    r3, #4
- 8001ee2:      77fb            strb    r3, [r7, #31]
- 8001ee4:      e071            b.n     8001fca <UART_SetConfig+0x34e>
- 8001ee6:      2308            movs    r3, #8
- 8001ee8:      77fb            strb    r3, [r7, #31]
- 8001eea:      e06e            b.n     8001fca <UART_SetConfig+0x34e>
- 8001eec:      2310            movs    r3, #16
- 8001eee:      77fb            strb    r3, [r7, #31]
- 8001ef0:      bf00            nop
- 8001ef2:      e06a            b.n     8001fca <UART_SetConfig+0x34e>
- 8001ef4:      687b            ldr     r3, [r7, #4]
- 8001ef6:      681b            ldr     r3, [r3, #0]
- 8001ef8:      4a25            ldr     r2, [pc, #148]  ; (8001f90 <UART_SetConfig+0x314>)
- 8001efa:      4293            cmp     r3, r2
- 8001efc:      d124            bne.n   8001f48 <UART_SetConfig+0x2cc>
- 8001efe:      4b1e            ldr     r3, [pc, #120]  ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001f00:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001f04:      f403 5340       and.w   r3, r3, #12288  ; 0x3000
- 8001f08:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
- 8001f0c:      d012            beq.n   8001f34 <UART_SetConfig+0x2b8>
- 8001f0e:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
- 8001f12:      d802            bhi.n   8001f1a <UART_SetConfig+0x29e>
- 8001f14:      2b00            cmp     r3, #0
- 8001f16:      d007            beq.n   8001f28 <UART_SetConfig+0x2ac>
- 8001f18:      e012            b.n     8001f40 <UART_SetConfig+0x2c4>
- 8001f1a:      f5b3 5f00       cmp.w   r3, #8192       ; 0x2000
- 8001f1e:      d006            beq.n   8001f2e <UART_SetConfig+0x2b2>
- 8001f20:      f5b3 5f40       cmp.w   r3, #12288      ; 0x3000
- 8001f24:      d009            beq.n   8001f3a <UART_SetConfig+0x2be>
- 8001f26:      e00b            b.n     8001f40 <UART_SetConfig+0x2c4>
- 8001f28:      2300            movs    r3, #0
- 8001f2a:      77fb            strb    r3, [r7, #31]
- 8001f2c:      e04d            b.n     8001fca <UART_SetConfig+0x34e>
- 8001f2e:      2302            movs    r3, #2
- 8001f30:      77fb            strb    r3, [r7, #31]
- 8001f32:      e04a            b.n     8001fca <UART_SetConfig+0x34e>
- 8001f34:      2304            movs    r3, #4
- 8001f36:      77fb            strb    r3, [r7, #31]
- 8001f38:      e047            b.n     8001fca <UART_SetConfig+0x34e>
- 8001f3a:      2308            movs    r3, #8
- 8001f3c:      77fb            strb    r3, [r7, #31]
- 8001f3e:      e044            b.n     8001fca <UART_SetConfig+0x34e>
- 8001f40:      2310            movs    r3, #16
- 8001f42:      77fb            strb    r3, [r7, #31]
- 8001f44:      bf00            nop
- 8001f46:      e040            b.n     8001fca <UART_SetConfig+0x34e>
- 8001f48:      687b            ldr     r3, [r7, #4]
- 8001f4a:      681b            ldr     r3, [r3, #0]
- 8001f4c:      4a11            ldr     r2, [pc, #68]   ; (8001f94 <UART_SetConfig+0x318>)
- 8001f4e:      4293            cmp     r3, r2
- 8001f50:      d139            bne.n   8001fc6 <UART_SetConfig+0x34a>
- 8001f52:      4b09            ldr     r3, [pc, #36]   ; (8001f78 <UART_SetConfig+0x2fc>)
- 8001f54:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8001f58:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
- 8001f5c:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
- 8001f60:      d027            beq.n   8001fb2 <UART_SetConfig+0x336>
- 8001f62:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
- 8001f66:      d817            bhi.n   8001f98 <UART_SetConfig+0x31c>
- 8001f68:      2b00            cmp     r3, #0
- 8001f6a:      d01c            beq.n   8001fa6 <UART_SetConfig+0x32a>
- 8001f6c:      e027            b.n     8001fbe <UART_SetConfig+0x342>
- 8001f6e:      bf00            nop
- 8001f70:      efff69f3        .word   0xefff69f3
- 8001f74:      40011000        .word   0x40011000
- 8001f78:      40023800        .word   0x40023800
- 8001f7c:      40004400        .word   0x40004400
- 8001f80:      40004800        .word   0x40004800
- 8001f84:      40004c00        .word   0x40004c00
- 8001f88:      40005000        .word   0x40005000
- 8001f8c:      40011400        .word   0x40011400
- 8001f90:      40007800        .word   0x40007800
- 8001f94:      40007c00        .word   0x40007c00
- 8001f98:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
- 8001f9c:      d006            beq.n   8001fac <UART_SetConfig+0x330>
- 8001f9e:      f5b3 4f40       cmp.w   r3, #49152      ; 0xc000
- 8001fa2:      d009            beq.n   8001fb8 <UART_SetConfig+0x33c>
- 8001fa4:      e00b            b.n     8001fbe <UART_SetConfig+0x342>
- 8001fa6:      2300            movs    r3, #0
- 8001fa8:      77fb            strb    r3, [r7, #31]
- 8001faa:      e00e            b.n     8001fca <UART_SetConfig+0x34e>
- 8001fac:      2302            movs    r3, #2
- 8001fae:      77fb            strb    r3, [r7, #31]
- 8001fb0:      e00b            b.n     8001fca <UART_SetConfig+0x34e>
- 8001fb2:      2304            movs    r3, #4
- 8001fb4:      77fb            strb    r3, [r7, #31]
- 8001fb6:      e008            b.n     8001fca <UART_SetConfig+0x34e>
- 8001fb8:      2308            movs    r3, #8
- 8001fba:      77fb            strb    r3, [r7, #31]
- 8001fbc:      e005            b.n     8001fca <UART_SetConfig+0x34e>
- 8001fbe:      2310            movs    r3, #16
- 8001fc0:      77fb            strb    r3, [r7, #31]
- 8001fc2:      bf00            nop
- 8001fc4:      e001            b.n     8001fca <UART_SetConfig+0x34e>
- 8001fc6:      2310            movs    r3, #16
- 8001fc8:      77fb            strb    r3, [r7, #31]
+ 8009e9e:      687b            ldr     r3, [r7, #4]
+ 8009ea0:      681b            ldr     r3, [r3, #0]
+ 8009ea2:      4a9f            ldr     r2, [pc, #636]  ; (800a120 <UART_SetConfig+0x2f8>)
+ 8009ea4:      4293            cmp     r3, r2
+ 8009ea6:      d121            bne.n   8009eec <UART_SetConfig+0xc4>
+ 8009ea8:      4b9e            ldr     r3, [pc, #632]  ; (800a124 <UART_SetConfig+0x2fc>)
+ 8009eaa:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009eae:      f003 0303       and.w   r3, r3, #3
+ 8009eb2:      2b03            cmp     r3, #3
+ 8009eb4:      d816            bhi.n   8009ee4 <UART_SetConfig+0xbc>
+ 8009eb6:      a201            add     r2, pc, #4      ; (adr r2, 8009ebc <UART_SetConfig+0x94>)
+ 8009eb8:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 8009ebc:      08009ecd        .word   0x08009ecd
+ 8009ec0:      08009ed9        .word   0x08009ed9
+ 8009ec4:      08009ed3        .word   0x08009ed3
+ 8009ec8:      08009edf        .word   0x08009edf
+ 8009ecc:      2301            movs    r3, #1
+ 8009ece:      77fb            strb    r3, [r7, #31]
+ 8009ed0:      e151            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009ed2:      2302            movs    r3, #2
+ 8009ed4:      77fb            strb    r3, [r7, #31]
+ 8009ed6:      e14e            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009ed8:      2304            movs    r3, #4
+ 8009eda:      77fb            strb    r3, [r7, #31]
+ 8009edc:      e14b            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009ede:      2308            movs    r3, #8
+ 8009ee0:      77fb            strb    r3, [r7, #31]
+ 8009ee2:      e148            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009ee4:      2310            movs    r3, #16
+ 8009ee6:      77fb            strb    r3, [r7, #31]
+ 8009ee8:      bf00            nop
+ 8009eea:      e144            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009eec:      687b            ldr     r3, [r7, #4]
+ 8009eee:      681b            ldr     r3, [r3, #0]
+ 8009ef0:      4a8d            ldr     r2, [pc, #564]  ; (800a128 <UART_SetConfig+0x300>)
+ 8009ef2:      4293            cmp     r3, r2
+ 8009ef4:      d134            bne.n   8009f60 <UART_SetConfig+0x138>
+ 8009ef6:      4b8b            ldr     r3, [pc, #556]  ; (800a124 <UART_SetConfig+0x2fc>)
+ 8009ef8:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009efc:      f003 030c       and.w   r3, r3, #12
+ 8009f00:      2b0c            cmp     r3, #12
+ 8009f02:      d829            bhi.n   8009f58 <UART_SetConfig+0x130>
+ 8009f04:      a201            add     r2, pc, #4      ; (adr r2, 8009f0c <UART_SetConfig+0xe4>)
+ 8009f06:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 8009f0a:      bf00            nop
+ 8009f0c:      08009f41        .word   0x08009f41
+ 8009f10:      08009f59        .word   0x08009f59
+ 8009f14:      08009f59        .word   0x08009f59
+ 8009f18:      08009f59        .word   0x08009f59
+ 8009f1c:      08009f4d        .word   0x08009f4d
+ 8009f20:      08009f59        .word   0x08009f59
+ 8009f24:      08009f59        .word   0x08009f59
+ 8009f28:      08009f59        .word   0x08009f59
+ 8009f2c:      08009f47        .word   0x08009f47
+ 8009f30:      08009f59        .word   0x08009f59
+ 8009f34:      08009f59        .word   0x08009f59
+ 8009f38:      08009f59        .word   0x08009f59
+ 8009f3c:      08009f53        .word   0x08009f53
+ 8009f40:      2300            movs    r3, #0
+ 8009f42:      77fb            strb    r3, [r7, #31]
+ 8009f44:      e117            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f46:      2302            movs    r3, #2
+ 8009f48:      77fb            strb    r3, [r7, #31]
+ 8009f4a:      e114            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f4c:      2304            movs    r3, #4
+ 8009f4e:      77fb            strb    r3, [r7, #31]
+ 8009f50:      e111            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f52:      2308            movs    r3, #8
+ 8009f54:      77fb            strb    r3, [r7, #31]
+ 8009f56:      e10e            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f58:      2310            movs    r3, #16
+ 8009f5a:      77fb            strb    r3, [r7, #31]
+ 8009f5c:      bf00            nop
+ 8009f5e:      e10a            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f60:      687b            ldr     r3, [r7, #4]
+ 8009f62:      681b            ldr     r3, [r3, #0]
+ 8009f64:      4a71            ldr     r2, [pc, #452]  ; (800a12c <UART_SetConfig+0x304>)
+ 8009f66:      4293            cmp     r3, r2
+ 8009f68:      d120            bne.n   8009fac <UART_SetConfig+0x184>
+ 8009f6a:      4b6e            ldr     r3, [pc, #440]  ; (800a124 <UART_SetConfig+0x2fc>)
+ 8009f6c:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009f70:      f003 0330       and.w   r3, r3, #48     ; 0x30
+ 8009f74:      2b10            cmp     r3, #16
+ 8009f76:      d00f            beq.n   8009f98 <UART_SetConfig+0x170>
+ 8009f78:      2b10            cmp     r3, #16
+ 8009f7a:      d802            bhi.n   8009f82 <UART_SetConfig+0x15a>
+ 8009f7c:      2b00            cmp     r3, #0
+ 8009f7e:      d005            beq.n   8009f8c <UART_SetConfig+0x164>
+ 8009f80:      e010            b.n     8009fa4 <UART_SetConfig+0x17c>
+ 8009f82:      2b20            cmp     r3, #32
+ 8009f84:      d005            beq.n   8009f92 <UART_SetConfig+0x16a>
+ 8009f86:      2b30            cmp     r3, #48 ; 0x30
+ 8009f88:      d009            beq.n   8009f9e <UART_SetConfig+0x176>
+ 8009f8a:      e00b            b.n     8009fa4 <UART_SetConfig+0x17c>
+ 8009f8c:      2300            movs    r3, #0
+ 8009f8e:      77fb            strb    r3, [r7, #31]
+ 8009f90:      e0f1            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f92:      2302            movs    r3, #2
+ 8009f94:      77fb            strb    r3, [r7, #31]
+ 8009f96:      e0ee            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f98:      2304            movs    r3, #4
+ 8009f9a:      77fb            strb    r3, [r7, #31]
+ 8009f9c:      e0eb            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009f9e:      2308            movs    r3, #8
+ 8009fa0:      77fb            strb    r3, [r7, #31]
+ 8009fa2:      e0e8            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009fa4:      2310            movs    r3, #16
+ 8009fa6:      77fb            strb    r3, [r7, #31]
+ 8009fa8:      bf00            nop
+ 8009faa:      e0e4            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009fac:      687b            ldr     r3, [r7, #4]
+ 8009fae:      681b            ldr     r3, [r3, #0]
+ 8009fb0:      4a5f            ldr     r2, [pc, #380]  ; (800a130 <UART_SetConfig+0x308>)
+ 8009fb2:      4293            cmp     r3, r2
+ 8009fb4:      d120            bne.n   8009ff8 <UART_SetConfig+0x1d0>
+ 8009fb6:      4b5b            ldr     r3, [pc, #364]  ; (800a124 <UART_SetConfig+0x2fc>)
+ 8009fb8:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8009fbc:      f003 03c0       and.w   r3, r3, #192    ; 0xc0
+ 8009fc0:      2b40            cmp     r3, #64 ; 0x40
+ 8009fc2:      d00f            beq.n   8009fe4 <UART_SetConfig+0x1bc>
+ 8009fc4:      2b40            cmp     r3, #64 ; 0x40
+ 8009fc6:      d802            bhi.n   8009fce <UART_SetConfig+0x1a6>
+ 8009fc8:      2b00            cmp     r3, #0
+ 8009fca:      d005            beq.n   8009fd8 <UART_SetConfig+0x1b0>
+ 8009fcc:      e010            b.n     8009ff0 <UART_SetConfig+0x1c8>
+ 8009fce:      2b80            cmp     r3, #128        ; 0x80
+ 8009fd0:      d005            beq.n   8009fde <UART_SetConfig+0x1b6>
+ 8009fd2:      2bc0            cmp     r3, #192        ; 0xc0
+ 8009fd4:      d009            beq.n   8009fea <UART_SetConfig+0x1c2>
+ 8009fd6:      e00b            b.n     8009ff0 <UART_SetConfig+0x1c8>
+ 8009fd8:      2300            movs    r3, #0
+ 8009fda:      77fb            strb    r3, [r7, #31]
+ 8009fdc:      e0cb            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009fde:      2302            movs    r3, #2
+ 8009fe0:      77fb            strb    r3, [r7, #31]
+ 8009fe2:      e0c8            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009fe4:      2304            movs    r3, #4
+ 8009fe6:      77fb            strb    r3, [r7, #31]
+ 8009fe8:      e0c5            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009fea:      2308            movs    r3, #8
+ 8009fec:      77fb            strb    r3, [r7, #31]
+ 8009fee:      e0c2            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009ff0:      2310            movs    r3, #16
+ 8009ff2:      77fb            strb    r3, [r7, #31]
+ 8009ff4:      bf00            nop
+ 8009ff6:      e0be            b.n     800a176 <UART_SetConfig+0x34e>
+ 8009ff8:      687b            ldr     r3, [r7, #4]
+ 8009ffa:      681b            ldr     r3, [r3, #0]
+ 8009ffc:      4a4d            ldr     r2, [pc, #308]  ; (800a134 <UART_SetConfig+0x30c>)
+ 8009ffe:      4293            cmp     r3, r2
+ 800a000:      d124            bne.n   800a04c <UART_SetConfig+0x224>
+ 800a002:      4b48            ldr     r3, [pc, #288]  ; (800a124 <UART_SetConfig+0x2fc>)
+ 800a004:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800a008:      f403 7340       and.w   r3, r3, #768    ; 0x300
+ 800a00c:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
+ 800a010:      d012            beq.n   800a038 <UART_SetConfig+0x210>
+ 800a012:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
+ 800a016:      d802            bhi.n   800a01e <UART_SetConfig+0x1f6>
+ 800a018:      2b00            cmp     r3, #0
+ 800a01a:      d007            beq.n   800a02c <UART_SetConfig+0x204>
+ 800a01c:      e012            b.n     800a044 <UART_SetConfig+0x21c>
+ 800a01e:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
+ 800a022:      d006            beq.n   800a032 <UART_SetConfig+0x20a>
+ 800a024:      f5b3 7f40       cmp.w   r3, #768        ; 0x300
+ 800a028:      d009            beq.n   800a03e <UART_SetConfig+0x216>
+ 800a02a:      e00b            b.n     800a044 <UART_SetConfig+0x21c>
+ 800a02c:      2300            movs    r3, #0
+ 800a02e:      77fb            strb    r3, [r7, #31]
+ 800a030:      e0a1            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a032:      2302            movs    r3, #2
+ 800a034:      77fb            strb    r3, [r7, #31]
+ 800a036:      e09e            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a038:      2304            movs    r3, #4
+ 800a03a:      77fb            strb    r3, [r7, #31]
+ 800a03c:      e09b            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a03e:      2308            movs    r3, #8
+ 800a040:      77fb            strb    r3, [r7, #31]
+ 800a042:      e098            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a044:      2310            movs    r3, #16
+ 800a046:      77fb            strb    r3, [r7, #31]
+ 800a048:      bf00            nop
+ 800a04a:      e094            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a04c:      687b            ldr     r3, [r7, #4]
+ 800a04e:      681b            ldr     r3, [r3, #0]
+ 800a050:      4a39            ldr     r2, [pc, #228]  ; (800a138 <UART_SetConfig+0x310>)
+ 800a052:      4293            cmp     r3, r2
+ 800a054:      d124            bne.n   800a0a0 <UART_SetConfig+0x278>
+ 800a056:      4b33            ldr     r3, [pc, #204]  ; (800a124 <UART_SetConfig+0x2fc>)
+ 800a058:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800a05c:      f403 6340       and.w   r3, r3, #3072   ; 0xc00
+ 800a060:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
+ 800a064:      d012            beq.n   800a08c <UART_SetConfig+0x264>
+ 800a066:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
+ 800a06a:      d802            bhi.n   800a072 <UART_SetConfig+0x24a>
+ 800a06c:      2b00            cmp     r3, #0
+ 800a06e:      d007            beq.n   800a080 <UART_SetConfig+0x258>
+ 800a070:      e012            b.n     800a098 <UART_SetConfig+0x270>
+ 800a072:      f5b3 6f00       cmp.w   r3, #2048       ; 0x800
+ 800a076:      d006            beq.n   800a086 <UART_SetConfig+0x25e>
+ 800a078:      f5b3 6f40       cmp.w   r3, #3072       ; 0xc00
+ 800a07c:      d009            beq.n   800a092 <UART_SetConfig+0x26a>
+ 800a07e:      e00b            b.n     800a098 <UART_SetConfig+0x270>
+ 800a080:      2301            movs    r3, #1
+ 800a082:      77fb            strb    r3, [r7, #31]
+ 800a084:      e077            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a086:      2302            movs    r3, #2
+ 800a088:      77fb            strb    r3, [r7, #31]
+ 800a08a:      e074            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a08c:      2304            movs    r3, #4
+ 800a08e:      77fb            strb    r3, [r7, #31]
+ 800a090:      e071            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a092:      2308            movs    r3, #8
+ 800a094:      77fb            strb    r3, [r7, #31]
+ 800a096:      e06e            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a098:      2310            movs    r3, #16
+ 800a09a:      77fb            strb    r3, [r7, #31]
+ 800a09c:      bf00            nop
+ 800a09e:      e06a            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a0a0:      687b            ldr     r3, [r7, #4]
+ 800a0a2:      681b            ldr     r3, [r3, #0]
+ 800a0a4:      4a25            ldr     r2, [pc, #148]  ; (800a13c <UART_SetConfig+0x314>)
+ 800a0a6:      4293            cmp     r3, r2
+ 800a0a8:      d124            bne.n   800a0f4 <UART_SetConfig+0x2cc>
+ 800a0aa:      4b1e            ldr     r3, [pc, #120]  ; (800a124 <UART_SetConfig+0x2fc>)
+ 800a0ac:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800a0b0:      f403 5340       and.w   r3, r3, #12288  ; 0x3000
+ 800a0b4:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
+ 800a0b8:      d012            beq.n   800a0e0 <UART_SetConfig+0x2b8>
+ 800a0ba:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
+ 800a0be:      d802            bhi.n   800a0c6 <UART_SetConfig+0x29e>
+ 800a0c0:      2b00            cmp     r3, #0
+ 800a0c2:      d007            beq.n   800a0d4 <UART_SetConfig+0x2ac>
+ 800a0c4:      e012            b.n     800a0ec <UART_SetConfig+0x2c4>
+ 800a0c6:      f5b3 5f00       cmp.w   r3, #8192       ; 0x2000
+ 800a0ca:      d006            beq.n   800a0da <UART_SetConfig+0x2b2>
+ 800a0cc:      f5b3 5f40       cmp.w   r3, #12288      ; 0x3000
+ 800a0d0:      d009            beq.n   800a0e6 <UART_SetConfig+0x2be>
+ 800a0d2:      e00b            b.n     800a0ec <UART_SetConfig+0x2c4>
+ 800a0d4:      2300            movs    r3, #0
+ 800a0d6:      77fb            strb    r3, [r7, #31]
+ 800a0d8:      e04d            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a0da:      2302            movs    r3, #2
+ 800a0dc:      77fb            strb    r3, [r7, #31]
+ 800a0de:      e04a            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a0e0:      2304            movs    r3, #4
+ 800a0e2:      77fb            strb    r3, [r7, #31]
+ 800a0e4:      e047            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a0e6:      2308            movs    r3, #8
+ 800a0e8:      77fb            strb    r3, [r7, #31]
+ 800a0ea:      e044            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a0ec:      2310            movs    r3, #16
+ 800a0ee:      77fb            strb    r3, [r7, #31]
+ 800a0f0:      bf00            nop
+ 800a0f2:      e040            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a0f4:      687b            ldr     r3, [r7, #4]
+ 800a0f6:      681b            ldr     r3, [r3, #0]
+ 800a0f8:      4a11            ldr     r2, [pc, #68]   ; (800a140 <UART_SetConfig+0x318>)
+ 800a0fa:      4293            cmp     r3, r2
+ 800a0fc:      d139            bne.n   800a172 <UART_SetConfig+0x34a>
+ 800a0fe:      4b09            ldr     r3, [pc, #36]   ; (800a124 <UART_SetConfig+0x2fc>)
+ 800a100:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 800a104:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
+ 800a108:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
+ 800a10c:      d027            beq.n   800a15e <UART_SetConfig+0x336>
+ 800a10e:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
+ 800a112:      d817            bhi.n   800a144 <UART_SetConfig+0x31c>
+ 800a114:      2b00            cmp     r3, #0
+ 800a116:      d01c            beq.n   800a152 <UART_SetConfig+0x32a>
+ 800a118:      e027            b.n     800a16a <UART_SetConfig+0x342>
+ 800a11a:      bf00            nop
+ 800a11c:      efff69f3        .word   0xefff69f3
+ 800a120:      40011000        .word   0x40011000
+ 800a124:      40023800        .word   0x40023800
+ 800a128:      40004400        .word   0x40004400
+ 800a12c:      40004800        .word   0x40004800
+ 800a130:      40004c00        .word   0x40004c00
+ 800a134:      40005000        .word   0x40005000
+ 800a138:      40011400        .word   0x40011400
+ 800a13c:      40007800        .word   0x40007800
+ 800a140:      40007c00        .word   0x40007c00
+ 800a144:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
+ 800a148:      d006            beq.n   800a158 <UART_SetConfig+0x330>
+ 800a14a:      f5b3 4f40       cmp.w   r3, #49152      ; 0xc000
+ 800a14e:      d009            beq.n   800a164 <UART_SetConfig+0x33c>
+ 800a150:      e00b            b.n     800a16a <UART_SetConfig+0x342>
+ 800a152:      2300            movs    r3, #0
+ 800a154:      77fb            strb    r3, [r7, #31]
+ 800a156:      e00e            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a158:      2302            movs    r3, #2
+ 800a15a:      77fb            strb    r3, [r7, #31]
+ 800a15c:      e00b            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a15e:      2304            movs    r3, #4
+ 800a160:      77fb            strb    r3, [r7, #31]
+ 800a162:      e008            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a164:      2308            movs    r3, #8
+ 800a166:      77fb            strb    r3, [r7, #31]
+ 800a168:      e005            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a16a:      2310            movs    r3, #16
+ 800a16c:      77fb            strb    r3, [r7, #31]
+ 800a16e:      bf00            nop
+ 800a170:      e001            b.n     800a176 <UART_SetConfig+0x34e>
+ 800a172:      2310            movs    r3, #16
+ 800a174:      77fb            strb    r3, [r7, #31]
 
   if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
- 8001fca:      687b            ldr     r3, [r7, #4]
- 8001fcc:      69db            ldr     r3, [r3, #28]
- 8001fce:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
- 8001fd2:      d17c            bne.n   80020ce <UART_SetConfig+0x452>
+ 800a176:      687b            ldr     r3, [r7, #4]
+ 800a178:      69db            ldr     r3, [r3, #28]
+ 800a17a:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
+ 800a17e:      d17c            bne.n   800a27a <UART_SetConfig+0x452>
   {
     switch (clocksource)
- 8001fd4:      7ffb            ldrb    r3, [r7, #31]
- 8001fd6:      2b08            cmp     r3, #8
- 8001fd8:      d859            bhi.n   800208e <UART_SetConfig+0x412>
- 8001fda:      a201            add     r2, pc, #4      ; (adr r2, 8001fe0 <UART_SetConfig+0x364>)
- 8001fdc:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 8001fe0:      08002005        .word   0x08002005
- 8001fe4:      08002023        .word   0x08002023
- 8001fe8:      08002041        .word   0x08002041
- 8001fec:      0800208f        .word   0x0800208f
- 8001ff0:      08002059        .word   0x08002059
- 8001ff4:      0800208f        .word   0x0800208f
- 8001ff8:      0800208f        .word   0x0800208f
- 8001ffc:      0800208f        .word   0x0800208f
- 8002000:      08002077        .word   0x08002077
+ 800a180:      7ffb            ldrb    r3, [r7, #31]
+ 800a182:      2b08            cmp     r3, #8
+ 800a184:      d859            bhi.n   800a23a <UART_SetConfig+0x412>
+ 800a186:      a201            add     r2, pc, #4      ; (adr r2, 800a18c <UART_SetConfig+0x364>)
+ 800a188:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 800a18c:      0800a1b1        .word   0x0800a1b1
+ 800a190:      0800a1cf        .word   0x0800a1cf
+ 800a194:      0800a1ed        .word   0x0800a1ed
+ 800a198:      0800a23b        .word   0x0800a23b
+ 800a19c:      0800a205        .word   0x0800a205
+ 800a1a0:      0800a23b        .word   0x0800a23b
+ 800a1a4:      0800a23b        .word   0x0800a23b
+ 800a1a8:      0800a23b        .word   0x0800a23b
+ 800a1ac:      0800a223        .word   0x0800a223
     {
       case UART_CLOCKSOURCE_PCLK1:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
- 8002004:      f7ff f99e       bl      8001344 <HAL_RCC_GetPCLK1Freq>
- 8002008:      4603            mov     r3, r0
- 800200a:      005a            lsls    r2, r3, #1
- 800200c:      687b            ldr     r3, [r7, #4]
- 800200e:      685b            ldr     r3, [r3, #4]
- 8002010:      085b            lsrs    r3, r3, #1
- 8002012:      441a            add     r2, r3
- 8002014:      687b            ldr     r3, [r7, #4]
- 8002016:      685b            ldr     r3, [r3, #4]
- 8002018:      fbb2 f3f3       udiv    r3, r2, r3
- 800201c:      b29b            uxth    r3, r3
- 800201e:      61bb            str     r3, [r7, #24]
+ 800a1b0:      f7fe fed4       bl      8008f5c <HAL_RCC_GetPCLK1Freq>
+ 800a1b4:      4603            mov     r3, r0
+ 800a1b6:      005a            lsls    r2, r3, #1
+ 800a1b8:      687b            ldr     r3, [r7, #4]
+ 800a1ba:      685b            ldr     r3, [r3, #4]
+ 800a1bc:      085b            lsrs    r3, r3, #1
+ 800a1be:      441a            add     r2, r3
+ 800a1c0:      687b            ldr     r3, [r7, #4]
+ 800a1c2:      685b            ldr     r3, [r3, #4]
+ 800a1c4:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a1c8:      b29b            uxth    r3, r3
+ 800a1ca:      61bb            str     r3, [r7, #24]
         break;
- 8002020:      e038            b.n     8002094 <UART_SetConfig+0x418>
+ 800a1cc:      e038            b.n     800a240 <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_PCLK2:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
- 8002022:      f7ff f9a3       bl      800136c <HAL_RCC_GetPCLK2Freq>
- 8002026:      4603            mov     r3, r0
- 8002028:      005a            lsls    r2, r3, #1
- 800202a:      687b            ldr     r3, [r7, #4]
- 800202c:      685b            ldr     r3, [r3, #4]
- 800202e:      085b            lsrs    r3, r3, #1
- 8002030:      441a            add     r2, r3
- 8002032:      687b            ldr     r3, [r7, #4]
- 8002034:      685b            ldr     r3, [r3, #4]
- 8002036:      fbb2 f3f3       udiv    r3, r2, r3
- 800203a:      b29b            uxth    r3, r3
- 800203c:      61bb            str     r3, [r7, #24]
+ 800a1ce:      f7fe fed9       bl      8008f84 <HAL_RCC_GetPCLK2Freq>
+ 800a1d2:      4603            mov     r3, r0
+ 800a1d4:      005a            lsls    r2, r3, #1
+ 800a1d6:      687b            ldr     r3, [r7, #4]
+ 800a1d8:      685b            ldr     r3, [r3, #4]
+ 800a1da:      085b            lsrs    r3, r3, #1
+ 800a1dc:      441a            add     r2, r3
+ 800a1de:      687b            ldr     r3, [r7, #4]
+ 800a1e0:      685b            ldr     r3, [r3, #4]
+ 800a1e2:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a1e6:      b29b            uxth    r3, r3
+ 800a1e8:      61bb            str     r3, [r7, #24]
         break;
- 800203e:      e029            b.n     8002094 <UART_SetConfig+0x418>
+ 800a1ea:      e029            b.n     800a240 <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_HSI:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HSI_VALUE, huart->Init.BaudRate));
- 8002040:      687b            ldr     r3, [r7, #4]
- 8002042:      685b            ldr     r3, [r3, #4]
- 8002044:      085a            lsrs    r2, r3, #1
- 8002046:      4b5d            ldr     r3, [pc, #372]  ; (80021bc <UART_SetConfig+0x540>)
- 8002048:      4413            add     r3, r2
- 800204a:      687a            ldr     r2, [r7, #4]
- 800204c:      6852            ldr     r2, [r2, #4]
- 800204e:      fbb3 f3f2       udiv    r3, r3, r2
- 8002052:      b29b            uxth    r3, r3
- 8002054:      61bb            str     r3, [r7, #24]
+ 800a1ec:      687b            ldr     r3, [r7, #4]
+ 800a1ee:      685b            ldr     r3, [r3, #4]
+ 800a1f0:      085a            lsrs    r2, r3, #1
+ 800a1f2:      4b5d            ldr     r3, [pc, #372]  ; (800a368 <UART_SetConfig+0x540>)
+ 800a1f4:      4413            add     r3, r2
+ 800a1f6:      687a            ldr     r2, [r7, #4]
+ 800a1f8:      6852            ldr     r2, [r2, #4]
+ 800a1fa:      fbb3 f3f2       udiv    r3, r3, r2
+ 800a1fe:      b29b            uxth    r3, r3
+ 800a200:      61bb            str     r3, [r7, #24]
         break;
- 8002056:      e01d            b.n     8002094 <UART_SetConfig+0x418>
+ 800a202:      e01d            b.n     800a240 <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_SYSCLK:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
- 8002058:      f7ff f8b6       bl      80011c8 <HAL_RCC_GetSysClockFreq>
- 800205c:      4603            mov     r3, r0
- 800205e:      005a            lsls    r2, r3, #1
- 8002060:      687b            ldr     r3, [r7, #4]
- 8002062:      685b            ldr     r3, [r3, #4]
- 8002064:      085b            lsrs    r3, r3, #1
- 8002066:      441a            add     r2, r3
- 8002068:      687b            ldr     r3, [r7, #4]
- 800206a:      685b            ldr     r3, [r3, #4]
- 800206c:      fbb2 f3f3       udiv    r3, r2, r3
- 8002070:      b29b            uxth    r3, r3
- 8002072:      61bb            str     r3, [r7, #24]
+ 800a204:      f7fe fdec       bl      8008de0 <HAL_RCC_GetSysClockFreq>
+ 800a208:      4603            mov     r3, r0
+ 800a20a:      005a            lsls    r2, r3, #1
+ 800a20c:      687b            ldr     r3, [r7, #4]
+ 800a20e:      685b            ldr     r3, [r3, #4]
+ 800a210:      085b            lsrs    r3, r3, #1
+ 800a212:      441a            add     r2, r3
+ 800a214:      687b            ldr     r3, [r7, #4]
+ 800a216:      685b            ldr     r3, [r3, #4]
+ 800a218:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a21c:      b29b            uxth    r3, r3
+ 800a21e:      61bb            str     r3, [r7, #24]
         break;
- 8002074:      e00e            b.n     8002094 <UART_SetConfig+0x418>
+ 800a220:      e00e            b.n     800a240 <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_LSE:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(LSE_VALUE, huart->Init.BaudRate));
- 8002076:      687b            ldr     r3, [r7, #4]
- 8002078:      685b            ldr     r3, [r3, #4]
- 800207a:      085b            lsrs    r3, r3, #1
- 800207c:      f503 3280       add.w   r2, r3, #65536  ; 0x10000
- 8002080:      687b            ldr     r3, [r7, #4]
- 8002082:      685b            ldr     r3, [r3, #4]
- 8002084:      fbb2 f3f3       udiv    r3, r2, r3
- 8002088:      b29b            uxth    r3, r3
- 800208a:      61bb            str     r3, [r7, #24]
+ 800a222:      687b            ldr     r3, [r7, #4]
+ 800a224:      685b            ldr     r3, [r3, #4]
+ 800a226:      085b            lsrs    r3, r3, #1
+ 800a228:      f503 3280       add.w   r2, r3, #65536  ; 0x10000
+ 800a22c:      687b            ldr     r3, [r7, #4]
+ 800a22e:      685b            ldr     r3, [r3, #4]
+ 800a230:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a234:      b29b            uxth    r3, r3
+ 800a236:      61bb            str     r3, [r7, #24]
         break;
- 800208c:      e002            b.n     8002094 <UART_SetConfig+0x418>
+ 800a238:      e002            b.n     800a240 <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_UNDEFINED:
       default:
         ret = HAL_ERROR;
- 800208e:      2301            movs    r3, #1
- 8002090:      75fb            strb    r3, [r7, #23]
+ 800a23a:      2301            movs    r3, #1
+ 800a23c:      75fb            strb    r3, [r7, #23]
         break;
- 8002092:      bf00            nop
+ 800a23e:      bf00            nop
     }
 
     /* USARTDIV must be greater than or equal to 0d16 */
     if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
- 8002094:      69bb            ldr     r3, [r7, #24]
- 8002096:      2b0f            cmp     r3, #15
- 8002098:      d916            bls.n   80020c8 <UART_SetConfig+0x44c>
- 800209a:      69bb            ldr     r3, [r7, #24]
- 800209c:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
- 80020a0:      d212            bcs.n   80020c8 <UART_SetConfig+0x44c>
+ 800a240:      69bb            ldr     r3, [r7, #24]
+ 800a242:      2b0f            cmp     r3, #15
+ 800a244:      d916            bls.n   800a274 <UART_SetConfig+0x44c>
+ 800a246:      69bb            ldr     r3, [r7, #24]
+ 800a248:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
+ 800a24c:      d212            bcs.n   800a274 <UART_SetConfig+0x44c>
     {
       brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
- 80020a2:      69bb            ldr     r3, [r7, #24]
- 80020a4:      b29b            uxth    r3, r3
- 80020a6:      f023 030f       bic.w   r3, r3, #15
- 80020aa:      81fb            strh    r3, [r7, #14]
+ 800a24e:      69bb            ldr     r3, [r7, #24]
+ 800a250:      b29b            uxth    r3, r3
+ 800a252:      f023 030f       bic.w   r3, r3, #15
+ 800a256:      81fb            strh    r3, [r7, #14]
       brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
- 80020ac:      69bb            ldr     r3, [r7, #24]
- 80020ae:      085b            lsrs    r3, r3, #1
- 80020b0:      b29b            uxth    r3, r3
- 80020b2:      f003 0307       and.w   r3, r3, #7
- 80020b6:      b29a            uxth    r2, r3
- 80020b8:      89fb            ldrh    r3, [r7, #14]
- 80020ba:      4313            orrs    r3, r2
- 80020bc:      81fb            strh    r3, [r7, #14]
+ 800a258:      69bb            ldr     r3, [r7, #24]
+ 800a25a:      085b            lsrs    r3, r3, #1
+ 800a25c:      b29b            uxth    r3, r3
+ 800a25e:      f003 0307       and.w   r3, r3, #7
+ 800a262:      b29a            uxth    r2, r3
+ 800a264:      89fb            ldrh    r3, [r7, #14]
+ 800a266:      4313            orrs    r3, r2
+ 800a268:      81fb            strh    r3, [r7, #14]
       huart->Instance->BRR = brrtemp;
- 80020be:      687b            ldr     r3, [r7, #4]
- 80020c0:      681b            ldr     r3, [r3, #0]
- 80020c2:      89fa            ldrh    r2, [r7, #14]
- 80020c4:      60da            str     r2, [r3, #12]
- 80020c6:      e06e            b.n     80021a6 <UART_SetConfig+0x52a>
+ 800a26a:      687b            ldr     r3, [r7, #4]
+ 800a26c:      681b            ldr     r3, [r3, #0]
+ 800a26e:      89fa            ldrh    r2, [r7, #14]
+ 800a270:      60da            str     r2, [r3, #12]
+ 800a272:      e06e            b.n     800a352 <UART_SetConfig+0x52a>
     }
     else
     {
       ret = HAL_ERROR;
- 80020c8:      2301            movs    r3, #1
- 80020ca:      75fb            strb    r3, [r7, #23]
- 80020cc:      e06b            b.n     80021a6 <UART_SetConfig+0x52a>
+ 800a274:      2301            movs    r3, #1
+ 800a276:      75fb            strb    r3, [r7, #23]
+ 800a278:      e06b            b.n     800a352 <UART_SetConfig+0x52a>
     }
   }
   else
   {
     switch (clocksource)
- 80020ce:      7ffb            ldrb    r3, [r7, #31]
- 80020d0:      2b08            cmp     r3, #8
- 80020d2:      d857            bhi.n   8002184 <UART_SetConfig+0x508>
- 80020d4:      a201            add     r2, pc, #4      ; (adr r2, 80020dc <UART_SetConfig+0x460>)
- 80020d6:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 80020da:      bf00            nop
- 80020dc:      08002101        .word   0x08002101
- 80020e0:      0800211d        .word   0x0800211d
- 80020e4:      08002139        .word   0x08002139
- 80020e8:      08002185        .word   0x08002185
- 80020ec:      08002151        .word   0x08002151
- 80020f0:      08002185        .word   0x08002185
- 80020f4:      08002185        .word   0x08002185
- 80020f8:      08002185        .word   0x08002185
- 80020fc:      0800216d        .word   0x0800216d
+ 800a27a:      7ffb            ldrb    r3, [r7, #31]
+ 800a27c:      2b08            cmp     r3, #8
+ 800a27e:      d857            bhi.n   800a330 <UART_SetConfig+0x508>
+ 800a280:      a201            add     r2, pc, #4      ; (adr r2, 800a288 <UART_SetConfig+0x460>)
+ 800a282:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 800a286:      bf00            nop
+ 800a288:      0800a2ad        .word   0x0800a2ad
+ 800a28c:      0800a2c9        .word   0x0800a2c9
+ 800a290:      0800a2e5        .word   0x0800a2e5
+ 800a294:      0800a331        .word   0x0800a331
+ 800a298:      0800a2fd        .word   0x0800a2fd
+ 800a29c:      0800a331        .word   0x0800a331
+ 800a2a0:      0800a331        .word   0x0800a331
+ 800a2a4:      0800a331        .word   0x0800a331
+ 800a2a8:      0800a319        .word   0x0800a319
     {
       case UART_CLOCKSOURCE_PCLK1:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
- 8002100:      f7ff f920       bl      8001344 <HAL_RCC_GetPCLK1Freq>
- 8002104:      4602            mov     r2, r0
- 8002106:      687b            ldr     r3, [r7, #4]
- 8002108:      685b            ldr     r3, [r3, #4]
- 800210a:      085b            lsrs    r3, r3, #1
- 800210c:      441a            add     r2, r3
- 800210e:      687b            ldr     r3, [r7, #4]
- 8002110:      685b            ldr     r3, [r3, #4]
- 8002112:      fbb2 f3f3       udiv    r3, r2, r3
- 8002116:      b29b            uxth    r3, r3
- 8002118:      61bb            str     r3, [r7, #24]
+ 800a2ac:      f7fe fe56       bl      8008f5c <HAL_RCC_GetPCLK1Freq>
+ 800a2b0:      4602            mov     r2, r0
+ 800a2b2:      687b            ldr     r3, [r7, #4]
+ 800a2b4:      685b            ldr     r3, [r3, #4]
+ 800a2b6:      085b            lsrs    r3, r3, #1
+ 800a2b8:      441a            add     r2, r3
+ 800a2ba:      687b            ldr     r3, [r7, #4]
+ 800a2bc:      685b            ldr     r3, [r3, #4]
+ 800a2be:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a2c2:      b29b            uxth    r3, r3
+ 800a2c4:      61bb            str     r3, [r7, #24]
         break;
- 800211a:      e036            b.n     800218a <UART_SetConfig+0x50e>
+ 800a2c6:      e036            b.n     800a336 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_PCLK2:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
- 800211c:      f7ff f926       bl      800136c <HAL_RCC_GetPCLK2Freq>
- 8002120:      4602            mov     r2, r0
- 8002122:      687b            ldr     r3, [r7, #4]
- 8002124:      685b            ldr     r3, [r3, #4]
- 8002126:      085b            lsrs    r3, r3, #1
- 8002128:      441a            add     r2, r3
- 800212a:      687b            ldr     r3, [r7, #4]
- 800212c:      685b            ldr     r3, [r3, #4]
- 800212e:      fbb2 f3f3       udiv    r3, r2, r3
- 8002132:      b29b            uxth    r3, r3
- 8002134:      61bb            str     r3, [r7, #24]
+ 800a2c8:      f7fe fe5c       bl      8008f84 <HAL_RCC_GetPCLK2Freq>
+ 800a2cc:      4602            mov     r2, r0
+ 800a2ce:      687b            ldr     r3, [r7, #4]
+ 800a2d0:      685b            ldr     r3, [r3, #4]
+ 800a2d2:      085b            lsrs    r3, r3, #1
+ 800a2d4:      441a            add     r2, r3
+ 800a2d6:      687b            ldr     r3, [r7, #4]
+ 800a2d8:      685b            ldr     r3, [r3, #4]
+ 800a2da:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a2de:      b29b            uxth    r3, r3
+ 800a2e0:      61bb            str     r3, [r7, #24]
         break;
- 8002136:      e028            b.n     800218a <UART_SetConfig+0x50e>
+ 800a2e2:      e028            b.n     800a336 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_HSI:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HSI_VALUE, huart->Init.BaudRate));
- 8002138:      687b            ldr     r3, [r7, #4]
- 800213a:      685b            ldr     r3, [r3, #4]
- 800213c:      085a            lsrs    r2, r3, #1
- 800213e:      4b20            ldr     r3, [pc, #128]  ; (80021c0 <UART_SetConfig+0x544>)
- 8002140:      4413            add     r3, r2
- 8002142:      687a            ldr     r2, [r7, #4]
- 8002144:      6852            ldr     r2, [r2, #4]
- 8002146:      fbb3 f3f2       udiv    r3, r3, r2
- 800214a:      b29b            uxth    r3, r3
- 800214c:      61bb            str     r3, [r7, #24]
+ 800a2e4:      687b            ldr     r3, [r7, #4]
+ 800a2e6:      685b            ldr     r3, [r3, #4]
+ 800a2e8:      085a            lsrs    r2, r3, #1
+ 800a2ea:      4b20            ldr     r3, [pc, #128]  ; (800a36c <UART_SetConfig+0x544>)
+ 800a2ec:      4413            add     r3, r2
+ 800a2ee:      687a            ldr     r2, [r7, #4]
+ 800a2f0:      6852            ldr     r2, [r2, #4]
+ 800a2f2:      fbb3 f3f2       udiv    r3, r3, r2
+ 800a2f6:      b29b            uxth    r3, r3
+ 800a2f8:      61bb            str     r3, [r7, #24]
         break;
- 800214e:      e01c            b.n     800218a <UART_SetConfig+0x50e>
+ 800a2fa:      e01c            b.n     800a336 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_SYSCLK:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
- 8002150:      f7ff f83a       bl      80011c8 <HAL_RCC_GetSysClockFreq>
- 8002154:      4602            mov     r2, r0
- 8002156:      687b            ldr     r3, [r7, #4]
- 8002158:      685b            ldr     r3, [r3, #4]
- 800215a:      085b            lsrs    r3, r3, #1
- 800215c:      441a            add     r2, r3
- 800215e:      687b            ldr     r3, [r7, #4]
- 8002160:      685b            ldr     r3, [r3, #4]
- 8002162:      fbb2 f3f3       udiv    r3, r2, r3
- 8002166:      b29b            uxth    r3, r3
- 8002168:      61bb            str     r3, [r7, #24]
+ 800a2fc:      f7fe fd70       bl      8008de0 <HAL_RCC_GetSysClockFreq>
+ 800a300:      4602            mov     r2, r0
+ 800a302:      687b            ldr     r3, [r7, #4]
+ 800a304:      685b            ldr     r3, [r3, #4]
+ 800a306:      085b            lsrs    r3, r3, #1
+ 800a308:      441a            add     r2, r3
+ 800a30a:      687b            ldr     r3, [r7, #4]
+ 800a30c:      685b            ldr     r3, [r3, #4]
+ 800a30e:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a312:      b29b            uxth    r3, r3
+ 800a314:      61bb            str     r3, [r7, #24]
         break;
- 800216a:      e00e            b.n     800218a <UART_SetConfig+0x50e>
+ 800a316:      e00e            b.n     800a336 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_LSE:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(LSE_VALUE, huart->Init.BaudRate));
- 800216c:      687b            ldr     r3, [r7, #4]
- 800216e:      685b            ldr     r3, [r3, #4]
- 8002170:      085b            lsrs    r3, r3, #1
- 8002172:      f503 4200       add.w   r2, r3, #32768  ; 0x8000
- 8002176:      687b            ldr     r3, [r7, #4]
- 8002178:      685b            ldr     r3, [r3, #4]
- 800217a:      fbb2 f3f3       udiv    r3, r2, r3
- 800217e:      b29b            uxth    r3, r3
- 8002180:      61bb            str     r3, [r7, #24]
+ 800a318:      687b            ldr     r3, [r7, #4]
+ 800a31a:      685b            ldr     r3, [r3, #4]
+ 800a31c:      085b            lsrs    r3, r3, #1
+ 800a31e:      f503 4200       add.w   r2, r3, #32768  ; 0x8000
+ 800a322:      687b            ldr     r3, [r7, #4]
+ 800a324:      685b            ldr     r3, [r3, #4]
+ 800a326:      fbb2 f3f3       udiv    r3, r2, r3
+ 800a32a:      b29b            uxth    r3, r3
+ 800a32c:      61bb            str     r3, [r7, #24]
         break;
- 8002182:      e002            b.n     800218a <UART_SetConfig+0x50e>
+ 800a32e:      e002            b.n     800a336 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_UNDEFINED:
       default:
         ret = HAL_ERROR;
- 8002184:      2301            movs    r3, #1
- 8002186:      75fb            strb    r3, [r7, #23]
+ 800a330:      2301            movs    r3, #1
+ 800a332:      75fb            strb    r3, [r7, #23]
         break;
- 8002188:      bf00            nop
+ 800a334:      bf00            nop
     }
 
     /* USARTDIV must be greater than or equal to 0d16 */
     if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
- 800218a:      69bb            ldr     r3, [r7, #24]
- 800218c:      2b0f            cmp     r3, #15
- 800218e:      d908            bls.n   80021a2 <UART_SetConfig+0x526>
- 8002190:      69bb            ldr     r3, [r7, #24]
- 8002192:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
- 8002196:      d204            bcs.n   80021a2 <UART_SetConfig+0x526>
+ 800a336:      69bb            ldr     r3, [r7, #24]
+ 800a338:      2b0f            cmp     r3, #15
+ 800a33a:      d908            bls.n   800a34e <UART_SetConfig+0x526>
+ 800a33c:      69bb            ldr     r3, [r7, #24]
+ 800a33e:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
+ 800a342:      d204            bcs.n   800a34e <UART_SetConfig+0x526>
     {
       huart->Instance->BRR = usartdiv;
- 8002198:      687b            ldr     r3, [r7, #4]
- 800219a:      681b            ldr     r3, [r3, #0]
- 800219c:      69ba            ldr     r2, [r7, #24]
- 800219e:      60da            str     r2, [r3, #12]
- 80021a0:      e001            b.n     80021a6 <UART_SetConfig+0x52a>
+ 800a344:      687b            ldr     r3, [r7, #4]
+ 800a346:      681b            ldr     r3, [r3, #0]
+ 800a348:      69ba            ldr     r2, [r7, #24]
+ 800a34a:      60da            str     r2, [r3, #12]
+ 800a34c:      e001            b.n     800a352 <UART_SetConfig+0x52a>
     }
     else
     {
       ret = HAL_ERROR;
- 80021a2:      2301            movs    r3, #1
- 80021a4:      75fb            strb    r3, [r7, #23]
+ 800a34e:      2301            movs    r3, #1
+ 800a350:      75fb            strb    r3, [r7, #23]
     }
   }
 
 
   /* Clear ISR function pointers */
   huart->RxISR = NULL;
- 80021a6:      687b            ldr     r3, [r7, #4]
- 80021a8:      2200            movs    r2, #0
- 80021aa:      661a            str     r2, [r3, #96]   ; 0x60
+ 800a352:      687b            ldr     r3, [r7, #4]
+ 800a354:      2200            movs    r2, #0
+ 800a356:      661a            str     r2, [r3, #96]   ; 0x60
   huart->TxISR = NULL;
- 80021ac:      687b            ldr     r3, [r7, #4]
- 80021ae:      2200            movs    r2, #0
- 80021b0:      665a            str     r2, [r3, #100]  ; 0x64
+ 800a358:      687b            ldr     r3, [r7, #4]
+ 800a35a:      2200            movs    r2, #0
+ 800a35c:      665a            str     r2, [r3, #100]  ; 0x64
 
   return ret;
- 80021b2:      7dfb            ldrb    r3, [r7, #23]
+ 800a35e:      7dfb            ldrb    r3, [r7, #23]
 }
- 80021b4:      4618            mov     r0, r3
- 80021b6:      3720            adds    r7, #32
- 80021b8:      46bd            mov     sp, r7
- 80021ba:      bd80            pop     {r7, pc}
- 80021bc:      01e84800        .word   0x01e84800
- 80021c0:      00f42400        .word   0x00f42400
-
-080021c4 <UART_AdvFeatureConfig>:
+ 800a360:      4618            mov     r0, r3
+ 800a362:      3720            adds    r7, #32
+ 800a364:      46bd            mov     sp, r7
+ 800a366:      bd80            pop     {r7, pc}
+ 800a368:      01e84800        .word   0x01e84800
+ 800a36c:      00f42400        .word   0x00f42400
+
+0800a370 <UART_AdvFeatureConfig>:
   * @brief Configure the UART peripheral advanced features.
   * @param huart UART handle.
   * @retval None
   */
 void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
 {
- 80021c4:      b480            push    {r7}
- 80021c6:      b083            sub     sp, #12
- 80021c8:      af00            add     r7, sp, #0
- 80021ca:      6078            str     r0, [r7, #4]
+ 800a370:      b480            push    {r7}
+ 800a372:      b083            sub     sp, #12
+ 800a374:      af00            add     r7, sp, #0
+ 800a376:      6078            str     r0, [r7, #4]
   /* Check whether the set of advanced features to configure is properly set */
   assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit));
 
   /* if required, configure TX pin active level inversion */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))
- 80021cc:      687b            ldr     r3, [r7, #4]
- 80021ce:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 80021d0:      f003 0301       and.w   r3, r3, #1
- 80021d4:      2b00            cmp     r3, #0
- 80021d6:      d00a            beq.n   80021ee <UART_AdvFeatureConfig+0x2a>
+ 800a378:      687b            ldr     r3, [r7, #4]
+ 800a37a:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a37c:      f003 0301       and.w   r3, r3, #1
+ 800a380:      2b00            cmp     r3, #0
+ 800a382:      d00a            beq.n   800a39a <UART_AdvFeatureConfig+0x2a>
   {
     assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);
- 80021d8:      687b            ldr     r3, [r7, #4]
- 80021da:      681b            ldr     r3, [r3, #0]
- 80021dc:      685b            ldr     r3, [r3, #4]
- 80021de:      f423 3100       bic.w   r1, r3, #131072 ; 0x20000
- 80021e2:      687b            ldr     r3, [r7, #4]
- 80021e4:      6a9a            ldr     r2, [r3, #40]   ; 0x28
- 80021e6:      687b            ldr     r3, [r7, #4]
- 80021e8:      681b            ldr     r3, [r3, #0]
- 80021ea:      430a            orrs    r2, r1
- 80021ec:      605a            str     r2, [r3, #4]
+ 800a384:      687b            ldr     r3, [r7, #4]
+ 800a386:      681b            ldr     r3, [r3, #0]
+ 800a388:      685b            ldr     r3, [r3, #4]
+ 800a38a:      f423 3100       bic.w   r1, r3, #131072 ; 0x20000
+ 800a38e:      687b            ldr     r3, [r7, #4]
+ 800a390:      6a9a            ldr     r2, [r3, #40]   ; 0x28
+ 800a392:      687b            ldr     r3, [r7, #4]
+ 800a394:      681b            ldr     r3, [r3, #0]
+ 800a396:      430a            orrs    r2, r1
+ 800a398:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure RX pin active level inversion */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))
- 80021ee:      687b            ldr     r3, [r7, #4]
- 80021f0:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 80021f2:      f003 0302       and.w   r3, r3, #2
- 80021f6:      2b00            cmp     r3, #0
- 80021f8:      d00a            beq.n   8002210 <UART_AdvFeatureConfig+0x4c>
+ 800a39a:      687b            ldr     r3, [r7, #4]
+ 800a39c:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a39e:      f003 0302       and.w   r3, r3, #2
+ 800a3a2:      2b00            cmp     r3, #0
+ 800a3a4:      d00a            beq.n   800a3bc <UART_AdvFeatureConfig+0x4c>
   {
     assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);
- 80021fa:      687b            ldr     r3, [r7, #4]
- 80021fc:      681b            ldr     r3, [r3, #0]
- 80021fe:      685b            ldr     r3, [r3, #4]
- 8002200:      f423 3180       bic.w   r1, r3, #65536  ; 0x10000
- 8002204:      687b            ldr     r3, [r7, #4]
- 8002206:      6ada            ldr     r2, [r3, #44]   ; 0x2c
- 8002208:      687b            ldr     r3, [r7, #4]
- 800220a:      681b            ldr     r3, [r3, #0]
- 800220c:      430a            orrs    r2, r1
- 800220e:      605a            str     r2, [r3, #4]
+ 800a3a6:      687b            ldr     r3, [r7, #4]
+ 800a3a8:      681b            ldr     r3, [r3, #0]
+ 800a3aa:      685b            ldr     r3, [r3, #4]
+ 800a3ac:      f423 3180       bic.w   r1, r3, #65536  ; 0x10000
+ 800a3b0:      687b            ldr     r3, [r7, #4]
+ 800a3b2:      6ada            ldr     r2, [r3, #44]   ; 0x2c
+ 800a3b4:      687b            ldr     r3, [r7, #4]
+ 800a3b6:      681b            ldr     r3, [r3, #0]
+ 800a3b8:      430a            orrs    r2, r1
+ 800a3ba:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure data inversion */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))
- 8002210:      687b            ldr     r3, [r7, #4]
- 8002212:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002214:      f003 0304       and.w   r3, r3, #4
- 8002218:      2b00            cmp     r3, #0
- 800221a:      d00a            beq.n   8002232 <UART_AdvFeatureConfig+0x6e>
+ 800a3bc:      687b            ldr     r3, [r7, #4]
+ 800a3be:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a3c0:      f003 0304       and.w   r3, r3, #4
+ 800a3c4:      2b00            cmp     r3, #0
+ 800a3c6:      d00a            beq.n   800a3de <UART_AdvFeatureConfig+0x6e>
   {
     assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);
- 800221c:      687b            ldr     r3, [r7, #4]
- 800221e:      681b            ldr     r3, [r3, #0]
- 8002220:      685b            ldr     r3, [r3, #4]
- 8002222:      f423 2180       bic.w   r1, r3, #262144 ; 0x40000
- 8002226:      687b            ldr     r3, [r7, #4]
- 8002228:      6b1a            ldr     r2, [r3, #48]   ; 0x30
- 800222a:      687b            ldr     r3, [r7, #4]
- 800222c:      681b            ldr     r3, [r3, #0]
- 800222e:      430a            orrs    r2, r1
- 8002230:      605a            str     r2, [r3, #4]
+ 800a3c8:      687b            ldr     r3, [r7, #4]
+ 800a3ca:      681b            ldr     r3, [r3, #0]
+ 800a3cc:      685b            ldr     r3, [r3, #4]
+ 800a3ce:      f423 2180       bic.w   r1, r3, #262144 ; 0x40000
+ 800a3d2:      687b            ldr     r3, [r7, #4]
+ 800a3d4:      6b1a            ldr     r2, [r3, #48]   ; 0x30
+ 800a3d6:      687b            ldr     r3, [r7, #4]
+ 800a3d8:      681b            ldr     r3, [r3, #0]
+ 800a3da:      430a            orrs    r2, r1
+ 800a3dc:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure RX/TX pins swap */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))
- 8002232:      687b            ldr     r3, [r7, #4]
- 8002234:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002236:      f003 0308       and.w   r3, r3, #8
- 800223a:      2b00            cmp     r3, #0
- 800223c:      d00a            beq.n   8002254 <UART_AdvFeatureConfig+0x90>
+ 800a3de:      687b            ldr     r3, [r7, #4]
+ 800a3e0:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a3e2:      f003 0308       and.w   r3, r3, #8
+ 800a3e6:      2b00            cmp     r3, #0
+ 800a3e8:      d00a            beq.n   800a400 <UART_AdvFeatureConfig+0x90>
   {
     assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);
- 800223e:      687b            ldr     r3, [r7, #4]
- 8002240:      681b            ldr     r3, [r3, #0]
- 8002242:      685b            ldr     r3, [r3, #4]
- 8002244:      f423 4100       bic.w   r1, r3, #32768  ; 0x8000
- 8002248:      687b            ldr     r3, [r7, #4]
- 800224a:      6b5a            ldr     r2, [r3, #52]   ; 0x34
- 800224c:      687b            ldr     r3, [r7, #4]
- 800224e:      681b            ldr     r3, [r3, #0]
- 8002250:      430a            orrs    r2, r1
- 8002252:      605a            str     r2, [r3, #4]
+ 800a3ea:      687b            ldr     r3, [r7, #4]
+ 800a3ec:      681b            ldr     r3, [r3, #0]
+ 800a3ee:      685b            ldr     r3, [r3, #4]
+ 800a3f0:      f423 4100       bic.w   r1, r3, #32768  ; 0x8000
+ 800a3f4:      687b            ldr     r3, [r7, #4]
+ 800a3f6:      6b5a            ldr     r2, [r3, #52]   ; 0x34
+ 800a3f8:      687b            ldr     r3, [r7, #4]
+ 800a3fa:      681b            ldr     r3, [r3, #0]
+ 800a3fc:      430a            orrs    r2, r1
+ 800a3fe:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure RX overrun detection disabling */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))
- 8002254:      687b            ldr     r3, [r7, #4]
- 8002256:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002258:      f003 0310       and.w   r3, r3, #16
- 800225c:      2b00            cmp     r3, #0
- 800225e:      d00a            beq.n   8002276 <UART_AdvFeatureConfig+0xb2>
+ 800a400:      687b            ldr     r3, [r7, #4]
+ 800a402:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a404:      f003 0310       and.w   r3, r3, #16
+ 800a408:      2b00            cmp     r3, #0
+ 800a40a:      d00a            beq.n   800a422 <UART_AdvFeatureConfig+0xb2>
   {
     assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable));
     MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);
- 8002260:      687b            ldr     r3, [r7, #4]
- 8002262:      681b            ldr     r3, [r3, #0]
- 8002264:      689b            ldr     r3, [r3, #8]
- 8002266:      f423 5180       bic.w   r1, r3, #4096   ; 0x1000
- 800226a:      687b            ldr     r3, [r7, #4]
- 800226c:      6b9a            ldr     r2, [r3, #56]   ; 0x38
- 800226e:      687b            ldr     r3, [r7, #4]
- 8002270:      681b            ldr     r3, [r3, #0]
- 8002272:      430a            orrs    r2, r1
- 8002274:      609a            str     r2, [r3, #8]
+ 800a40c:      687b            ldr     r3, [r7, #4]
+ 800a40e:      681b            ldr     r3, [r3, #0]
+ 800a410:      689b            ldr     r3, [r3, #8]
+ 800a412:      f423 5180       bic.w   r1, r3, #4096   ; 0x1000
+ 800a416:      687b            ldr     r3, [r7, #4]
+ 800a418:      6b9a            ldr     r2, [r3, #56]   ; 0x38
+ 800a41a:      687b            ldr     r3, [r7, #4]
+ 800a41c:      681b            ldr     r3, [r3, #0]
+ 800a41e:      430a            orrs    r2, r1
+ 800a420:      609a            str     r2, [r3, #8]
   }
 
   /* if required, configure DMA disabling on reception error */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))
- 8002276:      687b            ldr     r3, [r7, #4]
- 8002278:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 800227a:      f003 0320       and.w   r3, r3, #32
- 800227e:      2b00            cmp     r3, #0
- 8002280:      d00a            beq.n   8002298 <UART_AdvFeatureConfig+0xd4>
+ 800a422:      687b            ldr     r3, [r7, #4]
+ 800a424:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a426:      f003 0320       and.w   r3, r3, #32
+ 800a42a:      2b00            cmp     r3, #0
+ 800a42c:      d00a            beq.n   800a444 <UART_AdvFeatureConfig+0xd4>
   {
     assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError));
     MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);
- 8002282:      687b            ldr     r3, [r7, #4]
- 8002284:      681b            ldr     r3, [r3, #0]
- 8002286:      689b            ldr     r3, [r3, #8]
- 8002288:      f423 5100       bic.w   r1, r3, #8192   ; 0x2000
- 800228c:      687b            ldr     r3, [r7, #4]
- 800228e:      6bda            ldr     r2, [r3, #60]   ; 0x3c
- 8002290:      687b            ldr     r3, [r7, #4]
- 8002292:      681b            ldr     r3, [r3, #0]
- 8002294:      430a            orrs    r2, r1
- 8002296:      609a            str     r2, [r3, #8]
+ 800a42e:      687b            ldr     r3, [r7, #4]
+ 800a430:      681b            ldr     r3, [r3, #0]
+ 800a432:      689b            ldr     r3, [r3, #8]
+ 800a434:      f423 5100       bic.w   r1, r3, #8192   ; 0x2000
+ 800a438:      687b            ldr     r3, [r7, #4]
+ 800a43a:      6bda            ldr     r2, [r3, #60]   ; 0x3c
+ 800a43c:      687b            ldr     r3, [r7, #4]
+ 800a43e:      681b            ldr     r3, [r3, #0]
+ 800a440:      430a            orrs    r2, r1
+ 800a442:      609a            str     r2, [r3, #8]
   }
 
   /* if required, configure auto Baud rate detection scheme */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))
- 8002298:      687b            ldr     r3, [r7, #4]
- 800229a:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 800229c:      f003 0340       and.w   r3, r3, #64     ; 0x40
- 80022a0:      2b00            cmp     r3, #0
- 80022a2:      d01a            beq.n   80022da <UART_AdvFeatureConfig+0x116>
+ 800a444:      687b            ldr     r3, [r7, #4]
+ 800a446:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a448:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 800a44c:      2b00            cmp     r3, #0
+ 800a44e:      d01a            beq.n   800a486 <UART_AdvFeatureConfig+0x116>
   {
     assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance));
     assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);
- 80022a4:      687b            ldr     r3, [r7, #4]
- 80022a6:      681b            ldr     r3, [r3, #0]
- 80022a8:      685b            ldr     r3, [r3, #4]
- 80022aa:      f423 1180       bic.w   r1, r3, #1048576        ; 0x100000
- 80022ae:      687b            ldr     r3, [r7, #4]
- 80022b0:      6c1a            ldr     r2, [r3, #64]   ; 0x40
- 80022b2:      687b            ldr     r3, [r7, #4]
- 80022b4:      681b            ldr     r3, [r3, #0]
- 80022b6:      430a            orrs    r2, r1
- 80022b8:      605a            str     r2, [r3, #4]
+ 800a450:      687b            ldr     r3, [r7, #4]
+ 800a452:      681b            ldr     r3, [r3, #0]
+ 800a454:      685b            ldr     r3, [r3, #4]
+ 800a456:      f423 1180       bic.w   r1, r3, #1048576        ; 0x100000
+ 800a45a:      687b            ldr     r3, [r7, #4]
+ 800a45c:      6c1a            ldr     r2, [r3, #64]   ; 0x40
+ 800a45e:      687b            ldr     r3, [r7, #4]
+ 800a460:      681b            ldr     r3, [r3, #0]
+ 800a462:      430a            orrs    r2, r1
+ 800a464:      605a            str     r2, [r3, #4]
     /* set auto Baudrate detection parameters if detection is enabled */
     if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)
- 80022ba:      687b            ldr     r3, [r7, #4]
- 80022bc:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 80022be:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
- 80022c2:      d10a            bne.n   80022da <UART_AdvFeatureConfig+0x116>
+ 800a466:      687b            ldr     r3, [r7, #4]
+ 800a468:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800a46a:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
+ 800a46e:      d10a            bne.n   800a486 <UART_AdvFeatureConfig+0x116>
     {
       assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode));
       MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);
- 80022c4:      687b            ldr     r3, [r7, #4]
- 80022c6:      681b            ldr     r3, [r3, #0]
- 80022c8:      685b            ldr     r3, [r3, #4]
- 80022ca:      f423 01c0       bic.w   r1, r3, #6291456        ; 0x600000
- 80022ce:      687b            ldr     r3, [r7, #4]
- 80022d0:      6c5a            ldr     r2, [r3, #68]   ; 0x44
- 80022d2:      687b            ldr     r3, [r7, #4]
- 80022d4:      681b            ldr     r3, [r3, #0]
- 80022d6:      430a            orrs    r2, r1
- 80022d8:      605a            str     r2, [r3, #4]
+ 800a470:      687b            ldr     r3, [r7, #4]
+ 800a472:      681b            ldr     r3, [r3, #0]
+ 800a474:      685b            ldr     r3, [r3, #4]
+ 800a476:      f423 01c0       bic.w   r1, r3, #6291456        ; 0x600000
+ 800a47a:      687b            ldr     r3, [r7, #4]
+ 800a47c:      6c5a            ldr     r2, [r3, #68]   ; 0x44
+ 800a47e:      687b            ldr     r3, [r7, #4]
+ 800a480:      681b            ldr     r3, [r3, #0]
+ 800a482:      430a            orrs    r2, r1
+ 800a484:      605a            str     r2, [r3, #4]
     }
   }
 
   /* if required, configure MSB first on communication line */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))
- 80022da:      687b            ldr     r3, [r7, #4]
- 80022dc:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 80022de:      f003 0380       and.w   r3, r3, #128    ; 0x80
- 80022e2:      2b00            cmp     r3, #0
- 80022e4:      d00a            beq.n   80022fc <UART_AdvFeatureConfig+0x138>
+ 800a486:      687b            ldr     r3, [r7, #4]
+ 800a488:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800a48a:      f003 0380       and.w   r3, r3, #128    ; 0x80
+ 800a48e:      2b00            cmp     r3, #0
+ 800a490:      d00a            beq.n   800a4a8 <UART_AdvFeatureConfig+0x138>
   {
     assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);
- 80022e6:      687b            ldr     r3, [r7, #4]
- 80022e8:      681b            ldr     r3, [r3, #0]
- 80022ea:      685b            ldr     r3, [r3, #4]
- 80022ec:      f423 2100       bic.w   r1, r3, #524288 ; 0x80000
- 80022f0:      687b            ldr     r3, [r7, #4]
- 80022f2:      6c9a            ldr     r2, [r3, #72]   ; 0x48
- 80022f4:      687b            ldr     r3, [r7, #4]
- 80022f6:      681b            ldr     r3, [r3, #0]
- 80022f8:      430a            orrs    r2, r1
- 80022fa:      605a            str     r2, [r3, #4]
+ 800a492:      687b            ldr     r3, [r7, #4]
+ 800a494:      681b            ldr     r3, [r3, #0]
+ 800a496:      685b            ldr     r3, [r3, #4]
+ 800a498:      f423 2100       bic.w   r1, r3, #524288 ; 0x80000
+ 800a49c:      687b            ldr     r3, [r7, #4]
+ 800a49e:      6c9a            ldr     r2, [r3, #72]   ; 0x48
+ 800a4a0:      687b            ldr     r3, [r7, #4]
+ 800a4a2:      681b            ldr     r3, [r3, #0]
+ 800a4a4:      430a            orrs    r2, r1
+ 800a4a6:      605a            str     r2, [r3, #4]
   }
 }
- 80022fc:      bf00            nop
- 80022fe:      370c            adds    r7, #12
- 8002300:      46bd            mov     sp, r7
- 8002302:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002306:      4770            bx      lr
+ 800a4a8:      bf00            nop
+ 800a4aa:      370c            adds    r7, #12
+ 800a4ac:      46bd            mov     sp, r7
+ 800a4ae:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a4b2:      4770            bx      lr
 
-08002308 <UART_CheckIdleState>:
+0800a4b4 <UART_CheckIdleState>:
   * @brief Check the UART Idle State.
   * @param huart UART handle.
   * @retval HAL status
   */
 HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
 {
- 8002308:      b580            push    {r7, lr}
- 800230a:      b086            sub     sp, #24
- 800230c:      af02            add     r7, sp, #8
- 800230e:      6078            str     r0, [r7, #4]
+ 800a4b4:      b580            push    {r7, lr}
+ 800a4b6:      b086            sub     sp, #24
+ 800a4b8:      af02            add     r7, sp, #8
+ 800a4ba:      6078            str     r0, [r7, #4]
   uint32_t tickstart;
 
   /* Initialize the UART ErrorCode */
   huart->ErrorCode = HAL_UART_ERROR_NONE;
- 8002310:      687b            ldr     r3, [r7, #4]
- 8002312:      2200            movs    r2, #0
- 8002314:      67da            str     r2, [r3, #124]  ; 0x7c
+ 800a4bc:      687b            ldr     r3, [r7, #4]
+ 800a4be:      2200            movs    r2, #0
+ 800a4c0:      67da            str     r2, [r3, #124]  ; 0x7c
 
   /* Init tickstart for timeout managment*/
   tickstart = HAL_GetTick();
- 8002316:      f7fe f961       bl      80005dc <HAL_GetTick>
- 800231a:      60f8            str     r0, [r7, #12]
+ 800a4c2:      f7fd fde7       bl      8008094 <HAL_GetTick>
+ 800a4c6:      60f8            str     r0, [r7, #12]
 
   /* Check if the Transmitter is enabled */
   if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
- 800231c:      687b            ldr     r3, [r7, #4]
- 800231e:      681b            ldr     r3, [r3, #0]
- 8002320:      681b            ldr     r3, [r3, #0]
- 8002322:      f003 0308       and.w   r3, r3, #8
- 8002326:      2b08            cmp     r3, #8
- 8002328:      d10e            bne.n   8002348 <UART_CheckIdleState+0x40>
+ 800a4c8:      687b            ldr     r3, [r7, #4]
+ 800a4ca:      681b            ldr     r3, [r3, #0]
+ 800a4cc:      681b            ldr     r3, [r3, #0]
+ 800a4ce:      f003 0308       and.w   r3, r3, #8
+ 800a4d2:      2b08            cmp     r3, #8
+ 800a4d4:      d10e            bne.n   800a4f4 <UART_CheckIdleState+0x40>
   {
     /* Wait until TEACK flag is set */
     if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
- 800232a:      f06f 437e       mvn.w   r3, #4261412864 ; 0xfe000000
- 800232e:      9300            str     r3, [sp, #0]
- 8002330:      68fb            ldr     r3, [r7, #12]
- 8002332:      2200            movs    r2, #0
- 8002334:      f44f 1100       mov.w   r1, #2097152    ; 0x200000
- 8002338:      6878            ldr     r0, [r7, #4]
- 800233a:      f000 f814       bl      8002366 <UART_WaitOnFlagUntilTimeout>
- 800233e:      4603            mov     r3, r0
- 8002340:      2b00            cmp     r3, #0
- 8002342:      d001            beq.n   8002348 <UART_CheckIdleState+0x40>
+ 800a4d6:      f06f 437e       mvn.w   r3, #4261412864 ; 0xfe000000
+ 800a4da:      9300            str     r3, [sp, #0]
+ 800a4dc:      68fb            ldr     r3, [r7, #12]
+ 800a4de:      2200            movs    r2, #0
+ 800a4e0:      f44f 1100       mov.w   r1, #2097152    ; 0x200000
+ 800a4e4:      6878            ldr     r0, [r7, #4]
+ 800a4e6:      f000 f814       bl      800a512 <UART_WaitOnFlagUntilTimeout>
+ 800a4ea:      4603            mov     r3, r0
+ 800a4ec:      2b00            cmp     r3, #0
+ 800a4ee:      d001            beq.n   800a4f4 <UART_CheckIdleState+0x40>
     {
       /* Timeout occurred */
       return HAL_TIMEOUT;
- 8002344:      2303            movs    r3, #3
- 8002346:      e00a            b.n     800235e <UART_CheckIdleState+0x56>
+ 800a4f0:      2303            movs    r3, #3
+ 800a4f2:      e00a            b.n     800a50a <UART_CheckIdleState+0x56>
     }
   }
 
   /* Initialize the UART State */
   huart->gState = HAL_UART_STATE_READY;
- 8002348:      687b            ldr     r3, [r7, #4]
- 800234a:      2220            movs    r2, #32
- 800234c:      675a            str     r2, [r3, #116]  ; 0x74
+ 800a4f4:      687b            ldr     r3, [r7, #4]
+ 800a4f6:      2220            movs    r2, #32
+ 800a4f8:      675a            str     r2, [r3, #116]  ; 0x74
   huart->RxState = HAL_UART_STATE_READY;
- 800234e:      687b            ldr     r3, [r7, #4]
- 8002350:      2220            movs    r2, #32
- 8002352:      679a            str     r2, [r3, #120]  ; 0x78
+ 800a4fa:      687b            ldr     r3, [r7, #4]
+ 800a4fc:      2220            movs    r2, #32
+ 800a4fe:      679a            str     r2, [r3, #120]  ; 0x78
 
   /* Process Unlocked */
   __HAL_UNLOCK(huart);
- 8002354:      687b            ldr     r3, [r7, #4]
- 8002356:      2200            movs    r2, #0
- 8002358:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+ 800a500:      687b            ldr     r3, [r7, #4]
+ 800a502:      2200            movs    r2, #0
+ 800a504:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
 
   return HAL_OK;
- 800235c:      2300            movs    r3, #0
+ 800a508:      2300            movs    r3, #0
 }
- 800235e:      4618            mov     r0, r3
- 8002360:      3710            adds    r7, #16
- 8002362:      46bd            mov     sp, r7
- 8002364:      bd80            pop     {r7, pc}
+ 800a50a:      4618            mov     r0, r3
+ 800a50c:      3710            adds    r7, #16
+ 800a50e:      46bd            mov     sp, r7
+ 800a510:      bd80            pop     {r7, pc}
 
-08002366 <UART_WaitOnFlagUntilTimeout>:
+0800a512 <UART_WaitOnFlagUntilTimeout>:
   * @param Tickstart Tick start value
   * @param Timeout   Timeout duration
   * @retval HAL status
   */
 HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
 {
- 8002366:      b580            push    {r7, lr}
- 8002368:      b084            sub     sp, #16
- 800236a:      af00            add     r7, sp, #0
- 800236c:      60f8            str     r0, [r7, #12]
- 800236e:      60b9            str     r1, [r7, #8]
- 8002370:      603b            str     r3, [r7, #0]
- 8002372:      4613            mov     r3, r2
- 8002374:      71fb            strb    r3, [r7, #7]
+ 800a512:      b580            push    {r7, lr}
+ 800a514:      b084            sub     sp, #16
+ 800a516:      af00            add     r7, sp, #0
+ 800a518:      60f8            str     r0, [r7, #12]
+ 800a51a:      60b9            str     r1, [r7, #8]
+ 800a51c:      603b            str     r3, [r7, #0]
+ 800a51e:      4613            mov     r3, r2
+ 800a520:      71fb            strb    r3, [r7, #7]
   /* Wait until flag is set */
   while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
- 8002376:      e02a            b.n     80023ce <UART_WaitOnFlagUntilTimeout+0x68>
+ 800a522:      e02a            b.n     800a57a <UART_WaitOnFlagUntilTimeout+0x68>
   {
     /* Check for the Timeout */
     if (Timeout != HAL_MAX_DELAY)
- 8002378:      69bb            ldr     r3, [r7, #24]
- 800237a:      f1b3 3fff       cmp.w   r3, #4294967295 ; 0xffffffff
- 800237e:      d026            beq.n   80023ce <UART_WaitOnFlagUntilTimeout+0x68>
+ 800a524:      69bb            ldr     r3, [r7, #24]
+ 800a526:      f1b3 3fff       cmp.w   r3, #4294967295 ; 0xffffffff
+ 800a52a:      d026            beq.n   800a57a <UART_WaitOnFlagUntilTimeout+0x68>
     {
       if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
- 8002380:      f7fe f92c       bl      80005dc <HAL_GetTick>
- 8002384:      4602            mov     r2, r0
- 8002386:      683b            ldr     r3, [r7, #0]
- 8002388:      1ad3            subs    r3, r2, r3
- 800238a:      69ba            ldr     r2, [r7, #24]
- 800238c:      429a            cmp     r2, r3
- 800238e:      d302            bcc.n   8002396 <UART_WaitOnFlagUntilTimeout+0x30>
- 8002390:      69bb            ldr     r3, [r7, #24]
- 8002392:      2b00            cmp     r3, #0
- 8002394:      d11b            bne.n   80023ce <UART_WaitOnFlagUntilTimeout+0x68>
+ 800a52c:      f7fd fdb2       bl      8008094 <HAL_GetTick>
+ 800a530:      4602            mov     r2, r0
+ 800a532:      683b            ldr     r3, [r7, #0]
+ 800a534:      1ad3            subs    r3, r2, r3
+ 800a536:      69ba            ldr     r2, [r7, #24]
+ 800a538:      429a            cmp     r2, r3
+ 800a53a:      d302            bcc.n   800a542 <UART_WaitOnFlagUntilTimeout+0x30>
+ 800a53c:      69bb            ldr     r3, [r7, #24]
+ 800a53e:      2b00            cmp     r3, #0
+ 800a540:      d11b            bne.n   800a57a <UART_WaitOnFlagUntilTimeout+0x68>
       {
         /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
         CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
- 8002396:      68fb            ldr     r3, [r7, #12]
- 8002398:      681b            ldr     r3, [r3, #0]
- 800239a:      681a            ldr     r2, [r3, #0]
- 800239c:      68fb            ldr     r3, [r7, #12]
- 800239e:      681b            ldr     r3, [r3, #0]
- 80023a0:      f422 72d0       bic.w   r2, r2, #416    ; 0x1a0
- 80023a4:      601a            str     r2, [r3, #0]
+ 800a542:      68fb            ldr     r3, [r7, #12]
+ 800a544:      681b            ldr     r3, [r3, #0]
+ 800a546:      681a            ldr     r2, [r3, #0]
+ 800a548:      68fb            ldr     r3, [r7, #12]
+ 800a54a:      681b            ldr     r3, [r3, #0]
+ 800a54c:      f422 72d0       bic.w   r2, r2, #416    ; 0x1a0
+ 800a550:      601a            str     r2, [r3, #0]
         CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 80023a6:      68fb            ldr     r3, [r7, #12]
- 80023a8:      681b            ldr     r3, [r3, #0]
- 80023aa:      689a            ldr     r2, [r3, #8]
- 80023ac:      68fb            ldr     r3, [r7, #12]
- 80023ae:      681b            ldr     r3, [r3, #0]
- 80023b0:      f022 0201       bic.w   r2, r2, #1
- 80023b4:      609a            str     r2, [r3, #8]
+ 800a552:      68fb            ldr     r3, [r7, #12]
+ 800a554:      681b            ldr     r3, [r3, #0]
+ 800a556:      689a            ldr     r2, [r3, #8]
+ 800a558:      68fb            ldr     r3, [r7, #12]
+ 800a55a:      681b            ldr     r3, [r3, #0]
+ 800a55c:      f022 0201       bic.w   r2, r2, #1
+ 800a560:      609a            str     r2, [r3, #8]
 
         huart->gState = HAL_UART_STATE_READY;
- 80023b6:      68fb            ldr     r3, [r7, #12]
- 80023b8:      2220            movs    r2, #32
- 80023ba:      675a            str     r2, [r3, #116]  ; 0x74
+ 800a562:      68fb            ldr     r3, [r7, #12]
+ 800a564:      2220            movs    r2, #32
+ 800a566:      675a            str     r2, [r3, #116]  ; 0x74
         huart->RxState = HAL_UART_STATE_READY;
- 80023bc:      68fb            ldr     r3, [r7, #12]
- 80023be:      2220            movs    r2, #32
- 80023c0:      679a            str     r2, [r3, #120]  ; 0x78
+ 800a568:      68fb            ldr     r3, [r7, #12]
+ 800a56a:      2220            movs    r2, #32
+ 800a56c:      679a            str     r2, [r3, #120]  ; 0x78
 
         /* Process Unlocked */
         __HAL_UNLOCK(huart);
- 80023c2:      68fb            ldr     r3, [r7, #12]
- 80023c4:      2200            movs    r2, #0
- 80023c6:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+ 800a56e:      68fb            ldr     r3, [r7, #12]
+ 800a570:      2200            movs    r2, #0
+ 800a572:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
 
         return HAL_TIMEOUT;
- 80023ca:      2303            movs    r3, #3
- 80023cc:      e00f            b.n     80023ee <UART_WaitOnFlagUntilTimeout+0x88>
+ 800a576:      2303            movs    r3, #3
+ 800a578:      e00f            b.n     800a59a <UART_WaitOnFlagUntilTimeout+0x88>
   while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
- 80023ce:      68fb            ldr     r3, [r7, #12]
- 80023d0:      681b            ldr     r3, [r3, #0]
- 80023d2:      69da            ldr     r2, [r3, #28]
- 80023d4:      68bb            ldr     r3, [r7, #8]
- 80023d6:      4013            ands    r3, r2
- 80023d8:      68ba            ldr     r2, [r7, #8]
- 80023da:      429a            cmp     r2, r3
- 80023dc:      bf0c            ite     eq
- 80023de:      2301            moveq   r3, #1
- 80023e0:      2300            movne   r3, #0
- 80023e2:      b2db            uxtb    r3, r3
- 80023e4:      461a            mov     r2, r3
- 80023e6:      79fb            ldrb    r3, [r7, #7]
- 80023e8:      429a            cmp     r2, r3
- 80023ea:      d0c5            beq.n   8002378 <UART_WaitOnFlagUntilTimeout+0x12>
+ 800a57a:      68fb            ldr     r3, [r7, #12]
+ 800a57c:      681b            ldr     r3, [r3, #0]
+ 800a57e:      69da            ldr     r2, [r3, #28]
+ 800a580:      68bb            ldr     r3, [r7, #8]
+ 800a582:      4013            ands    r3, r2
+ 800a584:      68ba            ldr     r2, [r7, #8]
+ 800a586:      429a            cmp     r2, r3
+ 800a588:      bf0c            ite     eq
+ 800a58a:      2301            moveq   r3, #1
+ 800a58c:      2300            movne   r3, #0
+ 800a58e:      b2db            uxtb    r3, r3
+ 800a590:      461a            mov     r2, r3
+ 800a592:      79fb            ldrb    r3, [r7, #7]
+ 800a594:      429a            cmp     r2, r3
+ 800a596:      d0c5            beq.n   800a524 <UART_WaitOnFlagUntilTimeout+0x12>
       }
     }
   }
   return HAL_OK;
- 80023ec:      2300            movs    r3, #0
+ 800a598:      2300            movs    r3, #0
+}
+ 800a59a:      4618            mov     r0, r3
+ 800a59c:      3710            adds    r7, #16
+ 800a59e:      46bd            mov     sp, r7
+ 800a5a0:      bd80            pop     {r7, pc}
+
+0800a5a2 <UART_EndTxTransfer>:
+  * @brief  End ongoing Tx transfer on UART peripheral (following error detection or Transmit completion).
+  * @param  huart UART handle.
+  * @retval None
+  */
+static void UART_EndTxTransfer(UART_HandleTypeDef *huart)
+{
+ 800a5a2:      b480            push    {r7}
+ 800a5a4:      b083            sub     sp, #12
+ 800a5a6:      af00            add     r7, sp, #0
+ 800a5a8:      6078            str     r0, [r7, #4]
+  /* Disable TXEIE and TCIE interrupts */
+  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
+ 800a5aa:      687b            ldr     r3, [r7, #4]
+ 800a5ac:      681b            ldr     r3, [r3, #0]
+ 800a5ae:      681a            ldr     r2, [r3, #0]
+ 800a5b0:      687b            ldr     r3, [r7, #4]
+ 800a5b2:      681b            ldr     r3, [r3, #0]
+ 800a5b4:      f022 02c0       bic.w   r2, r2, #192    ; 0xc0
+ 800a5b8:      601a            str     r2, [r3, #0]
+
+  /* At end of Tx process, restore huart->gState to Ready */
+  huart->gState = HAL_UART_STATE_READY;
+ 800a5ba:      687b            ldr     r3, [r7, #4]
+ 800a5bc:      2220            movs    r2, #32
+ 800a5be:      675a            str     r2, [r3, #116]  ; 0x74
+}
+ 800a5c0:      bf00            nop
+ 800a5c2:      370c            adds    r7, #12
+ 800a5c4:      46bd            mov     sp, r7
+ 800a5c6:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a5ca:      4770            bx      lr
+
+0800a5cc <UART_EndRxTransfer>:
+  * @brief  End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).
+  * @param  huart UART handle.
+  * @retval None
+  */
+static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
+{
+ 800a5cc:      b480            push    {r7}
+ 800a5ce:      b083            sub     sp, #12
+ 800a5d0:      af00            add     r7, sp, #0
+ 800a5d2:      6078            str     r0, [r7, #4]
+  /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
+  CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
+ 800a5d4:      687b            ldr     r3, [r7, #4]
+ 800a5d6:      681b            ldr     r3, [r3, #0]
+ 800a5d8:      681a            ldr     r2, [r3, #0]
+ 800a5da:      687b            ldr     r3, [r7, #4]
+ 800a5dc:      681b            ldr     r3, [r3, #0]
+ 800a5de:      f422 7290       bic.w   r2, r2, #288    ; 0x120
+ 800a5e2:      601a            str     r2, [r3, #0]
+  CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+ 800a5e4:      687b            ldr     r3, [r7, #4]
+ 800a5e6:      681b            ldr     r3, [r3, #0]
+ 800a5e8:      689a            ldr     r2, [r3, #8]
+ 800a5ea:      687b            ldr     r3, [r7, #4]
+ 800a5ec:      681b            ldr     r3, [r3, #0]
+ 800a5ee:      f022 0201       bic.w   r2, r2, #1
+ 800a5f2:      609a            str     r2, [r3, #8]
+
+  /* At end of Rx process, restore huart->RxState to Ready */
+  huart->RxState = HAL_UART_STATE_READY;
+ 800a5f4:      687b            ldr     r3, [r7, #4]
+ 800a5f6:      2220            movs    r2, #32
+ 800a5f8:      679a            str     r2, [r3, #120]  ; 0x78
+
+  /* Reset RxIsr function pointer */
+  huart->RxISR = NULL;
+ 800a5fa:      687b            ldr     r3, [r7, #4]
+ 800a5fc:      2200            movs    r2, #0
+ 800a5fe:      661a            str     r2, [r3, #96]   ; 0x60
+}
+ 800a600:      bf00            nop
+ 800a602:      370c            adds    r7, #12
+ 800a604:      46bd            mov     sp, r7
+ 800a606:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a60a:      4770            bx      lr
+
+0800a60c <UART_DMATransmitCplt>:
+  * @brief DMA UART transmit process complete callback.
+  * @param hdma DMA handle.
+  * @retval None
+  */
+static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma)
+{
+ 800a60c:      b580            push    {r7, lr}
+ 800a60e:      b084            sub     sp, #16
+ 800a610:      af00            add     r7, sp, #0
+ 800a612:      6078            str     r0, [r7, #4]
+  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
+ 800a614:      687b            ldr     r3, [r7, #4]
+ 800a616:      6b9b            ldr     r3, [r3, #56]   ; 0x38
+ 800a618:      60fb            str     r3, [r7, #12]
+
+  /* DMA Normal mode */
+  if (hdma->Init.Mode != DMA_CIRCULAR)
+ 800a61a:      687b            ldr     r3, [r7, #4]
+ 800a61c:      69db            ldr     r3, [r3, #28]
+ 800a61e:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
+ 800a622:      d014            beq.n   800a64e <UART_DMATransmitCplt+0x42>
+  {
+    huart->TxXferCount = 0U;
+ 800a624:      68fb            ldr     r3, [r7, #12]
+ 800a626:      2200            movs    r2, #0
+ 800a628:      f8a3 2052       strh.w  r2, [r3, #82]   ; 0x52
+
+    /* Disable the DMA transfer for transmit request by resetting the DMAT bit
+       in the UART CR3 register */
+    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);
+ 800a62c:      68fb            ldr     r3, [r7, #12]
+ 800a62e:      681b            ldr     r3, [r3, #0]
+ 800a630:      689a            ldr     r2, [r3, #8]
+ 800a632:      68fb            ldr     r3, [r7, #12]
+ 800a634:      681b            ldr     r3, [r3, #0]
+ 800a636:      f022 0280       bic.w   r2, r2, #128    ; 0x80
+ 800a63a:      609a            str     r2, [r3, #8]
+
+    /* Enable the UART Transmit Complete Interrupt */
+    SET_BIT(huart->Instance->CR1, USART_CR1_TCIE);
+ 800a63c:      68fb            ldr     r3, [r7, #12]
+ 800a63e:      681b            ldr     r3, [r3, #0]
+ 800a640:      681a            ldr     r2, [r3, #0]
+ 800a642:      68fb            ldr     r3, [r7, #12]
+ 800a644:      681b            ldr     r3, [r3, #0]
+ 800a646:      f042 0240       orr.w   r2, r2, #64     ; 0x40
+ 800a64a:      601a            str     r2, [r3, #0]
+#else
+    /*Call legacy weak Tx complete callback*/
+    HAL_UART_TxCpltCallback(huart);
+#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
+  }
+}
+ 800a64c:      e002            b.n     800a654 <UART_DMATransmitCplt+0x48>
+    HAL_UART_TxCpltCallback(huart);
+ 800a64e:      68f8            ldr     r0, [r7, #12]
+ 800a650:      f7ff fbb8       bl      8009dc4 <HAL_UART_TxCpltCallback>
+}
+ 800a654:      bf00            nop
+ 800a656:      3710            adds    r7, #16
+ 800a658:      46bd            mov     sp, r7
+ 800a65a:      bd80            pop     {r7, pc}
+
+0800a65c <UART_DMATxHalfCplt>:
+  * @brief DMA UART transmit process half complete callback.
+  * @param hdma DMA handle.
+  * @retval None
+  */
+static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma)
+{
+ 800a65c:      b580            push    {r7, lr}
+ 800a65e:      b084            sub     sp, #16
+ 800a660:      af00            add     r7, sp, #0
+ 800a662:      6078            str     r0, [r7, #4]
+  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
+ 800a664:      687b            ldr     r3, [r7, #4]
+ 800a666:      6b9b            ldr     r3, [r3, #56]   ; 0x38
+ 800a668:      60fb            str     r3, [r7, #12]
+#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
+  /*Call registered Tx Half complete callback*/
+  huart->TxHalfCpltCallback(huart);
+#else
+  /*Call legacy weak Tx Half complete callback*/
+  HAL_UART_TxHalfCpltCallback(huart);
+ 800a66a:      68f8            ldr     r0, [r7, #12]
+ 800a66c:      f7ff fbb4       bl      8009dd8 <HAL_UART_TxHalfCpltCallback>
+#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
+}
+ 800a670:      bf00            nop
+ 800a672:      3710            adds    r7, #16
+ 800a674:      46bd            mov     sp, r7
+ 800a676:      bd80            pop     {r7, pc}
+
+0800a678 <UART_DMAReceiveCplt>:
+  * @brief DMA UART receive process complete callback.
+  * @param hdma DMA handle.
+  * @retval None
+  */
+static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
+{
+ 800a678:      b580            push    {r7, lr}
+ 800a67a:      b084            sub     sp, #16
+ 800a67c:      af00            add     r7, sp, #0
+ 800a67e:      6078            str     r0, [r7, #4]
+  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
+ 800a680:      687b            ldr     r3, [r7, #4]
+ 800a682:      6b9b            ldr     r3, [r3, #56]   ; 0x38
+ 800a684:      60fb            str     r3, [r7, #12]
+
+  /* DMA Normal mode */
+  if (hdma->Init.Mode != DMA_CIRCULAR)
+ 800a686:      687b            ldr     r3, [r7, #4]
+ 800a688:      69db            ldr     r3, [r3, #28]
+ 800a68a:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
+ 800a68e:      d01e            beq.n   800a6ce <UART_DMAReceiveCplt+0x56>
+  {
+    huart->RxXferCount = 0U;
+ 800a690:      68fb            ldr     r3, [r7, #12]
+ 800a692:      2200            movs    r2, #0
+ 800a694:      f8a3 205a       strh.w  r2, [r3, #90]   ; 0x5a
+
+    /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */
+    CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE);
+ 800a698:      68fb            ldr     r3, [r7, #12]
+ 800a69a:      681b            ldr     r3, [r3, #0]
+ 800a69c:      681a            ldr     r2, [r3, #0]
+ 800a69e:      68fb            ldr     r3, [r7, #12]
+ 800a6a0:      681b            ldr     r3, [r3, #0]
+ 800a6a2:      f422 7280       bic.w   r2, r2, #256    ; 0x100
+ 800a6a6:      601a            str     r2, [r3, #0]
+    CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
+ 800a6a8:      68fb            ldr     r3, [r7, #12]
+ 800a6aa:      681b            ldr     r3, [r3, #0]
+ 800a6ac:      689a            ldr     r2, [r3, #8]
+ 800a6ae:      68fb            ldr     r3, [r7, #12]
+ 800a6b0:      681b            ldr     r3, [r3, #0]
+ 800a6b2:      f022 0201       bic.w   r2, r2, #1
+ 800a6b6:      609a            str     r2, [r3, #8]
+
+    /* Disable the DMA transfer for the receiver request by resetting the DMAR bit
+       in the UART CR3 register */
+    CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
+ 800a6b8:      68fb            ldr     r3, [r7, #12]
+ 800a6ba:      681b            ldr     r3, [r3, #0]
+ 800a6bc:      689a            ldr     r2, [r3, #8]
+ 800a6be:      68fb            ldr     r3, [r7, #12]
+ 800a6c0:      681b            ldr     r3, [r3, #0]
+ 800a6c2:      f022 0240       bic.w   r2, r2, #64     ; 0x40
+ 800a6c6:      609a            str     r2, [r3, #8]
+
+    /* At end of Rx process, restore huart->RxState to Ready */
+    huart->RxState = HAL_UART_STATE_READY;
+ 800a6c8:      68fb            ldr     r3, [r7, #12]
+ 800a6ca:      2220            movs    r2, #32
+ 800a6cc:      679a            str     r2, [r3, #120]  ; 0x78
+#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
+  /*Call registered Rx complete callback*/
+  huart->RxCpltCallback(huart);
+#else
+  /*Call legacy weak Rx complete callback*/
+  HAL_UART_RxCpltCallback(huart);
+ 800a6ce:      68f8            ldr     r0, [r7, #12]
+ 800a6d0:      f7ff fb8c       bl      8009dec <HAL_UART_RxCpltCallback>
+#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
+}
+ 800a6d4:      bf00            nop
+ 800a6d6:      3710            adds    r7, #16
+ 800a6d8:      46bd            mov     sp, r7
+ 800a6da:      bd80            pop     {r7, pc}
+
+0800a6dc <UART_DMARxHalfCplt>:
+  * @brief DMA UART receive process half complete callback.
+  * @param hdma DMA handle.
+  * @retval None
+  */
+static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma)
+{
+ 800a6dc:      b580            push    {r7, lr}
+ 800a6de:      b084            sub     sp, #16
+ 800a6e0:      af00            add     r7, sp, #0
+ 800a6e2:      6078            str     r0, [r7, #4]
+  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
+ 800a6e4:      687b            ldr     r3, [r7, #4]
+ 800a6e6:      6b9b            ldr     r3, [r3, #56]   ; 0x38
+ 800a6e8:      60fb            str     r3, [r7, #12]
+#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
+  /*Call registered Rx Half complete callback*/
+  huart->RxHalfCpltCallback(huart);
+#else
+  /*Call legacy weak Rx Half complete callback*/
+  HAL_UART_RxHalfCpltCallback(huart);
+ 800a6ea:      68f8            ldr     r0, [r7, #12]
+ 800a6ec:      f7ff fb88       bl      8009e00 <HAL_UART_RxHalfCpltCallback>
+#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
 }
- 80023ee:      4618            mov     r0, r3
- 80023f0:      3710            adds    r7, #16
- 80023f2:      46bd            mov     sp, r7
- 80023f4:      bd80            pop     {r7, pc}
+ 800a6f0:      bf00            nop
+ 800a6f2:      3710            adds    r7, #16
+ 800a6f4:      46bd            mov     sp, r7
+ 800a6f6:      bd80            pop     {r7, pc}
+
+0800a6f8 <UART_DMAError>:
+  * @brief DMA UART communication error callback.
+  * @param hdma DMA handle.
+  * @retval None
+  */
+static void UART_DMAError(DMA_HandleTypeDef *hdma)
+{
+ 800a6f8:      b580            push    {r7, lr}
+ 800a6fa:      b086            sub     sp, #24
+ 800a6fc:      af00            add     r7, sp, #0
+ 800a6fe:      6078            str     r0, [r7, #4]
+  UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
+ 800a700:      687b            ldr     r3, [r7, #4]
+ 800a702:      6b9b            ldr     r3, [r3, #56]   ; 0x38
+ 800a704:      617b            str     r3, [r7, #20]
+
+  const HAL_UART_StateTypeDef gstate = huart->gState;
+ 800a706:      697b            ldr     r3, [r7, #20]
+ 800a708:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 800a70a:      613b            str     r3, [r7, #16]
+  const HAL_UART_StateTypeDef rxstate = huart->RxState;
+ 800a70c:      697b            ldr     r3, [r7, #20]
+ 800a70e:      6f9b            ldr     r3, [r3, #120]  ; 0x78
+ 800a710:      60fb            str     r3, [r7, #12]
+
+  /* Stop UART DMA Tx request if ongoing */
+  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&
+ 800a712:      697b            ldr     r3, [r7, #20]
+ 800a714:      681b            ldr     r3, [r3, #0]
+ 800a716:      689b            ldr     r3, [r3, #8]
+ 800a718:      f003 0380       and.w   r3, r3, #128    ; 0x80
+ 800a71c:      2b80            cmp     r3, #128        ; 0x80
+ 800a71e:      d109            bne.n   800a734 <UART_DMAError+0x3c>
+ 800a720:      693b            ldr     r3, [r7, #16]
+ 800a722:      2b21            cmp     r3, #33 ; 0x21
+ 800a724:      d106            bne.n   800a734 <UART_DMAError+0x3c>
+      (gstate == HAL_UART_STATE_BUSY_TX))
+  {
+    huart->TxXferCount = 0U;
+ 800a726:      697b            ldr     r3, [r7, #20]
+ 800a728:      2200            movs    r2, #0
+ 800a72a:      f8a3 2052       strh.w  r2, [r3, #82]   ; 0x52
+    UART_EndTxTransfer(huart);
+ 800a72e:      6978            ldr     r0, [r7, #20]
+ 800a730:      f7ff ff37       bl      800a5a2 <UART_EndTxTransfer>
+  }
 
-080023f6 <main>:
+  /* Stop UART DMA Rx request if ongoing */
+  if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) &&
+ 800a734:      697b            ldr     r3, [r7, #20]
+ 800a736:      681b            ldr     r3, [r3, #0]
+ 800a738:      689b            ldr     r3, [r3, #8]
+ 800a73a:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 800a73e:      2b40            cmp     r3, #64 ; 0x40
+ 800a740:      d109            bne.n   800a756 <UART_DMAError+0x5e>
+ 800a742:      68fb            ldr     r3, [r7, #12]
+ 800a744:      2b22            cmp     r3, #34 ; 0x22
+ 800a746:      d106            bne.n   800a756 <UART_DMAError+0x5e>
+      (rxstate == HAL_UART_STATE_BUSY_RX))
+  {
+    huart->RxXferCount = 0U;
+ 800a748:      697b            ldr     r3, [r7, #20]
+ 800a74a:      2200            movs    r2, #0
+ 800a74c:      f8a3 205a       strh.w  r2, [r3, #90]   ; 0x5a
+    UART_EndRxTransfer(huart);
+ 800a750:      6978            ldr     r0, [r7, #20]
+ 800a752:      f7ff ff3b       bl      800a5cc <UART_EndRxTransfer>
+  }
 
-/**
- * @brief  The application entry point.
- * @retval int
- */
-int main(void) {
- 80023f6:      b580            push    {r7, lr}
- 80023f8:      b082            sub     sp, #8
- 80023fa:      af00            add     r7, sp, #0
-       /* USER CODE END 1 */
-
-       /* MCU Configuration--------------------------------------------------------*/
-
-       /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
-       HAL_Init();
- 80023fc:      f7fe f89c       bl      8000538 <HAL_Init>
-       /* USER CODE BEGIN Init */
-
-       /* USER CODE END Init */
-
-       /* Configure the system clock */
-       SystemClock_Config();
- 8002400:      f000 f820       bl      8002444 <_Z18SystemClock_Configv>
-       /* USER CODE BEGIN SysInit */
-
-       /* USER CODE END SysInit */
-
-       /* Initialize all configured peripherals */
-       MX_GPIO_Init();
- 8002404:      f000 f8dc       bl      80025c0 <_ZL12MX_GPIO_Initv>
-       MX_USART3_UART_Init();
- 8002408:      f000 f8a6       bl      8002558 <_ZL19MX_USART3_UART_Initv>
-       /* USER CODE BEGIN 2 */
-       uint32_t i = 0;
- 800240c:      2300            movs    r3, #0
- 800240e:      607b            str     r3, [r7, #4]
-       /* USER CODE END 2 */
-
-       /* Infinite loop */
-       /* USER CODE BEGIN WHILE */
-       while (1) {
-               i = write(i);
- 8002410:      687b            ldr     r3, [r7, #4]
- 8002412:      4618            mov     r0, r3
- 8002414:      f000 f9c0       bl      8002798 <_Z5writei>
- 8002418:      4603            mov     r3, r0
- 800241a:      607b            str     r3, [r7, #4]
-               i = write(i);
- 800241c:      687b            ldr     r3, [r7, #4]
- 800241e:      4618            mov     r0, r3
- 8002420:      f000 f9ba       bl      8002798 <_Z5writei>
- 8002424:      4603            mov     r3, r0
- 8002426:      607b            str     r3, [r7, #4]
-               i = write(i);
- 8002428:      687b            ldr     r3, [r7, #4]
- 800242a:      4618            mov     r0, r3
- 800242c:      f000 f9b4       bl      8002798 <_Z5writei>
- 8002430:      4603            mov     r3, r0
- 8002432:      607b            str     r3, [r7, #4]
-               i = write(i);
- 8002434:      687b            ldr     r3, [r7, #4]
- 8002436:      4618            mov     r0, r3
- 8002438:      f000 f9ae       bl      8002798 <_Z5writei>
- 800243c:      4603            mov     r3, r0
- 800243e:      607b            str     r3, [r7, #4]
-               i = write(i);
- 8002440:      e7e6            b.n     8002410 <main+0x1a>
+  huart->ErrorCode |= HAL_UART_ERROR_DMA;
+ 800a756:      697b            ldr     r3, [r7, #20]
+ 800a758:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 800a75a:      f043 0210       orr.w   r2, r3, #16
+ 800a75e:      697b            ldr     r3, [r7, #20]
+ 800a760:      67da            str     r2, [r3, #124]  ; 0x7c
+#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
+  /*Call registered error callback*/
+  huart->ErrorCallback(huart);
+#else
+  /*Call legacy weak error callback*/
+  HAL_UART_ErrorCallback(huart);
+ 800a762:      6978            ldr     r0, [r7, #20]
+ 800a764:      f7ff fb56       bl      8009e14 <HAL_UART_ErrorCallback>
+#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
+}
+ 800a768:      bf00            nop
+ 800a76a:      3718            adds    r7, #24
+ 800a76c:      46bd            mov     sp, r7
+ 800a76e:      bd80            pop     {r7, pc}
+
+0800a770 <_ZN3ros3MsgC1Ev>:
+
+namespace ros
+{
+
+/* Base Message Type */
+class Msg
+ 800a770:      b480            push    {r7}
+ 800a772:      b083            sub     sp, #12
+ 800a774:      af00            add     r7, sp, #0
+ 800a776:      6078            str     r0, [r7, #4]
+ 800a778:      4a04            ldr     r2, [pc, #16]   ; (800a78c <_ZN3ros3MsgC1Ev+0x1c>)
+ 800a77a:      687b            ldr     r3, [r7, #4]
+ 800a77c:      601a            str     r2, [r3, #0]
+ 800a77e:      687b            ldr     r3, [r7, #4]
+ 800a780:      4618            mov     r0, r3
+ 800a782:      370c            adds    r7, #12
+ 800a784:      46bd            mov     sp, r7
+ 800a786:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a78a:      4770            bx      lr
+ 800a78c:      08012368        .word   0x08012368
+
+0800a790 <_ZN8std_msgs6StringC1Ev>:
+  {
+    public:
+      typedef const char* _data_type;
+      _data_type data;
+
+    String():
+ 800a790:      b580            push    {r7, lr}
+ 800a792:      b082            sub     sp, #8
+ 800a794:      af00            add     r7, sp, #0
+ 800a796:      6078            str     r0, [r7, #4]
+      data("")
+ 800a798:      687b            ldr     r3, [r7, #4]
+ 800a79a:      4618            mov     r0, r3
+ 800a79c:      f7ff ffe8       bl      800a770 <_ZN3ros3MsgC1Ev>
+ 800a7a0:      4a05            ldr     r2, [pc, #20]   ; (800a7b8 <_ZN8std_msgs6StringC1Ev+0x28>)
+ 800a7a2:      687b            ldr     r3, [r7, #4]
+ 800a7a4:      601a            str     r2, [r3, #0]
+ 800a7a6:      687b            ldr     r3, [r7, #4]
+ 800a7a8:      4a04            ldr     r2, [pc, #16]   ; (800a7bc <_ZN8std_msgs6StringC1Ev+0x2c>)
+ 800a7aa:      605a            str     r2, [r3, #4]
+    {
+    }
+ 800a7ac:      687b            ldr     r3, [r7, #4]
+ 800a7ae:      4618            mov     r0, r3
+ 800a7b0:      3708            adds    r7, #8
+ 800a7b2:      46bd            mov     sp, r7
+ 800a7b4:      bd80            pop     {r7, pc}
+ 800a7b6:      bf00            nop
+ 800a7b8:      08012350        .word   0x08012350
+ 800a7bc:      080119b0        .word   0x080119b0
+
+0800a7c0 <_ZNK8std_msgs6String9serializeEPh>:
+
+    virtual int serialize(unsigned char *outbuffer) const
+ 800a7c0:      b580            push    {r7, lr}
+ 800a7c2:      b084            sub     sp, #16
+ 800a7c4:      af00            add     r7, sp, #0
+ 800a7c6:      6078            str     r0, [r7, #4]
+ 800a7c8:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800a7ca:      2300            movs    r3, #0
+ 800a7cc:      60fb            str     r3, [r7, #12]
+      uint32_t length_data = strlen(this->data);
+ 800a7ce:      687b            ldr     r3, [r7, #4]
+ 800a7d0:      685b            ldr     r3, [r3, #4]
+ 800a7d2:      4618            mov     r0, r3
+ 800a7d4:      f7fc fafe       bl      8006dd4 <strlen>
+ 800a7d8:      60b8            str     r0, [r7, #8]
+      varToArr(outbuffer + offset, length_data);
+ 800a7da:      68fb            ldr     r3, [r7, #12]
+ 800a7dc:      683a            ldr     r2, [r7, #0]
+ 800a7de:      4413            add     r3, r2
+ 800a7e0:      68b9            ldr     r1, [r7, #8]
+ 800a7e2:      4618            mov     r0, r3
+ 800a7e4:      f001 f94b       bl      800ba7e <_ZN3ros3Msg8varToArrIPhmEEvT_T0_>
+      offset += 4;
+ 800a7e8:      68fb            ldr     r3, [r7, #12]
+ 800a7ea:      3304            adds    r3, #4
+ 800a7ec:      60fb            str     r3, [r7, #12]
+      memcpy(outbuffer + offset, this->data, length_data);
+ 800a7ee:      68fb            ldr     r3, [r7, #12]
+ 800a7f0:      683a            ldr     r2, [r7, #0]
+ 800a7f2:      18d0            adds    r0, r2, r3
+ 800a7f4:      687b            ldr     r3, [r7, #4]
+ 800a7f6:      685b            ldr     r3, [r3, #4]
+ 800a7f8:      68ba            ldr     r2, [r7, #8]
+ 800a7fa:      4619            mov     r1, r3
+ 800a7fc:      f003 fdbb       bl      800e376 <memcpy>
+      offset += length_data;
+ 800a800:      68fa            ldr     r2, [r7, #12]
+ 800a802:      68bb            ldr     r3, [r7, #8]
+ 800a804:      4413            add     r3, r2
+ 800a806:      60fb            str     r3, [r7, #12]
+      return offset;
+ 800a808:      68fb            ldr     r3, [r7, #12]
+    }
+ 800a80a:      4618            mov     r0, r3
+ 800a80c:      3710            adds    r7, #16
+ 800a80e:      46bd            mov     sp, r7
+ 800a810:      bd80            pop     {r7, pc}
+
+0800a812 <_ZN8std_msgs6String11deserializeEPh>:
+
+    virtual int deserialize(unsigned char *inbuffer)
+ 800a812:      b580            push    {r7, lr}
+ 800a814:      b086            sub     sp, #24
+ 800a816:      af00            add     r7, sp, #0
+ 800a818:      6078            str     r0, [r7, #4]
+ 800a81a:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800a81c:      2300            movs    r3, #0
+ 800a81e:      613b            str     r3, [r7, #16]
+      uint32_t length_data;
+      arrToVar(length_data, (inbuffer + offset));
+ 800a820:      693b            ldr     r3, [r7, #16]
+ 800a822:      683a            ldr     r2, [r7, #0]
+ 800a824:      441a            add     r2, r3
+ 800a826:      f107 030c       add.w   r3, r7, #12
+ 800a82a:      4611            mov     r1, r2
+ 800a82c:      4618            mov     r0, r3
+ 800a82e:      f001 f944       bl      800baba <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_>
+      offset += 4;
+ 800a832:      693b            ldr     r3, [r7, #16]
+ 800a834:      3304            adds    r3, #4
+ 800a836:      613b            str     r3, [r7, #16]
+      for(unsigned int k= offset; k< offset+length_data; ++k){
+ 800a838:      693b            ldr     r3, [r7, #16]
+ 800a83a:      617b            str     r3, [r7, #20]
+ 800a83c:      693a            ldr     r2, [r7, #16]
+ 800a83e:      68fb            ldr     r3, [r7, #12]
+ 800a840:      4413            add     r3, r2
+ 800a842:      697a            ldr     r2, [r7, #20]
+ 800a844:      429a            cmp     r2, r3
+ 800a846:      d20c            bcs.n   800a862 <_ZN8std_msgs6String11deserializeEPh+0x50>
+          inbuffer[k-1]=inbuffer[k];
+ 800a848:      683a            ldr     r2, [r7, #0]
+ 800a84a:      697b            ldr     r3, [r7, #20]
+ 800a84c:      441a            add     r2, r3
+ 800a84e:      697b            ldr     r3, [r7, #20]
+ 800a850:      3b01            subs    r3, #1
+ 800a852:      6839            ldr     r1, [r7, #0]
+ 800a854:      440b            add     r3, r1
+ 800a856:      7812            ldrb    r2, [r2, #0]
+ 800a858:      701a            strb    r2, [r3, #0]
+      for(unsigned int k= offset; k< offset+length_data; ++k){
+ 800a85a:      697b            ldr     r3, [r7, #20]
+ 800a85c:      3301            adds    r3, #1
+ 800a85e:      617b            str     r3, [r7, #20]
+ 800a860:      e7ec            b.n     800a83c <_ZN8std_msgs6String11deserializeEPh+0x2a>
+      }
+      inbuffer[offset+length_data-1]=0;
+ 800a862:      693a            ldr     r2, [r7, #16]
+ 800a864:      68fb            ldr     r3, [r7, #12]
+ 800a866:      4413            add     r3, r2
+ 800a868:      3b01            subs    r3, #1
+ 800a86a:      683a            ldr     r2, [r7, #0]
+ 800a86c:      4413            add     r3, r2
+ 800a86e:      2200            movs    r2, #0
+ 800a870:      701a            strb    r2, [r3, #0]
+      this->data = (char *)(inbuffer + offset-1);
+ 800a872:      693b            ldr     r3, [r7, #16]
+ 800a874:      3b01            subs    r3, #1
+ 800a876:      683a            ldr     r2, [r7, #0]
+ 800a878:      441a            add     r2, r3
+ 800a87a:      687b            ldr     r3, [r7, #4]
+ 800a87c:      605a            str     r2, [r3, #4]
+      offset += length_data;
+ 800a87e:      693a            ldr     r2, [r7, #16]
+ 800a880:      68fb            ldr     r3, [r7, #12]
+ 800a882:      4413            add     r3, r2
+ 800a884:      613b            str     r3, [r7, #16]
+     return offset;
+ 800a886:      693b            ldr     r3, [r7, #16]
+    }
+ 800a888:      4618            mov     r0, r3
+ 800a88a:      3718            adds    r7, #24
+ 800a88c:      46bd            mov     sp, r7
+ 800a88e:      bd80            pop     {r7, pc}
+
+0800a890 <_ZN8std_msgs6String7getTypeEv>:
+
+    const char * getType(){ return "std_msgs/String"; };
+ 800a890:      b480            push    {r7}
+ 800a892:      b083            sub     sp, #12
+ 800a894:      af00            add     r7, sp, #0
+ 800a896:      6078            str     r0, [r7, #4]
+ 800a898:      4b03            ldr     r3, [pc, #12]   ; (800a8a8 <_ZN8std_msgs6String7getTypeEv+0x18>)
+ 800a89a:      4618            mov     r0, r3
+ 800a89c:      370c            adds    r7, #12
+ 800a89e:      46bd            mov     sp, r7
+ 800a8a0:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a8a4:      4770            bx      lr
+ 800a8a6:      bf00            nop
+ 800a8a8:      080119b4        .word   0x080119b4
+
+0800a8ac <_ZN8std_msgs6String6getMD5Ev>:
+    const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; };
+ 800a8ac:      b480            push    {r7}
+ 800a8ae:      b083            sub     sp, #12
+ 800a8b0:      af00            add     r7, sp, #0
+ 800a8b2:      6078            str     r0, [r7, #4]
+ 800a8b4:      4b03            ldr     r3, [pc, #12]   ; (800a8c4 <_ZN8std_msgs6String6getMD5Ev+0x18>)
+ 800a8b6:      4618            mov     r0, r3
+ 800a8b8:      370c            adds    r7, #12
+ 800a8ba:      46bd            mov     sp, r7
+ 800a8bc:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a8c0:      4770            bx      lr
+ 800a8c2:      bf00            nop
+ 800a8c4:      080119c4        .word   0x080119c4
+
+0800a8c8 <_ZN3ros4TimeC1Ev>:
+class Time
+{
+public:
+  uint32_t sec, nsec;
+
+  Time() : sec(0), nsec(0) {}
+ 800a8c8:      b480            push    {r7}
+ 800a8ca:      b083            sub     sp, #12
+ 800a8cc:      af00            add     r7, sp, #0
+ 800a8ce:      6078            str     r0, [r7, #4]
+ 800a8d0:      687b            ldr     r3, [r7, #4]
+ 800a8d2:      2200            movs    r2, #0
+ 800a8d4:      601a            str     r2, [r3, #0]
+ 800a8d6:      687b            ldr     r3, [r7, #4]
+ 800a8d8:      2200            movs    r2, #0
+ 800a8da:      605a            str     r2, [r3, #4]
+ 800a8dc:      687b            ldr     r3, [r7, #4]
+ 800a8de:      4618            mov     r0, r3
+ 800a8e0:      370c            adds    r7, #12
+ 800a8e2:      46bd            mov     sp, r7
+ 800a8e4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a8e8:      4770            bx      lr
+       ...
+
+0800a8ec <_ZN8std_msgs4TimeC1Ev>:
+  {
+    public:
+      typedef ros::Time _data_type;
+      _data_type data;
+
+    Time():
+ 800a8ec:      b580            push    {r7, lr}
+ 800a8ee:      b082            sub     sp, #8
+ 800a8f0:      af00            add     r7, sp, #0
+ 800a8f2:      6078            str     r0, [r7, #4]
+      data()
+ 800a8f4:      687b            ldr     r3, [r7, #4]
+ 800a8f6:      4618            mov     r0, r3
+ 800a8f8:      f7ff ff3a       bl      800a770 <_ZN3ros3MsgC1Ev>
+ 800a8fc:      4a06            ldr     r2, [pc, #24]   ; (800a918 <_ZN8std_msgs4TimeC1Ev+0x2c>)
+ 800a8fe:      687b            ldr     r3, [r7, #4]
+ 800a900:      601a            str     r2, [r3, #0]
+ 800a902:      687b            ldr     r3, [r7, #4]
+ 800a904:      3304            adds    r3, #4
+ 800a906:      4618            mov     r0, r3
+ 800a908:      f7ff ffde       bl      800a8c8 <_ZN3ros4TimeC1Ev>
+    {
+    }
+ 800a90c:      687b            ldr     r3, [r7, #4]
+ 800a90e:      4618            mov     r0, r3
+ 800a910:      3708            adds    r7, #8
+ 800a912:      46bd            mov     sp, r7
+ 800a914:      bd80            pop     {r7, pc}
+ 800a916:      bf00            nop
+ 800a918:      08012338        .word   0x08012338
+
+0800a91c <_ZNK8std_msgs4Time9serializeEPh>:
+
+    virtual int serialize(unsigned char *outbuffer) const
+ 800a91c:      b480            push    {r7}
+ 800a91e:      b085            sub     sp, #20
+ 800a920:      af00            add     r7, sp, #0
+ 800a922:      6078            str     r0, [r7, #4]
+ 800a924:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800a926:      2300            movs    r3, #0
+ 800a928:      60fb            str     r3, [r7, #12]
+      *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF;
+ 800a92a:      687b            ldr     r3, [r7, #4]
+ 800a92c:      6859            ldr     r1, [r3, #4]
+ 800a92e:      68fb            ldr     r3, [r7, #12]
+ 800a930:      683a            ldr     r2, [r7, #0]
+ 800a932:      4413            add     r3, r2
+ 800a934:      b2ca            uxtb    r2, r1
+ 800a936:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF;
+ 800a938:      687b            ldr     r3, [r7, #4]
+ 800a93a:      685b            ldr     r3, [r3, #4]
+ 800a93c:      0a19            lsrs    r1, r3, #8
+ 800a93e:      68fb            ldr     r3, [r7, #12]
+ 800a940:      3301            adds    r3, #1
+ 800a942:      683a            ldr     r2, [r7, #0]
+ 800a944:      4413            add     r3, r2
+ 800a946:      b2ca            uxtb    r2, r1
+ 800a948:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF;
+ 800a94a:      687b            ldr     r3, [r7, #4]
+ 800a94c:      685b            ldr     r3, [r3, #4]
+ 800a94e:      0c19            lsrs    r1, r3, #16
+ 800a950:      68fb            ldr     r3, [r7, #12]
+ 800a952:      3302            adds    r3, #2
+ 800a954:      683a            ldr     r2, [r7, #0]
+ 800a956:      4413            add     r3, r2
+ 800a958:      b2ca            uxtb    r2, r1
+ 800a95a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF;
+ 800a95c:      687b            ldr     r3, [r7, #4]
+ 800a95e:      685b            ldr     r3, [r3, #4]
+ 800a960:      0e19            lsrs    r1, r3, #24
+ 800a962:      68fb            ldr     r3, [r7, #12]
+ 800a964:      3303            adds    r3, #3
+ 800a966:      683a            ldr     r2, [r7, #0]
+ 800a968:      4413            add     r3, r2
+ 800a96a:      b2ca            uxtb    r2, r1
+ 800a96c:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->data.sec);
+ 800a96e:      68fb            ldr     r3, [r7, #12]
+ 800a970:      3304            adds    r3, #4
+ 800a972:      60fb            str     r3, [r7, #12]
+      *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF;
+ 800a974:      687b            ldr     r3, [r7, #4]
+ 800a976:      6899            ldr     r1, [r3, #8]
+ 800a978:      68fb            ldr     r3, [r7, #12]
+ 800a97a:      683a            ldr     r2, [r7, #0]
+ 800a97c:      4413            add     r3, r2
+ 800a97e:      b2ca            uxtb    r2, r1
+ 800a980:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF;
+ 800a982:      687b            ldr     r3, [r7, #4]
+ 800a984:      689b            ldr     r3, [r3, #8]
+ 800a986:      0a19            lsrs    r1, r3, #8
+ 800a988:      68fb            ldr     r3, [r7, #12]
+ 800a98a:      3301            adds    r3, #1
+ 800a98c:      683a            ldr     r2, [r7, #0]
+ 800a98e:      4413            add     r3, r2
+ 800a990:      b2ca            uxtb    r2, r1
+ 800a992:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF;
+ 800a994:      687b            ldr     r3, [r7, #4]
+ 800a996:      689b            ldr     r3, [r3, #8]
+ 800a998:      0c19            lsrs    r1, r3, #16
+ 800a99a:      68fb            ldr     r3, [r7, #12]
+ 800a99c:      3302            adds    r3, #2
+ 800a99e:      683a            ldr     r2, [r7, #0]
+ 800a9a0:      4413            add     r3, r2
+ 800a9a2:      b2ca            uxtb    r2, r1
+ 800a9a4:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF;
+ 800a9a6:      687b            ldr     r3, [r7, #4]
+ 800a9a8:      689b            ldr     r3, [r3, #8]
+ 800a9aa:      0e19            lsrs    r1, r3, #24
+ 800a9ac:      68fb            ldr     r3, [r7, #12]
+ 800a9ae:      3303            adds    r3, #3
+ 800a9b0:      683a            ldr     r2, [r7, #0]
+ 800a9b2:      4413            add     r3, r2
+ 800a9b4:      b2ca            uxtb    r2, r1
+ 800a9b6:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->data.nsec);
+ 800a9b8:      68fb            ldr     r3, [r7, #12]
+ 800a9ba:      3304            adds    r3, #4
+ 800a9bc:      60fb            str     r3, [r7, #12]
+      return offset;
+ 800a9be:      68fb            ldr     r3, [r7, #12]
+    }
+ 800a9c0:      4618            mov     r0, r3
+ 800a9c2:      3714            adds    r7, #20
+ 800a9c4:      46bd            mov     sp, r7
+ 800a9c6:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800a9ca:      4770            bx      lr
+
+0800a9cc <_ZN8std_msgs4Time11deserializeEPh>:
+
+    virtual int deserialize(unsigned char *inbuffer)
+ 800a9cc:      b480            push    {r7}
+ 800a9ce:      b085            sub     sp, #20
+ 800a9d0:      af00            add     r7, sp, #0
+ 800a9d2:      6078            str     r0, [r7, #4]
+ 800a9d4:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800a9d6:      2300            movs    r3, #0
+ 800a9d8:      60fb            str     r3, [r7, #12]
+      this->data.sec =  ((uint32_t) (*(inbuffer + offset)));
+ 800a9da:      68fb            ldr     r3, [r7, #12]
+ 800a9dc:      683a            ldr     r2, [r7, #0]
+ 800a9de:      4413            add     r3, r2
+ 800a9e0:      781b            ldrb    r3, [r3, #0]
+ 800a9e2:      461a            mov     r2, r3
+ 800a9e4:      687b            ldr     r3, [r7, #4]
+ 800a9e6:      605a            str     r2, [r3, #4]
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+ 800a9e8:      687b            ldr     r3, [r7, #4]
+ 800a9ea:      685a            ldr     r2, [r3, #4]
+ 800a9ec:      68fb            ldr     r3, [r7, #12]
+ 800a9ee:      3301            adds    r3, #1
+ 800a9f0:      6839            ldr     r1, [r7, #0]
+ 800a9f2:      440b            add     r3, r1
+ 800a9f4:      781b            ldrb    r3, [r3, #0]
+ 800a9f6:      021b            lsls    r3, r3, #8
+ 800a9f8:      431a            orrs    r2, r3
+ 800a9fa:      687b            ldr     r3, [r7, #4]
+ 800a9fc:      605a            str     r2, [r3, #4]
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+ 800a9fe:      687b            ldr     r3, [r7, #4]
+ 800aa00:      685a            ldr     r2, [r3, #4]
+ 800aa02:      68fb            ldr     r3, [r7, #12]
+ 800aa04:      3302            adds    r3, #2
+ 800aa06:      6839            ldr     r1, [r7, #0]
+ 800aa08:      440b            add     r3, r1
+ 800aa0a:      781b            ldrb    r3, [r3, #0]
+ 800aa0c:      041b            lsls    r3, r3, #16
+ 800aa0e:      431a            orrs    r2, r3
+ 800aa10:      687b            ldr     r3, [r7, #4]
+ 800aa12:      605a            str     r2, [r3, #4]
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+ 800aa14:      687b            ldr     r3, [r7, #4]
+ 800aa16:      685a            ldr     r2, [r3, #4]
+ 800aa18:      68fb            ldr     r3, [r7, #12]
+ 800aa1a:      3303            adds    r3, #3
+ 800aa1c:      6839            ldr     r1, [r7, #0]
+ 800aa1e:      440b            add     r3, r1
+ 800aa20:      781b            ldrb    r3, [r3, #0]
+ 800aa22:      061b            lsls    r3, r3, #24
+ 800aa24:      431a            orrs    r2, r3
+ 800aa26:      687b            ldr     r3, [r7, #4]
+ 800aa28:      605a            str     r2, [r3, #4]
+      offset += sizeof(this->data.sec);
+ 800aa2a:      68fb            ldr     r3, [r7, #12]
+ 800aa2c:      3304            adds    r3, #4
+ 800aa2e:      60fb            str     r3, [r7, #12]
+      this->data.nsec =  ((uint32_t) (*(inbuffer + offset)));
+ 800aa30:      68fb            ldr     r3, [r7, #12]
+ 800aa32:      683a            ldr     r2, [r7, #0]
+ 800aa34:      4413            add     r3, r2
+ 800aa36:      781b            ldrb    r3, [r3, #0]
+ 800aa38:      461a            mov     r2, r3
+ 800aa3a:      687b            ldr     r3, [r7, #4]
+ 800aa3c:      609a            str     r2, [r3, #8]
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+ 800aa3e:      687b            ldr     r3, [r7, #4]
+ 800aa40:      689a            ldr     r2, [r3, #8]
+ 800aa42:      68fb            ldr     r3, [r7, #12]
+ 800aa44:      3301            adds    r3, #1
+ 800aa46:      6839            ldr     r1, [r7, #0]
+ 800aa48:      440b            add     r3, r1
+ 800aa4a:      781b            ldrb    r3, [r3, #0]
+ 800aa4c:      021b            lsls    r3, r3, #8
+ 800aa4e:      431a            orrs    r2, r3
+ 800aa50:      687b            ldr     r3, [r7, #4]
+ 800aa52:      609a            str     r2, [r3, #8]
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+ 800aa54:      687b            ldr     r3, [r7, #4]
+ 800aa56:      689a            ldr     r2, [r3, #8]
+ 800aa58:      68fb            ldr     r3, [r7, #12]
+ 800aa5a:      3302            adds    r3, #2
+ 800aa5c:      6839            ldr     r1, [r7, #0]
+ 800aa5e:      440b            add     r3, r1
+ 800aa60:      781b            ldrb    r3, [r3, #0]
+ 800aa62:      041b            lsls    r3, r3, #16
+ 800aa64:      431a            orrs    r2, r3
+ 800aa66:      687b            ldr     r3, [r7, #4]
+ 800aa68:      609a            str     r2, [r3, #8]
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+ 800aa6a:      687b            ldr     r3, [r7, #4]
+ 800aa6c:      689a            ldr     r2, [r3, #8]
+ 800aa6e:      68fb            ldr     r3, [r7, #12]
+ 800aa70:      3303            adds    r3, #3
+ 800aa72:      6839            ldr     r1, [r7, #0]
+ 800aa74:      440b            add     r3, r1
+ 800aa76:      781b            ldrb    r3, [r3, #0]
+ 800aa78:      061b            lsls    r3, r3, #24
+ 800aa7a:      431a            orrs    r2, r3
+ 800aa7c:      687b            ldr     r3, [r7, #4]
+ 800aa7e:      609a            str     r2, [r3, #8]
+      offset += sizeof(this->data.nsec);
+ 800aa80:      68fb            ldr     r3, [r7, #12]
+ 800aa82:      3304            adds    r3, #4
+ 800aa84:      60fb            str     r3, [r7, #12]
+     return offset;
+ 800aa86:      68fb            ldr     r3, [r7, #12]
+    }
+ 800aa88:      4618            mov     r0, r3
+ 800aa8a:      3714            adds    r7, #20
+ 800aa8c:      46bd            mov     sp, r7
+ 800aa8e:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800aa92:      4770            bx      lr
+
+0800aa94 <_ZN8std_msgs4Time7getTypeEv>:
+
+    const char * getType(){ return "std_msgs/Time"; };
+ 800aa94:      b480            push    {r7}
+ 800aa96:      b083            sub     sp, #12
+ 800aa98:      af00            add     r7, sp, #0
+ 800aa9a:      6078            str     r0, [r7, #4]
+ 800aa9c:      4b03            ldr     r3, [pc, #12]   ; (800aaac <_ZN8std_msgs4Time7getTypeEv+0x18>)
+ 800aa9e:      4618            mov     r0, r3
+ 800aaa0:      370c            adds    r7, #12
+ 800aaa2:      46bd            mov     sp, r7
+ 800aaa4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800aaa8:      4770            bx      lr
+ 800aaaa:      bf00            nop
+ 800aaac:      080119e8        .word   0x080119e8
+
+0800aab0 <_ZN8std_msgs4Time6getMD5Ev>:
+    const char * getMD5(){ return "cd7166c74c552c311fbcc2fe5a7bc289"; };
+ 800aab0:      b480            push    {r7}
+ 800aab2:      b083            sub     sp, #12
+ 800aab4:      af00            add     r7, sp, #0
+ 800aab6:      6078            str     r0, [r7, #4]
+ 800aab8:      4b03            ldr     r3, [pc, #12]   ; (800aac8 <_ZN8std_msgs4Time6getMD5Ev+0x18>)
+ 800aaba:      4618            mov     r0, r3
+ 800aabc:      370c            adds    r7, #12
+ 800aabe:      46bd            mov     sp, r7
+ 800aac0:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800aac4:      4770            bx      lr
+ 800aac6:      bf00            nop
+ 800aac8:      080119f8        .word   0x080119f8
+
+0800aacc <_ZN14rosserial_msgs9TopicInfoC1Ev>:
+      enum { ID_PARAMETER_REQUEST = 6 };
+      enum { ID_LOG = 7 };
+      enum { ID_TIME = 10 };
+      enum { ID_TX_STOP = 11 };
+
+    TopicInfo():
+ 800aacc:      b580            push    {r7, lr}
+ 800aace:      b082            sub     sp, #8
+ 800aad0:      af00            add     r7, sp, #0
+ 800aad2:      6078            str     r0, [r7, #4]
+      topic_id(0),
+      topic_name(""),
+      message_type(""),
+      md5sum(""),
+      buffer_size(0)
+ 800aad4:      687b            ldr     r3, [r7, #4]
+ 800aad6:      4618            mov     r0, r3
+ 800aad8:      f7ff fe4a       bl      800a770 <_ZN3ros3MsgC1Ev>
+ 800aadc:      4a0b            ldr     r2, [pc, #44]   ; (800ab0c <_ZN14rosserial_msgs9TopicInfoC1Ev+0x40>)
+ 800aade:      687b            ldr     r3, [r7, #4]
+ 800aae0:      601a            str     r2, [r3, #0]
+ 800aae2:      687b            ldr     r3, [r7, #4]
+ 800aae4:      2200            movs    r2, #0
+ 800aae6:      809a            strh    r2, [r3, #4]
+ 800aae8:      687b            ldr     r3, [r7, #4]
+ 800aaea:      4a09            ldr     r2, [pc, #36]   ; (800ab10 <_ZN14rosserial_msgs9TopicInfoC1Ev+0x44>)
+ 800aaec:      609a            str     r2, [r3, #8]
+ 800aaee:      687b            ldr     r3, [r7, #4]
+ 800aaf0:      4a07            ldr     r2, [pc, #28]   ; (800ab10 <_ZN14rosserial_msgs9TopicInfoC1Ev+0x44>)
+ 800aaf2:      60da            str     r2, [r3, #12]
+ 800aaf4:      687b            ldr     r3, [r7, #4]
+ 800aaf6:      4a06            ldr     r2, [pc, #24]   ; (800ab10 <_ZN14rosserial_msgs9TopicInfoC1Ev+0x44>)
+ 800aaf8:      611a            str     r2, [r3, #16]
+ 800aafa:      687b            ldr     r3, [r7, #4]
+ 800aafc:      2200            movs    r2, #0
+ 800aafe:      615a            str     r2, [r3, #20]
+    {
+    }
+ 800ab00:      687b            ldr     r3, [r7, #4]
+ 800ab02:      4618            mov     r0, r3
+ 800ab04:      3708            adds    r7, #8
+ 800ab06:      46bd            mov     sp, r7
+ 800ab08:      bd80            pop     {r7, pc}
+ 800ab0a:      bf00            nop
+ 800ab0c:      08012320        .word   0x08012320
+ 800ab10:      080119b0        .word   0x080119b0
+
+0800ab14 <_ZNK14rosserial_msgs9TopicInfo9serializeEPh>:
+
+    virtual int serialize(unsigned char *outbuffer) const
+ 800ab14:      b580            push    {r7, lr}
+ 800ab16:      b088            sub     sp, #32
+ 800ab18:      af00            add     r7, sp, #0
+ 800ab1a:      6078            str     r0, [r7, #4]
+ 800ab1c:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800ab1e:      2300            movs    r3, #0
+ 800ab20:      61fb            str     r3, [r7, #28]
+      *(outbuffer + offset + 0) = (this->topic_id >> (8 * 0)) & 0xFF;
+ 800ab22:      687b            ldr     r3, [r7, #4]
+ 800ab24:      8899            ldrh    r1, [r3, #4]
+ 800ab26:      69fb            ldr     r3, [r7, #28]
+ 800ab28:      683a            ldr     r2, [r7, #0]
+ 800ab2a:      4413            add     r3, r2
+ 800ab2c:      b2ca            uxtb    r2, r1
+ 800ab2e:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (this->topic_id >> (8 * 1)) & 0xFF;
+ 800ab30:      687b            ldr     r3, [r7, #4]
+ 800ab32:      889b            ldrh    r3, [r3, #4]
+ 800ab34:      0a1b            lsrs    r3, r3, #8
+ 800ab36:      b299            uxth    r1, r3
+ 800ab38:      69fb            ldr     r3, [r7, #28]
+ 800ab3a:      3301            adds    r3, #1
+ 800ab3c:      683a            ldr     r2, [r7, #0]
+ 800ab3e:      4413            add     r3, r2
+ 800ab40:      b2ca            uxtb    r2, r1
+ 800ab42:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->topic_id);
+ 800ab44:      69fb            ldr     r3, [r7, #28]
+ 800ab46:      3302            adds    r3, #2
+ 800ab48:      61fb            str     r3, [r7, #28]
+      uint32_t length_topic_name = strlen(this->topic_name);
+ 800ab4a:      687b            ldr     r3, [r7, #4]
+ 800ab4c:      689b            ldr     r3, [r3, #8]
+ 800ab4e:      4618            mov     r0, r3
+ 800ab50:      f7fc f940       bl      8006dd4 <strlen>
+ 800ab54:      61b8            str     r0, [r7, #24]
+      varToArr(outbuffer + offset, length_topic_name);
+ 800ab56:      69fb            ldr     r3, [r7, #28]
+ 800ab58:      683a            ldr     r2, [r7, #0]
+ 800ab5a:      4413            add     r3, r2
+ 800ab5c:      69b9            ldr     r1, [r7, #24]
+ 800ab5e:      4618            mov     r0, r3
+ 800ab60:      f000 ff8d       bl      800ba7e <_ZN3ros3Msg8varToArrIPhmEEvT_T0_>
+      offset += 4;
+ 800ab64:      69fb            ldr     r3, [r7, #28]
+ 800ab66:      3304            adds    r3, #4
+ 800ab68:      61fb            str     r3, [r7, #28]
+      memcpy(outbuffer + offset, this->topic_name, length_topic_name);
+ 800ab6a:      69fb            ldr     r3, [r7, #28]
+ 800ab6c:      683a            ldr     r2, [r7, #0]
+ 800ab6e:      18d0            adds    r0, r2, r3
+ 800ab70:      687b            ldr     r3, [r7, #4]
+ 800ab72:      689b            ldr     r3, [r3, #8]
+ 800ab74:      69ba            ldr     r2, [r7, #24]
+ 800ab76:      4619            mov     r1, r3
+ 800ab78:      f003 fbfd       bl      800e376 <memcpy>
+      offset += length_topic_name;
+ 800ab7c:      69fa            ldr     r2, [r7, #28]
+ 800ab7e:      69bb            ldr     r3, [r7, #24]
+ 800ab80:      4413            add     r3, r2
+ 800ab82:      61fb            str     r3, [r7, #28]
+      uint32_t length_message_type = strlen(this->message_type);
+ 800ab84:      687b            ldr     r3, [r7, #4]
+ 800ab86:      68db            ldr     r3, [r3, #12]
+ 800ab88:      4618            mov     r0, r3
+ 800ab8a:      f7fc f923       bl      8006dd4 <strlen>
+ 800ab8e:      6178            str     r0, [r7, #20]
+      varToArr(outbuffer + offset, length_message_type);
+ 800ab90:      69fb            ldr     r3, [r7, #28]
+ 800ab92:      683a            ldr     r2, [r7, #0]
+ 800ab94:      4413            add     r3, r2
+ 800ab96:      6979            ldr     r1, [r7, #20]
+ 800ab98:      4618            mov     r0, r3
+ 800ab9a:      f000 ff70       bl      800ba7e <_ZN3ros3Msg8varToArrIPhmEEvT_T0_>
+      offset += 4;
+ 800ab9e:      69fb            ldr     r3, [r7, #28]
+ 800aba0:      3304            adds    r3, #4
+ 800aba2:      61fb            str     r3, [r7, #28]
+      memcpy(outbuffer + offset, this->message_type, length_message_type);
+ 800aba4:      69fb            ldr     r3, [r7, #28]
+ 800aba6:      683a            ldr     r2, [r7, #0]
+ 800aba8:      18d0            adds    r0, r2, r3
+ 800abaa:      687b            ldr     r3, [r7, #4]
+ 800abac:      68db            ldr     r3, [r3, #12]
+ 800abae:      697a            ldr     r2, [r7, #20]
+ 800abb0:      4619            mov     r1, r3
+ 800abb2:      f003 fbe0       bl      800e376 <memcpy>
+      offset += length_message_type;
+ 800abb6:      69fa            ldr     r2, [r7, #28]
+ 800abb8:      697b            ldr     r3, [r7, #20]
+ 800abba:      4413            add     r3, r2
+ 800abbc:      61fb            str     r3, [r7, #28]
+      uint32_t length_md5sum = strlen(this->md5sum);
+ 800abbe:      687b            ldr     r3, [r7, #4]
+ 800abc0:      691b            ldr     r3, [r3, #16]
+ 800abc2:      4618            mov     r0, r3
+ 800abc4:      f7fc f906       bl      8006dd4 <strlen>
+ 800abc8:      6138            str     r0, [r7, #16]
+      varToArr(outbuffer + offset, length_md5sum);
+ 800abca:      69fb            ldr     r3, [r7, #28]
+ 800abcc:      683a            ldr     r2, [r7, #0]
+ 800abce:      4413            add     r3, r2
+ 800abd0:      6939            ldr     r1, [r7, #16]
+ 800abd2:      4618            mov     r0, r3
+ 800abd4:      f000 ff53       bl      800ba7e <_ZN3ros3Msg8varToArrIPhmEEvT_T0_>
+      offset += 4;
+ 800abd8:      69fb            ldr     r3, [r7, #28]
+ 800abda:      3304            adds    r3, #4
+ 800abdc:      61fb            str     r3, [r7, #28]
+      memcpy(outbuffer + offset, this->md5sum, length_md5sum);
+ 800abde:      69fb            ldr     r3, [r7, #28]
+ 800abe0:      683a            ldr     r2, [r7, #0]
+ 800abe2:      18d0            adds    r0, r2, r3
+ 800abe4:      687b            ldr     r3, [r7, #4]
+ 800abe6:      691b            ldr     r3, [r3, #16]
+ 800abe8:      693a            ldr     r2, [r7, #16]
+ 800abea:      4619            mov     r1, r3
+ 800abec:      f003 fbc3       bl      800e376 <memcpy>
+      offset += length_md5sum;
+ 800abf0:      69fa            ldr     r2, [r7, #28]
+ 800abf2:      693b            ldr     r3, [r7, #16]
+ 800abf4:      4413            add     r3, r2
+ 800abf6:      61fb            str     r3, [r7, #28]
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buffer_size;
+      u_buffer_size.real = this->buffer_size;
+ 800abf8:      687b            ldr     r3, [r7, #4]
+ 800abfa:      695b            ldr     r3, [r3, #20]
+ 800abfc:      60fb            str     r3, [r7, #12]
+      *(outbuffer + offset + 0) = (u_buffer_size.base >> (8 * 0)) & 0xFF;
+ 800abfe:      68f9            ldr     r1, [r7, #12]
+ 800ac00:      69fb            ldr     r3, [r7, #28]
+ 800ac02:      683a            ldr     r2, [r7, #0]
+ 800ac04:      4413            add     r3, r2
+ 800ac06:      b2ca            uxtb    r2, r1
+ 800ac08:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (u_buffer_size.base >> (8 * 1)) & 0xFF;
+ 800ac0a:      68fb            ldr     r3, [r7, #12]
+ 800ac0c:      0a19            lsrs    r1, r3, #8
+ 800ac0e:      69fb            ldr     r3, [r7, #28]
+ 800ac10:      3301            adds    r3, #1
+ 800ac12:      683a            ldr     r2, [r7, #0]
+ 800ac14:      4413            add     r3, r2
+ 800ac16:      b2ca            uxtb    r2, r1
+ 800ac18:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (u_buffer_size.base >> (8 * 2)) & 0xFF;
+ 800ac1a:      68fb            ldr     r3, [r7, #12]
+ 800ac1c:      0c19            lsrs    r1, r3, #16
+ 800ac1e:      69fb            ldr     r3, [r7, #28]
+ 800ac20:      3302            adds    r3, #2
+ 800ac22:      683a            ldr     r2, [r7, #0]
+ 800ac24:      4413            add     r3, r2
+ 800ac26:      b2ca            uxtb    r2, r1
+ 800ac28:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (u_buffer_size.base >> (8 * 3)) & 0xFF;
+ 800ac2a:      68fb            ldr     r3, [r7, #12]
+ 800ac2c:      0e19            lsrs    r1, r3, #24
+ 800ac2e:      69fb            ldr     r3, [r7, #28]
+ 800ac30:      3303            adds    r3, #3
+ 800ac32:      683a            ldr     r2, [r7, #0]
+ 800ac34:      4413            add     r3, r2
+ 800ac36:      b2ca            uxtb    r2, r1
+ 800ac38:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->buffer_size);
+ 800ac3a:      69fb            ldr     r3, [r7, #28]
+ 800ac3c:      3304            adds    r3, #4
+ 800ac3e:      61fb            str     r3, [r7, #28]
+      return offset;
+ 800ac40:      69fb            ldr     r3, [r7, #28]
+    }
+ 800ac42:      4618            mov     r0, r3
+ 800ac44:      3720            adds    r7, #32
+ 800ac46:      46bd            mov     sp, r7
+ 800ac48:      bd80            pop     {r7, pc}
+
+0800ac4a <_ZN14rosserial_msgs9TopicInfo11deserializeEPh>:
+
+    virtual int deserialize(unsigned char *inbuffer)
+ 800ac4a:      b580            push    {r7, lr}
+ 800ac4c:      b08a            sub     sp, #40 ; 0x28
+ 800ac4e:      af00            add     r7, sp, #0
+ 800ac50:      6078            str     r0, [r7, #4]
+ 800ac52:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800ac54:      2300            movs    r3, #0
+ 800ac56:      61bb            str     r3, [r7, #24]
+      this->topic_id =  ((uint16_t) (*(inbuffer + offset)));
+ 800ac58:      69bb            ldr     r3, [r7, #24]
+ 800ac5a:      683a            ldr     r2, [r7, #0]
+ 800ac5c:      4413            add     r3, r2
+ 800ac5e:      781b            ldrb    r3, [r3, #0]
+ 800ac60:      b29a            uxth    r2, r3
+ 800ac62:      687b            ldr     r3, [r7, #4]
+ 800ac64:      809a            strh    r2, [r3, #4]
+      this->topic_id |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+ 800ac66:      687b            ldr     r3, [r7, #4]
+ 800ac68:      889b            ldrh    r3, [r3, #4]
+ 800ac6a:      b21a            sxth    r2, r3
+ 800ac6c:      69bb            ldr     r3, [r7, #24]
+ 800ac6e:      3301            adds    r3, #1
+ 800ac70:      6839            ldr     r1, [r7, #0]
+ 800ac72:      440b            add     r3, r1
+ 800ac74:      781b            ldrb    r3, [r3, #0]
+ 800ac76:      021b            lsls    r3, r3, #8
+ 800ac78:      b21b            sxth    r3, r3
+ 800ac7a:      4313            orrs    r3, r2
+ 800ac7c:      b21b            sxth    r3, r3
+ 800ac7e:      b29a            uxth    r2, r3
+ 800ac80:      687b            ldr     r3, [r7, #4]
+ 800ac82:      809a            strh    r2, [r3, #4]
+      offset += sizeof(this->topic_id);
+ 800ac84:      69bb            ldr     r3, [r7, #24]
+ 800ac86:      3302            adds    r3, #2
+ 800ac88:      61bb            str     r3, [r7, #24]
+      uint32_t length_topic_name;
+      arrToVar(length_topic_name, (inbuffer + offset));
+ 800ac8a:      69bb            ldr     r3, [r7, #24]
+ 800ac8c:      683a            ldr     r2, [r7, #0]
+ 800ac8e:      441a            add     r2, r3
+ 800ac90:      f107 0314       add.w   r3, r7, #20
+ 800ac94:      4611            mov     r1, r2
+ 800ac96:      4618            mov     r0, r3
+ 800ac98:      f000 ff0f       bl      800baba <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_>
+      offset += 4;
+ 800ac9c:      69bb            ldr     r3, [r7, #24]
+ 800ac9e:      3304            adds    r3, #4
+ 800aca0:      61bb            str     r3, [r7, #24]
+      for(unsigned int k= offset; k< offset+length_topic_name; ++k){
+ 800aca2:      69bb            ldr     r3, [r7, #24]
+ 800aca4:      627b            str     r3, [r7, #36]   ; 0x24
+ 800aca6:      69ba            ldr     r2, [r7, #24]
+ 800aca8:      697b            ldr     r3, [r7, #20]
+ 800acaa:      4413            add     r3, r2
+ 800acac:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800acae:      429a            cmp     r2, r3
+ 800acb0:      d20c            bcs.n   800accc <_ZN14rosserial_msgs9TopicInfo11deserializeEPh+0x82>
+          inbuffer[k-1]=inbuffer[k];
+ 800acb2:      683a            ldr     r2, [r7, #0]
+ 800acb4:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800acb6:      441a            add     r2, r3
+ 800acb8:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800acba:      3b01            subs    r3, #1
+ 800acbc:      6839            ldr     r1, [r7, #0]
+ 800acbe:      440b            add     r3, r1
+ 800acc0:      7812            ldrb    r2, [r2, #0]
+ 800acc2:      701a            strb    r2, [r3, #0]
+      for(unsigned int k= offset; k< offset+length_topic_name; ++k){
+ 800acc4:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800acc6:      3301            adds    r3, #1
+ 800acc8:      627b            str     r3, [r7, #36]   ; 0x24
+ 800acca:      e7ec            b.n     800aca6 <_ZN14rosserial_msgs9TopicInfo11deserializeEPh+0x5c>
+      }
+      inbuffer[offset+length_topic_name-1]=0;
+ 800accc:      69ba            ldr     r2, [r7, #24]
+ 800acce:      697b            ldr     r3, [r7, #20]
+ 800acd0:      4413            add     r3, r2
+ 800acd2:      3b01            subs    r3, #1
+ 800acd4:      683a            ldr     r2, [r7, #0]
+ 800acd6:      4413            add     r3, r2
+ 800acd8:      2200            movs    r2, #0
+ 800acda:      701a            strb    r2, [r3, #0]
+      this->topic_name = (char *)(inbuffer + offset-1);
+ 800acdc:      69bb            ldr     r3, [r7, #24]
+ 800acde:      3b01            subs    r3, #1
+ 800ace0:      683a            ldr     r2, [r7, #0]
+ 800ace2:      441a            add     r2, r3
+ 800ace4:      687b            ldr     r3, [r7, #4]
+ 800ace6:      609a            str     r2, [r3, #8]
+      offset += length_topic_name;
+ 800ace8:      69ba            ldr     r2, [r7, #24]
+ 800acea:      697b            ldr     r3, [r7, #20]
+ 800acec:      4413            add     r3, r2
+ 800acee:      61bb            str     r3, [r7, #24]
+      uint32_t length_message_type;
+      arrToVar(length_message_type, (inbuffer + offset));
+ 800acf0:      69bb            ldr     r3, [r7, #24]
+ 800acf2:      683a            ldr     r2, [r7, #0]
+ 800acf4:      441a            add     r2, r3
+ 800acf6:      f107 0310       add.w   r3, r7, #16
+ 800acfa:      4611            mov     r1, r2
+ 800acfc:      4618            mov     r0, r3
+ 800acfe:      f000 fedc       bl      800baba <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_>
+      offset += 4;
+ 800ad02:      69bb            ldr     r3, [r7, #24]
+ 800ad04:      3304            adds    r3, #4
+ 800ad06:      61bb            str     r3, [r7, #24]
+      for(unsigned int k= offset; k< offset+length_message_type; ++k){
+ 800ad08:      69bb            ldr     r3, [r7, #24]
+ 800ad0a:      623b            str     r3, [r7, #32]
+ 800ad0c:      69ba            ldr     r2, [r7, #24]
+ 800ad0e:      693b            ldr     r3, [r7, #16]
+ 800ad10:      4413            add     r3, r2
+ 800ad12:      6a3a            ldr     r2, [r7, #32]
+ 800ad14:      429a            cmp     r2, r3
+ 800ad16:      d20c            bcs.n   800ad32 <_ZN14rosserial_msgs9TopicInfo11deserializeEPh+0xe8>
+          inbuffer[k-1]=inbuffer[k];
+ 800ad18:      683a            ldr     r2, [r7, #0]
+ 800ad1a:      6a3b            ldr     r3, [r7, #32]
+ 800ad1c:      441a            add     r2, r3
+ 800ad1e:      6a3b            ldr     r3, [r7, #32]
+ 800ad20:      3b01            subs    r3, #1
+ 800ad22:      6839            ldr     r1, [r7, #0]
+ 800ad24:      440b            add     r3, r1
+ 800ad26:      7812            ldrb    r2, [r2, #0]
+ 800ad28:      701a            strb    r2, [r3, #0]
+      for(unsigned int k= offset; k< offset+length_message_type; ++k){
+ 800ad2a:      6a3b            ldr     r3, [r7, #32]
+ 800ad2c:      3301            adds    r3, #1
+ 800ad2e:      623b            str     r3, [r7, #32]
+ 800ad30:      e7ec            b.n     800ad0c <_ZN14rosserial_msgs9TopicInfo11deserializeEPh+0xc2>
+      }
+      inbuffer[offset+length_message_type-1]=0;
+ 800ad32:      69ba            ldr     r2, [r7, #24]
+ 800ad34:      693b            ldr     r3, [r7, #16]
+ 800ad36:      4413            add     r3, r2
+ 800ad38:      3b01            subs    r3, #1
+ 800ad3a:      683a            ldr     r2, [r7, #0]
+ 800ad3c:      4413            add     r3, r2
+ 800ad3e:      2200            movs    r2, #0
+ 800ad40:      701a            strb    r2, [r3, #0]
+      this->message_type = (char *)(inbuffer + offset-1);
+ 800ad42:      69bb            ldr     r3, [r7, #24]
+ 800ad44:      3b01            subs    r3, #1
+ 800ad46:      683a            ldr     r2, [r7, #0]
+ 800ad48:      441a            add     r2, r3
+ 800ad4a:      687b            ldr     r3, [r7, #4]
+ 800ad4c:      60da            str     r2, [r3, #12]
+      offset += length_message_type;
+ 800ad4e:      69ba            ldr     r2, [r7, #24]
+ 800ad50:      693b            ldr     r3, [r7, #16]
+ 800ad52:      4413            add     r3, r2
+ 800ad54:      61bb            str     r3, [r7, #24]
+      uint32_t length_md5sum;
+      arrToVar(length_md5sum, (inbuffer + offset));
+ 800ad56:      69bb            ldr     r3, [r7, #24]
+ 800ad58:      683a            ldr     r2, [r7, #0]
+ 800ad5a:      441a            add     r2, r3
+ 800ad5c:      f107 030c       add.w   r3, r7, #12
+ 800ad60:      4611            mov     r1, r2
+ 800ad62:      4618            mov     r0, r3
+ 800ad64:      f000 fea9       bl      800baba <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_>
+      offset += 4;
+ 800ad68:      69bb            ldr     r3, [r7, #24]
+ 800ad6a:      3304            adds    r3, #4
+ 800ad6c:      61bb            str     r3, [r7, #24]
+      for(unsigned int k= offset; k< offset+length_md5sum; ++k){
+ 800ad6e:      69bb            ldr     r3, [r7, #24]
+ 800ad70:      61fb            str     r3, [r7, #28]
+ 800ad72:      69ba            ldr     r2, [r7, #24]
+ 800ad74:      68fb            ldr     r3, [r7, #12]
+ 800ad76:      4413            add     r3, r2
+ 800ad78:      69fa            ldr     r2, [r7, #28]
+ 800ad7a:      429a            cmp     r2, r3
+ 800ad7c:      d20c            bcs.n   800ad98 <_ZN14rosserial_msgs9TopicInfo11deserializeEPh+0x14e>
+          inbuffer[k-1]=inbuffer[k];
+ 800ad7e:      683a            ldr     r2, [r7, #0]
+ 800ad80:      69fb            ldr     r3, [r7, #28]
+ 800ad82:      441a            add     r2, r3
+ 800ad84:      69fb            ldr     r3, [r7, #28]
+ 800ad86:      3b01            subs    r3, #1
+ 800ad88:      6839            ldr     r1, [r7, #0]
+ 800ad8a:      440b            add     r3, r1
+ 800ad8c:      7812            ldrb    r2, [r2, #0]
+ 800ad8e:      701a            strb    r2, [r3, #0]
+      for(unsigned int k= offset; k< offset+length_md5sum; ++k){
+ 800ad90:      69fb            ldr     r3, [r7, #28]
+ 800ad92:      3301            adds    r3, #1
+ 800ad94:      61fb            str     r3, [r7, #28]
+ 800ad96:      e7ec            b.n     800ad72 <_ZN14rosserial_msgs9TopicInfo11deserializeEPh+0x128>
+      }
+      inbuffer[offset+length_md5sum-1]=0;
+ 800ad98:      69ba            ldr     r2, [r7, #24]
+ 800ad9a:      68fb            ldr     r3, [r7, #12]
+ 800ad9c:      4413            add     r3, r2
+ 800ad9e:      3b01            subs    r3, #1
+ 800ada0:      683a            ldr     r2, [r7, #0]
+ 800ada2:      4413            add     r3, r2
+ 800ada4:      2200            movs    r2, #0
+ 800ada6:      701a            strb    r2, [r3, #0]
+      this->md5sum = (char *)(inbuffer + offset-1);
+ 800ada8:      69bb            ldr     r3, [r7, #24]
+ 800adaa:      3b01            subs    r3, #1
+ 800adac:      683a            ldr     r2, [r7, #0]
+ 800adae:      441a            add     r2, r3
+ 800adb0:      687b            ldr     r3, [r7, #4]
+ 800adb2:      611a            str     r2, [r3, #16]
+      offset += length_md5sum;
+ 800adb4:      69ba            ldr     r2, [r7, #24]
+ 800adb6:      68fb            ldr     r3, [r7, #12]
+ 800adb8:      4413            add     r3, r2
+ 800adba:      61bb            str     r3, [r7, #24]
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buffer_size;
+      u_buffer_size.base = 0;
+ 800adbc:      2300            movs    r3, #0
+ 800adbe:      60bb            str     r3, [r7, #8]
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+ 800adc0:      68bb            ldr     r3, [r7, #8]
+ 800adc2:      69ba            ldr     r2, [r7, #24]
+ 800adc4:      6839            ldr     r1, [r7, #0]
+ 800adc6:      440a            add     r2, r1
+ 800adc8:      7812            ldrb    r2, [r2, #0]
+ 800adca:      4313            orrs    r3, r2
+ 800adcc:      60bb            str     r3, [r7, #8]
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+ 800adce:      68ba            ldr     r2, [r7, #8]
+ 800add0:      69bb            ldr     r3, [r7, #24]
+ 800add2:      3301            adds    r3, #1
+ 800add4:      6839            ldr     r1, [r7, #0]
+ 800add6:      440b            add     r3, r1
+ 800add8:      781b            ldrb    r3, [r3, #0]
+ 800adda:      021b            lsls    r3, r3, #8
+ 800addc:      4313            orrs    r3, r2
+ 800adde:      60bb            str     r3, [r7, #8]
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+ 800ade0:      68ba            ldr     r2, [r7, #8]
+ 800ade2:      69bb            ldr     r3, [r7, #24]
+ 800ade4:      3302            adds    r3, #2
+ 800ade6:      6839            ldr     r1, [r7, #0]
+ 800ade8:      440b            add     r3, r1
+ 800adea:      781b            ldrb    r3, [r3, #0]
+ 800adec:      041b            lsls    r3, r3, #16
+ 800adee:      4313            orrs    r3, r2
+ 800adf0:      60bb            str     r3, [r7, #8]
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+ 800adf2:      68ba            ldr     r2, [r7, #8]
+ 800adf4:      69bb            ldr     r3, [r7, #24]
+ 800adf6:      3303            adds    r3, #3
+ 800adf8:      6839            ldr     r1, [r7, #0]
+ 800adfa:      440b            add     r3, r1
+ 800adfc:      781b            ldrb    r3, [r3, #0]
+ 800adfe:      061b            lsls    r3, r3, #24
+ 800ae00:      4313            orrs    r3, r2
+ 800ae02:      60bb            str     r3, [r7, #8]
+      this->buffer_size = u_buffer_size.real;
+ 800ae04:      68ba            ldr     r2, [r7, #8]
+ 800ae06:      687b            ldr     r3, [r7, #4]
+ 800ae08:      615a            str     r2, [r3, #20]
+      offset += sizeof(this->buffer_size);
+ 800ae0a:      69bb            ldr     r3, [r7, #24]
+ 800ae0c:      3304            adds    r3, #4
+ 800ae0e:      61bb            str     r3, [r7, #24]
+     return offset;
+ 800ae10:      69bb            ldr     r3, [r7, #24]
+    }
+ 800ae12:      4618            mov     r0, r3
+ 800ae14:      3728            adds    r7, #40 ; 0x28
+ 800ae16:      46bd            mov     sp, r7
+ 800ae18:      bd80            pop     {r7, pc}
+       ...
+
+0800ae1c <_ZN14rosserial_msgs9TopicInfo7getTypeEv>:
+
+    const char * getType(){ return "rosserial_msgs/TopicInfo"; };
+ 800ae1c:      b480            push    {r7}
+ 800ae1e:      b083            sub     sp, #12
+ 800ae20:      af00            add     r7, sp, #0
+ 800ae22:      6078            str     r0, [r7, #4]
+ 800ae24:      4b03            ldr     r3, [pc, #12]   ; (800ae34 <_ZN14rosserial_msgs9TopicInfo7getTypeEv+0x18>)
+ 800ae26:      4618            mov     r0, r3
+ 800ae28:      370c            adds    r7, #12
+ 800ae2a:      46bd            mov     sp, r7
+ 800ae2c:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800ae30:      4770            bx      lr
+ 800ae32:      bf00            nop
+ 800ae34:      08011a1c        .word   0x08011a1c
+
+0800ae38 <_ZN14rosserial_msgs9TopicInfo6getMD5Ev>:
+    const char * getMD5(){ return "0ad51f88fc44892f8c10684077646005"; };
+ 800ae38:      b480            push    {r7}
+ 800ae3a:      b083            sub     sp, #12
+ 800ae3c:      af00            add     r7, sp, #0
+ 800ae3e:      6078            str     r0, [r7, #4]
+ 800ae40:      4b03            ldr     r3, [pc, #12]   ; (800ae50 <_ZN14rosserial_msgs9TopicInfo6getMD5Ev+0x18>)
+ 800ae42:      4618            mov     r0, r3
+ 800ae44:      370c            adds    r7, #12
+ 800ae46:      46bd            mov     sp, r7
+ 800ae48:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800ae4c:      4770            bx      lr
+ 800ae4e:      bf00            nop
+ 800ae50:      08011a38        .word   0x08011a38
+
+0800ae54 <_ZN14rosserial_msgs3LogC1Ev>:
+      enum { INFO = 1 };
+      enum { WARN = 2 };
+      enum { ERROR = 3 };
+      enum { FATAL = 4 };
+
+    Log():
+ 800ae54:      b580            push    {r7, lr}
+ 800ae56:      b082            sub     sp, #8
+ 800ae58:      af00            add     r7, sp, #0
+ 800ae5a:      6078            str     r0, [r7, #4]
+      level(0),
+      msg("")
+ 800ae5c:      687b            ldr     r3, [r7, #4]
+ 800ae5e:      4618            mov     r0, r3
+ 800ae60:      f7ff fc86       bl      800a770 <_ZN3ros3MsgC1Ev>
+ 800ae64:      4a06            ldr     r2, [pc, #24]   ; (800ae80 <_ZN14rosserial_msgs3LogC1Ev+0x2c>)
+ 800ae66:      687b            ldr     r3, [r7, #4]
+ 800ae68:      601a            str     r2, [r3, #0]
+ 800ae6a:      687b            ldr     r3, [r7, #4]
+ 800ae6c:      2200            movs    r2, #0
+ 800ae6e:      711a            strb    r2, [r3, #4]
+ 800ae70:      687b            ldr     r3, [r7, #4]
+ 800ae72:      4a04            ldr     r2, [pc, #16]   ; (800ae84 <_ZN14rosserial_msgs3LogC1Ev+0x30>)
+ 800ae74:      609a            str     r2, [r3, #8]
+    {
+    }
+ 800ae76:      687b            ldr     r3, [r7, #4]
+ 800ae78:      4618            mov     r0, r3
+ 800ae7a:      3708            adds    r7, #8
+ 800ae7c:      46bd            mov     sp, r7
+ 800ae7e:      bd80            pop     {r7, pc}
+ 800ae80:      08012308        .word   0x08012308
+ 800ae84:      080119b0        .word   0x080119b0
+
+0800ae88 <_ZNK14rosserial_msgs3Log9serializeEPh>:
+
+    virtual int serialize(unsigned char *outbuffer) const
+ 800ae88:      b580            push    {r7, lr}
+ 800ae8a:      b084            sub     sp, #16
+ 800ae8c:      af00            add     r7, sp, #0
+ 800ae8e:      6078            str     r0, [r7, #4]
+ 800ae90:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800ae92:      2300            movs    r3, #0
+ 800ae94:      60fb            str     r3, [r7, #12]
+      *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF;
+ 800ae96:      68fb            ldr     r3, [r7, #12]
+ 800ae98:      683a            ldr     r2, [r7, #0]
+ 800ae9a:      4413            add     r3, r2
+ 800ae9c:      687a            ldr     r2, [r7, #4]
+ 800ae9e:      7912            ldrb    r2, [r2, #4]
+ 800aea0:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->level);
+ 800aea2:      68fb            ldr     r3, [r7, #12]
+ 800aea4:      3301            adds    r3, #1
+ 800aea6:      60fb            str     r3, [r7, #12]
+      uint32_t length_msg = strlen(this->msg);
+ 800aea8:      687b            ldr     r3, [r7, #4]
+ 800aeaa:      689b            ldr     r3, [r3, #8]
+ 800aeac:      4618            mov     r0, r3
+ 800aeae:      f7fb ff91       bl      8006dd4 <strlen>
+ 800aeb2:      60b8            str     r0, [r7, #8]
+      varToArr(outbuffer + offset, length_msg);
+ 800aeb4:      68fb            ldr     r3, [r7, #12]
+ 800aeb6:      683a            ldr     r2, [r7, #0]
+ 800aeb8:      4413            add     r3, r2
+ 800aeba:      68b9            ldr     r1, [r7, #8]
+ 800aebc:      4618            mov     r0, r3
+ 800aebe:      f000 fdde       bl      800ba7e <_ZN3ros3Msg8varToArrIPhmEEvT_T0_>
+      offset += 4;
+ 800aec2:      68fb            ldr     r3, [r7, #12]
+ 800aec4:      3304            adds    r3, #4
+ 800aec6:      60fb            str     r3, [r7, #12]
+      memcpy(outbuffer + offset, this->msg, length_msg);
+ 800aec8:      68fb            ldr     r3, [r7, #12]
+ 800aeca:      683a            ldr     r2, [r7, #0]
+ 800aecc:      18d0            adds    r0, r2, r3
+ 800aece:      687b            ldr     r3, [r7, #4]
+ 800aed0:      689b            ldr     r3, [r3, #8]
+ 800aed2:      68ba            ldr     r2, [r7, #8]
+ 800aed4:      4619            mov     r1, r3
+ 800aed6:      f003 fa4e       bl      800e376 <memcpy>
+      offset += length_msg;
+ 800aeda:      68fa            ldr     r2, [r7, #12]
+ 800aedc:      68bb            ldr     r3, [r7, #8]
+ 800aede:      4413            add     r3, r2
+ 800aee0:      60fb            str     r3, [r7, #12]
+      return offset;
+ 800aee2:      68fb            ldr     r3, [r7, #12]
+    }
+ 800aee4:      4618            mov     r0, r3
+ 800aee6:      3710            adds    r7, #16
+ 800aee8:      46bd            mov     sp, r7
+ 800aeea:      bd80            pop     {r7, pc}
+
+0800aeec <_ZN14rosserial_msgs3Log11deserializeEPh>:
+
+    virtual int deserialize(unsigned char *inbuffer)
+ 800aeec:      b580            push    {r7, lr}
+ 800aeee:      b086            sub     sp, #24
+ 800aef0:      af00            add     r7, sp, #0
+ 800aef2:      6078            str     r0, [r7, #4]
+ 800aef4:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800aef6:      2300            movs    r3, #0
+ 800aef8:      613b            str     r3, [r7, #16]
+      this->level =  ((uint8_t) (*(inbuffer + offset)));
+ 800aefa:      693b            ldr     r3, [r7, #16]
+ 800aefc:      683a            ldr     r2, [r7, #0]
+ 800aefe:      4413            add     r3, r2
+ 800af00:      781a            ldrb    r2, [r3, #0]
+ 800af02:      687b            ldr     r3, [r7, #4]
+ 800af04:      711a            strb    r2, [r3, #4]
+      offset += sizeof(this->level);
+ 800af06:      693b            ldr     r3, [r7, #16]
+ 800af08:      3301            adds    r3, #1
+ 800af0a:      613b            str     r3, [r7, #16]
+      uint32_t length_msg;
+      arrToVar(length_msg, (inbuffer + offset));
+ 800af0c:      693b            ldr     r3, [r7, #16]
+ 800af0e:      683a            ldr     r2, [r7, #0]
+ 800af10:      441a            add     r2, r3
+ 800af12:      f107 030c       add.w   r3, r7, #12
+ 800af16:      4611            mov     r1, r2
+ 800af18:      4618            mov     r0, r3
+ 800af1a:      f000 fdce       bl      800baba <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_>
+      offset += 4;
+ 800af1e:      693b            ldr     r3, [r7, #16]
+ 800af20:      3304            adds    r3, #4
+ 800af22:      613b            str     r3, [r7, #16]
+      for(unsigned int k= offset; k< offset+length_msg; ++k){
+ 800af24:      693b            ldr     r3, [r7, #16]
+ 800af26:      617b            str     r3, [r7, #20]
+ 800af28:      693a            ldr     r2, [r7, #16]
+ 800af2a:      68fb            ldr     r3, [r7, #12]
+ 800af2c:      4413            add     r3, r2
+ 800af2e:      697a            ldr     r2, [r7, #20]
+ 800af30:      429a            cmp     r2, r3
+ 800af32:      d20c            bcs.n   800af4e <_ZN14rosserial_msgs3Log11deserializeEPh+0x62>
+          inbuffer[k-1]=inbuffer[k];
+ 800af34:      683a            ldr     r2, [r7, #0]
+ 800af36:      697b            ldr     r3, [r7, #20]
+ 800af38:      441a            add     r2, r3
+ 800af3a:      697b            ldr     r3, [r7, #20]
+ 800af3c:      3b01            subs    r3, #1
+ 800af3e:      6839            ldr     r1, [r7, #0]
+ 800af40:      440b            add     r3, r1
+ 800af42:      7812            ldrb    r2, [r2, #0]
+ 800af44:      701a            strb    r2, [r3, #0]
+      for(unsigned int k= offset; k< offset+length_msg; ++k){
+ 800af46:      697b            ldr     r3, [r7, #20]
+ 800af48:      3301            adds    r3, #1
+ 800af4a:      617b            str     r3, [r7, #20]
+ 800af4c:      e7ec            b.n     800af28 <_ZN14rosserial_msgs3Log11deserializeEPh+0x3c>
+      }
+      inbuffer[offset+length_msg-1]=0;
+ 800af4e:      693a            ldr     r2, [r7, #16]
+ 800af50:      68fb            ldr     r3, [r7, #12]
+ 800af52:      4413            add     r3, r2
+ 800af54:      3b01            subs    r3, #1
+ 800af56:      683a            ldr     r2, [r7, #0]
+ 800af58:      4413            add     r3, r2
+ 800af5a:      2200            movs    r2, #0
+ 800af5c:      701a            strb    r2, [r3, #0]
+      this->msg = (char *)(inbuffer + offset-1);
+ 800af5e:      693b            ldr     r3, [r7, #16]
+ 800af60:      3b01            subs    r3, #1
+ 800af62:      683a            ldr     r2, [r7, #0]
+ 800af64:      441a            add     r2, r3
+ 800af66:      687b            ldr     r3, [r7, #4]
+ 800af68:      609a            str     r2, [r3, #8]
+      offset += length_msg;
+ 800af6a:      693a            ldr     r2, [r7, #16]
+ 800af6c:      68fb            ldr     r3, [r7, #12]
+ 800af6e:      4413            add     r3, r2
+ 800af70:      613b            str     r3, [r7, #16]
+     return offset;
+ 800af72:      693b            ldr     r3, [r7, #16]
+    }
+ 800af74:      4618            mov     r0, r3
+ 800af76:      3718            adds    r7, #24
+ 800af78:      46bd            mov     sp, r7
+ 800af7a:      bd80            pop     {r7, pc}
+
+0800af7c <_ZN14rosserial_msgs3Log7getTypeEv>:
+
+    const char * getType(){ return "rosserial_msgs/Log"; };
+ 800af7c:      b480            push    {r7}
+ 800af7e:      b083            sub     sp, #12
+ 800af80:      af00            add     r7, sp, #0
+ 800af82:      6078            str     r0, [r7, #4]
+ 800af84:      4b03            ldr     r3, [pc, #12]   ; (800af94 <_ZN14rosserial_msgs3Log7getTypeEv+0x18>)
+ 800af86:      4618            mov     r0, r3
+ 800af88:      370c            adds    r7, #12
+ 800af8a:      46bd            mov     sp, r7
+ 800af8c:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800af90:      4770            bx      lr
+ 800af92:      bf00            nop
+ 800af94:      08011a5c        .word   0x08011a5c
+
+0800af98 <_ZN14rosserial_msgs3Log6getMD5Ev>:
+    const char * getMD5(){ return "11abd731c25933261cd6183bd12d6295"; };
+ 800af98:      b480            push    {r7}
+ 800af9a:      b083            sub     sp, #12
+ 800af9c:      af00            add     r7, sp, #0
+ 800af9e:      6078            str     r0, [r7, #4]
+ 800afa0:      4b03            ldr     r3, [pc, #12]   ; (800afb0 <_ZN14rosserial_msgs3Log6getMD5Ev+0x18>)
+ 800afa2:      4618            mov     r0, r3
+ 800afa4:      370c            adds    r7, #12
+ 800afa6:      46bd            mov     sp, r7
+ 800afa8:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800afac:      4770            bx      lr
+ 800afae:      bf00            nop
+ 800afb0:      08011a70        .word   0x08011a70
+
+0800afb4 <_ZN14rosserial_msgs20RequestParamResponseC1Ev>:
+      uint32_t strings_length;
+      typedef char* _strings_type;
+      _strings_type st_strings;
+      _strings_type * strings;
+
+    RequestParamResponse():
+ 800afb4:      b580            push    {r7, lr}
+ 800afb6:      b082            sub     sp, #8
+ 800afb8:      af00            add     r7, sp, #0
+ 800afba:      6078            str     r0, [r7, #4]
+      ints_length(0), ints(NULL),
+      floats_length(0), floats(NULL),
+      strings_length(0), strings(NULL)
+ 800afbc:      687b            ldr     r3, [r7, #4]
+ 800afbe:      4618            mov     r0, r3
+ 800afc0:      f7ff fbd6       bl      800a770 <_ZN3ros3MsgC1Ev>
+ 800afc4:      4a0c            ldr     r2, [pc, #48]   ; (800aff8 <_ZN14rosserial_msgs20RequestParamResponseC1Ev+0x44>)
+ 800afc6:      687b            ldr     r3, [r7, #4]
+ 800afc8:      601a            str     r2, [r3, #0]
+ 800afca:      687b            ldr     r3, [r7, #4]
+ 800afcc:      2200            movs    r2, #0
+ 800afce:      605a            str     r2, [r3, #4]
+ 800afd0:      687b            ldr     r3, [r7, #4]
+ 800afd2:      2200            movs    r2, #0
+ 800afd4:      60da            str     r2, [r3, #12]
+ 800afd6:      687b            ldr     r3, [r7, #4]
+ 800afd8:      2200            movs    r2, #0
+ 800afda:      611a            str     r2, [r3, #16]
+ 800afdc:      687b            ldr     r3, [r7, #4]
+ 800afde:      2200            movs    r2, #0
+ 800afe0:      619a            str     r2, [r3, #24]
+ 800afe2:      687b            ldr     r3, [r7, #4]
+ 800afe4:      2200            movs    r2, #0
+ 800afe6:      61da            str     r2, [r3, #28]
+ 800afe8:      687b            ldr     r3, [r7, #4]
+ 800afea:      2200            movs    r2, #0
+ 800afec:      625a            str     r2, [r3, #36]   ; 0x24
+    {
+    }
+ 800afee:      687b            ldr     r3, [r7, #4]
+ 800aff0:      4618            mov     r0, r3
+ 800aff2:      3708            adds    r7, #8
+ 800aff4:      46bd            mov     sp, r7
+ 800aff6:      bd80            pop     {r7, pc}
+ 800aff8:      080122f0        .word   0x080122f0
+
+0800affc <_ZNK14rosserial_msgs20RequestParamResponse9serializeEPh>:
+
+    virtual int serialize(unsigned char *outbuffer) const
+ 800affc:      b580            push    {r7, lr}
+ 800affe:      b08a            sub     sp, #40 ; 0x28
+ 800b000:      af00            add     r7, sp, #0
+ 800b002:      6078            str     r0, [r7, #4]
+ 800b004:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800b006:      2300            movs    r3, #0
+ 800b008:      627b            str     r3, [r7, #36]   ; 0x24
+      *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF;
+ 800b00a:      687b            ldr     r3, [r7, #4]
+ 800b00c:      6859            ldr     r1, [r3, #4]
+ 800b00e:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b010:      683a            ldr     r2, [r7, #0]
+ 800b012:      4413            add     r3, r2
+ 800b014:      b2ca            uxtb    r2, r1
+ 800b016:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF;
+ 800b018:      687b            ldr     r3, [r7, #4]
+ 800b01a:      685b            ldr     r3, [r3, #4]
+ 800b01c:      0a19            lsrs    r1, r3, #8
+ 800b01e:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b020:      3301            adds    r3, #1
+ 800b022:      683a            ldr     r2, [r7, #0]
+ 800b024:      4413            add     r3, r2
+ 800b026:      b2ca            uxtb    r2, r1
+ 800b028:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF;
+ 800b02a:      687b            ldr     r3, [r7, #4]
+ 800b02c:      685b            ldr     r3, [r3, #4]
+ 800b02e:      0c19            lsrs    r1, r3, #16
+ 800b030:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b032:      3302            adds    r3, #2
+ 800b034:      683a            ldr     r2, [r7, #0]
+ 800b036:      4413            add     r3, r2
+ 800b038:      b2ca            uxtb    r2, r1
+ 800b03a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF;
+ 800b03c:      687b            ldr     r3, [r7, #4]
+ 800b03e:      685b            ldr     r3, [r3, #4]
+ 800b040:      0e19            lsrs    r1, r3, #24
+ 800b042:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b044:      3303            adds    r3, #3
+ 800b046:      683a            ldr     r2, [r7, #0]
+ 800b048:      4413            add     r3, r2
+ 800b04a:      b2ca            uxtb    r2, r1
+ 800b04c:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->ints_length);
+ 800b04e:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b050:      3304            adds    r3, #4
+ 800b052:      627b            str     r3, [r7, #36]   ; 0x24
+      for( uint32_t i = 0; i < ints_length; i++){
+ 800b054:      2300            movs    r3, #0
+ 800b056:      623b            str     r3, [r7, #32]
+ 800b058:      687b            ldr     r3, [r7, #4]
+ 800b05a:      685b            ldr     r3, [r3, #4]
+ 800b05c:      6a3a            ldr     r2, [r7, #32]
+ 800b05e:      429a            cmp     r2, r3
+ 800b060:      d22b            bcs.n   800b0ba <_ZNK14rosserial_msgs20RequestParamResponse9serializeEPh+0xbe>
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_intsi;
+      u_intsi.real = this->ints[i];
+ 800b062:      687b            ldr     r3, [r7, #4]
+ 800b064:      68da            ldr     r2, [r3, #12]
+ 800b066:      6a3b            ldr     r3, [r7, #32]
+ 800b068:      009b            lsls    r3, r3, #2
+ 800b06a:      4413            add     r3, r2
+ 800b06c:      681b            ldr     r3, [r3, #0]
+ 800b06e:      613b            str     r3, [r7, #16]
+      *(outbuffer + offset + 0) = (u_intsi.base >> (8 * 0)) & 0xFF;
+ 800b070:      6939            ldr     r1, [r7, #16]
+ 800b072:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b074:      683a            ldr     r2, [r7, #0]
+ 800b076:      4413            add     r3, r2
+ 800b078:      b2ca            uxtb    r2, r1
+ 800b07a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (u_intsi.base >> (8 * 1)) & 0xFF;
+ 800b07c:      693b            ldr     r3, [r7, #16]
+ 800b07e:      0a19            lsrs    r1, r3, #8
+ 800b080:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b082:      3301            adds    r3, #1
+ 800b084:      683a            ldr     r2, [r7, #0]
+ 800b086:      4413            add     r3, r2
+ 800b088:      b2ca            uxtb    r2, r1
+ 800b08a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (u_intsi.base >> (8 * 2)) & 0xFF;
+ 800b08c:      693b            ldr     r3, [r7, #16]
+ 800b08e:      0c19            lsrs    r1, r3, #16
+ 800b090:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b092:      3302            adds    r3, #2
+ 800b094:      683a            ldr     r2, [r7, #0]
+ 800b096:      4413            add     r3, r2
+ 800b098:      b2ca            uxtb    r2, r1
+ 800b09a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (u_intsi.base >> (8 * 3)) & 0xFF;
+ 800b09c:      693b            ldr     r3, [r7, #16]
+ 800b09e:      0e19            lsrs    r1, r3, #24
+ 800b0a0:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b0a2:      3303            adds    r3, #3
+ 800b0a4:      683a            ldr     r2, [r7, #0]
+ 800b0a6:      4413            add     r3, r2
+ 800b0a8:      b2ca            uxtb    r2, r1
+ 800b0aa:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->ints[i]);
+ 800b0ac:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b0ae:      3304            adds    r3, #4
+ 800b0b0:      627b            str     r3, [r7, #36]   ; 0x24
+      for( uint32_t i = 0; i < ints_length; i++){
+ 800b0b2:      6a3b            ldr     r3, [r7, #32]
+ 800b0b4:      3301            adds    r3, #1
+ 800b0b6:      623b            str     r3, [r7, #32]
+ 800b0b8:      e7ce            b.n     800b058 <_ZNK14rosserial_msgs20RequestParamResponse9serializeEPh+0x5c>
+      }
+      *(outbuffer + offset + 0) = (this->floats_length >> (8 * 0)) & 0xFF;
+ 800b0ba:      687b            ldr     r3, [r7, #4]
+ 800b0bc:      6919            ldr     r1, [r3, #16]
+ 800b0be:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b0c0:      683a            ldr     r2, [r7, #0]
+ 800b0c2:      4413            add     r3, r2
+ 800b0c4:      b2ca            uxtb    r2, r1
+ 800b0c6:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (this->floats_length >> (8 * 1)) & 0xFF;
+ 800b0c8:      687b            ldr     r3, [r7, #4]
+ 800b0ca:      691b            ldr     r3, [r3, #16]
+ 800b0cc:      0a19            lsrs    r1, r3, #8
+ 800b0ce:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b0d0:      3301            adds    r3, #1
+ 800b0d2:      683a            ldr     r2, [r7, #0]
+ 800b0d4:      4413            add     r3, r2
+ 800b0d6:      b2ca            uxtb    r2, r1
+ 800b0d8:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (this->floats_length >> (8 * 2)) & 0xFF;
+ 800b0da:      687b            ldr     r3, [r7, #4]
+ 800b0dc:      691b            ldr     r3, [r3, #16]
+ 800b0de:      0c19            lsrs    r1, r3, #16
+ 800b0e0:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b0e2:      3302            adds    r3, #2
+ 800b0e4:      683a            ldr     r2, [r7, #0]
+ 800b0e6:      4413            add     r3, r2
+ 800b0e8:      b2ca            uxtb    r2, r1
+ 800b0ea:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (this->floats_length >> (8 * 3)) & 0xFF;
+ 800b0ec:      687b            ldr     r3, [r7, #4]
+ 800b0ee:      691b            ldr     r3, [r3, #16]
+ 800b0f0:      0e19            lsrs    r1, r3, #24
+ 800b0f2:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b0f4:      3303            adds    r3, #3
+ 800b0f6:      683a            ldr     r2, [r7, #0]
+ 800b0f8:      4413            add     r3, r2
+ 800b0fa:      b2ca            uxtb    r2, r1
+ 800b0fc:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->floats_length);
+ 800b0fe:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b100:      3304            adds    r3, #4
+ 800b102:      627b            str     r3, [r7, #36]   ; 0x24
+      for( uint32_t i = 0; i < floats_length; i++){
+ 800b104:      2300            movs    r3, #0
+ 800b106:      61fb            str     r3, [r7, #28]
+ 800b108:      687b            ldr     r3, [r7, #4]
+ 800b10a:      691b            ldr     r3, [r3, #16]
+ 800b10c:      69fa            ldr     r2, [r7, #28]
+ 800b10e:      429a            cmp     r2, r3
+ 800b110:      d22b            bcs.n   800b16a <_ZNK14rosserial_msgs20RequestParamResponse9serializeEPh+0x16e>
+      union {
+        float real;
+        uint32_t base;
+      } u_floatsi;
+      u_floatsi.real = this->floats[i];
+ 800b112:      687b            ldr     r3, [r7, #4]
+ 800b114:      699a            ldr     r2, [r3, #24]
+ 800b116:      69fb            ldr     r3, [r7, #28]
+ 800b118:      009b            lsls    r3, r3, #2
+ 800b11a:      4413            add     r3, r2
+ 800b11c:      681b            ldr     r3, [r3, #0]
+ 800b11e:      60fb            str     r3, [r7, #12]
+      *(outbuffer + offset + 0) = (u_floatsi.base >> (8 * 0)) & 0xFF;
+ 800b120:      68f9            ldr     r1, [r7, #12]
+ 800b122:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b124:      683a            ldr     r2, [r7, #0]
+ 800b126:      4413            add     r3, r2
+ 800b128:      b2ca            uxtb    r2, r1
+ 800b12a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (u_floatsi.base >> (8 * 1)) & 0xFF;
+ 800b12c:      68fb            ldr     r3, [r7, #12]
+ 800b12e:      0a19            lsrs    r1, r3, #8
+ 800b130:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b132:      3301            adds    r3, #1
+ 800b134:      683a            ldr     r2, [r7, #0]
+ 800b136:      4413            add     r3, r2
+ 800b138:      b2ca            uxtb    r2, r1
+ 800b13a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (u_floatsi.base >> (8 * 2)) & 0xFF;
+ 800b13c:      68fb            ldr     r3, [r7, #12]
+ 800b13e:      0c19            lsrs    r1, r3, #16
+ 800b140:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b142:      3302            adds    r3, #2
+ 800b144:      683a            ldr     r2, [r7, #0]
+ 800b146:      4413            add     r3, r2
+ 800b148:      b2ca            uxtb    r2, r1
+ 800b14a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (u_floatsi.base >> (8 * 3)) & 0xFF;
+ 800b14c:      68fb            ldr     r3, [r7, #12]
+ 800b14e:      0e19            lsrs    r1, r3, #24
+ 800b150:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b152:      3303            adds    r3, #3
+ 800b154:      683a            ldr     r2, [r7, #0]
+ 800b156:      4413            add     r3, r2
+ 800b158:      b2ca            uxtb    r2, r1
+ 800b15a:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->floats[i]);
+ 800b15c:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b15e:      3304            adds    r3, #4
+ 800b160:      627b            str     r3, [r7, #36]   ; 0x24
+      for( uint32_t i = 0; i < floats_length; i++){
+ 800b162:      69fb            ldr     r3, [r7, #28]
+ 800b164:      3301            adds    r3, #1
+ 800b166:      61fb            str     r3, [r7, #28]
+ 800b168:      e7ce            b.n     800b108 <_ZNK14rosserial_msgs20RequestParamResponse9serializeEPh+0x10c>
+      }
+      *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF;
+ 800b16a:      687b            ldr     r3, [r7, #4]
+ 800b16c:      69d9            ldr     r1, [r3, #28]
+ 800b16e:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b170:      683a            ldr     r2, [r7, #0]
+ 800b172:      4413            add     r3, r2
+ 800b174:      b2ca            uxtb    r2, r1
+ 800b176:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF;
+ 800b178:      687b            ldr     r3, [r7, #4]
+ 800b17a:      69db            ldr     r3, [r3, #28]
+ 800b17c:      0a19            lsrs    r1, r3, #8
+ 800b17e:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b180:      3301            adds    r3, #1
+ 800b182:      683a            ldr     r2, [r7, #0]
+ 800b184:      4413            add     r3, r2
+ 800b186:      b2ca            uxtb    r2, r1
+ 800b188:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF;
+ 800b18a:      687b            ldr     r3, [r7, #4]
+ 800b18c:      69db            ldr     r3, [r3, #28]
+ 800b18e:      0c19            lsrs    r1, r3, #16
+ 800b190:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b192:      3302            adds    r3, #2
+ 800b194:      683a            ldr     r2, [r7, #0]
+ 800b196:      4413            add     r3, r2
+ 800b198:      b2ca            uxtb    r2, r1
+ 800b19a:      701a            strb    r2, [r3, #0]
+      *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF;
+ 800b19c:      687b            ldr     r3, [r7, #4]
+ 800b19e:      69db            ldr     r3, [r3, #28]
+ 800b1a0:      0e19            lsrs    r1, r3, #24
+ 800b1a2:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b1a4:      3303            adds    r3, #3
+ 800b1a6:      683a            ldr     r2, [r7, #0]
+ 800b1a8:      4413            add     r3, r2
+ 800b1aa:      b2ca            uxtb    r2, r1
+ 800b1ac:      701a            strb    r2, [r3, #0]
+      offset += sizeof(this->strings_length);
+ 800b1ae:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b1b0:      3304            adds    r3, #4
+ 800b1b2:      627b            str     r3, [r7, #36]   ; 0x24
+      for( uint32_t i = 0; i < strings_length; i++){
+ 800b1b4:      2300            movs    r3, #0
+ 800b1b6:      61bb            str     r3, [r7, #24]
+ 800b1b8:      687b            ldr     r3, [r7, #4]
+ 800b1ba:      69db            ldr     r3, [r3, #28]
+ 800b1bc:      69ba            ldr     r2, [r7, #24]
+ 800b1be:      429a            cmp     r2, r3
+ 800b1c0:      d228            bcs.n   800b214 <_ZNK14rosserial_msgs20RequestParamResponse9serializeEPh+0x218>
+      uint32_t length_stringsi = strlen(this->strings[i]);
+ 800b1c2:      687b            ldr     r3, [r7, #4]
+ 800b1c4:      6a5a            ldr     r2, [r3, #36]   ; 0x24
+ 800b1c6:      69bb            ldr     r3, [r7, #24]
+ 800b1c8:      009b            lsls    r3, r3, #2
+ 800b1ca:      4413            add     r3, r2
+ 800b1cc:      681b            ldr     r3, [r3, #0]
+ 800b1ce:      4618            mov     r0, r3
+ 800b1d0:      f7fb fe00       bl      8006dd4 <strlen>
+ 800b1d4:      6178            str     r0, [r7, #20]
+      varToArr(outbuffer + offset, length_stringsi);
+ 800b1d6:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b1d8:      683a            ldr     r2, [r7, #0]
+ 800b1da:      4413            add     r3, r2
+ 800b1dc:      6979            ldr     r1, [r7, #20]
+ 800b1de:      4618            mov     r0, r3
+ 800b1e0:      f000 fc4d       bl      800ba7e <_ZN3ros3Msg8varToArrIPhmEEvT_T0_>
+      offset += 4;
+ 800b1e4:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b1e6:      3304            adds    r3, #4
+ 800b1e8:      627b            str     r3, [r7, #36]   ; 0x24
+      memcpy(outbuffer + offset, this->strings[i], length_stringsi);
+ 800b1ea:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b1ec:      683a            ldr     r2, [r7, #0]
+ 800b1ee:      18d0            adds    r0, r2, r3
+ 800b1f0:      687b            ldr     r3, [r7, #4]
+ 800b1f2:      6a5a            ldr     r2, [r3, #36]   ; 0x24
+ 800b1f4:      69bb            ldr     r3, [r7, #24]
+ 800b1f6:      009b            lsls    r3, r3, #2
+ 800b1f8:      4413            add     r3, r2
+ 800b1fa:      681b            ldr     r3, [r3, #0]
+ 800b1fc:      697a            ldr     r2, [r7, #20]
+ 800b1fe:      4619            mov     r1, r3
+ 800b200:      f003 f8b9       bl      800e376 <memcpy>
+      offset += length_stringsi;
+ 800b204:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800b206:      697b            ldr     r3, [r7, #20]
+ 800b208:      4413            add     r3, r2
+ 800b20a:      627b            str     r3, [r7, #36]   ; 0x24
+      for( uint32_t i = 0; i < strings_length; i++){
+ 800b20c:      69bb            ldr     r3, [r7, #24]
+ 800b20e:      3301            adds    r3, #1
+ 800b210:      61bb            str     r3, [r7, #24]
+ 800b212:      e7d1            b.n     800b1b8 <_ZNK14rosserial_msgs20RequestParamResponse9serializeEPh+0x1bc>
+      }
+      return offset;
+ 800b214:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+    }
+ 800b216:      4618            mov     r0, r3
+ 800b218:      3728            adds    r7, #40 ; 0x28
+ 800b21a:      46bd            mov     sp, r7
+ 800b21c:      bd80            pop     {r7, pc}
+
+0800b21e <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh>:
+
+    virtual int deserialize(unsigned char *inbuffer)
+ 800b21e:      b580            push    {r7, lr}
+ 800b220:      b08e            sub     sp, #56 ; 0x38
+ 800b222:      af00            add     r7, sp, #0
+ 800b224:      6078            str     r0, [r7, #4]
+ 800b226:      6039            str     r1, [r7, #0]
+    {
+      int offset = 0;
+ 800b228:      2300            movs    r3, #0
+ 800b22a:      637b            str     r3, [r7, #52]   ; 0x34
+      uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+ 800b22c:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b22e:      683a            ldr     r2, [r7, #0]
+ 800b230:      4413            add     r3, r2
+ 800b232:      781b            ldrb    r3, [r3, #0]
+ 800b234:      623b            str     r3, [r7, #32]
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+ 800b236:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b238:      3301            adds    r3, #1
+ 800b23a:      683a            ldr     r2, [r7, #0]
+ 800b23c:      4413            add     r3, r2
+ 800b23e:      781b            ldrb    r3, [r3, #0]
+ 800b240:      021b            lsls    r3, r3, #8
+ 800b242:      6a3a            ldr     r2, [r7, #32]
+ 800b244:      4313            orrs    r3, r2
+ 800b246:      623b            str     r3, [r7, #32]
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+ 800b248:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b24a:      3302            adds    r3, #2
+ 800b24c:      683a            ldr     r2, [r7, #0]
+ 800b24e:      4413            add     r3, r2
+ 800b250:      781b            ldrb    r3, [r3, #0]
+ 800b252:      041b            lsls    r3, r3, #16
+ 800b254:      6a3a            ldr     r2, [r7, #32]
+ 800b256:      4313            orrs    r3, r2
+ 800b258:      623b            str     r3, [r7, #32]
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+ 800b25a:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b25c:      3303            adds    r3, #3
+ 800b25e:      683a            ldr     r2, [r7, #0]
+ 800b260:      4413            add     r3, r2
+ 800b262:      781b            ldrb    r3, [r3, #0]
+ 800b264:      061b            lsls    r3, r3, #24
+ 800b266:      6a3a            ldr     r2, [r7, #32]
+ 800b268:      4313            orrs    r3, r2
+ 800b26a:      623b            str     r3, [r7, #32]
+      offset += sizeof(this->ints_length);
+ 800b26c:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b26e:      3304            adds    r3, #4
+ 800b270:      637b            str     r3, [r7, #52]   ; 0x34
+      if(ints_lengthT > ints_length)
+ 800b272:      687b            ldr     r3, [r7, #4]
+ 800b274:      685b            ldr     r3, [r3, #4]
+ 800b276:      6a3a            ldr     r2, [r7, #32]
+ 800b278:      429a            cmp     r2, r3
+ 800b27a:      d90a            bls.n   800b292 <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x74>
+        this->ints = (int32_t*)realloc(this->ints, ints_lengthT * sizeof(int32_t));
+ 800b27c:      687b            ldr     r3, [r7, #4]
+ 800b27e:      68da            ldr     r2, [r3, #12]
+ 800b280:      6a3b            ldr     r3, [r7, #32]
+ 800b282:      009b            lsls    r3, r3, #2
+ 800b284:      4619            mov     r1, r3
+ 800b286:      4610            mov     r0, r2
+ 800b288:      f003 f8e2       bl      800e450 <realloc>
+ 800b28c:      4602            mov     r2, r0
+ 800b28e:      687b            ldr     r3, [r7, #4]
+ 800b290:      60da            str     r2, [r3, #12]
+      ints_length = ints_lengthT;
+ 800b292:      687b            ldr     r3, [r7, #4]
+ 800b294:      6a3a            ldr     r2, [r7, #32]
+ 800b296:      605a            str     r2, [r3, #4]
+      for( uint32_t i = 0; i < ints_length; i++){
+ 800b298:      2300            movs    r3, #0
+ 800b29a:      633b            str     r3, [r7, #48]   ; 0x30
+ 800b29c:      687b            ldr     r3, [r7, #4]
+ 800b29e:      685b            ldr     r3, [r3, #4]
+ 800b2a0:      6b3a            ldr     r2, [r7, #48]   ; 0x30
+ 800b2a2:      429a            cmp     r2, r3
+ 800b2a4:      d236            bcs.n   800b314 <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0xf6>
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_ints;
+      u_st_ints.base = 0;
+ 800b2a6:      2300            movs    r3, #0
+ 800b2a8:      617b            str     r3, [r7, #20]
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+ 800b2aa:      697b            ldr     r3, [r7, #20]
+ 800b2ac:      6b7a            ldr     r2, [r7, #52]   ; 0x34
+ 800b2ae:      6839            ldr     r1, [r7, #0]
+ 800b2b0:      440a            add     r2, r1
+ 800b2b2:      7812            ldrb    r2, [r2, #0]
+ 800b2b4:      4313            orrs    r3, r2
+ 800b2b6:      617b            str     r3, [r7, #20]
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+ 800b2b8:      697a            ldr     r2, [r7, #20]
+ 800b2ba:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b2bc:      3301            adds    r3, #1
+ 800b2be:      6839            ldr     r1, [r7, #0]
+ 800b2c0:      440b            add     r3, r1
+ 800b2c2:      781b            ldrb    r3, [r3, #0]
+ 800b2c4:      021b            lsls    r3, r3, #8
+ 800b2c6:      4313            orrs    r3, r2
+ 800b2c8:      617b            str     r3, [r7, #20]
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+ 800b2ca:      697a            ldr     r2, [r7, #20]
+ 800b2cc:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b2ce:      3302            adds    r3, #2
+ 800b2d0:      6839            ldr     r1, [r7, #0]
+ 800b2d2:      440b            add     r3, r1
+ 800b2d4:      781b            ldrb    r3, [r3, #0]
+ 800b2d6:      041b            lsls    r3, r3, #16
+ 800b2d8:      4313            orrs    r3, r2
+ 800b2da:      617b            str     r3, [r7, #20]
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+ 800b2dc:      697a            ldr     r2, [r7, #20]
+ 800b2de:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b2e0:      3303            adds    r3, #3
+ 800b2e2:      6839            ldr     r1, [r7, #0]
+ 800b2e4:      440b            add     r3, r1
+ 800b2e6:      781b            ldrb    r3, [r3, #0]
+ 800b2e8:      061b            lsls    r3, r3, #24
+ 800b2ea:      4313            orrs    r3, r2
+ 800b2ec:      617b            str     r3, [r7, #20]
+      this->st_ints = u_st_ints.real;
+ 800b2ee:      697a            ldr     r2, [r7, #20]
+ 800b2f0:      687b            ldr     r3, [r7, #4]
+ 800b2f2:      609a            str     r2, [r3, #8]
+      offset += sizeof(this->st_ints);
+ 800b2f4:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b2f6:      3304            adds    r3, #4
+ 800b2f8:      637b            str     r3, [r7, #52]   ; 0x34
+        memcpy( &(this->ints[i]), &(this->st_ints), sizeof(int32_t));
+ 800b2fa:      687b            ldr     r3, [r7, #4]
+ 800b2fc:      68da            ldr     r2, [r3, #12]
+ 800b2fe:      6b3b            ldr     r3, [r7, #48]   ; 0x30
+ 800b300:      009b            lsls    r3, r3, #2
+ 800b302:      4413            add     r3, r2
+ 800b304:      687a            ldr     r2, [r7, #4]
+ 800b306:      3208            adds    r2, #8
+ 800b308:      6812            ldr     r2, [r2, #0]
+ 800b30a:      601a            str     r2, [r3, #0]
+      for( uint32_t i = 0; i < ints_length; i++){
+ 800b30c:      6b3b            ldr     r3, [r7, #48]   ; 0x30
+ 800b30e:      3301            adds    r3, #1
+ 800b310:      633b            str     r3, [r7, #48]   ; 0x30
+ 800b312:      e7c3            b.n     800b29c <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x7e>
+      }
+      uint32_t floats_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+ 800b314:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b316:      683a            ldr     r2, [r7, #0]
+ 800b318:      4413            add     r3, r2
+ 800b31a:      781b            ldrb    r3, [r3, #0]
+ 800b31c:      61fb            str     r3, [r7, #28]
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+ 800b31e:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b320:      3301            adds    r3, #1
+ 800b322:      683a            ldr     r2, [r7, #0]
+ 800b324:      4413            add     r3, r2
+ 800b326:      781b            ldrb    r3, [r3, #0]
+ 800b328:      021b            lsls    r3, r3, #8
+ 800b32a:      69fa            ldr     r2, [r7, #28]
+ 800b32c:      4313            orrs    r3, r2
+ 800b32e:      61fb            str     r3, [r7, #28]
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+ 800b330:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b332:      3302            adds    r3, #2
+ 800b334:      683a            ldr     r2, [r7, #0]
+ 800b336:      4413            add     r3, r2
+ 800b338:      781b            ldrb    r3, [r3, #0]
+ 800b33a:      041b            lsls    r3, r3, #16
+ 800b33c:      69fa            ldr     r2, [r7, #28]
+ 800b33e:      4313            orrs    r3, r2
+ 800b340:      61fb            str     r3, [r7, #28]
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+ 800b342:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b344:      3303            adds    r3, #3
+ 800b346:      683a            ldr     r2, [r7, #0]
+ 800b348:      4413            add     r3, r2
+ 800b34a:      781b            ldrb    r3, [r3, #0]
+ 800b34c:      061b            lsls    r3, r3, #24
+ 800b34e:      69fa            ldr     r2, [r7, #28]
+ 800b350:      4313            orrs    r3, r2
+ 800b352:      61fb            str     r3, [r7, #28]
+      offset += sizeof(this->floats_length);
+ 800b354:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b356:      3304            adds    r3, #4
+ 800b358:      637b            str     r3, [r7, #52]   ; 0x34
+      if(floats_lengthT > floats_length)
+ 800b35a:      687b            ldr     r3, [r7, #4]
+ 800b35c:      691b            ldr     r3, [r3, #16]
+ 800b35e:      69fa            ldr     r2, [r7, #28]
+ 800b360:      429a            cmp     r2, r3
+ 800b362:      d90a            bls.n   800b37a <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x15c>
+        this->floats = (float*)realloc(this->floats, floats_lengthT * sizeof(float));
+ 800b364:      687b            ldr     r3, [r7, #4]
+ 800b366:      699a            ldr     r2, [r3, #24]
+ 800b368:      69fb            ldr     r3, [r7, #28]
+ 800b36a:      009b            lsls    r3, r3, #2
+ 800b36c:      4619            mov     r1, r3
+ 800b36e:      4610            mov     r0, r2
+ 800b370:      f003 f86e       bl      800e450 <realloc>
+ 800b374:      4602            mov     r2, r0
+ 800b376:      687b            ldr     r3, [r7, #4]
+ 800b378:      619a            str     r2, [r3, #24]
+      floats_length = floats_lengthT;
+ 800b37a:      687b            ldr     r3, [r7, #4]
+ 800b37c:      69fa            ldr     r2, [r7, #28]
+ 800b37e:      611a            str     r2, [r3, #16]
+      for( uint32_t i = 0; i < floats_length; i++){
+ 800b380:      2300            movs    r3, #0
+ 800b382:      62fb            str     r3, [r7, #44]   ; 0x2c
+ 800b384:      687b            ldr     r3, [r7, #4]
+ 800b386:      691b            ldr     r3, [r3, #16]
+ 800b388:      6afa            ldr     r2, [r7, #44]   ; 0x2c
+ 800b38a:      429a            cmp     r2, r3
+ 800b38c:      d236            bcs.n   800b3fc <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x1de>
+      union {
+        float real;
+        uint32_t base;
+      } u_st_floats;
+      u_st_floats.base = 0;
+ 800b38e:      2300            movs    r3, #0
+ 800b390:      613b            str     r3, [r7, #16]
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+ 800b392:      693b            ldr     r3, [r7, #16]
+ 800b394:      6b7a            ldr     r2, [r7, #52]   ; 0x34
+ 800b396:      6839            ldr     r1, [r7, #0]
+ 800b398:      440a            add     r2, r1
+ 800b39a:      7812            ldrb    r2, [r2, #0]
+ 800b39c:      4313            orrs    r3, r2
+ 800b39e:      613b            str     r3, [r7, #16]
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+ 800b3a0:      693a            ldr     r2, [r7, #16]
+ 800b3a2:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b3a4:      3301            adds    r3, #1
+ 800b3a6:      6839            ldr     r1, [r7, #0]
+ 800b3a8:      440b            add     r3, r1
+ 800b3aa:      781b            ldrb    r3, [r3, #0]
+ 800b3ac:      021b            lsls    r3, r3, #8
+ 800b3ae:      4313            orrs    r3, r2
+ 800b3b0:      613b            str     r3, [r7, #16]
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+ 800b3b2:      693a            ldr     r2, [r7, #16]
+ 800b3b4:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b3b6:      3302            adds    r3, #2
+ 800b3b8:      6839            ldr     r1, [r7, #0]
+ 800b3ba:      440b            add     r3, r1
+ 800b3bc:      781b            ldrb    r3, [r3, #0]
+ 800b3be:      041b            lsls    r3, r3, #16
+ 800b3c0:      4313            orrs    r3, r2
+ 800b3c2:      613b            str     r3, [r7, #16]
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+ 800b3c4:      693a            ldr     r2, [r7, #16]
+ 800b3c6:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b3c8:      3303            adds    r3, #3
+ 800b3ca:      6839            ldr     r1, [r7, #0]
+ 800b3cc:      440b            add     r3, r1
+ 800b3ce:      781b            ldrb    r3, [r3, #0]
+ 800b3d0:      061b            lsls    r3, r3, #24
+ 800b3d2:      4313            orrs    r3, r2
+ 800b3d4:      613b            str     r3, [r7, #16]
+      this->st_floats = u_st_floats.real;
+ 800b3d6:      693a            ldr     r2, [r7, #16]
+ 800b3d8:      687b            ldr     r3, [r7, #4]
+ 800b3da:      615a            str     r2, [r3, #20]
+      offset += sizeof(this->st_floats);
+ 800b3dc:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b3de:      3304            adds    r3, #4
+ 800b3e0:      637b            str     r3, [r7, #52]   ; 0x34
+        memcpy( &(this->floats[i]), &(this->st_floats), sizeof(float));
+ 800b3e2:      687b            ldr     r3, [r7, #4]
+ 800b3e4:      699a            ldr     r2, [r3, #24]
+ 800b3e6:      6afb            ldr     r3, [r7, #44]   ; 0x2c
+ 800b3e8:      009b            lsls    r3, r3, #2
+ 800b3ea:      4413            add     r3, r2
+ 800b3ec:      687a            ldr     r2, [r7, #4]
+ 800b3ee:      3214            adds    r2, #20
+ 800b3f0:      6812            ldr     r2, [r2, #0]
+ 800b3f2:      601a            str     r2, [r3, #0]
+      for( uint32_t i = 0; i < floats_length; i++){
+ 800b3f4:      6afb            ldr     r3, [r7, #44]   ; 0x2c
+ 800b3f6:      3301            adds    r3, #1
+ 800b3f8:      62fb            str     r3, [r7, #44]   ; 0x2c
+ 800b3fa:      e7c3            b.n     800b384 <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x166>
+      }
+      uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+ 800b3fc:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b3fe:      683a            ldr     r2, [r7, #0]
+ 800b400:      4413            add     r3, r2
+ 800b402:      781b            ldrb    r3, [r3, #0]
+ 800b404:      61bb            str     r3, [r7, #24]
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+ 800b406:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b408:      3301            adds    r3, #1
+ 800b40a:      683a            ldr     r2, [r7, #0]
+ 800b40c:      4413            add     r3, r2
+ 800b40e:      781b            ldrb    r3, [r3, #0]
+ 800b410:      021b            lsls    r3, r3, #8
+ 800b412:      69ba            ldr     r2, [r7, #24]
+ 800b414:      4313            orrs    r3, r2
+ 800b416:      61bb            str     r3, [r7, #24]
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+ 800b418:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b41a:      3302            adds    r3, #2
+ 800b41c:      683a            ldr     r2, [r7, #0]
+ 800b41e:      4413            add     r3, r2
+ 800b420:      781b            ldrb    r3, [r3, #0]
+ 800b422:      041b            lsls    r3, r3, #16
+ 800b424:      69ba            ldr     r2, [r7, #24]
+ 800b426:      4313            orrs    r3, r2
+ 800b428:      61bb            str     r3, [r7, #24]
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+ 800b42a:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b42c:      3303            adds    r3, #3
+ 800b42e:      683a            ldr     r2, [r7, #0]
+ 800b430:      4413            add     r3, r2
+ 800b432:      781b            ldrb    r3, [r3, #0]
+ 800b434:      061b            lsls    r3, r3, #24
+ 800b436:      69ba            ldr     r2, [r7, #24]
+ 800b438:      4313            orrs    r3, r2
+ 800b43a:      61bb            str     r3, [r7, #24]
+      offset += sizeof(this->strings_length);
+ 800b43c:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b43e:      3304            adds    r3, #4
+ 800b440:      637b            str     r3, [r7, #52]   ; 0x34
+      if(strings_lengthT > strings_length)
+ 800b442:      687b            ldr     r3, [r7, #4]
+ 800b444:      69db            ldr     r3, [r3, #28]
+ 800b446:      69ba            ldr     r2, [r7, #24]
+ 800b448:      429a            cmp     r2, r3
+ 800b44a:      d90a            bls.n   800b462 <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x244>
+        this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*));
+ 800b44c:      687b            ldr     r3, [r7, #4]
+ 800b44e:      6a5a            ldr     r2, [r3, #36]   ; 0x24
+ 800b450:      69bb            ldr     r3, [r7, #24]
+ 800b452:      009b            lsls    r3, r3, #2
+ 800b454:      4619            mov     r1, r3
+ 800b456:      4610            mov     r0, r2
+ 800b458:      f002 fffa       bl      800e450 <realloc>
+ 800b45c:      4602            mov     r2, r0
+ 800b45e:      687b            ldr     r3, [r7, #4]
+ 800b460:      625a            str     r2, [r3, #36]   ; 0x24
+      strings_length = strings_lengthT;
+ 800b462:      687b            ldr     r3, [r7, #4]
+ 800b464:      69ba            ldr     r2, [r7, #24]
+ 800b466:      61da            str     r2, [r3, #28]
+      for( uint32_t i = 0; i < strings_length; i++){
+ 800b468:      2300            movs    r3, #0
+ 800b46a:      62bb            str     r3, [r7, #40]   ; 0x28
+ 800b46c:      687b            ldr     r3, [r7, #4]
+ 800b46e:      69db            ldr     r3, [r3, #28]
+ 800b470:      6aba            ldr     r2, [r7, #40]   ; 0x28
+ 800b472:      429a            cmp     r2, r3
+ 800b474:      d23f            bcs.n   800b4f6 <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x2d8>
+      uint32_t length_st_strings;
+      arrToVar(length_st_strings, (inbuffer + offset));
+ 800b476:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b478:      683a            ldr     r2, [r7, #0]
+ 800b47a:      441a            add     r2, r3
+ 800b47c:      f107 030c       add.w   r3, r7, #12
+ 800b480:      4611            mov     r1, r2
+ 800b482:      4618            mov     r0, r3
+ 800b484:      f000 fb19       bl      800baba <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_>
+      offset += 4;
+ 800b488:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b48a:      3304            adds    r3, #4
+ 800b48c:      637b            str     r3, [r7, #52]   ; 0x34
+      for(unsigned int k= offset; k< offset+length_st_strings; ++k){
+ 800b48e:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b490:      627b            str     r3, [r7, #36]   ; 0x24
+ 800b492:      6b7a            ldr     r2, [r7, #52]   ; 0x34
+ 800b494:      68fb            ldr     r3, [r7, #12]
+ 800b496:      4413            add     r3, r2
+ 800b498:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800b49a:      429a            cmp     r2, r3
+ 800b49c:      d20c            bcs.n   800b4b8 <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x29a>
+          inbuffer[k-1]=inbuffer[k];
+ 800b49e:      683a            ldr     r2, [r7, #0]
+ 800b4a0:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b4a2:      441a            add     r2, r3
+ 800b4a4:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b4a6:      3b01            subs    r3, #1
+ 800b4a8:      6839            ldr     r1, [r7, #0]
+ 800b4aa:      440b            add     r3, r1
+ 800b4ac:      7812            ldrb    r2, [r2, #0]
+ 800b4ae:      701a            strb    r2, [r3, #0]
+      for(unsigned int k= offset; k< offset+length_st_strings; ++k){
+ 800b4b0:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800b4b2:      3301            adds    r3, #1
+ 800b4b4:      627b            str     r3, [r7, #36]   ; 0x24
+ 800b4b6:      e7ec            b.n     800b492 <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x274>
+      }
+      inbuffer[offset+length_st_strings-1]=0;
+ 800b4b8:      6b7a            ldr     r2, [r7, #52]   ; 0x34
+ 800b4ba:      68fb            ldr     r3, [r7, #12]
+ 800b4bc:      4413            add     r3, r2
+ 800b4be:      3b01            subs    r3, #1
+ 800b4c0:      683a            ldr     r2, [r7, #0]
+ 800b4c2:      4413            add     r3, r2
+ 800b4c4:      2200            movs    r2, #0
+ 800b4c6:      701a            strb    r2, [r3, #0]
+      this->st_strings = (char *)(inbuffer + offset-1);
+ 800b4c8:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+ 800b4ca:      3b01            subs    r3, #1
+ 800b4cc:      683a            ldr     r2, [r7, #0]
+ 800b4ce:      441a            add     r2, r3
+ 800b4d0:      687b            ldr     r3, [r7, #4]
+ 800b4d2:      621a            str     r2, [r3, #32]
+      offset += length_st_strings;
+ 800b4d4:      6b7a            ldr     r2, [r7, #52]   ; 0x34
+ 800b4d6:      68fb            ldr     r3, [r7, #12]
+ 800b4d8:      4413            add     r3, r2
+ 800b4da:      637b            str     r3, [r7, #52]   ; 0x34
+        memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*));
+ 800b4dc:      687b            ldr     r3, [r7, #4]
+ 800b4de:      6a5a            ldr     r2, [r3, #36]   ; 0x24
+ 800b4e0:      6abb            ldr     r3, [r7, #40]   ; 0x28
+ 800b4e2:      009b            lsls    r3, r3, #2
+ 800b4e4:      4413            add     r3, r2
+ 800b4e6:      687a            ldr     r2, [r7, #4]
+ 800b4e8:      3220            adds    r2, #32
+ 800b4ea:      6812            ldr     r2, [r2, #0]
+ 800b4ec:      601a            str     r2, [r3, #0]
+      for( uint32_t i = 0; i < strings_length; i++){
+ 800b4ee:      6abb            ldr     r3, [r7, #40]   ; 0x28
+ 800b4f0:      3301            adds    r3, #1
+ 800b4f2:      62bb            str     r3, [r7, #40]   ; 0x28
+ 800b4f4:      e7ba            b.n     800b46c <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh+0x24e>
+      }
+     return offset;
+ 800b4f6:      6b7b            ldr     r3, [r7, #52]   ; 0x34
+    }
+ 800b4f8:      4618            mov     r0, r3
+ 800b4fa:      3738            adds    r7, #56 ; 0x38
+ 800b4fc:      46bd            mov     sp, r7
+ 800b4fe:      bd80            pop     {r7, pc}
+
+0800b500 <_ZN14rosserial_msgs20RequestParamResponse7getTypeEv>:
+
+    const char * getType(){ return REQUESTPARAM; };
+ 800b500:      b480            push    {r7}
+ 800b502:      b083            sub     sp, #12
+ 800b504:      af00            add     r7, sp, #0
+ 800b506:      6078            str     r0, [r7, #4]
+ 800b508:      4b03            ldr     r3, [pc, #12]   ; (800b518 <_ZN14rosserial_msgs20RequestParamResponse7getTypeEv+0x18>)
+ 800b50a:      4618            mov     r0, r3
+ 800b50c:      370c            adds    r7, #12
+ 800b50e:      46bd            mov     sp, r7
+ 800b510:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800b514:      4770            bx      lr
+ 800b516:      bf00            nop
+ 800b518:      080122a4        .word   0x080122a4
+
+0800b51c <_ZN14rosserial_msgs20RequestParamResponse6getMD5Ev>:
+    const char * getMD5(){ return "9f0e98bda65981986ddf53afa7a40e49"; };
+ 800b51c:      b480            push    {r7}
+ 800b51e:      b083            sub     sp, #12
+ 800b520:      af00            add     r7, sp, #0
+ 800b522:      6078            str     r0, [r7, #4]
+ 800b524:      4b03            ldr     r3, [pc, #12]   ; (800b534 <_ZN14rosserial_msgs20RequestParamResponse6getMD5Ev+0x18>)
+ 800b526:      4618            mov     r0, r3
+ 800b528:      370c            adds    r7, #12
+ 800b52a:      46bd            mov     sp, r7
+ 800b52c:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800b530:      4770            bx      lr
+ 800b532:      bf00            nop
+ 800b534:      08011a94        .word   0x08011a94
+
+0800b538 <_ZN3ros9PublisherC1EPKcPNS_3MsgEi>:
+
+/* Generic Publisher */
+class Publisher
+{
+public:
+  Publisher(const char * topic_name, Msg * msg, int endpoint = rosserial_msgs::TopicInfo::ID_PUBLISHER) :
+ 800b538:      b480            push    {r7}
+ 800b53a:      b085            sub     sp, #20
+ 800b53c:      af00            add     r7, sp, #0
+ 800b53e:      60f8            str     r0, [r7, #12]
+ 800b540:      60b9            str     r1, [r7, #8]
+ 800b542:      607a            str     r2, [r7, #4]
+ 800b544:      603b            str     r3, [r7, #0]
+    topic_(topic_name),
+    msg_(msg),
+    endpoint_(endpoint) {};
+ 800b546:      68fb            ldr     r3, [r7, #12]
+ 800b548:      68ba            ldr     r2, [r7, #8]
+ 800b54a:      601a            str     r2, [r3, #0]
+ 800b54c:      68fb            ldr     r3, [r7, #12]
+ 800b54e:      687a            ldr     r2, [r7, #4]
+ 800b550:      605a            str     r2, [r3, #4]
+ 800b552:      68fb            ldr     r3, [r7, #12]
+ 800b554:      683a            ldr     r2, [r7, #0]
+ 800b556:      611a            str     r2, [r3, #16]
+ 800b558:      68fb            ldr     r3, [r7, #12]
+ 800b55a:      4618            mov     r0, r3
+ 800b55c:      3714            adds    r7, #20
+ 800b55e:      46bd            mov     sp, r7
+ 800b560:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800b564:      4770            bx      lr
+
+0800b566 <_ZN3ros9Publisher15getEndpointTypeEv>:
+
+  int publish(const Msg * msg)
+  {
+    return nh_->publish(id_, msg);
+  };
+  int getEndpointType()
+ 800b566:      b480            push    {r7}
+ 800b568:      b083            sub     sp, #12
+ 800b56a:      af00            add     r7, sp, #0
+ 800b56c:      6078            str     r0, [r7, #4]
+  {
+    return endpoint_;
+ 800b56e:      687b            ldr     r3, [r7, #4]
+ 800b570:      691b            ldr     r3, [r3, #16]
+  }
+ 800b572:      4618            mov     r0, r3
+ 800b574:      370c            adds    r7, #12
+ 800b576:      46bd            mov     sp, r7
+ 800b578:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800b57c:      4770            bx      lr
+
+0800b57e <_ZN13STM32Hardware10getRdmaIndEv>:
+    UART_HandleTypeDef *huart;
+
+    const static uint16_t rbuflen = 128;
+    uint8_t rbuf[rbuflen];
+    uint32_t rind;
+    inline uint32_t getRdmaInd(void){ return (rbuflen - huart->hdmarx->Instance->NDTR) & (rbuflen - 1); }
+ 800b57e:      b480            push    {r7}
+ 800b580:      b083            sub     sp, #12
+ 800b582:      af00            add     r7, sp, #0
+ 800b584:      6078            str     r0, [r7, #4]
+ 800b586:      687b            ldr     r3, [r7, #4]
+ 800b588:      685b            ldr     r3, [r3, #4]
+ 800b58a:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 800b58c:      681b            ldr     r3, [r3, #0]
+ 800b58e:      685b            ldr     r3, [r3, #4]
+ 800b590:      425b            negs    r3, r3
+ 800b592:      f003 037f       and.w   r3, r3, #127    ; 0x7f
+ 800b596:      4618            mov     r0, r3
+ 800b598:      370c            adds    r7, #12
+ 800b59a:      46bd            mov     sp, r7
+ 800b59c:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800b5a0:      4770            bx      lr
+       ...
+
+0800b5a4 <_ZN13STM32HardwareC1Ev>:
+    const static uint16_t tbuflen = 256;
+    uint8_t tbuf[tbuflen];
+    uint32_t twind, tfind;
+
+  public:
+    STM32Hardware():
+ 800b5a4:      b480            push    {r7}
+ 800b5a6:      b083            sub     sp, #12
+ 800b5a8:      af00            add     r7, sp, #0
+ 800b5aa:      6078            str     r0, [r7, #4]
+      htim(&htim2), huart(&huart3), rind(0), twind(0), tfind(0){
+ 800b5ac:      687b            ldr     r3, [r7, #4]
+ 800b5ae:      4a0c            ldr     r2, [pc, #48]   ; (800b5e0 <_ZN13STM32HardwareC1Ev+0x3c>)
+ 800b5b0:      601a            str     r2, [r3, #0]
+ 800b5b2:      687b            ldr     r3, [r7, #4]
+ 800b5b4:      4a0b            ldr     r2, [pc, #44]   ; (800b5e4 <_ZN13STM32HardwareC1Ev+0x40>)
+ 800b5b6:      605a            str     r2, [r3, #4]
+ 800b5b8:      687b            ldr     r3, [r7, #4]
+ 800b5ba:      2200            movs    r2, #0
+ 800b5bc:      f8c3 2088       str.w   r2, [r3, #136]  ; 0x88
+ 800b5c0:      687b            ldr     r3, [r7, #4]
+ 800b5c2:      2200            movs    r2, #0
+ 800b5c4:      f8c3 218c       str.w   r2, [r3, #396]  ; 0x18c
+ 800b5c8:      687b            ldr     r3, [r7, #4]
+ 800b5ca:      2200            movs    r2, #0
+ 800b5cc:      f8c3 2190       str.w   r2, [r3, #400]  ; 0x190
+    }
+ 800b5d0:      687b            ldr     r3, [r7, #4]
+ 800b5d2:      4618            mov     r0, r3
+ 800b5d4:      370c            adds    r7, #12
+ 800b5d6:      46bd            mov     sp, r7
+ 800b5d8:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800b5dc:      4770            bx      lr
+ 800b5de:      bf00            nop
+ 800b5e0:      200009e0        .word   0x200009e0
+ 800b5e4:      20000a20        .word   0x20000a20
+
+0800b5e8 <_ZN13STM32Hardware4initEv>:
+
+    STM32Hardware(TIM_HandleTypeDef *htim_, UART_HandleTypeDef *huart_):
+      htim(htim_), huart(huart_), rind(0), twind(0), tfind(0){
+    }
+  
+    void init(){
+ 800b5e8:      b580            push    {r7, lr}
+ 800b5ea:      b082            sub     sp, #8
+ 800b5ec:      af00            add     r7, sp, #0
+ 800b5ee:      6078            str     r0, [r7, #4]
+      reset_rbuf();
+ 800b5f0:      6878            ldr     r0, [r7, #4]
+ 800b5f2:      f000 f809       bl      800b608 <_ZN13STM32Hardware10reset_rbufEv>
+
+      HAL_TIM_Base_Start(htim);
+ 800b5f6:      687b            ldr     r3, [r7, #4]
+ 800b5f8:      681b            ldr     r3, [r3, #0]
+ 800b5fa:      4618            mov     r0, r3
+ 800b5fc:      f7fe f8fc       bl      80097f8 <HAL_TIM_Base_Start>
+    }
+ 800b600:      bf00            nop
+ 800b602:      3708            adds    r7, #8
+ 800b604:      46bd            mov     sp, r7
+ 800b606:      bd80            pop     {r7, pc}
+
+0800b608 <_ZN13STM32Hardware10reset_rbufEv>:
+
+    void reset_rbuf(void){
+ 800b608:      b580            push    {r7, lr}
+ 800b60a:      b082            sub     sp, #8
+ 800b60c:      af00            add     r7, sp, #0
+ 800b60e:      6078            str     r0, [r7, #4]
+      HAL_UART_Receive_DMA(huart, rbuf, rbuflen);
+ 800b610:      687b            ldr     r3, [r7, #4]
+ 800b612:      6858            ldr     r0, [r3, #4]
+ 800b614:      687b            ldr     r3, [r7, #4]
+ 800b616:      3308            adds    r3, #8
+ 800b618:      2280            movs    r2, #128        ; 0x80
+ 800b61a:      4619            mov     r1, r3
+ 800b61c:      f7fe fb4e       bl      8009cbc <HAL_UART_Receive_DMA>
+    }
+ 800b620:      bf00            nop
+ 800b622:      3708            adds    r7, #8
+ 800b624:      46bd            mov     sp, r7
+ 800b626:      bd80            pop     {r7, pc}
+
+0800b628 <_ZN13STM32Hardware4readEv>:
+
+    int read(){
+ 800b628:      b590            push    {r4, r7, lr}
+ 800b62a:      b085            sub     sp, #20
+ 800b62c:      af00            add     r7, sp, #0
+ 800b62e:      6078            str     r0, [r7, #4]
+      int c = -1;
+ 800b630:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 800b634:      60fb            str     r3, [r7, #12]
+      if(rind != getRdmaInd()){
+ 800b636:      687b            ldr     r3, [r7, #4]
+ 800b638:      f8d3 4088       ldr.w   r4, [r3, #136]  ; 0x88
+ 800b63c:      6878            ldr     r0, [r7, #4]
+ 800b63e:      f7ff ff9e       bl      800b57e <_ZN13STM32Hardware10getRdmaIndEv>
+ 800b642:      4603            mov     r3, r0
+ 800b644:      429c            cmp     r4, r3
+ 800b646:      bf14            ite     ne
+ 800b648:      2301            movne   r3, #1
+ 800b64a:      2300            moveq   r3, #0
+ 800b64c:      b2db            uxtb    r3, r3
+ 800b64e:      2b00            cmp     r3, #0
+ 800b650:      d012            beq.n   800b678 <_ZN13STM32Hardware4readEv+0x50>
+        c = rbuf[rind++];
+ 800b652:      687b            ldr     r3, [r7, #4]
+ 800b654:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 800b658:      1c59            adds    r1, r3, #1
+ 800b65a:      687a            ldr     r2, [r7, #4]
+ 800b65c:      f8c2 1088       str.w   r1, [r2, #136]  ; 0x88
+ 800b660:      687a            ldr     r2, [r7, #4]
+ 800b662:      4413            add     r3, r2
+ 800b664:      7a1b            ldrb    r3, [r3, #8]
+ 800b666:      60fb            str     r3, [r7, #12]
+        rind &= rbuflen - 1;
+ 800b668:      687b            ldr     r3, [r7, #4]
+ 800b66a:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 800b66e:      f003 027f       and.w   r2, r3, #127    ; 0x7f
+ 800b672:      687b            ldr     r3, [r7, #4]
+ 800b674:      f8c3 2088       str.w   r2, [r3, #136]  ; 0x88
+      }
+      return c;
+ 800b678:      68fb            ldr     r3, [r7, #12]
+    }
+ 800b67a:      4618            mov     r0, r3
+ 800b67c:      3714            adds    r7, #20
+ 800b67e:      46bd            mov     sp, r7
+ 800b680:      bd90            pop     {r4, r7, pc}
+       ...
+
+0800b684 <_ZN13STM32Hardware5flushEv>:
+
+    void flush(void){
+ 800b684:      b580            push    {r7, lr}
+ 800b686:      b084            sub     sp, #16
+ 800b688:      af00            add     r7, sp, #0
+ 800b68a:      6078            str     r0, [r7, #4]
+      static bool mutex = false;
+
+      if((huart->gState == HAL_UART_STATE_READY) && !mutex){
+ 800b68c:      687b            ldr     r3, [r7, #4]
+ 800b68e:      685b            ldr     r3, [r3, #4]
+ 800b690:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 800b692:      2b20            cmp     r3, #32
+ 800b694:      d108            bne.n   800b6a8 <_ZN13STM32Hardware5flushEv+0x24>
+ 800b696:      4b27            ldr     r3, [pc, #156]  ; (800b734 <_ZN13STM32Hardware5flushEv+0xb0>)
+ 800b698:      781b            ldrb    r3, [r3, #0]
+ 800b69a:      f083 0301       eor.w   r3, r3, #1
+ 800b69e:      b2db            uxtb    r3, r3
+ 800b6a0:      2b00            cmp     r3, #0
+ 800b6a2:      d001            beq.n   800b6a8 <_ZN13STM32Hardware5flushEv+0x24>
+ 800b6a4:      2301            movs    r3, #1
+ 800b6a6:      e000            b.n     800b6aa <_ZN13STM32Hardware5flushEv+0x26>
+ 800b6a8:      2300            movs    r3, #0
+ 800b6aa:      2b00            cmp     r3, #0
+ 800b6ac:      d03e            beq.n   800b72c <_ZN13STM32Hardware5flushEv+0xa8>
+        mutex = true;
+ 800b6ae:      4b21            ldr     r3, [pc, #132]  ; (800b734 <_ZN13STM32Hardware5flushEv+0xb0>)
+ 800b6b0:      2201            movs    r2, #1
+ 800b6b2:      701a            strb    r2, [r3, #0]
+
+        if(twind != tfind){
+ 800b6b4:      687b            ldr     r3, [r7, #4]
+ 800b6b6:      f8d3 218c       ldr.w   r2, [r3, #396]  ; 0x18c
+ 800b6ba:      687b            ldr     r3, [r7, #4]
+ 800b6bc:      f8d3 3190       ldr.w   r3, [r3, #400]  ; 0x190
+ 800b6c0:      429a            cmp     r2, r3
+ 800b6c2:      d030            beq.n   800b726 <_ZN13STM32Hardware5flushEv+0xa2>
+          uint16_t len = tfind < twind ? twind - tfind : tbuflen - tfind;
+ 800b6c4:      687b            ldr     r3, [r7, #4]
+ 800b6c6:      f8d3 2190       ldr.w   r2, [r3, #400]  ; 0x190
+ 800b6ca:      687b            ldr     r3, [r7, #4]
+ 800b6cc:      f8d3 318c       ldr.w   r3, [r3, #396]  ; 0x18c
+ 800b6d0:      429a            cmp     r2, r3
+ 800b6d2:      d20a            bcs.n   800b6ea <_ZN13STM32Hardware5flushEv+0x66>
+ 800b6d4:      687b            ldr     r3, [r7, #4]
+ 800b6d6:      f8d3 318c       ldr.w   r3, [r3, #396]  ; 0x18c
+ 800b6da:      b29a            uxth    r2, r3
+ 800b6dc:      687b            ldr     r3, [r7, #4]
+ 800b6de:      f8d3 3190       ldr.w   r3, [r3, #400]  ; 0x190
+ 800b6e2:      b29b            uxth    r3, r3
+ 800b6e4:      1ad3            subs    r3, r2, r3
+ 800b6e6:      b29b            uxth    r3, r3
+ 800b6e8:      e006            b.n     800b6f8 <_ZN13STM32Hardware5flushEv+0x74>
+ 800b6ea:      687b            ldr     r3, [r7, #4]
+ 800b6ec:      f8d3 3190       ldr.w   r3, [r3, #400]  ; 0x190
+ 800b6f0:      b29b            uxth    r3, r3
+ 800b6f2:      f5c3 7380       rsb     r3, r3, #256    ; 0x100
+ 800b6f6:      b29b            uxth    r3, r3
+ 800b6f8:      81fb            strh    r3, [r7, #14]
+          HAL_UART_Transmit_DMA(huart, &(tbuf[tfind]), len);
+ 800b6fa:      687b            ldr     r3, [r7, #4]
+ 800b6fc:      6858            ldr     r0, [r3, #4]
+ 800b6fe:      687b            ldr     r3, [r7, #4]
+ 800b700:      f8d3 3190       ldr.w   r3, [r3, #400]  ; 0x190
+ 800b704:      3388            adds    r3, #136        ; 0x88
+ 800b706:      687a            ldr     r2, [r7, #4]
+ 800b708:      4413            add     r3, r2
+ 800b70a:      3304            adds    r3, #4
+ 800b70c:      89fa            ldrh    r2, [r7, #14]
+ 800b70e:      4619            mov     r1, r3
+ 800b710:      f7fe fa58       bl      8009bc4 <HAL_UART_Transmit_DMA>
+          tfind = (tfind + len) & (tbuflen - 1);
+ 800b714:      687b            ldr     r3, [r7, #4]
+ 800b716:      f8d3 2190       ldr.w   r2, [r3, #400]  ; 0x190
+ 800b71a:      89fb            ldrh    r3, [r7, #14]
+ 800b71c:      4413            add     r3, r2
+ 800b71e:      b2da            uxtb    r2, r3
+ 800b720:      687b            ldr     r3, [r7, #4]
+ 800b722:      f8c3 2190       str.w   r2, [r3, #400]  ; 0x190
+        }
+        mutex = false;
+ 800b726:      4b03            ldr     r3, [pc, #12]   ; (800b734 <_ZN13STM32Hardware5flushEv+0xb0>)
+ 800b728:      2200            movs    r2, #0
+ 800b72a:      701a            strb    r2, [r3, #0]
+      }
+    }
+ 800b72c:      bf00            nop
+ 800b72e:      3710            adds    r7, #16
+ 800b730:      46bd            mov     sp, r7
+ 800b732:      bd80            pop     {r7, pc}
+ 800b734:      200009dc        .word   0x200009dc
+
+0800b738 <_ZN13STM32Hardware5writeEPhi>:
+
+    void write(uint8_t* data, int length){
+ 800b738:      b580            push    {r7, lr}
+ 800b73a:      b086            sub     sp, #24
+ 800b73c:      af00            add     r7, sp, #0
+ 800b73e:      60f8            str     r0, [r7, #12]
+ 800b740:      60b9            str     r1, [r7, #8]
+ 800b742:      607a            str     r2, [r7, #4]
+
+
+      int n = length;
+ 800b744:      687b            ldr     r3, [r7, #4]
+ 800b746:      617b            str     r3, [r7, #20]
+      n = n <= tbuflen ? n : tbuflen;
+ 800b748:      697b            ldr     r3, [r7, #20]
+ 800b74a:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
+ 800b74e:      bfa8            it      ge
+ 800b750:      f44f 7380       movge.w r3, #256        ; 0x100
+ 800b754:      617b            str     r3, [r7, #20]
+
+      int n_tail = n <= tbuflen - twind ? n : tbuflen - twind;
+ 800b756:      68fb            ldr     r3, [r7, #12]
+ 800b758:      f8d3 318c       ldr.w   r3, [r3, #396]  ; 0x18c
+ 800b75c:      f5c3 7280       rsb     r2, r3, #256    ; 0x100
+ 800b760:      697b            ldr     r3, [r7, #20]
+ 800b762:      4293            cmp     r3, r2
+ 800b764:      bf28            it      cs
+ 800b766:      4613            movcs   r3, r2
+ 800b768:      613b            str     r3, [r7, #16]
+      memcpy(&(tbuf[twind]), data, n_tail);
+ 800b76a:      68fb            ldr     r3, [r7, #12]
+ 800b76c:      f8d3 318c       ldr.w   r3, [r3, #396]  ; 0x18c
+ 800b770:      3388            adds    r3, #136        ; 0x88
+ 800b772:      68fa            ldr     r2, [r7, #12]
+ 800b774:      4413            add     r3, r2
+ 800b776:      3304            adds    r3, #4
+ 800b778:      693a            ldr     r2, [r7, #16]
+ 800b77a:      68b9            ldr     r1, [r7, #8]
+ 800b77c:      4618            mov     r0, r3
+ 800b77e:      f002 fdfa       bl      800e376 <memcpy>
+      twind = (twind + n) & (tbuflen - 1);
+ 800b782:      68fb            ldr     r3, [r7, #12]
+ 800b784:      f8d3 218c       ldr.w   r2, [r3, #396]  ; 0x18c
+ 800b788:      697b            ldr     r3, [r7, #20]
+ 800b78a:      4413            add     r3, r2
+ 800b78c:      b2da            uxtb    r2, r3
+ 800b78e:      68fb            ldr     r3, [r7, #12]
+ 800b790:      f8c3 218c       str.w   r2, [r3, #396]  ; 0x18c
+
+      if(n != n_tail){
+ 800b794:      697a            ldr     r2, [r7, #20]
+ 800b796:      693b            ldr     r3, [r7, #16]
+ 800b798:      429a            cmp     r2, r3
+ 800b79a:      d00b            beq.n   800b7b4 <_ZN13STM32Hardware5writeEPhi+0x7c>
+        memcpy(tbuf, &(data[n_tail]), n - n_tail);
+ 800b79c:      68fb            ldr     r3, [r7, #12]
+ 800b79e:      f103 008c       add.w   r0, r3, #140    ; 0x8c
+ 800b7a2:      693b            ldr     r3, [r7, #16]
+ 800b7a4:      68ba            ldr     r2, [r7, #8]
+ 800b7a6:      18d1            adds    r1, r2, r3
+ 800b7a8:      697a            ldr     r2, [r7, #20]
+ 800b7aa:      693b            ldr     r3, [r7, #16]
+ 800b7ac:      1ad3            subs    r3, r2, r3
+ 800b7ae:      461a            mov     r2, r3
+ 800b7b0:      f002 fde1       bl      800e376 <memcpy>
+      }
+
+      flush();
+ 800b7b4:      68f8            ldr     r0, [r7, #12]
+ 800b7b6:      f7ff ff65       bl      800b684 <_ZN13STM32Hardware5flushEv>
+
+
+      //HAL_UART_Transmit(&huart3, data, length, 100);
+    }
+ 800b7ba:      bf00            nop
+ 800b7bc:      3718            adds    r7, #24
+ 800b7be:      46bd            mov     sp, r7
+ 800b7c0:      bd80            pop     {r7, pc}
+
+0800b7c2 <_ZN13STM32Hardware4timeEv>:
+
+    unsigned long time(){ return __HAL_TIM_GET_COUNTER(htim); }
+ 800b7c2:      b480            push    {r7}
+ 800b7c4:      b083            sub     sp, #12
+ 800b7c6:      af00            add     r7, sp, #0
+ 800b7c8:      6078            str     r0, [r7, #4]
+ 800b7ca:      687b            ldr     r3, [r7, #4]
+ 800b7cc:      681b            ldr     r3, [r3, #0]
+ 800b7ce:      681b            ldr     r3, [r3, #0]
+ 800b7d0:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 800b7d2:      4618            mov     r0, r3
+ 800b7d4:      370c            adds    r7, #12
+ 800b7d6:      46bd            mov     sp, r7
+ 800b7d8:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800b7dc:      4770            bx      lr
        ...
 
-08002444 <_Z18SystemClock_Configv>:
+0800b7e0 <main>:
+/**
+  * @brief  The application entry point.
+  * @retval int
+  */
+int main(void)
+{
+ 800b7e0:      b590            push    {r4, r7, lr}
+ 800b7e2:      f2ad 6df4       subw    sp, sp, #1780   ; 0x6f4
+ 800b7e6:      af00            add     r7, sp, #0
+  
 
+  /* MCU Configuration--------------------------------------------------------*/
+
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+  HAL_Init();
+ 800b7e8:      f7fc fc02       bl      8007ff0 <HAL_Init>
+  /* USER CODE BEGIN Init */
+
+  /* USER CODE END Init */
+
+  /* Configure the system clock */
+  SystemClock_Config();
+ 800b7ec:      f000 f842       bl      800b874 <_Z18SystemClock_Configv>
+  /* USER CODE BEGIN SysInit */
+
+  /* USER CODE END SysInit */
+
+  /* Initialize all configured peripherals */
+  MX_GPIO_Init();
+ 800b7f0:      f000 f926       bl      800ba40 <_ZL12MX_GPIO_Initv>
+  MX_TIM2_Init();
+ 800b7f4:      f000 f8c8       bl      800b988 <_ZL12MX_TIM2_Initv>
+  MX_USART3_UART_Init();
+ 800b7f8:      f000 f8ee       bl      800b9d8 <_ZL19MX_USART3_UART_Initv>
+  /* USER CODE BEGIN 2 */
+       ros::NodeHandle nh;
+ 800b7fc:      f107 0330       add.w   r3, r7, #48     ; 0x30
+ 800b800:      4618            mov     r0, r3
+ 800b802:      f000 f98f       bl      800bb24 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev>
+
+       std_msgs::String str_msg;
+ 800b806:      f107 0328       add.w   r3, r7, #40     ; 0x28
+ 800b80a:      4618            mov     r0, r3
+ 800b80c:      f7fe ffc0       bl      800a790 <_ZN8std_msgs6StringC1Ev>
+       ros::Publisher chatter("chatter", &str_msg);
+ 800b810:      f107 0228       add.w   r2, r7, #40     ; 0x28
+ 800b814:      f107 0014       add.w   r0, r7, #20
+ 800b818:      2300            movs    r3, #0
+ 800b81a:      4913            ldr     r1, [pc, #76]   ; (800b868 <main+0x88>)
+ 800b81c:      f7ff fe8c       bl      800b538 <_ZN3ros9PublisherC1EPKcPNS_3MsgEi>
+       char hello[] = "Hello world!";
+ 800b820:      1d3b            adds    r3, r7, #4
+ 800b822:      4a12            ldr     r2, [pc, #72]   ; (800b86c <main+0x8c>)
+ 800b824:      461c            mov     r4, r3
+ 800b826:      4613            mov     r3, r2
+ 800b828:      cb0f            ldmia   r3, {r0, r1, r2, r3}
+ 800b82a:      c407            stmia   r4!, {r0, r1, r2}
+ 800b82c:      7023            strb    r3, [r4, #0]
+
+       nh.initNode();
+ 800b82e:      f107 0330       add.w   r3, r7, #48     ; 0x30
+ 800b832:      4618            mov     r0, r3
+ 800b834:      f000 f9f6       bl      800bc24 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8initNodeEv>
+       nh.advertise(chatter);
+ 800b838:      f107 0214       add.w   r2, r7, #20
+ 800b83c:      f107 0330       add.w   r3, r7, #48     ; 0x30
+ 800b840:      4611            mov     r1, r2
+ 800b842:      4618            mov     r0, r3
+ 800b844:      f000 fa0b       bl      800bc5e <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE9advertiseERNS_9PublisherE>
+               /*
+               str_msg.data = hello;
+               chatter.publish(&str_msg);
+               nh.spinOnce();
+               */
+               HAL_UART_Transmit(&huart3, (uint8_t*)hello, strlen(hello), 100);
+ 800b848:      1d3b            adds    r3, r7, #4
+ 800b84a:      4618            mov     r0, r3
+ 800b84c:      f7fb fac2       bl      8006dd4 <strlen>
+ 800b850:      4603            mov     r3, r0
+ 800b852:      b29a            uxth    r2, r3
+ 800b854:      1d39            adds    r1, r7, #4
+ 800b856:      2364            movs    r3, #100        ; 0x64
+ 800b858:      4805            ldr     r0, [pc, #20]   ; (800b870 <main+0x90>)
+ 800b85a:      f7fe f921       bl      8009aa0 <HAL_UART_Transmit>
+
+               HAL_Delay(1000);
+ 800b85e:      f44f 707a       mov.w   r0, #1000       ; 0x3e8
+ 800b862:      f7fc fc23       bl      80080ac <HAL_Delay>
+               HAL_UART_Transmit(&huart3, (uint8_t*)hello, strlen(hello), 100);
+ 800b866:      e7ef            b.n     800b848 <main+0x68>
+ 800b868:      08011ab8        .word   0x08011ab8
+ 800b86c:      08011ac0        .word   0x08011ac0
+ 800b870:      20000a20        .word   0x20000a20
+
+0800b874 <_Z18SystemClock_Configv>:
 /**
- * @brief System Clock Configuration
- * @retval None
- */
-void SystemClock_Config(void) {
- 8002444:      b580            push    {r7, lr}
- 8002446:      b0b8            sub     sp, #224        ; 0xe0
- 8002448:      af00            add     r7, sp, #0
-       RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
- 800244a:      f107 03ac       add.w   r3, r7, #172    ; 0xac
- 800244e:      2234            movs    r2, #52 ; 0x34
- 8002450:      2100            movs    r1, #0
- 8002452:      4618            mov     r0, r3
- 8002454:      f000 f9fc       bl      8002850 <memset>
-       RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
- 8002458:      f107 0398       add.w   r3, r7, #152    ; 0x98
- 800245c:      2200            movs    r2, #0
- 800245e:      601a            str     r2, [r3, #0]
- 8002460:      605a            str     r2, [r3, #4]
- 8002462:      609a            str     r2, [r3, #8]
- 8002464:      60da            str     r2, [r3, #12]
- 8002466:      611a            str     r2, [r3, #16]
-       RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
- 8002468:      f107 0308       add.w   r3, r7, #8
- 800246c:      2290            movs    r2, #144        ; 0x90
- 800246e:      2100            movs    r1, #0
- 8002470:      4618            mov     r0, r3
- 8002472:      f000 f9ed       bl      8002850 <memset>
-
-       /** Configure the main internal regulator output voltage
-        */
-       __HAL_RCC_PWR_CLK_ENABLE()
- 8002476:      4b36            ldr     r3, [pc, #216]  ; (8002550 <_Z18SystemClock_Configv+0x10c>)
- 8002478:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 800247a:      4a35            ldr     r2, [pc, #212]  ; (8002550 <_Z18SystemClock_Configv+0x10c>)
- 800247c:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
- 8002480:      6413            str     r3, [r2, #64]   ; 0x40
- 8002482:      4b33            ldr     r3, [pc, #204]  ; (8002550 <_Z18SystemClock_Configv+0x10c>)
- 8002484:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002486:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 800248a:      607b            str     r3, [r7, #4]
- 800248c:      687b            ldr     r3, [r7, #4]
-       ;
-       __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
- 800248e:      4b31            ldr     r3, [pc, #196]  ; (8002554 <_Z18SystemClock_Configv+0x110>)
- 8002490:      681b            ldr     r3, [r3, #0]
- 8002492:      f423 4340       bic.w   r3, r3, #49152  ; 0xc000
- 8002496:      4a2f            ldr     r2, [pc, #188]  ; (8002554 <_Z18SystemClock_Configv+0x110>)
- 8002498:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
- 800249c:      6013            str     r3, [r2, #0]
- 800249e:      4b2d            ldr     r3, [pc, #180]  ; (8002554 <_Z18SystemClock_Configv+0x110>)
- 80024a0:      681b            ldr     r3, [r3, #0]
- 80024a2:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
- 80024a6:      603b            str     r3, [r7, #0]
- 80024a8:      683b            ldr     r3, [r7, #0]
-       /** Initializes the CPU, AHB and APB busses clocks
-        */
-       RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
- 80024aa:      2302            movs    r3, #2
- 80024ac:      f8c7 30ac       str.w   r3, [r7, #172]  ; 0xac
-       RCC_OscInitStruct.HSIState = RCC_HSI_ON;
- 80024b0:      2301            movs    r3, #1
- 80024b2:      f8c7 30b8       str.w   r3, [r7, #184]  ; 0xb8
-       RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
- 80024b6:      2310            movs    r3, #16
- 80024b8:      f8c7 30bc       str.w   r3, [r7, #188]  ; 0xbc
-       RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
- 80024bc:      2300            movs    r3, #0
- 80024be:      f8c7 30c4       str.w   r3, [r7, #196]  ; 0xc4
-       if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
- 80024c2:      f107 03ac       add.w   r3, r7, #172    ; 0xac
- 80024c6:      4618            mov     r0, r3
- 80024c8:      f7fe fb24       bl      8000b14 <HAL_RCC_OscConfig>
- 80024cc:      4603            mov     r3, r0
- 80024ce:      2b00            cmp     r3, #0
- 80024d0:      bf14            ite     ne
- 80024d2:      2301            movne   r3, #1
- 80024d4:      2300            moveq   r3, #0
- 80024d6:      b2db            uxtb    r3, r3
- 80024d8:      2b00            cmp     r3, #0
- 80024da:      d001            beq.n   80024e0 <_Z18SystemClock_Configv+0x9c>
-               Error_Handler();
- 80024dc:      f000 f888       bl      80025f0 <Error_Handler>
-       }
-       /** Initializes the CPU, AHB and APB busses clocks
-        */
-       RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
- 80024e0:      230f            movs    r3, #15
- 80024e2:      f8c7 3098       str.w   r3, [r7, #152]  ; 0x98
-                       | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
-       RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
- 80024e6:      2300            movs    r3, #0
- 80024e8:      f8c7 309c       str.w   r3, [r7, #156]  ; 0x9c
-       RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- 80024ec:      2300            movs    r3, #0
- 80024ee:      f8c7 30a0       str.w   r3, [r7, #160]  ; 0xa0
-       RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
- 80024f2:      2300            movs    r3, #0
- 80024f4:      f8c7 30a4       str.w   r3, [r7, #164]  ; 0xa4
-       RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
- 80024f8:      2300            movs    r3, #0
- 80024fa:      f8c7 30a8       str.w   r3, [r7, #168]  ; 0xa8
-
-       if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {
- 80024fe:      f107 0398       add.w   r3, r7, #152    ; 0x98
- 8002502:      2100            movs    r1, #0
- 8002504:      4618            mov     r0, r3
- 8002506:      f7fe fd77       bl      8000ff8 <HAL_RCC_ClockConfig>
- 800250a:      4603            mov     r3, r0
- 800250c:      2b00            cmp     r3, #0
- 800250e:      bf14            ite     ne
- 8002510:      2301            movne   r3, #1
- 8002512:      2300            moveq   r3, #0
- 8002514:      b2db            uxtb    r3, r3
- 8002516:      2b00            cmp     r3, #0
- 8002518:      d001            beq.n   800251e <_Z18SystemClock_Configv+0xda>
-               Error_Handler();
- 800251a:      f000 f869       bl      80025f0 <Error_Handler>
-       }
-       PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
- 800251e:      f44f 7380       mov.w   r3, #256        ; 0x100
- 8002522:      60bb            str     r3, [r7, #8]
-       PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
- 8002524:      2300            movs    r3, #0
- 8002526:      657b            str     r3, [r7, #84]   ; 0x54
-       if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
- 8002528:      f107 0308       add.w   r3, r7, #8
- 800252c:      4618            mov     r0, r3
- 800252e:      f7fe ff31       bl      8001394 <HAL_RCCEx_PeriphCLKConfig>
- 8002532:      4603            mov     r3, r0
- 8002534:      2b00            cmp     r3, #0
- 8002536:      bf14            ite     ne
- 8002538:      2301            movne   r3, #1
- 800253a:      2300            moveq   r3, #0
- 800253c:      b2db            uxtb    r3, r3
- 800253e:      2b00            cmp     r3, #0
- 8002540:      d001            beq.n   8002546 <_Z18SystemClock_Configv+0x102>
-               Error_Handler();
- 8002542:      f000 f855       bl      80025f0 <Error_Handler>
-       }
+  * @brief System Clock Configuration
+  * @retval None
+  */
+void SystemClock_Config(void)
+{
+ 800b874:      b580            push    {r7, lr}
+ 800b876:      b0b8            sub     sp, #224        ; 0xe0
+ 800b878:      af00            add     r7, sp, #0
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ 800b87a:      f107 03ac       add.w   r3, r7, #172    ; 0xac
+ 800b87e:      2234            movs    r2, #52 ; 0x34
+ 800b880:      2100            movs    r1, #0
+ 800b882:      4618            mov     r0, r3
+ 800b884:      f002 fd9b       bl      800e3be <memset>
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ 800b888:      f107 0398       add.w   r3, r7, #152    ; 0x98
+ 800b88c:      2200            movs    r2, #0
+ 800b88e:      601a            str     r2, [r3, #0]
+ 800b890:      605a            str     r2, [r3, #4]
+ 800b892:      609a            str     r2, [r3, #8]
+ 800b894:      60da            str     r2, [r3, #12]
+ 800b896:      611a            str     r2, [r3, #16]
+  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+ 800b898:      f107 0308       add.w   r3, r7, #8
+ 800b89c:      2290            movs    r2, #144        ; 0x90
+ 800b89e:      2100            movs    r1, #0
+ 800b8a0:      4618            mov     r0, r3
+ 800b8a2:      f002 fd8c       bl      800e3be <memset>
+
+  /** Configure the main internal regulator output voltage 
+  */
+  __HAL_RCC_PWR_CLK_ENABLE();
+ 800b8a6:      4b36            ldr     r3, [pc, #216]  ; (800b980 <_Z18SystemClock_Configv+0x10c>)
+ 800b8a8:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800b8aa:      4a35            ldr     r2, [pc, #212]  ; (800b980 <_Z18SystemClock_Configv+0x10c>)
+ 800b8ac:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
+ 800b8b0:      6413            str     r3, [r2, #64]   ; 0x40
+ 800b8b2:      4b33            ldr     r3, [pc, #204]  ; (800b980 <_Z18SystemClock_Configv+0x10c>)
+ 800b8b4:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800b8b6:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 800b8ba:      607b            str     r3, [r7, #4]
+ 800b8bc:      687b            ldr     r3, [r7, #4]
+  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
+ 800b8be:      4b31            ldr     r3, [pc, #196]  ; (800b984 <_Z18SystemClock_Configv+0x110>)
+ 800b8c0:      681b            ldr     r3, [r3, #0]
+ 800b8c2:      f423 4340       bic.w   r3, r3, #49152  ; 0xc000
+ 800b8c6:      4a2f            ldr     r2, [pc, #188]  ; (800b984 <_Z18SystemClock_Configv+0x110>)
+ 800b8c8:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
+ 800b8cc:      6013            str     r3, [r2, #0]
+ 800b8ce:      4b2d            ldr     r3, [pc, #180]  ; (800b984 <_Z18SystemClock_Configv+0x110>)
+ 800b8d0:      681b            ldr     r3, [r3, #0]
+ 800b8d2:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
+ 800b8d6:      603b            str     r3, [r7, #0]
+ 800b8d8:      683b            ldr     r3, [r7, #0]
+  /** Initializes the CPU, AHB and APB busses clocks 
+  */
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ 800b8da:      2302            movs    r3, #2
+ 800b8dc:      f8c7 30ac       str.w   r3, [r7, #172]  ; 0xac
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ 800b8e0:      2301            movs    r3, #1
+ 800b8e2:      f8c7 30b8       str.w   r3, [r7, #184]  ; 0xb8
+  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ 800b8e6:      2310            movs    r3, #16
+ 800b8e8:      f8c7 30bc       str.w   r3, [r7, #188]  ; 0xbc
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+ 800b8ec:      2300            movs    r3, #0
+ 800b8ee:      f8c7 30c4       str.w   r3, [r7, #196]  ; 0xc4
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ 800b8f2:      f107 03ac       add.w   r3, r7, #172    ; 0xac
+ 800b8f6:      4618            mov     r0, r3
+ 800b8f8:      f7fc ff18       bl      800872c <HAL_RCC_OscConfig>
+ 800b8fc:      4603            mov     r3, r0
+ 800b8fe:      2b00            cmp     r3, #0
+ 800b900:      bf14            ite     ne
+ 800b902:      2301            movne   r3, #1
+ 800b904:      2300            moveq   r3, #0
+ 800b906:      b2db            uxtb    r3, r3
+ 800b908:      2b00            cmp     r3, #0
+ 800b90a:      d001            beq.n   800b910 <_Z18SystemClock_Configv+0x9c>
+  {
+    Error_Handler();
+ 800b90c:      f000 f8b0       bl      800ba70 <Error_Handler>
+  }
+  /** Initializes the CPU, AHB and APB busses clocks 
+  */
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ 800b910:      230f            movs    r3, #15
+ 800b912:      f8c7 3098       str.w   r3, [r7, #152]  ; 0x98
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ 800b916:      2300            movs    r3, #0
+ 800b918:      f8c7 309c       str.w   r3, [r7, #156]  ; 0x9c
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ 800b91c:      2300            movs    r3, #0
+ 800b91e:      f8c7 30a0       str.w   r3, [r7, #160]  ; 0xa0
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ 800b922:      2300            movs    r3, #0
+ 800b924:      f8c7 30a4       str.w   r3, [r7, #164]  ; 0xa4
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ 800b928:      2300            movs    r3, #0
+ 800b92a:      f8c7 30a8       str.w   r3, [r7, #168]  ; 0xa8
+
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ 800b92e:      f107 0398       add.w   r3, r7, #152    ; 0x98
+ 800b932:      2100            movs    r1, #0
+ 800b934:      4618            mov     r0, r3
+ 800b936:      f7fd f96b       bl      8008c10 <HAL_RCC_ClockConfig>
+ 800b93a:      4603            mov     r3, r0
+ 800b93c:      2b00            cmp     r3, #0
+ 800b93e:      bf14            ite     ne
+ 800b940:      2301            movne   r3, #1
+ 800b942:      2300            moveq   r3, #0
+ 800b944:      b2db            uxtb    r3, r3
+ 800b946:      2b00            cmp     r3, #0
+ 800b948:      d001            beq.n   800b94e <_Z18SystemClock_Configv+0xda>
+  {
+    Error_Handler();
+ 800b94a:      f000 f891       bl      800ba70 <Error_Handler>
+  }
+  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
+ 800b94e:      f44f 7380       mov.w   r3, #256        ; 0x100
+ 800b952:      60bb            str     r3, [r7, #8]
+  PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
+ 800b954:      2300            movs    r3, #0
+ 800b956:      657b            str     r3, [r7, #84]   ; 0x54
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ 800b958:      f107 0308       add.w   r3, r7, #8
+ 800b95c:      4618            mov     r0, r3
+ 800b95e:      f7fd fb25       bl      8008fac <HAL_RCCEx_PeriphCLKConfig>
+ 800b962:      4603            mov     r3, r0
+ 800b964:      2b00            cmp     r3, #0
+ 800b966:      bf14            ite     ne
+ 800b968:      2301            movne   r3, #1
+ 800b96a:      2300            moveq   r3, #0
+ 800b96c:      b2db            uxtb    r3, r3
+ 800b96e:      2b00            cmp     r3, #0
+ 800b970:      d001            beq.n   800b976 <_Z18SystemClock_Configv+0x102>
+  {
+    Error_Handler();
+ 800b972:      f000 f87d       bl      800ba70 <Error_Handler>
+  }
 }
- 8002546:      bf00            nop
- 8002548:      37e0            adds    r7, #224        ; 0xe0
- 800254a:      46bd            mov     sp, r7
- 800254c:      bd80            pop     {r7, pc}
- 800254e:      bf00            nop
- 8002550:      40023800        .word   0x40023800
- 8002554:      40007000        .word   0x40007000
-
-08002558 <_ZL19MX_USART3_UART_Initv>:
-/**
- * @brief USART3 Initialization Function
- * @param None
- * @retval None
- */
-static void MX_USART3_UART_Init(void) {
- 8002558:      b580            push    {r7, lr}
- 800255a:      af00            add     r7, sp, #0
-       /* USER CODE END USART3_Init 0 */
-
-       /* USER CODE BEGIN USART3_Init 1 */
-
-       /* USER CODE END USART3_Init 1 */
-       huart3.Instance = USART3;
- 800255c:      4b16            ldr     r3, [pc, #88]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 800255e:      4a17            ldr     r2, [pc, #92]   ; (80025bc <_ZL19MX_USART3_UART_Initv+0x64>)
- 8002560:      601a            str     r2, [r3, #0]
-       huart3.Init.BaudRate = 115200;
- 8002562:      4b15            ldr     r3, [pc, #84]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002564:      f44f 32e1       mov.w   r2, #115200     ; 0x1c200
- 8002568:      605a            str     r2, [r3, #4]
-       huart3.Init.WordLength = UART_WORDLENGTH_8B;
- 800256a:      4b13            ldr     r3, [pc, #76]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 800256c:      2200            movs    r2, #0
- 800256e:      609a            str     r2, [r3, #8]
-       huart3.Init.StopBits = UART_STOPBITS_1;
- 8002570:      4b11            ldr     r3, [pc, #68]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002572:      2200            movs    r2, #0
- 8002574:      60da            str     r2, [r3, #12]
-       huart3.Init.Parity = UART_PARITY_NONE;
- 8002576:      4b10            ldr     r3, [pc, #64]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002578:      2200            movs    r2, #0
- 800257a:      611a            str     r2, [r3, #16]
-       huart3.Init.Mode = UART_MODE_TX_RX;
- 800257c:      4b0e            ldr     r3, [pc, #56]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 800257e:      220c            movs    r2, #12
- 8002580:      615a            str     r2, [r3, #20]
-       huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- 8002582:      4b0d            ldr     r3, [pc, #52]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002584:      2200            movs    r2, #0
- 8002586:      619a            str     r2, [r3, #24]
-       huart3.Init.OverSampling = UART_OVERSAMPLING_16;
- 8002588:      4b0b            ldr     r3, [pc, #44]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 800258a:      2200            movs    r2, #0
- 800258c:      61da            str     r2, [r3, #28]
-       huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
- 800258e:      4b0a            ldr     r3, [pc, #40]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002590:      2200            movs    r2, #0
- 8002592:      621a            str     r2, [r3, #32]
-       huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- 8002594:      4b08            ldr     r3, [pc, #32]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002596:      2200            movs    r2, #0
- 8002598:      625a            str     r2, [r3, #36]   ; 0x24
-       if (HAL_UART_Init(&huart3) != HAL_OK) {
- 800259a:      4807            ldr     r0, [pc, #28]   ; (80025b8 <_ZL19MX_USART3_UART_Initv+0x60>)
- 800259c:      f7ff fb20       bl      8001be0 <HAL_UART_Init>
- 80025a0:      4603            mov     r3, r0
- 80025a2:      2b00            cmp     r3, #0
- 80025a4:      bf14            ite     ne
- 80025a6:      2301            movne   r3, #1
- 80025a8:      2300            moveq   r3, #0
- 80025aa:      b2db            uxtb    r3, r3
- 80025ac:      2b00            cmp     r3, #0
- 80025ae:      d001            beq.n   80025b4 <_ZL19MX_USART3_UART_Initv+0x5c>
-               Error_Handler();
- 80025b0:      f000 f81e       bl      80025f0 <Error_Handler>
-       }
-       /* USER CODE BEGIN USART3_Init 2 */
+ 800b976:      bf00            nop
+ 800b978:      37e0            adds    r7, #224        ; 0xe0
+ 800b97a:      46bd            mov     sp, r7
+ 800b97c:      bd80            pop     {r7, pc}
+ 800b97e:      bf00            nop
+ 800b980:      40023800        .word   0x40023800
+ 800b984:      40007000        .word   0x40007000
+
+0800b988 <_ZL12MX_TIM2_Initv>:
+  * @brief TIM2 Initialization Function
+  * @param None
+  * @retval None
+  */
+static void MX_TIM2_Init(void)
+{
+ 800b988:      b580            push    {r7, lr}
+ 800b98a:      af00            add     r7, sp, #0
+  /* USER CODE END TIM2_Init 0 */
+
+  /* USER CODE BEGIN TIM2_Init 1 */
+
+  /* USER CODE END TIM2_Init 1 */
+  htim2.Instance = TIM2;
+ 800b98c:      4b11            ldr     r3, [pc, #68]   ; (800b9d4 <_ZL12MX_TIM2_Initv+0x4c>)
+ 800b98e:      f04f 4280       mov.w   r2, #1073741824 ; 0x40000000
+ 800b992:      601a            str     r2, [r3, #0]
+  htim2.Init.Prescaler = 0;
+ 800b994:      4b0f            ldr     r3, [pc, #60]   ; (800b9d4 <_ZL12MX_TIM2_Initv+0x4c>)
+ 800b996:      2200            movs    r2, #0
+ 800b998:      605a            str     r2, [r3, #4]
+  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
+ 800b99a:      4b0e            ldr     r3, [pc, #56]   ; (800b9d4 <_ZL12MX_TIM2_Initv+0x4c>)
+ 800b99c:      2200            movs    r2, #0
+ 800b99e:      609a            str     r2, [r3, #8]
+  htim2.Init.Period = 0;
+ 800b9a0:      4b0c            ldr     r3, [pc, #48]   ; (800b9d4 <_ZL12MX_TIM2_Initv+0x4c>)
+ 800b9a2:      2200            movs    r2, #0
+ 800b9a4:      60da            str     r2, [r3, #12]
+  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+ 800b9a6:      4b0b            ldr     r3, [pc, #44]   ; (800b9d4 <_ZL12MX_TIM2_Initv+0x4c>)
+ 800b9a8:      2200            movs    r2, #0
+ 800b9aa:      611a            str     r2, [r3, #16]
+  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ 800b9ac:      4b09            ldr     r3, [pc, #36]   ; (800b9d4 <_ZL12MX_TIM2_Initv+0x4c>)
+ 800b9ae:      2200            movs    r2, #0
+ 800b9b0:      619a            str     r2, [r3, #24]
+  if (HAL_TIM_OnePulse_Init(&htim2, TIM_OPMODE_SINGLE) != HAL_OK)
+ 800b9b2:      2108            movs    r1, #8
+ 800b9b4:      4807            ldr     r0, [pc, #28]   ; (800b9d4 <_ZL12MX_TIM2_Initv+0x4c>)
+ 800b9b6:      f7fd ff49       bl      800984c <HAL_TIM_OnePulse_Init>
+ 800b9ba:      4603            mov     r3, r0
+ 800b9bc:      2b00            cmp     r3, #0
+ 800b9be:      bf14            ite     ne
+ 800b9c0:      2301            movne   r3, #1
+ 800b9c2:      2300            moveq   r3, #0
+ 800b9c4:      b2db            uxtb    r3, r3
+ 800b9c6:      2b00            cmp     r3, #0
+ 800b9c8:      d001            beq.n   800b9ce <_ZL12MX_TIM2_Initv+0x46>
+  {
+    Error_Handler();
+ 800b9ca:      f000 f851       bl      800ba70 <Error_Handler>
+  }
+  /* USER CODE BEGIN TIM2_Init 2 */
 
-       /* USER CODE END USART3_Init 2 */
+  /* USER CODE END TIM2_Init 2 */
 
 }
- 80025b4:      bf00            nop
- 80025b6:      bd80            pop     {r7, pc}
- 80025b8:      20000028        .word   0x20000028
- 80025bc:      40004800        .word   0x40004800
+ 800b9ce:      bf00            nop
+ 800b9d0:      bd80            pop     {r7, pc}
+ 800b9d2:      bf00            nop
+ 800b9d4:      200009e0        .word   0x200009e0
+
+0800b9d8 <_ZL19MX_USART3_UART_Initv>:
+  * @brief USART3 Initialization Function
+  * @param None
+  * @retval None
+  */
+static void MX_USART3_UART_Init(void)
+{
+ 800b9d8:      b580            push    {r7, lr}
+ 800b9da:      af00            add     r7, sp, #0
+  /* USER CODE END USART3_Init 0 */
+
+  /* USER CODE BEGIN USART3_Init 1 */
+
+  /* USER CODE END USART3_Init 1 */
+  huart3.Instance = USART3;
+ 800b9dc:      4b16            ldr     r3, [pc, #88]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800b9de:      4a17            ldr     r2, [pc, #92]   ; (800ba3c <_ZL19MX_USART3_UART_Initv+0x64>)
+ 800b9e0:      601a            str     r2, [r3, #0]
+  huart3.Init.BaudRate = 115200;
+ 800b9e2:      4b15            ldr     r3, [pc, #84]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800b9e4:      f44f 32e1       mov.w   r2, #115200     ; 0x1c200
+ 800b9e8:      605a            str     r2, [r3, #4]
+  huart3.Init.WordLength = UART_WORDLENGTH_8B;
+ 800b9ea:      4b13            ldr     r3, [pc, #76]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800b9ec:      2200            movs    r2, #0
+ 800b9ee:      609a            str     r2, [r3, #8]
+  huart3.Init.StopBits = UART_STOPBITS_1;
+ 800b9f0:      4b11            ldr     r3, [pc, #68]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800b9f2:      2200            movs    r2, #0
+ 800b9f4:      60da            str     r2, [r3, #12]
+  huart3.Init.Parity = UART_PARITY_NONE;
+ 800b9f6:      4b10            ldr     r3, [pc, #64]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800b9f8:      2200            movs    r2, #0
+ 800b9fa:      611a            str     r2, [r3, #16]
+  huart3.Init.Mode = UART_MODE_TX_RX;
+ 800b9fc:      4b0e            ldr     r3, [pc, #56]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800b9fe:      220c            movs    r2, #12
+ 800ba00:      615a            str     r2, [r3, #20]
+  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ 800ba02:      4b0d            ldr     r3, [pc, #52]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800ba04:      2200            movs    r2, #0
+ 800ba06:      619a            str     r2, [r3, #24]
+  huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+ 800ba08:      4b0b            ldr     r3, [pc, #44]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800ba0a:      2200            movs    r2, #0
+ 800ba0c:      61da            str     r2, [r3, #28]
+  huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+ 800ba0e:      4b0a            ldr     r3, [pc, #40]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800ba10:      2200            movs    r2, #0
+ 800ba12:      621a            str     r2, [r3, #32]
+  huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+ 800ba14:      4b08            ldr     r3, [pc, #32]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800ba16:      2200            movs    r2, #0
+ 800ba18:      625a            str     r2, [r3, #36]   ; 0x24
+  if (HAL_UART_Init(&huart3) != HAL_OK)
+ 800ba1a:      4807            ldr     r0, [pc, #28]   ; (800ba38 <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800ba1c:      f7fd fff2       bl      8009a04 <HAL_UART_Init>
+ 800ba20:      4603            mov     r3, r0
+ 800ba22:      2b00            cmp     r3, #0
+ 800ba24:      bf14            ite     ne
+ 800ba26:      2301            movne   r3, #1
+ 800ba28:      2300            moveq   r3, #0
+ 800ba2a:      b2db            uxtb    r3, r3
+ 800ba2c:      2b00            cmp     r3, #0
+ 800ba2e:      d001            beq.n   800ba34 <_ZL19MX_USART3_UART_Initv+0x5c>
+  {
+    Error_Handler();
+ 800ba30:      f000 f81e       bl      800ba70 <Error_Handler>
+  }
+  /* USER CODE BEGIN USART3_Init 2 */
 
-080025c0 <_ZL12MX_GPIO_Initv>:
-/**
- * @brief GPIO Initialization Function
- * @param None
- * @retval None
- */
-static void MX_GPIO_Init(void) {
- 80025c0:      b480            push    {r7}
- 80025c2:      b083            sub     sp, #12
- 80025c4:      af00            add     r7, sp, #0
-
-       /* GPIO Ports Clock Enable */
-       __HAL_RCC_GPIOD_CLK_ENABLE()
- 80025c6:      4b09            ldr     r3, [pc, #36]   ; (80025ec <_ZL12MX_GPIO_Initv+0x2c>)
- 80025c8:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 80025ca:      4a08            ldr     r2, [pc, #32]   ; (80025ec <_ZL12MX_GPIO_Initv+0x2c>)
- 80025cc:      f043 0308       orr.w   r3, r3, #8
- 80025d0:      6313            str     r3, [r2, #48]   ; 0x30
- 80025d2:      4b06            ldr     r3, [pc, #24]   ; (80025ec <_ZL12MX_GPIO_Initv+0x2c>)
- 80025d4:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 80025d6:      f003 0308       and.w   r3, r3, #8
- 80025da:      607b            str     r3, [r7, #4]
- 80025dc:      687b            ldr     r3, [r7, #4]
-       ;
+  /* USER CODE END USART3_Init 2 */
 
 }
- 80025de:      bf00            nop
- 80025e0:      370c            adds    r7, #12
- 80025e2:      46bd            mov     sp, r7
- 80025e4:      f85d 7b04       ldr.w   r7, [sp], #4
- 80025e8:      4770            bx      lr
- 80025ea:      bf00            nop
- 80025ec:      40023800        .word   0x40023800
-
-080025f0 <Error_Handler>:
+ 800ba34:      bf00            nop
+ 800ba36:      bd80            pop     {r7, pc}
+ 800ba38:      20000a20        .word   0x20000a20
+ 800ba3c:      40004800        .word   0x40004800
+
+0800ba40 <_ZL12MX_GPIO_Initv>:
+  * @brief GPIO Initialization Function
+  * @param None
+  * @retval None
+  */
+static void MX_GPIO_Init(void)
+{
+ 800ba40:      b480            push    {r7}
+ 800ba42:      b083            sub     sp, #12
+ 800ba44:      af00            add     r7, sp, #0
+
+  /* GPIO Ports Clock Enable */
+  __HAL_RCC_GPIOD_CLK_ENABLE();
+ 800ba46:      4b09            ldr     r3, [pc, #36]   ; (800ba6c <_ZL12MX_GPIO_Initv+0x2c>)
+ 800ba48:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800ba4a:      4a08            ldr     r2, [pc, #32]   ; (800ba6c <_ZL12MX_GPIO_Initv+0x2c>)
+ 800ba4c:      f043 0308       orr.w   r3, r3, #8
+ 800ba50:      6313            str     r3, [r2, #48]   ; 0x30
+ 800ba52:      4b06            ldr     r3, [pc, #24]   ; (800ba6c <_ZL12MX_GPIO_Initv+0x2c>)
+ 800ba54:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800ba56:      f003 0308       and.w   r3, r3, #8
+ 800ba5a:      607b            str     r3, [r7, #4]
+ 800ba5c:      687b            ldr     r3, [r7, #4]
 
+}
+ 800ba5e:      bf00            nop
+ 800ba60:      370c            adds    r7, #12
+ 800ba62:      46bd            mov     sp, r7
+ 800ba64:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800ba68:      4770            bx      lr
+ 800ba6a:      bf00            nop
+ 800ba6c:      40023800        .word   0x40023800
+
+0800ba70 <Error_Handler>:
 /**
- * @brief  This function is executed in case of error occurrence.
- * @retval None
- */
-void Error_Handler(void) {
- 80025f0:      b480            push    {r7}
- 80025f2:      af00            add     r7, sp, #0
-       /* USER CODE BEGIN Error_Handler_Debug */
+  * @brief  This function is executed in case of error occurrence.
+  * @retval None
+  */
+void Error_Handler(void)
+{
+ 800ba70:      b480            push    {r7}
+ 800ba72:      af00            add     r7, sp, #0
+  /* USER CODE BEGIN Error_Handler_Debug */
        /* User can add his own implementation to report the HAL error return state */
 
-       /* USER CODE END Error_Handler_Debug */
+  /* USER CODE END Error_Handler_Debug */
 }
- 80025f4:      bf00            nop
- 80025f6:      46bd            mov     sp, r7
- 80025f8:      f85d 7b04       ldr.w   r7, [sp], #4
- 80025fc:      4770            bx      lr
+ 800ba74:      bf00            nop
+ 800ba76:      46bd            mov     sp, r7
+ 800ba78:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800ba7c:      4770            bx      lr
+
+0800ba7e <_ZN3ros3Msg8varToArrIPhmEEvT_T0_>:
+    return 8;
+  }
+
+  // Copy data from variable into a byte array
+  template<typename A, typename V>
+  static void varToArr(A arr, const V var)
+ 800ba7e:      b480            push    {r7}
+ 800ba80:      b085            sub     sp, #20
+ 800ba82:      af00            add     r7, sp, #0
+ 800ba84:      6078            str     r0, [r7, #4]
+ 800ba86:      6039            str     r1, [r7, #0]
+  {
+    for (size_t i = 0; i < sizeof(V); i++)
+ 800ba88:      2300            movs    r3, #0
+ 800ba8a:      60fb            str     r3, [r7, #12]
+ 800ba8c:      68fb            ldr     r3, [r7, #12]
+ 800ba8e:      2b03            cmp     r3, #3
+ 800ba90:      d80d            bhi.n   800baae <_ZN3ros3Msg8varToArrIPhmEEvT_T0_+0x30>
+      arr[i] = (var >> (8 * i));
+ 800ba92:      68fb            ldr     r3, [r7, #12]
+ 800ba94:      00db            lsls    r3, r3, #3
+ 800ba96:      683a            ldr     r2, [r7, #0]
+ 800ba98:      fa22 f103       lsr.w   r1, r2, r3
+ 800ba9c:      687a            ldr     r2, [r7, #4]
+ 800ba9e:      68fb            ldr     r3, [r7, #12]
+ 800baa0:      4413            add     r3, r2
+ 800baa2:      b2ca            uxtb    r2, r1
+ 800baa4:      701a            strb    r2, [r3, #0]
+    for (size_t i = 0; i < sizeof(V); i++)
+ 800baa6:      68fb            ldr     r3, [r7, #12]
+ 800baa8:      3301            adds    r3, #1
+ 800baaa:      60fb            str     r3, [r7, #12]
+ 800baac:      e7ee            b.n     800ba8c <_ZN3ros3Msg8varToArrIPhmEEvT_T0_+0xe>
+  }
+ 800baae:      bf00            nop
+ 800bab0:      3714            adds    r7, #20
+ 800bab2:      46bd            mov     sp, r7
+ 800bab4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800bab8:      4770            bx      lr
+
+0800baba <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_>:
+
+  // Copy data from a byte array into variable
+  template<typename V, typename A>
+  static void arrToVar(V& var, const A arr)
+ 800baba:      b480            push    {r7}
+ 800babc:      b085            sub     sp, #20
+ 800babe:      af00            add     r7, sp, #0
+ 800bac0:      6078            str     r0, [r7, #4]
+ 800bac2:      6039            str     r1, [r7, #0]
+  {
+    var = 0;
+ 800bac4:      687b            ldr     r3, [r7, #4]
+ 800bac6:      2200            movs    r2, #0
+ 800bac8:      601a            str     r2, [r3, #0]
+    for (size_t i = 0; i < sizeof(V); i++)
+ 800baca:      2300            movs    r3, #0
+ 800bacc:      60fb            str     r3, [r7, #12]
+ 800bace:      68fb            ldr     r3, [r7, #12]
+ 800bad0:      2b03            cmp     r3, #3
+ 800bad2:      d811            bhi.n   800baf8 <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_+0x3e>
+      var |= (arr[i] << (8 * i));
+ 800bad4:      687b            ldr     r3, [r7, #4]
+ 800bad6:      681b            ldr     r3, [r3, #0]
+ 800bad8:      6839            ldr     r1, [r7, #0]
+ 800bada:      68fa            ldr     r2, [r7, #12]
+ 800badc:      440a            add     r2, r1
+ 800bade:      7812            ldrb    r2, [r2, #0]
+ 800bae0:      4611            mov     r1, r2
+ 800bae2:      68fa            ldr     r2, [r7, #12]
+ 800bae4:      00d2            lsls    r2, r2, #3
+ 800bae6:      fa01 f202       lsl.w   r2, r1, r2
+ 800baea:      431a            orrs    r2, r3
+ 800baec:      687b            ldr     r3, [r7, #4]
+ 800baee:      601a            str     r2, [r3, #0]
+    for (size_t i = 0; i < sizeof(V); i++)
+ 800baf0:      68fb            ldr     r3, [r7, #12]
+ 800baf2:      3301            adds    r3, #1
+ 800baf4:      60fb            str     r3, [r7, #12]
+ 800baf6:      e7ea            b.n     800bace <_ZN3ros3Msg8arrToVarImPhEEvRT_T0_+0x14>
+  }
+ 800baf8:      bf00            nop
+ 800bafa:      3714            adds    r7, #20
+ 800bafc:      46bd            mov     sp, r7
+ 800bafe:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800bb02:      4770            bx      lr
+
+0800bb04 <_ZN3ros15NodeHandleBase_C1Ev>:
+#include "ros/msg.h"
+
+namespace ros
+{
+
+class NodeHandleBase_
+ 800bb04:      b480            push    {r7}
+ 800bb06:      b083            sub     sp, #12
+ 800bb08:      af00            add     r7, sp, #0
+ 800bb0a:      6078            str     r0, [r7, #4]
+ 800bb0c:      4a04            ldr     r2, [pc, #16]   ; (800bb20 <_ZN3ros15NodeHandleBase_C1Ev+0x1c>)
+ 800bb0e:      687b            ldr     r3, [r7, #4]
+ 800bb10:      601a            str     r2, [r3, #0]
+ 800bb12:      687b            ldr     r3, [r7, #4]
+ 800bb14:      4618            mov     r0, r3
+ 800bb16:      370c            adds    r7, #12
+ 800bb18:      46bd            mov     sp, r7
+ 800bb1a:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800bb1e:      4770            bx      lr
+ 800bb20:      080122dc        .word   0x080122dc
+
+0800bb24 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev>:
+
+  /*
+   * Setup Functions
+   */
+public:
+  NodeHandle_() : configured_(false)
+ 800bb24:      b580            push    {r7, lr}
+ 800bb26:      b086            sub     sp, #24
+ 800bb28:      af00            add     r7, sp, #0
+ 800bb2a:      6078            str     r0, [r7, #4]
+ 800bb2c:      687b            ldr     r3, [r7, #4]
+ 800bb2e:      4618            mov     r0, r3
+ 800bb30:      f7ff ffe8       bl      800bb04 <_ZN3ros15NodeHandleBase_C1Ev>
+ 800bb34:      4a3a            ldr     r2, [pc, #232]  ; (800bc20 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0xfc>)
+ 800bb36:      687b            ldr     r3, [r7, #4]
+ 800bb38:      601a            str     r2, [r3, #0]
+ 800bb3a:      687b            ldr     r3, [r7, #4]
+ 800bb3c:      3304            adds    r3, #4
+ 800bb3e:      4618            mov     r0, r3
+ 800bb40:      f7ff fd30       bl      800b5a4 <_ZN13STM32HardwareC1Ev>
+ 800bb44:      687b            ldr     r3, [r7, #4]
+ 800bb46:      2200            movs    r2, #0
+ 800bb48:      f883 2684       strb.w  r2, [r3, #1668] ; 0x684
+ 800bb4c:      687b            ldr     r3, [r7, #4]
+ 800bb4e:      f503 63d3       add.w   r3, r3, #1688   ; 0x698
+ 800bb52:      4618            mov     r0, r3
+ 800bb54:      f7ff fa2e       bl      800afb4 <_ZN14rosserial_msgs20RequestParamResponseC1Ev>
+  {
+
+    for (unsigned int i = 0; i < MAX_PUBLISHERS; i++)
+ 800bb58:      2300            movs    r3, #0
+ 800bb5a:      617b            str     r3, [r7, #20]
+ 800bb5c:      697b            ldr     r3, [r7, #20]
+ 800bb5e:      2b18            cmp     r3, #24
+ 800bb60:      d80a            bhi.n   800bb78 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0x54>
+      publishers[i] = 0;
+ 800bb62:      687b            ldr     r3, [r7, #4]
+ 800bb64:      697a            ldr     r2, [r7, #20]
+ 800bb66:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800bb6a:      2100            movs    r1, #0
+ 800bb6c:      f843 1022       str.w   r1, [r3, r2, lsl #2]
+    for (unsigned int i = 0; i < MAX_PUBLISHERS; i++)
+ 800bb70:      697b            ldr     r3, [r7, #20]
+ 800bb72:      3301            adds    r3, #1
+ 800bb74:      617b            str     r3, [r7, #20]
+ 800bb76:      e7f1            b.n     800bb5c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0x38>
+
+    for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++)
+ 800bb78:      2300            movs    r3, #0
+ 800bb7a:      613b            str     r3, [r7, #16]
+ 800bb7c:      693b            ldr     r3, [r7, #16]
+ 800bb7e:      2b18            cmp     r3, #24
+ 800bb80:      d80b            bhi.n   800bb9a <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0x76>
+      subscribers[i] = 0;
+ 800bb82:      687a            ldr     r2, [r7, #4]
+ 800bb84:      693b            ldr     r3, [r7, #16]
+ 800bb86:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800bb8a:      009b            lsls    r3, r3, #2
+ 800bb8c:      4413            add     r3, r2
+ 800bb8e:      2200            movs    r2, #0
+ 800bb90:      605a            str     r2, [r3, #4]
+    for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++)
+ 800bb92:      693b            ldr     r3, [r7, #16]
+ 800bb94:      3301            adds    r3, #1
+ 800bb96:      613b            str     r3, [r7, #16]
+ 800bb98:      e7f0            b.n     800bb7c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0x58>
+
+    for (unsigned int i = 0; i < INPUT_SIZE; i++)
+ 800bb9a:      2300            movs    r3, #0
+ 800bb9c:      60fb            str     r3, [r7, #12]
+ 800bb9e:      68fb            ldr     r3, [r7, #12]
+ 800bba0:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
+ 800bba4:      d20a            bcs.n   800bbbc <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0x98>
+      message_in[i] = 0;
+ 800bba6:      687a            ldr     r2, [r7, #4]
+ 800bba8:      68fb            ldr     r3, [r7, #12]
+ 800bbaa:      4413            add     r3, r2
+ 800bbac:      f503 73d4       add.w   r3, r3, #424    ; 0x1a8
+ 800bbb0:      2200            movs    r2, #0
+ 800bbb2:      701a            strb    r2, [r3, #0]
+    for (unsigned int i = 0; i < INPUT_SIZE; i++)
+ 800bbb4:      68fb            ldr     r3, [r7, #12]
+ 800bbb6:      3301            adds    r3, #1
+ 800bbb8:      60fb            str     r3, [r7, #12]
+ 800bbba:      e7f0            b.n     800bb9e <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0x7a>
+
+    for (unsigned int i = 0; i < OUTPUT_SIZE; i++)
+ 800bbbc:      2300            movs    r3, #0
+ 800bbbe:      60bb            str     r3, [r7, #8]
+ 800bbc0:      68bb            ldr     r3, [r7, #8]
+ 800bbc2:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
+ 800bbc6:      d20a            bcs.n   800bbde <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0xba>
+      message_out[i] = 0;
+ 800bbc8:      687a            ldr     r2, [r7, #4]
+ 800bbca:      68bb            ldr     r3, [r7, #8]
+ 800bbcc:      4413            add     r3, r2
+ 800bbce:      f503 736a       add.w   r3, r3, #936    ; 0x3a8
+ 800bbd2:      2200            movs    r2, #0
+ 800bbd4:      701a            strb    r2, [r3, #0]
+    for (unsigned int i = 0; i < OUTPUT_SIZE; i++)
+ 800bbd6:      68bb            ldr     r3, [r7, #8]
+ 800bbd8:      3301            adds    r3, #1
+ 800bbda:      60bb            str     r3, [r7, #8]
+ 800bbdc:      e7f0            b.n     800bbc0 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EEC1Ev+0x9c>
+
+    req_param_resp.ints_length = 0;
+ 800bbde:      687b            ldr     r3, [r7, #4]
+ 800bbe0:      2200            movs    r2, #0
+ 800bbe2:      f8c3 269c       str.w   r2, [r3, #1692] ; 0x69c
+    req_param_resp.ints = NULL;
+ 800bbe6:      687b            ldr     r3, [r7, #4]
+ 800bbe8:      2200            movs    r2, #0
+ 800bbea:      f8c3 26a4       str.w   r2, [r3, #1700] ; 0x6a4
+    req_param_resp.floats_length = 0;
+ 800bbee:      687b            ldr     r3, [r7, #4]
+ 800bbf0:      2200            movs    r2, #0
+ 800bbf2:      f8c3 26a8       str.w   r2, [r3, #1704] ; 0x6a8
+    req_param_resp.floats = NULL;
+ 800bbf6:      687b            ldr     r3, [r7, #4]
+ 800bbf8:      2200            movs    r2, #0
+ 800bbfa:      f8c3 26b0       str.w   r2, [r3, #1712] ; 0x6b0
+    req_param_resp.ints_length = 0;
+ 800bbfe:      687b            ldr     r3, [r7, #4]
+ 800bc00:      2200            movs    r2, #0
+ 800bc02:      f8c3 269c       str.w   r2, [r3, #1692] ; 0x69c
+    req_param_resp.ints = NULL;
+ 800bc06:      687b            ldr     r3, [r7, #4]
+ 800bc08:      2200            movs    r2, #0
+ 800bc0a:      f8c3 26a4       str.w   r2, [r3, #1700] ; 0x6a4
+
+    spin_timeout_ = 0;
+ 800bc0e:      687b            ldr     r3, [r7, #4]
+ 800bc10:      2200            movs    r2, #0
+ 800bc12:      f8c3 21a4       str.w   r2, [r3, #420]  ; 0x1a4
+  }
+ 800bc16:      687b            ldr     r3, [r7, #4]
+ 800bc18:      4618            mov     r0, r3
+ 800bc1a:      3718            adds    r7, #24
+ 800bc1c:      46bd            mov     sp, r7
+ 800bc1e:      bd80            pop     {r7, pc}
+ 800bc20:      080122c8        .word   0x080122c8
+
+0800bc24 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8initNodeEv>:
+  {
+    return &hardware_;
+  }
+
+  /* Start serial, initialize buffers */
+  void initNode()
+ 800bc24:      b580            push    {r7, lr}
+ 800bc26:      b082            sub     sp, #8
+ 800bc28:      af00            add     r7, sp, #0
+ 800bc2a:      6078            str     r0, [r7, #4]
+  {
+    hardware_.init();
+ 800bc2c:      687b            ldr     r3, [r7, #4]
+ 800bc2e:      3304            adds    r3, #4
+ 800bc30:      4618            mov     r0, r3
+ 800bc32:      f7ff fcd9       bl      800b5e8 <_ZN13STM32Hardware4initEv>
+    mode_ = 0;
+ 800bc36:      687b            ldr     r3, [r7, #4]
+ 800bc38:      2200            movs    r2, #0
+ 800bc3a:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+    bytes_ = 0;
+ 800bc3e:      687b            ldr     r3, [r7, #4]
+ 800bc40:      2200            movs    r2, #0
+ 800bc42:      f8c3 2674       str.w   r2, [r3, #1652] ; 0x674
+    index_ = 0;
+ 800bc46:      687b            ldr     r3, [r7, #4]
+ 800bc48:      2200            movs    r2, #0
+ 800bc4a:      f8c3 267c       str.w   r2, [r3, #1660] ; 0x67c
+    topic_ = 0;
+ 800bc4e:      687b            ldr     r3, [r7, #4]
+ 800bc50:      2200            movs    r2, #0
+ 800bc52:      f8c3 2678       str.w   r2, [r3, #1656] ; 0x678
+  };
+ 800bc56:      bf00            nop
+ 800bc58:      3708            adds    r7, #8
+ 800bc5a:      46bd            mov     sp, r7
+ 800bc5c:      bd80            pop     {r7, pc}
+
+0800bc5e <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE9advertiseERNS_9PublisherE>:
+  /********************************************************************
+   * Topic Management
+   */
+
+  /* Register a new publisher */
+  bool advertise(Publisher & p)
+ 800bc5e:      b480            push    {r7}
+ 800bc60:      b085            sub     sp, #20
+ 800bc62:      af00            add     r7, sp, #0
+ 800bc64:      6078            str     r0, [r7, #4]
+ 800bc66:      6039            str     r1, [r7, #0]
+  {
+    for (int i = 0; i < MAX_PUBLISHERS; i++)
+ 800bc68:      2300            movs    r3, #0
+ 800bc6a:      60fb            str     r3, [r7, #12]
+ 800bc6c:      68fb            ldr     r3, [r7, #12]
+ 800bc6e:      2b18            cmp     r3, #24
+ 800bc70:      dc1c            bgt.n   800bcac <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE9advertiseERNS_9PublisherE+0x4e>
+    {
+      if (publishers[i] == 0) // empty slot
+ 800bc72:      687b            ldr     r3, [r7, #4]
+ 800bc74:      68fa            ldr     r2, [r7, #12]
+ 800bc76:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800bc7a:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800bc7e:      2b00            cmp     r3, #0
+ 800bc80:      d110            bne.n   800bca4 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE9advertiseERNS_9PublisherE+0x46>
+      {
+        publishers[i] = &p;
+ 800bc82:      687b            ldr     r3, [r7, #4]
+ 800bc84:      68fa            ldr     r2, [r7, #12]
+ 800bc86:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800bc8a:      6839            ldr     r1, [r7, #0]
+ 800bc8c:      f843 1022       str.w   r1, [r3, r2, lsl #2]
+        p.id_ = i + 100 + MAX_SUBSCRIBERS;
+ 800bc90:      68fb            ldr     r3, [r7, #12]
+ 800bc92:      f103 027d       add.w   r2, r3, #125    ; 0x7d
+ 800bc96:      683b            ldr     r3, [r7, #0]
+ 800bc98:      609a            str     r2, [r3, #8]
+        p.nh_ = this;
+ 800bc9a:      687a            ldr     r2, [r7, #4]
+ 800bc9c:      683b            ldr     r3, [r7, #0]
+ 800bc9e:      60da            str     r2, [r3, #12]
+        return true;
+ 800bca0:      2301            movs    r3, #1
+ 800bca2:      e004            b.n     800bcae <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE9advertiseERNS_9PublisherE+0x50>
+    for (int i = 0; i < MAX_PUBLISHERS; i++)
+ 800bca4:      68fb            ldr     r3, [r7, #12]
+ 800bca6:      3301            adds    r3, #1
+ 800bca8:      60fb            str     r3, [r7, #12]
+ 800bcaa:      e7df            b.n     800bc6c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE9advertiseERNS_9PublisherE+0xe>
+      }
+    }
+    return false;
+ 800bcac:      2300            movs    r3, #0
+  }
+ 800bcae:      4618            mov     r0, r3
+ 800bcb0:      3714            adds    r7, #20
+ 800bcb2:      46bd            mov     sp, r7
+ 800bcb4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800bcb8:      4770            bx      lr
+       ...
+
+0800bcbc <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE>:
+      }
+    }
+    configured_ = true;
+  }
+
+  virtual int publish(int id, const Msg * msg)
+ 800bcbc:      b580            push    {r7, lr}
+ 800bcbe:      b088            sub     sp, #32
+ 800bcc0:      af00            add     r7, sp, #0
+ 800bcc2:      60f8            str     r0, [r7, #12]
+ 800bcc4:      60b9            str     r1, [r7, #8]
+ 800bcc6:      607a            str     r2, [r7, #4]
+  {
+    if (id >= 100 && !configured_)
+ 800bcc8:      68bb            ldr     r3, [r7, #8]
+ 800bcca:      2b63            cmp     r3, #99 ; 0x63
+ 800bccc:      dd09            ble.n   800bce2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0x26>
+ 800bcce:      68fb            ldr     r3, [r7, #12]
+ 800bcd0:      f893 3684       ldrb.w  r3, [r3, #1668] ; 0x684
+ 800bcd4:      f083 0301       eor.w   r3, r3, #1
+ 800bcd8:      b2db            uxtb    r3, r3
+ 800bcda:      2b00            cmp     r3, #0
+ 800bcdc:      d001            beq.n   800bce2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0x26>
+      return 0;
+ 800bcde:      2300            movs    r3, #0
+ 800bce0:      e077            b.n     800bdd2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0x116>
+
+    /* serialize message */
+    int l = msg->serialize(message_out + 7);
+ 800bce2:      687b            ldr     r3, [r7, #4]
+ 800bce4:      681b            ldr     r3, [r3, #0]
+ 800bce6:      681b            ldr     r3, [r3, #0]
+ 800bce8:      68fa            ldr     r2, [r7, #12]
+ 800bcea:      f502 726a       add.w   r2, r2, #936    ; 0x3a8
+ 800bcee:      3207            adds    r2, #7
+ 800bcf0:      4611            mov     r1, r2
+ 800bcf2:      6878            ldr     r0, [r7, #4]
+ 800bcf4:      4798            blx     r3
+ 800bcf6:      6178            str     r0, [r7, #20]
+
+    /* setup the header */
+    message_out[0] = 0xff;
+ 800bcf8:      68fb            ldr     r3, [r7, #12]
+ 800bcfa:      22ff            movs    r2, #255        ; 0xff
+ 800bcfc:      f883 23a8       strb.w  r2, [r3, #936]  ; 0x3a8
+    message_out[1] = PROTOCOL_VER;
+ 800bd00:      68fb            ldr     r3, [r7, #12]
+ 800bd02:      22fe            movs    r2, #254        ; 0xfe
+ 800bd04:      f883 23a9       strb.w  r2, [r3, #937]  ; 0x3a9
+    message_out[2] = (uint8_t)((uint16_t)l & 255);
+ 800bd08:      697b            ldr     r3, [r7, #20]
+ 800bd0a:      b2da            uxtb    r2, r3
+ 800bd0c:      68fb            ldr     r3, [r7, #12]
+ 800bd0e:      f883 23aa       strb.w  r2, [r3, #938]  ; 0x3aa
+    message_out[3] = (uint8_t)((uint16_t)l >> 8);
+ 800bd12:      697b            ldr     r3, [r7, #20]
+ 800bd14:      b29b            uxth    r3, r3
+ 800bd16:      121b            asrs    r3, r3, #8
+ 800bd18:      b2da            uxtb    r2, r3
+ 800bd1a:      68fb            ldr     r3, [r7, #12]
+ 800bd1c:      f883 23ab       strb.w  r2, [r3, #939]  ; 0x3ab
+    message_out[4] = 255 - ((message_out[2] + message_out[3]) % 256);
+ 800bd20:      68fb            ldr     r3, [r7, #12]
+ 800bd22:      f893 23aa       ldrb.w  r2, [r3, #938]  ; 0x3aa
+ 800bd26:      68fb            ldr     r3, [r7, #12]
+ 800bd28:      f893 33ab       ldrb.w  r3, [r3, #939]  ; 0x3ab
+ 800bd2c:      4413            add     r3, r2
+ 800bd2e:      b2db            uxtb    r3, r3
+ 800bd30:      43db            mvns    r3, r3
+ 800bd32:      b2da            uxtb    r2, r3
+ 800bd34:      68fb            ldr     r3, [r7, #12]
+ 800bd36:      f883 23ac       strb.w  r2, [r3, #940]  ; 0x3ac
+    message_out[5] = (uint8_t)((int16_t)id & 255);
+ 800bd3a:      68bb            ldr     r3, [r7, #8]
+ 800bd3c:      b2da            uxtb    r2, r3
+ 800bd3e:      68fb            ldr     r3, [r7, #12]
+ 800bd40:      f883 23ad       strb.w  r2, [r3, #941]  ; 0x3ad
+    message_out[6] = (uint8_t)((int16_t)id >> 8);
+ 800bd44:      68bb            ldr     r3, [r7, #8]
+ 800bd46:      b21b            sxth    r3, r3
+ 800bd48:      121b            asrs    r3, r3, #8
+ 800bd4a:      b2da            uxtb    r2, r3
+ 800bd4c:      68fb            ldr     r3, [r7, #12]
+ 800bd4e:      f883 23ae       strb.w  r2, [r3, #942]  ; 0x3ae
+
+    /* calculate checksum */
+    int chk = 0;
+ 800bd52:      2300            movs    r3, #0
+ 800bd54:      61fb            str     r3, [r7, #28]
+    for (int i = 5; i < l + 7; i++)
+ 800bd56:      2305            movs    r3, #5
+ 800bd58:      61bb            str     r3, [r7, #24]
+ 800bd5a:      697b            ldr     r3, [r7, #20]
+ 800bd5c:      3307            adds    r3, #7
+ 800bd5e:      69ba            ldr     r2, [r7, #24]
+ 800bd60:      429a            cmp     r2, r3
+ 800bd62:      da0d            bge.n   800bd80 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0xc4>
+      chk += message_out[i];
+ 800bd64:      68fa            ldr     r2, [r7, #12]
+ 800bd66:      69bb            ldr     r3, [r7, #24]
+ 800bd68:      4413            add     r3, r2
+ 800bd6a:      f503 736a       add.w   r3, r3, #936    ; 0x3a8
+ 800bd6e:      781b            ldrb    r3, [r3, #0]
+ 800bd70:      461a            mov     r2, r3
+ 800bd72:      69fb            ldr     r3, [r7, #28]
+ 800bd74:      4413            add     r3, r2
+ 800bd76:      61fb            str     r3, [r7, #28]
+    for (int i = 5; i < l + 7; i++)
+ 800bd78:      69bb            ldr     r3, [r7, #24]
+ 800bd7a:      3301            adds    r3, #1
+ 800bd7c:      61bb            str     r3, [r7, #24]
+ 800bd7e:      e7ec            b.n     800bd5a <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0x9e>
+    l += 7;
+ 800bd80:      697b            ldr     r3, [r7, #20]
+ 800bd82:      3307            adds    r3, #7
+ 800bd84:      617b            str     r3, [r7, #20]
+    message_out[l++] = 255 - (chk % 256);
+ 800bd86:      69fb            ldr     r3, [r7, #28]
+ 800bd88:      425a            negs    r2, r3
+ 800bd8a:      b2db            uxtb    r3, r3
+ 800bd8c:      b2d2            uxtb    r2, r2
+ 800bd8e:      bf58            it      pl
+ 800bd90:      4253            negpl   r3, r2
+ 800bd92:      b2da            uxtb    r2, r3
+ 800bd94:      697b            ldr     r3, [r7, #20]
+ 800bd96:      1c59            adds    r1, r3, #1
+ 800bd98:      6179            str     r1, [r7, #20]
+ 800bd9a:      43d2            mvns    r2, r2
+ 800bd9c:      b2d1            uxtb    r1, r2
+ 800bd9e:      68fa            ldr     r2, [r7, #12]
+ 800bda0:      4413            add     r3, r2
+ 800bda2:      460a            mov     r2, r1
+ 800bda4:      f883 23a8       strb.w  r2, [r3, #936]  ; 0x3a8
+
+    if (l <= OUTPUT_SIZE)
+ 800bda8:      697b            ldr     r3, [r7, #20]
+ 800bdaa:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
+ 800bdae:      dc0a            bgt.n   800bdc6 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0x10a>
+    {
+      hardware_.write(message_out, l);
+ 800bdb0:      68fb            ldr     r3, [r7, #12]
+ 800bdb2:      1d18            adds    r0, r3, #4
+ 800bdb4:      68fb            ldr     r3, [r7, #12]
+ 800bdb6:      f503 736a       add.w   r3, r3, #936    ; 0x3a8
+ 800bdba:      697a            ldr     r2, [r7, #20]
+ 800bdbc:      4619            mov     r1, r3
+ 800bdbe:      f7ff fcbb       bl      800b738 <_ZN13STM32Hardware5writeEPhi>
+      return l;
+ 800bdc2:      697b            ldr     r3, [r7, #20]
+ 800bdc4:      e005            b.n     800bdd2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0x116>
+    }
+    else
+    {
+      logerror("Message from device dropped: message larger than buffer.");
+ 800bdc6:      4905            ldr     r1, [pc, #20]   ; (800bddc <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE7publishEiPKNS_3MsgE+0x120>)
+ 800bdc8:      68f8            ldr     r0, [r7, #12]
+ 800bdca:      f000 f9f2       bl      800c1b2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8logerrorEPKc>
+      return -1;
+ 800bdce:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+    }
+  }
+ 800bdd2:      4618            mov     r0, r3
+ 800bdd4:      3720            adds    r7, #32
+ 800bdd6:      46bd            mov     sp, r7
+ 800bdd8:      bd80            pop     {r7, pc}
+ 800bdda:      bf00            nop
+ 800bddc:      08011ad0        .word   0x08011ad0
+
+0800bde0 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv>:
+  virtual int spinOnce()
+ 800bde0:      b580            push    {r7, lr}
+ 800bde2:      b084            sub     sp, #16
+ 800bde4:      af00            add     r7, sp, #0
+ 800bde6:      6078            str     r0, [r7, #4]
+    uint32_t c_time = hardware_.time();
+ 800bde8:      687b            ldr     r3, [r7, #4]
+ 800bdea:      3304            adds    r3, #4
+ 800bdec:      4618            mov     r0, r3
+ 800bdee:      f7ff fce8       bl      800b7c2 <_ZN13STM32Hardware4timeEv>
+ 800bdf2:      60f8            str     r0, [r7, #12]
+    if ((c_time - last_sync_receive_time) > (SYNC_SECONDS * 2200))
+ 800bdf4:      687b            ldr     r3, [r7, #4]
+ 800bdf6:      f8d3 368c       ldr.w   r3, [r3, #1676] ; 0x68c
+ 800bdfa:      68fa            ldr     r2, [r7, #12]
+ 800bdfc:      1ad3            subs    r3, r2, r3
+ 800bdfe:      f642 22f8       movw    r2, #11000      ; 0x2af8
+ 800be02:      4293            cmp     r3, r2
+ 800be04:      d903            bls.n   800be0e <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x2e>
+      configured_ = false;
+ 800be06:      687b            ldr     r3, [r7, #4]
+ 800be08:      2200            movs    r2, #0
+ 800be0a:      f883 2684       strb.w  r2, [r3, #1668] ; 0x684
+    if (mode_ != MODE_FIRST_FF)
+ 800be0e:      687b            ldr     r3, [r7, #4]
+ 800be10:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800be14:      2b00            cmp     r3, #0
+ 800be16:      d009            beq.n   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      if (c_time > last_msg_timeout_time)
+ 800be18:      687b            ldr     r3, [r7, #4]
+ 800be1a:      f8d3 3690       ldr.w   r3, [r3, #1680] ; 0x690
+ 800be1e:      68fa            ldr     r2, [r7, #12]
+ 800be20:      429a            cmp     r2, r3
+ 800be22:      d903            bls.n   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+        mode_ = MODE_FIRST_FF;
+ 800be24:      687b            ldr     r3, [r7, #4]
+ 800be26:      2200            movs    r2, #0
+ 800be28:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+      if (spin_timeout_ > 0)
+ 800be2c:      687b            ldr     r3, [r7, #4]
+ 800be2e:      f8d3 31a4       ldr.w   r3, [r3, #420]  ; 0x1a4
+ 800be32:      2b00            cmp     r3, #0
+ 800be34:      d014            beq.n   800be60 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x80>
+        if ((hardware_.time() - c_time) > spin_timeout_)
+ 800be36:      687b            ldr     r3, [r7, #4]
+ 800be38:      3304            adds    r3, #4
+ 800be3a:      4618            mov     r0, r3
+ 800be3c:      f7ff fcc1       bl      800b7c2 <_ZN13STM32Hardware4timeEv>
+ 800be40:      4602            mov     r2, r0
+ 800be42:      68fb            ldr     r3, [r7, #12]
+ 800be44:      1ad2            subs    r2, r2, r3
+ 800be46:      687b            ldr     r3, [r7, #4]
+ 800be48:      f8d3 31a4       ldr.w   r3, [r3, #420]  ; 0x1a4
+ 800be4c:      429a            cmp     r2, r3
+ 800be4e:      bf8c            ite     hi
+ 800be50:      2301            movhi   r3, #1
+ 800be52:      2300            movls   r3, #0
+ 800be54:      b2db            uxtb    r3, r3
+ 800be56:      2b00            cmp     r3, #0
+ 800be58:      d002            beq.n   800be60 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x80>
+          return SPIN_TIMEOUT;
+ 800be5a:      f06f 0301       mvn.w   r3, #1
+ 800be5e:      e197            b.n     800c190 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x3b0>
+      int data = hardware_.read();
+ 800be60:      687b            ldr     r3, [r7, #4]
+ 800be62:      3304            adds    r3, #4
+ 800be64:      4618            mov     r0, r3
+ 800be66:      f7ff fbdf       bl      800b628 <_ZN13STM32Hardware4readEv>
+ 800be6a:      60b8            str     r0, [r7, #8]
+      if (data < 0)
+ 800be6c:      68bb            ldr     r3, [r7, #8]
+ 800be6e:      2b00            cmp     r3, #0
+ 800be70:      f2c0 8177       blt.w   800c162 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x382>
+      checksum_ += data;
+ 800be74:      687b            ldr     r3, [r7, #4]
+ 800be76:      f8d3 2680       ldr.w   r2, [r3, #1664] ; 0x680
+ 800be7a:      68bb            ldr     r3, [r7, #8]
+ 800be7c:      441a            add     r2, r3
+ 800be7e:      687b            ldr     r3, [r7, #4]
+ 800be80:      f8c3 2680       str.w   r2, [r3, #1664] ; 0x680
+      if (mode_ == MODE_MESSAGE)          /* message data being recieved */
+ 800be84:      687b            ldr     r3, [r7, #4]
+ 800be86:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800be8a:      2b07            cmp     r3, #7
+ 800be8c:      d11e            bne.n   800becc <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0xec>
+        message_in[index_++] = data;
+ 800be8e:      687b            ldr     r3, [r7, #4]
+ 800be90:      f8d3 367c       ldr.w   r3, [r3, #1660] ; 0x67c
+ 800be94:      1c59            adds    r1, r3, #1
+ 800be96:      687a            ldr     r2, [r7, #4]
+ 800be98:      f8c2 167c       str.w   r1, [r2, #1660] ; 0x67c
+ 800be9c:      68ba            ldr     r2, [r7, #8]
+ 800be9e:      b2d1            uxtb    r1, r2
+ 800bea0:      687a            ldr     r2, [r7, #4]
+ 800bea2:      4413            add     r3, r2
+ 800bea4:      460a            mov     r2, r1
+ 800bea6:      f883 21a8       strb.w  r2, [r3, #424]  ; 0x1a8
+        bytes_--;
+ 800beaa:      687b            ldr     r3, [r7, #4]
+ 800beac:      f8d3 3674       ldr.w   r3, [r3, #1652] ; 0x674
+ 800beb0:      1e5a            subs    r2, r3, #1
+ 800beb2:      687b            ldr     r3, [r7, #4]
+ 800beb4:      f8c3 2674       str.w   r2, [r3, #1652] ; 0x674
+        if (bytes_ == 0)                 /* is message complete? if so, checksum */
+ 800beb8:      687b            ldr     r3, [r7, #4]
+ 800beba:      f8d3 3674       ldr.w   r3, [r3, #1652] ; 0x674
+ 800bebe:      2b00            cmp     r3, #0
+ 800bec0:      d1b4            bne.n   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          mode_ = MODE_MSG_CHECKSUM;
+ 800bec2:      687b            ldr     r3, [r7, #4]
+ 800bec4:      2208            movs    r2, #8
+ 800bec6:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+ 800beca:      e7af            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      else if (mode_ == MODE_FIRST_FF)
+ 800becc:      687b            ldr     r3, [r7, #4]
+ 800bece:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bed2:      2b00            cmp     r3, #0
+ 800bed4:      d128            bne.n   800bf28 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x148>
+        if (data == 0xff)
+ 800bed6:      68bb            ldr     r3, [r7, #8]
+ 800bed8:      2bff            cmp     r3, #255        ; 0xff
+ 800beda:      d10d            bne.n   800bef8 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x118>
+          mode_++;
+ 800bedc:      687b            ldr     r3, [r7, #4]
+ 800bede:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bee2:      1c5a            adds    r2, r3, #1
+ 800bee4:      687b            ldr     r3, [r7, #4]
+ 800bee6:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+          last_msg_timeout_time = c_time + SERIAL_MSG_TIMEOUT;
+ 800beea:      68fb            ldr     r3, [r7, #12]
+ 800beec:      f103 0214       add.w   r2, r3, #20
+ 800bef0:      687b            ldr     r3, [r7, #4]
+ 800bef2:      f8c3 2690       str.w   r2, [r3, #1680] ; 0x690
+ 800bef6:      e799            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+        else if (hardware_.time() - c_time > (SYNC_SECONDS * 1000))
+ 800bef8:      687b            ldr     r3, [r7, #4]
+ 800befa:      3304            adds    r3, #4
+ 800befc:      4618            mov     r0, r3
+ 800befe:      f7ff fc60       bl      800b7c2 <_ZN13STM32Hardware4timeEv>
+ 800bf02:      4602            mov     r2, r0
+ 800bf04:      68fb            ldr     r3, [r7, #12]
+ 800bf06:      1ad3            subs    r3, r2, r3
+ 800bf08:      f241 3288       movw    r2, #5000       ; 0x1388
+ 800bf0c:      4293            cmp     r3, r2
+ 800bf0e:      bf8c            ite     hi
+ 800bf10:      2301            movhi   r3, #1
+ 800bf12:      2300            movls   r3, #0
+ 800bf14:      b2db            uxtb    r3, r3
+ 800bf16:      2b00            cmp     r3, #0
+ 800bf18:      d088            beq.n   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          configured_ = false;
+ 800bf1a:      687b            ldr     r3, [r7, #4]
+ 800bf1c:      2200            movs    r2, #0
+ 800bf1e:      f883 2684       strb.w  r2, [r3, #1668] ; 0x684
+          return SPIN_TIMEOUT;
+ 800bf22:      f06f 0301       mvn.w   r3, #1
+ 800bf26:      e133            b.n     800c190 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x3b0>
+      else if (mode_ == MODE_PROTOCOL_VER)
+ 800bf28:      687b            ldr     r3, [r7, #4]
+ 800bf2a:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bf2e:      2b01            cmp     r3, #1
+ 800bf30:      d11b            bne.n   800bf6a <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x18a>
+        if (data == PROTOCOL_VER)
+ 800bf32:      68bb            ldr     r3, [r7, #8]
+ 800bf34:      2bfe            cmp     r3, #254        ; 0xfe
+ 800bf36:      d107            bne.n   800bf48 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x168>
+          mode_++;
+ 800bf38:      687b            ldr     r3, [r7, #4]
+ 800bf3a:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bf3e:      1c5a            adds    r2, r3, #1
+ 800bf40:      687b            ldr     r3, [r7, #4]
+ 800bf42:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+ 800bf46:      e771            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          mode_ = MODE_FIRST_FF;
+ 800bf48:      687b            ldr     r3, [r7, #4]
+ 800bf4a:      2200            movs    r2, #0
+ 800bf4c:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+          if (configured_ == false)
+ 800bf50:      687b            ldr     r3, [r7, #4]
+ 800bf52:      f893 3684       ldrb.w  r3, [r3, #1668] ; 0x684
+ 800bf56:      f083 0301       eor.w   r3, r3, #1
+ 800bf5a:      b2db            uxtb    r3, r3
+ 800bf5c:      2b00            cmp     r3, #0
+ 800bf5e:      f43f af65       beq.w   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+            requestSyncTime();  /* send a msg back showing our protocol version */
+ 800bf62:      6878            ldr     r0, [r7, #4]
+ 800bf64:      f000 f933       bl      800c1ce <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15requestSyncTimeEv>
+ 800bf68:      e760            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      else if (mode_ == MODE_SIZE_L)      /* bottom half of message size */
+ 800bf6a:      687b            ldr     r3, [r7, #4]
+ 800bf6c:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bf70:      2b02            cmp     r3, #2
+ 800bf72:      d113            bne.n   800bf9c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x1bc>
+        bytes_ = data;
+ 800bf74:      687b            ldr     r3, [r7, #4]
+ 800bf76:      68ba            ldr     r2, [r7, #8]
+ 800bf78:      f8c3 2674       str.w   r2, [r3, #1652] ; 0x674
+        index_ = 0;
+ 800bf7c:      687b            ldr     r3, [r7, #4]
+ 800bf7e:      2200            movs    r2, #0
+ 800bf80:      f8c3 267c       str.w   r2, [r3, #1660] ; 0x67c
+        mode_++;
+ 800bf84:      687b            ldr     r3, [r7, #4]
+ 800bf86:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bf8a:      1c5a            adds    r2, r3, #1
+ 800bf8c:      687b            ldr     r3, [r7, #4]
+ 800bf8e:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+        checksum_ = data;               /* first byte for calculating size checksum */
+ 800bf92:      687b            ldr     r3, [r7, #4]
+ 800bf94:      68ba            ldr     r2, [r7, #8]
+ 800bf96:      f8c3 2680       str.w   r2, [r3, #1664] ; 0x680
+ 800bf9a:      e747            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      else if (mode_ == MODE_SIZE_H)      /* top half of message size */
+ 800bf9c:      687b            ldr     r3, [r7, #4]
+ 800bf9e:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bfa2:      2b03            cmp     r3, #3
+ 800bfa4:      d110            bne.n   800bfc8 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x1e8>
+        bytes_ += data << 8;
+ 800bfa6:      687b            ldr     r3, [r7, #4]
+ 800bfa8:      f8d3 2674       ldr.w   r2, [r3, #1652] ; 0x674
+ 800bfac:      68bb            ldr     r3, [r7, #8]
+ 800bfae:      021b            lsls    r3, r3, #8
+ 800bfb0:      441a            add     r2, r3
+ 800bfb2:      687b            ldr     r3, [r7, #4]
+ 800bfb4:      f8c3 2674       str.w   r2, [r3, #1652] ; 0x674
+        mode_++;
+ 800bfb8:      687b            ldr     r3, [r7, #4]
+ 800bfba:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bfbe:      1c5a            adds    r2, r3, #1
+ 800bfc0:      687b            ldr     r3, [r7, #4]
+ 800bfc2:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+ 800bfc6:      e731            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      else if (mode_ == MODE_SIZE_CHECKSUM)
+ 800bfc8:      687b            ldr     r3, [r7, #4]
+ 800bfca:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bfce:      2b04            cmp     r3, #4
+ 800bfd0:      d116            bne.n   800c000 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x220>
+        if ((checksum_ % 256) == 255)
+ 800bfd2:      687b            ldr     r3, [r7, #4]
+ 800bfd4:      f8d3 3680       ldr.w   r3, [r3, #1664] ; 0x680
+ 800bfd8:      425a            negs    r2, r3
+ 800bfda:      b2db            uxtb    r3, r3
+ 800bfdc:      b2d2            uxtb    r2, r2
+ 800bfde:      bf58            it      pl
+ 800bfe0:      4253            negpl   r3, r2
+ 800bfe2:      2bff            cmp     r3, #255        ; 0xff
+ 800bfe4:      d107            bne.n   800bff6 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x216>
+          mode_++;
+ 800bfe6:      687b            ldr     r3, [r7, #4]
+ 800bfe8:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800bfec:      1c5a            adds    r2, r3, #1
+ 800bfee:      687b            ldr     r3, [r7, #4]
+ 800bff0:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+ 800bff4:      e71a            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          mode_ = MODE_FIRST_FF;          /* Abandon the frame if the msg len is wrong */
+ 800bff6:      687b            ldr     r3, [r7, #4]
+ 800bff8:      2200            movs    r2, #0
+ 800bffa:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+ 800bffe:      e715            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      else if (mode_ == MODE_TOPIC_L)     /* bottom half of topic id */
+ 800c000:      687b            ldr     r3, [r7, #4]
+ 800c002:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800c006:      2b05            cmp     r3, #5
+ 800c008:      d10f            bne.n   800c02a <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x24a>
+        topic_ = data;
+ 800c00a:      687b            ldr     r3, [r7, #4]
+ 800c00c:      68ba            ldr     r2, [r7, #8]
+ 800c00e:      f8c3 2678       str.w   r2, [r3, #1656] ; 0x678
+        mode_++;
+ 800c012:      687b            ldr     r3, [r7, #4]
+ 800c014:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800c018:      1c5a            adds    r2, r3, #1
+ 800c01a:      687b            ldr     r3, [r7, #4]
+ 800c01c:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+        checksum_ = data;               /* first byte included in checksum */
+ 800c020:      687b            ldr     r3, [r7, #4]
+ 800c022:      68ba            ldr     r2, [r7, #8]
+ 800c024:      f8c3 2680       str.w   r2, [r3, #1664] ; 0x680
+ 800c028:      e700            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      else if (mode_ == MODE_TOPIC_H)     /* top half of topic id */
+ 800c02a:      687b            ldr     r3, [r7, #4]
+ 800c02c:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800c030:      2b06            cmp     r3, #6
+ 800c032:      d117            bne.n   800c064 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x284>
+        topic_ += data << 8;
+ 800c034:      687b            ldr     r3, [r7, #4]
+ 800c036:      f8d3 2678       ldr.w   r2, [r3, #1656] ; 0x678
+ 800c03a:      68bb            ldr     r3, [r7, #8]
+ 800c03c:      021b            lsls    r3, r3, #8
+ 800c03e:      441a            add     r2, r3
+ 800c040:      687b            ldr     r3, [r7, #4]
+ 800c042:      f8c3 2678       str.w   r2, [r3, #1656] ; 0x678
+        mode_ = MODE_MESSAGE;
+ 800c046:      687b            ldr     r3, [r7, #4]
+ 800c048:      2207            movs    r2, #7
+ 800c04a:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+        if (bytes_ == 0)
+ 800c04e:      687b            ldr     r3, [r7, #4]
+ 800c050:      f8d3 3674       ldr.w   r3, [r3, #1652] ; 0x674
+ 800c054:      2b00            cmp     r3, #0
+ 800c056:      f47f aee9       bne.w   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          mode_ = MODE_MSG_CHECKSUM;
+ 800c05a:      687b            ldr     r3, [r7, #4]
+ 800c05c:      2208            movs    r2, #8
+ 800c05e:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+ 800c062:      e6e3            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+      else if (mode_ == MODE_MSG_CHECKSUM)    /* do checksum */
+ 800c064:      687b            ldr     r3, [r7, #4]
+ 800c066:      f8d3 3670       ldr.w   r3, [r3, #1648] ; 0x670
+ 800c06a:      2b08            cmp     r3, #8
+ 800c06c:      f47f aede       bne.w   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+        mode_ = MODE_FIRST_FF;
+ 800c070:      687b            ldr     r3, [r7, #4]
+ 800c072:      2200            movs    r2, #0
+ 800c074:      f8c3 2670       str.w   r2, [r3, #1648] ; 0x670
+        if ((checksum_ % 256) == 255)
+ 800c078:      687b            ldr     r3, [r7, #4]
+ 800c07a:      f8d3 3680       ldr.w   r3, [r3, #1664] ; 0x680
+ 800c07e:      425a            negs    r2, r3
+ 800c080:      b2db            uxtb    r3, r3
+ 800c082:      b2d2            uxtb    r2, r2
+ 800c084:      bf58            it      pl
+ 800c086:      4253            negpl   r3, r2
+ 800c088:      2bff            cmp     r3, #255        ; 0xff
+ 800c08a:      f47f aecf       bne.w   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          if (topic_ == TopicInfo::ID_PUBLISHER)
+ 800c08e:      687b            ldr     r3, [r7, #4]
+ 800c090:      f8d3 3678       ldr.w   r3, [r3, #1656] ; 0x678
+ 800c094:      2b00            cmp     r3, #0
+ 800c096:      d110            bne.n   800c0ba <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x2da>
+            requestSyncTime();
+ 800c098:      6878            ldr     r0, [r7, #4]
+ 800c09a:      f000 f898       bl      800c1ce <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15requestSyncTimeEv>
+            negotiateTopics();
+ 800c09e:      6878            ldr     r0, [r7, #4]
+ 800c0a0:      f000 f8b3       bl      800c20a <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv>
+            last_sync_time = c_time;
+ 800c0a4:      687b            ldr     r3, [r7, #4]
+ 800c0a6:      68fa            ldr     r2, [r7, #12]
+ 800c0a8:      f8c3 2688       str.w   r2, [r3, #1672] ; 0x688
+            last_sync_receive_time = c_time;
+ 800c0ac:      687b            ldr     r3, [r7, #4]
+ 800c0ae:      68fa            ldr     r2, [r7, #12]
+ 800c0b0:      f8c3 268c       str.w   r2, [r3, #1676] ; 0x68c
+            return SPIN_ERR;
+ 800c0b4:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 800c0b8:      e06a            b.n     800c190 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x3b0>
+          else if (topic_ == TopicInfo::ID_TIME)
+ 800c0ba:      687b            ldr     r3, [r7, #4]
+ 800c0bc:      f8d3 3678       ldr.w   r3, [r3, #1656] ; 0x678
+ 800c0c0:      2b0a            cmp     r3, #10
+ 800c0c2:      d107            bne.n   800c0d4 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x2f4>
+            syncTime(message_in);
+ 800c0c4:      687b            ldr     r3, [r7, #4]
+ 800c0c6:      f503 73d4       add.w   r3, r3, #424    ; 0x1a8
+ 800c0ca:      4619            mov     r1, r3
+ 800c0cc:      6878            ldr     r0, [r7, #4]
+ 800c0ce:      f000 f97d       bl      800c3cc <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8syncTimeEPh>
+ 800c0d2:      e6ab            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          else if (topic_ == TopicInfo::ID_PARAMETER_REQUEST)
+ 800c0d4:      687b            ldr     r3, [r7, #4]
+ 800c0d6:      f8d3 3678       ldr.w   r3, [r3, #1656] ; 0x678
+ 800c0da:      2b06            cmp     r3, #6
+ 800c0dc:      d10e            bne.n   800c0fc <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x31c>
+            req_param_resp.deserialize(message_in);
+ 800c0de:      687b            ldr     r3, [r7, #4]
+ 800c0e0:      f503 62d3       add.w   r2, r3, #1688   ; 0x698
+ 800c0e4:      687b            ldr     r3, [r7, #4]
+ 800c0e6:      f503 73d4       add.w   r3, r3, #424    ; 0x1a8
+ 800c0ea:      4619            mov     r1, r3
+ 800c0ec:      4610            mov     r0, r2
+ 800c0ee:      f7ff f896       bl      800b21e <_ZN14rosserial_msgs20RequestParamResponse11deserializeEPh>
+            param_recieved = true;
+ 800c0f2:      687b            ldr     r3, [r7, #4]
+ 800c0f4:      2201            movs    r2, #1
+ 800c0f6:      f883 2694       strb.w  r2, [r3, #1684] ; 0x694
+ 800c0fa:      e697            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+          else if (topic_ == TopicInfo::ID_TX_STOP)
+ 800c0fc:      687b            ldr     r3, [r7, #4]
+ 800c0fe:      f8d3 3678       ldr.w   r3, [r3, #1656] ; 0x678
+ 800c102:      2b0b            cmp     r3, #11
+ 800c104:      d104            bne.n   800c110 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x330>
+            configured_ = false;
+ 800c106:      687b            ldr     r3, [r7, #4]
+ 800c108:      2200            movs    r2, #0
+ 800c10a:      f883 2684       strb.w  r2, [r3, #1668] ; 0x684
+ 800c10e:      e68d            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+            if (subscribers[topic_ - 100])
+ 800c110:      687b            ldr     r3, [r7, #4]
+ 800c112:      f8d3 3678       ldr.w   r3, [r3, #1656] ; 0x678
+ 800c116:      3b64            subs    r3, #100        ; 0x64
+ 800c118:      687a            ldr     r2, [r7, #4]
+ 800c11a:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c11e:      009b            lsls    r3, r3, #2
+ 800c120:      4413            add     r3, r2
+ 800c122:      685b            ldr     r3, [r3, #4]
+ 800c124:      2b00            cmp     r3, #0
+ 800c126:      f43f ae81       beq.w   800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+              subscribers[topic_ - 100]->callback(message_in);
+ 800c12a:      687b            ldr     r3, [r7, #4]
+ 800c12c:      f8d3 3678       ldr.w   r3, [r3, #1656] ; 0x678
+ 800c130:      3b64            subs    r3, #100        ; 0x64
+ 800c132:      687a            ldr     r2, [r7, #4]
+ 800c134:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c138:      009b            lsls    r3, r3, #2
+ 800c13a:      4413            add     r3, r2
+ 800c13c:      6858            ldr     r0, [r3, #4]
+ 800c13e:      687b            ldr     r3, [r7, #4]
+ 800c140:      f8d3 3678       ldr.w   r3, [r3, #1656] ; 0x678
+ 800c144:      3b64            subs    r3, #100        ; 0x64
+ 800c146:      687a            ldr     r2, [r7, #4]
+ 800c148:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c14c:      009b            lsls    r3, r3, #2
+ 800c14e:      4413            add     r3, r2
+ 800c150:      685b            ldr     r3, [r3, #4]
+ 800c152:      681b            ldr     r3, [r3, #0]
+ 800c154:      681b            ldr     r3, [r3, #0]
+ 800c156:      687a            ldr     r2, [r7, #4]
+ 800c158:      f502 72d4       add.w   r2, r2, #424    ; 0x1a8
+ 800c15c:      4611            mov     r1, r2
+ 800c15e:      4798            blx     r3
+    while (true)
+ 800c160:      e664            b.n     800be2c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x4c>
+        break;
+ 800c162:      bf00            nop
+    if (configured_ && ((c_time - last_sync_time) > (SYNC_SECONDS * 500)))
+ 800c164:      687b            ldr     r3, [r7, #4]
+ 800c166:      f893 3684       ldrb.w  r3, [r3, #1668] ; 0x684
+ 800c16a:      2b00            cmp     r3, #0
+ 800c16c:      d00f            beq.n   800c18e <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x3ae>
+ 800c16e:      687b            ldr     r3, [r7, #4]
+ 800c170:      f8d3 3688       ldr.w   r3, [r3, #1672] ; 0x688
+ 800c174:      68fa            ldr     r2, [r7, #12]
+ 800c176:      1ad3            subs    r3, r2, r3
+ 800c178:      f640 12c4       movw    r2, #2500       ; 0x9c4
+ 800c17c:      4293            cmp     r3, r2
+ 800c17e:      d906            bls.n   800c18e <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8spinOnceEv+0x3ae>
+      requestSyncTime();
+ 800c180:      6878            ldr     r0, [r7, #4]
+ 800c182:      f000 f824       bl      800c1ce <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15requestSyncTimeEv>
+      last_sync_time = c_time;
+ 800c186:      687b            ldr     r3, [r7, #4]
+ 800c188:      68fa            ldr     r2, [r7, #12]
+ 800c18a:      f8c3 2688       str.w   r2, [r3, #1672] ; 0x688
+    return SPIN_OK;
+ 800c18e:      2300            movs    r3, #0
+  }
+ 800c190:      4618            mov     r0, r3
+ 800c192:      3710            adds    r7, #16
+ 800c194:      46bd            mov     sp, r7
+ 800c196:      bd80            pop     {r7, pc}
+
+0800c198 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE9connectedEv>:
+  virtual bool connected()
+ 800c198:      b480            push    {r7}
+ 800c19a:      b083            sub     sp, #12
+ 800c19c:      af00            add     r7, sp, #0
+ 800c19e:      6078            str     r0, [r7, #4]
+    return configured_;
+ 800c1a0:      687b            ldr     r3, [r7, #4]
+ 800c1a2:      f893 3684       ldrb.w  r3, [r3, #1668] ; 0x684
+  };
+ 800c1a6:      4618            mov     r0, r3
+ 800c1a8:      370c            adds    r7, #12
+ 800c1aa:      46bd            mov     sp, r7
+ 800c1ac:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c1b0:      4770            bx      lr
+
+0800c1b2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8logerrorEPKc>:
+  }
+  void logwarn(const char *msg)
+  {
+    log(rosserial_msgs::Log::WARN, msg);
+  }
+  void logerror(const char*msg)
+ 800c1b2:      b580            push    {r7, lr}
+ 800c1b4:      b082            sub     sp, #8
+ 800c1b6:      af00            add     r7, sp, #0
+ 800c1b8:      6078            str     r0, [r7, #4]
+ 800c1ba:      6039            str     r1, [r7, #0]
+  {
+    log(rosserial_msgs::Log::ERROR, msg);
+ 800c1bc:      683a            ldr     r2, [r7, #0]
+ 800c1be:      2103            movs    r1, #3
+ 800c1c0:      6878            ldr     r0, [r7, #4]
+ 800c1c2:      f000 f94f       bl      800c464 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE3logEcPKc>
+  }
+ 800c1c6:      bf00            nop
+ 800c1c8:      3708            adds    r7, #8
+ 800c1ca:      46bd            mov     sp, r7
+ 800c1cc:      bd80            pop     {r7, pc}
+
+0800c1ce <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15requestSyncTimeEv>:
+  void requestSyncTime()
+ 800c1ce:      b580            push    {r7, lr}
+ 800c1d0:      b086            sub     sp, #24
+ 800c1d2:      af00            add     r7, sp, #0
+ 800c1d4:      6078            str     r0, [r7, #4]
+    std_msgs::Time t;
+ 800c1d6:      f107 030c       add.w   r3, r7, #12
+ 800c1da:      4618            mov     r0, r3
+ 800c1dc:      f7fe fb86       bl      800a8ec <_ZN8std_msgs4TimeC1Ev>
+    publish(TopicInfo::ID_TIME, &t);
+ 800c1e0:      687b            ldr     r3, [r7, #4]
+ 800c1e2:      681b            ldr     r3, [r3, #0]
+ 800c1e4:      681b            ldr     r3, [r3, #0]
+ 800c1e6:      f107 020c       add.w   r2, r7, #12
+ 800c1ea:      210a            movs    r1, #10
+ 800c1ec:      6878            ldr     r0, [r7, #4]
+ 800c1ee:      4798            blx     r3
+    rt_time = hardware_.time();
+ 800c1f0:      687b            ldr     r3, [r7, #4]
+ 800c1f2:      3304            adds    r3, #4
+ 800c1f4:      4618            mov     r0, r3
+ 800c1f6:      f7ff fae4       bl      800b7c2 <_ZN13STM32Hardware4timeEv>
+ 800c1fa:      4602            mov     r2, r0
+ 800c1fc:      687b            ldr     r3, [r7, #4]
+ 800c1fe:      f8c3 2198       str.w   r2, [r3, #408]  ; 0x198
+  }
+ 800c202:      bf00            nop
+ 800c204:      3718            adds    r7, #24
+ 800c206:      46bd            mov     sp, r7
+ 800c208:      bd80            pop     {r7, pc}
+
+0800c20a <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv>:
+  void negotiateTopics()
+ 800c20a:      b590            push    {r4, r7, lr}
+ 800c20c:      b08b            sub     sp, #44 ; 0x2c
+ 800c20e:      af00            add     r7, sp, #0
+ 800c210:      6078            str     r0, [r7, #4]
+    rosserial_msgs::TopicInfo ti;
+ 800c212:      f107 030c       add.w   r3, r7, #12
+ 800c216:      4618            mov     r0, r3
+ 800c218:      f7fe fc58       bl      800aacc <_ZN14rosserial_msgs9TopicInfoC1Ev>
+    for (i = 0; i < MAX_PUBLISHERS; i++)
+ 800c21c:      2300            movs    r3, #0
+ 800c21e:      627b            str     r3, [r7, #36]   ; 0x24
+ 800c220:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c222:      2b18            cmp     r3, #24
+ 800c224:      dc5b            bgt.n   800c2de <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv+0xd4>
+      if (publishers[i] != 0) // non-empty slot
+ 800c226:      687b            ldr     r3, [r7, #4]
+ 800c228:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c22a:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c22e:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c232:      2b00            cmp     r3, #0
+ 800c234:      d04f            beq.n   800c2d6 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv+0xcc>
+        ti.topic_id = publishers[i]->id_;
+ 800c236:      687b            ldr     r3, [r7, #4]
+ 800c238:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c23a:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c23e:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c242:      689b            ldr     r3, [r3, #8]
+ 800c244:      b29b            uxth    r3, r3
+ 800c246:      823b            strh    r3, [r7, #16]
+        ti.topic_name = (char *) publishers[i]->topic_;
+ 800c248:      687b            ldr     r3, [r7, #4]
+ 800c24a:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c24c:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c250:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c254:      681b            ldr     r3, [r3, #0]
+ 800c256:      617b            str     r3, [r7, #20]
+        ti.message_type = (char *) publishers[i]->msg_->getType();
+ 800c258:      687b            ldr     r3, [r7, #4]
+ 800c25a:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c25c:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c260:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c264:      6859            ldr     r1, [r3, #4]
+ 800c266:      687b            ldr     r3, [r7, #4]
+ 800c268:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c26a:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c26e:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c272:      685b            ldr     r3, [r3, #4]
+ 800c274:      681b            ldr     r3, [r3, #0]
+ 800c276:      3308            adds    r3, #8
+ 800c278:      681b            ldr     r3, [r3, #0]
+ 800c27a:      4608            mov     r0, r1
+ 800c27c:      4798            blx     r3
+ 800c27e:      4603            mov     r3, r0
+ 800c280:      61bb            str     r3, [r7, #24]
+        ti.md5sum = (char *) publishers[i]->msg_->getMD5();
+ 800c282:      687b            ldr     r3, [r7, #4]
+ 800c284:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c286:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c28a:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c28e:      6859            ldr     r1, [r3, #4]
+ 800c290:      687b            ldr     r3, [r7, #4]
+ 800c292:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c294:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c298:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c29c:      685b            ldr     r3, [r3, #4]
+ 800c29e:      681b            ldr     r3, [r3, #0]
+ 800c2a0:      330c            adds    r3, #12
+ 800c2a2:      681b            ldr     r3, [r3, #0]
+ 800c2a4:      4608            mov     r0, r1
+ 800c2a6:      4798            blx     r3
+ 800c2a8:      4603            mov     r3, r0
+ 800c2aa:      61fb            str     r3, [r7, #28]
+        ti.buffer_size = OUTPUT_SIZE;
+ 800c2ac:      f44f 7300       mov.w   r3, #512        ; 0x200
+ 800c2b0:      623b            str     r3, [r7, #32]
+        publish(publishers[i]->getEndpointType(), &ti);
+ 800c2b2:      687b            ldr     r3, [r7, #4]
+ 800c2b4:      681b            ldr     r3, [r3, #0]
+ 800c2b6:      681c            ldr     r4, [r3, #0]
+ 800c2b8:      687b            ldr     r3, [r7, #4]
+ 800c2ba:      6a7a            ldr     r2, [r7, #36]   ; 0x24
+ 800c2bc:      f502 72b5       add.w   r2, r2, #362    ; 0x16a
+ 800c2c0:      f853 3022       ldr.w   r3, [r3, r2, lsl #2]
+ 800c2c4:      4618            mov     r0, r3
+ 800c2c6:      f7ff f94e       bl      800b566 <_ZN3ros9Publisher15getEndpointTypeEv>
+ 800c2ca:      4601            mov     r1, r0
+ 800c2cc:      f107 030c       add.w   r3, r7, #12
+ 800c2d0:      461a            mov     r2, r3
+ 800c2d2:      6878            ldr     r0, [r7, #4]
+ 800c2d4:      47a0            blx     r4
+    for (i = 0; i < MAX_PUBLISHERS; i++)
+ 800c2d6:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c2d8:      3301            adds    r3, #1
+ 800c2da:      627b            str     r3, [r7, #36]   ; 0x24
+ 800c2dc:      e7a0            b.n     800c220 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv+0x16>
+    for (i = 0; i < MAX_SUBSCRIBERS; i++)
+ 800c2de:      2300            movs    r3, #0
+ 800c2e0:      627b            str     r3, [r7, #36]   ; 0x24
+ 800c2e2:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c2e4:      2b18            cmp     r3, #24
+ 800c2e6:      dc68            bgt.n   800c3ba <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv+0x1b0>
+      if (subscribers[i] != 0) // non-empty slot
+ 800c2e8:      687a            ldr     r2, [r7, #4]
+ 800c2ea:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c2ec:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c2f0:      009b            lsls    r3, r3, #2
+ 800c2f2:      4413            add     r3, r2
+ 800c2f4:      685b            ldr     r3, [r3, #4]
+ 800c2f6:      2b00            cmp     r3, #0
+ 800c2f8:      d05b            beq.n   800c3b2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv+0x1a8>
+        ti.topic_id = subscribers[i]->id_;
+ 800c2fa:      687a            ldr     r2, [r7, #4]
+ 800c2fc:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c2fe:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c302:      009b            lsls    r3, r3, #2
+ 800c304:      4413            add     r3, r2
+ 800c306:      685b            ldr     r3, [r3, #4]
+ 800c308:      685b            ldr     r3, [r3, #4]
+ 800c30a:      b29b            uxth    r3, r3
+ 800c30c:      823b            strh    r3, [r7, #16]
+        ti.topic_name = (char *) subscribers[i]->topic_;
+ 800c30e:      687a            ldr     r2, [r7, #4]
+ 800c310:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c312:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c316:      009b            lsls    r3, r3, #2
+ 800c318:      4413            add     r3, r2
+ 800c31a:      685b            ldr     r3, [r3, #4]
+ 800c31c:      689b            ldr     r3, [r3, #8]
+ 800c31e:      617b            str     r3, [r7, #20]
+        ti.message_type = (char *) subscribers[i]->getMsgType();
+ 800c320:      687a            ldr     r2, [r7, #4]
+ 800c322:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c324:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c328:      009b            lsls    r3, r3, #2
+ 800c32a:      4413            add     r3, r2
+ 800c32c:      6859            ldr     r1, [r3, #4]
+ 800c32e:      687a            ldr     r2, [r7, #4]
+ 800c330:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c332:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c336:      009b            lsls    r3, r3, #2
+ 800c338:      4413            add     r3, r2
+ 800c33a:      685b            ldr     r3, [r3, #4]
+ 800c33c:      681b            ldr     r3, [r3, #0]
+ 800c33e:      3308            adds    r3, #8
+ 800c340:      681b            ldr     r3, [r3, #0]
+ 800c342:      4608            mov     r0, r1
+ 800c344:      4798            blx     r3
+ 800c346:      4603            mov     r3, r0
+ 800c348:      61bb            str     r3, [r7, #24]
+        ti.md5sum = (char *) subscribers[i]->getMsgMD5();
+ 800c34a:      687a            ldr     r2, [r7, #4]
+ 800c34c:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c34e:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c352:      009b            lsls    r3, r3, #2
+ 800c354:      4413            add     r3, r2
+ 800c356:      6859            ldr     r1, [r3, #4]
+ 800c358:      687a            ldr     r2, [r7, #4]
+ 800c35a:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c35c:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c360:      009b            lsls    r3, r3, #2
+ 800c362:      4413            add     r3, r2
+ 800c364:      685b            ldr     r3, [r3, #4]
+ 800c366:      681b            ldr     r3, [r3, #0]
+ 800c368:      330c            adds    r3, #12
+ 800c36a:      681b            ldr     r3, [r3, #0]
+ 800c36c:      4608            mov     r0, r1
+ 800c36e:      4798            blx     r3
+ 800c370:      4603            mov     r3, r0
+ 800c372:      61fb            str     r3, [r7, #28]
+        ti.buffer_size = INPUT_SIZE;
+ 800c374:      f44f 7300       mov.w   r3, #512        ; 0x200
+ 800c378:      623b            str     r3, [r7, #32]
+        publish(subscribers[i]->getEndpointType(), &ti);
+ 800c37a:      687b            ldr     r3, [r7, #4]
+ 800c37c:      681b            ldr     r3, [r3, #0]
+ 800c37e:      681c            ldr     r4, [r3, #0]
+ 800c380:      687a            ldr     r2, [r7, #4]
+ 800c382:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c384:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c388:      009b            lsls    r3, r3, #2
+ 800c38a:      4413            add     r3, r2
+ 800c38c:      6859            ldr     r1, [r3, #4]
+ 800c38e:      687a            ldr     r2, [r7, #4]
+ 800c390:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c392:      f503 73c1       add.w   r3, r3, #386    ; 0x182
+ 800c396:      009b            lsls    r3, r3, #2
+ 800c398:      4413            add     r3, r2
+ 800c39a:      685b            ldr     r3, [r3, #4]
+ 800c39c:      681b            ldr     r3, [r3, #0]
+ 800c39e:      3304            adds    r3, #4
+ 800c3a0:      681b            ldr     r3, [r3, #0]
+ 800c3a2:      4608            mov     r0, r1
+ 800c3a4:      4798            blx     r3
+ 800c3a6:      4601            mov     r1, r0
+ 800c3a8:      f107 030c       add.w   r3, r7, #12
+ 800c3ac:      461a            mov     r2, r3
+ 800c3ae:      6878            ldr     r0, [r7, #4]
+ 800c3b0:      47a0            blx     r4
+    for (i = 0; i < MAX_SUBSCRIBERS; i++)
+ 800c3b2:      6a7b            ldr     r3, [r7, #36]   ; 0x24
+ 800c3b4:      3301            adds    r3, #1
+ 800c3b6:      627b            str     r3, [r7, #36]   ; 0x24
+ 800c3b8:      e793            b.n     800c2e2 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE15negotiateTopicsEv+0xd8>
+    configured_ = true;
+ 800c3ba:      687b            ldr     r3, [r7, #4]
+ 800c3bc:      2201            movs    r2, #1
+ 800c3be:      f883 2684       strb.w  r2, [r3, #1668] ; 0x684
+  }
+ 800c3c2:      bf00            nop
+ 800c3c4:      372c            adds    r7, #44 ; 0x2c
+ 800c3c6:      46bd            mov     sp, r7
+ 800c3c8:      bd90            pop     {r4, r7, pc}
        ...
 
-08002600 <HAL_MspInit>:
+0800c3cc <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8syncTimeEPh>:
+  void syncTime(uint8_t * data)
+ 800c3cc:      b580            push    {r7, lr}
+ 800c3ce:      b086            sub     sp, #24
+ 800c3d0:      af00            add     r7, sp, #0
+ 800c3d2:      6078            str     r0, [r7, #4]
+ 800c3d4:      6039            str     r1, [r7, #0]
+    std_msgs::Time t;
+ 800c3d6:      f107 0308       add.w   r3, r7, #8
+ 800c3da:      4618            mov     r0, r3
+ 800c3dc:      f7fe fa86       bl      800a8ec <_ZN8std_msgs4TimeC1Ev>
+    uint32_t offset = hardware_.time() - rt_time;
+ 800c3e0:      687b            ldr     r3, [r7, #4]
+ 800c3e2:      3304            adds    r3, #4
+ 800c3e4:      4618            mov     r0, r3
+ 800c3e6:      f7ff f9ec       bl      800b7c2 <_ZN13STM32Hardware4timeEv>
+ 800c3ea:      4602            mov     r2, r0
+ 800c3ec:      687b            ldr     r3, [r7, #4]
+ 800c3ee:      f8d3 3198       ldr.w   r3, [r3, #408]  ; 0x198
+ 800c3f2:      1ad3            subs    r3, r2, r3
+ 800c3f4:      617b            str     r3, [r7, #20]
+    t.deserialize(data);
+ 800c3f6:      f107 0308       add.w   r3, r7, #8
+ 800c3fa:      6839            ldr     r1, [r7, #0]
+ 800c3fc:      4618            mov     r0, r3
+ 800c3fe:      f7fe fae5       bl      800a9cc <_ZN8std_msgs4Time11deserializeEPh>
+    t.data.sec += offset / 1000;
+ 800c402:      68fa            ldr     r2, [r7, #12]
+ 800c404:      697b            ldr     r3, [r7, #20]
+ 800c406:      4915            ldr     r1, [pc, #84]   ; (800c45c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8syncTimeEPh+0x90>)
+ 800c408:      fba1 1303       umull   r1, r3, r1, r3
+ 800c40c:      099b            lsrs    r3, r3, #6
+ 800c40e:      4413            add     r3, r2
+ 800c410:      60fb            str     r3, [r7, #12]
+    t.data.nsec += (offset % 1000) * 1000000UL;
+ 800c412:      6939            ldr     r1, [r7, #16]
+ 800c414:      697a            ldr     r2, [r7, #20]
+ 800c416:      4b11            ldr     r3, [pc, #68]   ; (800c45c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8syncTimeEPh+0x90>)
+ 800c418:      fba3 0302       umull   r0, r3, r3, r2
+ 800c41c:      099b            lsrs    r3, r3, #6
+ 800c41e:      f44f 707a       mov.w   r0, #1000       ; 0x3e8
+ 800c422:      fb00 f303       mul.w   r3, r0, r3
+ 800c426:      1ad3            subs    r3, r2, r3
+ 800c428:      4a0d            ldr     r2, [pc, #52]   ; (800c460 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE8syncTimeEPh+0x94>)
+ 800c42a:      fb02 f303       mul.w   r3, r2, r3
+ 800c42e:      440b            add     r3, r1
+ 800c430:      613b            str     r3, [r7, #16]
+    this->setNow(t.data);
+ 800c432:      f107 0308       add.w   r3, r7, #8
+ 800c436:      3304            adds    r3, #4
+ 800c438:      4619            mov     r1, r3
+ 800c43a:      6878            ldr     r0, [r7, #4]
+ 800c43c:      f000 f82e       bl      800c49c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE6setNowERNS_4TimeE>
+    last_sync_receive_time = hardware_.time();
+ 800c440:      687b            ldr     r3, [r7, #4]
+ 800c442:      3304            adds    r3, #4
+ 800c444:      4618            mov     r0, r3
+ 800c446:      f7ff f9bc       bl      800b7c2 <_ZN13STM32Hardware4timeEv>
+ 800c44a:      4602            mov     r2, r0
+ 800c44c:      687b            ldr     r3, [r7, #4]
+ 800c44e:      f8c3 268c       str.w   r2, [r3, #1676] ; 0x68c
+  }
+ 800c452:      bf00            nop
+ 800c454:      3718            adds    r7, #24
+ 800c456:      46bd            mov     sp, r7
+ 800c458:      bd80            pop     {r7, pc}
+ 800c45a:      bf00            nop
+ 800c45c:      10624dd3        .word   0x10624dd3
+ 800c460:      000f4240        .word   0x000f4240
+
+0800c464 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE3logEcPKc>:
+  void log(char byte, const char * msg)
+ 800c464:      b580            push    {r7, lr}
+ 800c466:      b088            sub     sp, #32
+ 800c468:      af00            add     r7, sp, #0
+ 800c46a:      60f8            str     r0, [r7, #12]
+ 800c46c:      460b            mov     r3, r1
+ 800c46e:      607a            str     r2, [r7, #4]
+ 800c470:      72fb            strb    r3, [r7, #11]
+    rosserial_msgs::Log l;
+ 800c472:      f107 0314       add.w   r3, r7, #20
+ 800c476:      4618            mov     r0, r3
+ 800c478:      f7fe fcec       bl      800ae54 <_ZN14rosserial_msgs3LogC1Ev>
+    l.level = byte;
+ 800c47c:      7afb            ldrb    r3, [r7, #11]
+ 800c47e:      763b            strb    r3, [r7, #24]
+    l.msg = (char*)msg;
+ 800c480:      687b            ldr     r3, [r7, #4]
+ 800c482:      61fb            str     r3, [r7, #28]
+    publish(rosserial_msgs::TopicInfo::ID_LOG, &l);
+ 800c484:      68fb            ldr     r3, [r7, #12]
+ 800c486:      681b            ldr     r3, [r3, #0]
+ 800c488:      681b            ldr     r3, [r3, #0]
+ 800c48a:      f107 0214       add.w   r2, r7, #20
+ 800c48e:      2107            movs    r1, #7
+ 800c490:      68f8            ldr     r0, [r7, #12]
+ 800c492:      4798            blx     r3
+  }
+ 800c494:      bf00            nop
+ 800c496:      3720            adds    r7, #32
+ 800c498:      46bd            mov     sp, r7
+ 800c49a:      bd80            pop     {r7, pc}
+
+0800c49c <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE6setNowERNS_4TimeE>:
+  void setNow(Time & new_now)
+ 800c49c:      b580            push    {r7, lr}
+ 800c49e:      b084            sub     sp, #16
+ 800c4a0:      af00            add     r7, sp, #0
+ 800c4a2:      6078            str     r0, [r7, #4]
+ 800c4a4:      6039            str     r1, [r7, #0]
+    uint32_t ms = hardware_.time();
+ 800c4a6:      687b            ldr     r3, [r7, #4]
+ 800c4a8:      3304            adds    r3, #4
+ 800c4aa:      4618            mov     r0, r3
+ 800c4ac:      f7ff f989       bl      800b7c2 <_ZN13STM32Hardware4timeEv>
+ 800c4b0:      60f8            str     r0, [r7, #12]
+    sec_offset = new_now.sec - ms / 1000 - 1;
+ 800c4b2:      683b            ldr     r3, [r7, #0]
+ 800c4b4:      681a            ldr     r2, [r3, #0]
+ 800c4b6:      68fb            ldr     r3, [r7, #12]
+ 800c4b8:      4915            ldr     r1, [pc, #84]   ; (800c510 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE6setNowERNS_4TimeE+0x74>)
+ 800c4ba:      fba1 1303       umull   r1, r3, r1, r3
+ 800c4be:      099b            lsrs    r3, r3, #6
+ 800c4c0:      1ad3            subs    r3, r2, r3
+ 800c4c2:      1e5a            subs    r2, r3, #1
+ 800c4c4:      687b            ldr     r3, [r7, #4]
+ 800c4c6:      f8c3 219c       str.w   r2, [r3, #412]  ; 0x19c
+    nsec_offset = new_now.nsec - (ms % 1000) * 1000000UL + 1000000000UL;
+ 800c4ca:      683b            ldr     r3, [r7, #0]
+ 800c4cc:      6859            ldr     r1, [r3, #4]
+ 800c4ce:      68fa            ldr     r2, [r7, #12]
+ 800c4d0:      4b0f            ldr     r3, [pc, #60]   ; (800c510 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE6setNowERNS_4TimeE+0x74>)
+ 800c4d2:      fba3 0302       umull   r0, r3, r3, r2
+ 800c4d6:      099b            lsrs    r3, r3, #6
+ 800c4d8:      f44f 707a       mov.w   r0, #1000       ; 0x3e8
+ 800c4dc:      fb00 f303       mul.w   r3, r0, r3
+ 800c4e0:      1ad3            subs    r3, r2, r3
+ 800c4e2:      4a0c            ldr     r2, [pc, #48]   ; (800c514 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE6setNowERNS_4TimeE+0x78>)
+ 800c4e4:      fb02 f303       mul.w   r3, r2, r3
+ 800c4e8:      1aca            subs    r2, r1, r3
+ 800c4ea:      4b0b            ldr     r3, [pc, #44]   ; (800c518 <_ZN3ros11NodeHandle_I13STM32HardwareLi25ELi25ELi512ELi512EE6setNowERNS_4TimeE+0x7c>)
+ 800c4ec:      4413            add     r3, r2
+ 800c4ee:      687a            ldr     r2, [r7, #4]
+ 800c4f0:      f8c2 31a0       str.w   r3, [r2, #416]  ; 0x1a0
+    normalizeSecNSec(sec_offset, nsec_offset);
+ 800c4f4:      687b            ldr     r3, [r7, #4]
+ 800c4f6:      f503 72ce       add.w   r2, r3, #412    ; 0x19c
+ 800c4fa:      687b            ldr     r3, [r7, #4]
+ 800c4fc:      f503 73d0       add.w   r3, r3, #416    ; 0x1a0
+ 800c500:      4619            mov     r1, r3
+ 800c502:      4610            mov     r0, r2
+ 800c504:      f000 f80a       bl      800c51c <_ZN3ros16normalizeSecNSecERmS0_>
+  }
+ 800c508:      bf00            nop
+ 800c50a:      3710            adds    r7, #16
+ 800c50c:      46bd            mov     sp, r7
+ 800c50e:      bd80            pop     {r7, pc}
+ 800c510:      10624dd3        .word   0x10624dd3
+ 800c514:      000f4240        .word   0x000f4240
+ 800c518:      3b9aca00        .word   0x3b9aca00
+
+0800c51c <_ZN3ros16normalizeSecNSecERmS0_>:
+#include "ros/ros_time.h"
+
+namespace ros
+{
+void normalizeSecNSec(uint32_t& sec, uint32_t& nsec)
+{
+ 800c51c:      b480            push    {r7}
+ 800c51e:      b085            sub     sp, #20
+ 800c520:      af00            add     r7, sp, #0
+ 800c522:      6078            str     r0, [r7, #4]
+ 800c524:      6039            str     r1, [r7, #0]
+  uint32_t nsec_part = nsec % 1000000000UL;
+ 800c526:      683b            ldr     r3, [r7, #0]
+ 800c528:      681b            ldr     r3, [r3, #0]
+ 800c52a:      0a5a            lsrs    r2, r3, #9
+ 800c52c:      490f            ldr     r1, [pc, #60]   ; (800c56c <_ZN3ros16normalizeSecNSecERmS0_+0x50>)
+ 800c52e:      fba1 1202       umull   r1, r2, r1, r2
+ 800c532:      09d2            lsrs    r2, r2, #7
+ 800c534:      490e            ldr     r1, [pc, #56]   ; (800c570 <_ZN3ros16normalizeSecNSecERmS0_+0x54>)
+ 800c536:      fb01 f202       mul.w   r2, r1, r2
+ 800c53a:      1a9b            subs    r3, r3, r2
+ 800c53c:      60fb            str     r3, [r7, #12]
+  uint32_t sec_part = nsec / 1000000000UL;
+ 800c53e:      683b            ldr     r3, [r7, #0]
+ 800c540:      681b            ldr     r3, [r3, #0]
+ 800c542:      0a5b            lsrs    r3, r3, #9
+ 800c544:      4a09            ldr     r2, [pc, #36]   ; (800c56c <_ZN3ros16normalizeSecNSecERmS0_+0x50>)
+ 800c546:      fba2 2303       umull   r2, r3, r2, r3
+ 800c54a:      09db            lsrs    r3, r3, #7
+ 800c54c:      60bb            str     r3, [r7, #8]
+  sec += sec_part;
+ 800c54e:      687b            ldr     r3, [r7, #4]
+ 800c550:      681a            ldr     r2, [r3, #0]
+ 800c552:      68bb            ldr     r3, [r7, #8]
+ 800c554:      441a            add     r2, r3
+ 800c556:      687b            ldr     r3, [r7, #4]
+ 800c558:      601a            str     r2, [r3, #0]
+  nsec = nsec_part;
+ 800c55a:      683b            ldr     r3, [r7, #0]
+ 800c55c:      68fa            ldr     r2, [r7, #12]
+ 800c55e:      601a            str     r2, [r3, #0]
+}
+ 800c560:      bf00            nop
+ 800c562:      3714            adds    r7, #20
+ 800c564:      46bd            mov     sp, r7
+ 800c566:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c56a:      4770            bx      lr
+ 800c56c:      00044b83        .word   0x00044b83
+ 800c570:      3b9aca00        .word   0x3b9aca00
+
+0800c574 <HAL_MspInit>:
 /* USER CODE END 0 */
 /**
   * Initializes the Global MSP.
   */
 void HAL_MspInit(void)
 {
- 8002600:      b480            push    {r7}
- 8002602:      b083            sub     sp, #12
- 8002604:      af00            add     r7, sp, #0
+ 800c574:      b480            push    {r7}
+ 800c576:      b083            sub     sp, #12
+ 800c578:      af00            add     r7, sp, #0
   /* USER CODE BEGIN MspInit 0 */
 
   /* USER CODE END MspInit 0 */
 
   __HAL_RCC_PWR_CLK_ENABLE();
- 8002606:      4b0f            ldr     r3, [pc, #60]   ; (8002644 <HAL_MspInit+0x44>)
- 8002608:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 800260a:      4a0e            ldr     r2, [pc, #56]   ; (8002644 <HAL_MspInit+0x44>)
- 800260c:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
- 8002610:      6413            str     r3, [r2, #64]   ; 0x40
- 8002612:      4b0c            ldr     r3, [pc, #48]   ; (8002644 <HAL_MspInit+0x44>)
- 8002614:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002616:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 800261a:      607b            str     r3, [r7, #4]
- 800261c:      687b            ldr     r3, [r7, #4]
+ 800c57a:      4b0f            ldr     r3, [pc, #60]   ; (800c5b8 <HAL_MspInit+0x44>)
+ 800c57c:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800c57e:      4a0e            ldr     r2, [pc, #56]   ; (800c5b8 <HAL_MspInit+0x44>)
+ 800c580:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
+ 800c584:      6413            str     r3, [r2, #64]   ; 0x40
+ 800c586:      4b0c            ldr     r3, [pc, #48]   ; (800c5b8 <HAL_MspInit+0x44>)
+ 800c588:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800c58a:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 800c58e:      607b            str     r3, [r7, #4]
+ 800c590:      687b            ldr     r3, [r7, #4]
   __HAL_RCC_SYSCFG_CLK_ENABLE();
- 800261e:      4b09            ldr     r3, [pc, #36]   ; (8002644 <HAL_MspInit+0x44>)
- 8002620:      6c5b            ldr     r3, [r3, #68]   ; 0x44
- 8002622:      4a08            ldr     r2, [pc, #32]   ; (8002644 <HAL_MspInit+0x44>)
- 8002624:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
- 8002628:      6453            str     r3, [r2, #68]   ; 0x44
- 800262a:      4b06            ldr     r3, [pc, #24]   ; (8002644 <HAL_MspInit+0x44>)
- 800262c:      6c5b            ldr     r3, [r3, #68]   ; 0x44
- 800262e:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
- 8002632:      603b            str     r3, [r7, #0]
- 8002634:      683b            ldr     r3, [r7, #0]
+ 800c592:      4b09            ldr     r3, [pc, #36]   ; (800c5b8 <HAL_MspInit+0x44>)
+ 800c594:      6c5b            ldr     r3, [r3, #68]   ; 0x44
+ 800c596:      4a08            ldr     r2, [pc, #32]   ; (800c5b8 <HAL_MspInit+0x44>)
+ 800c598:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
+ 800c59c:      6453            str     r3, [r2, #68]   ; 0x44
+ 800c59e:      4b06            ldr     r3, [pc, #24]   ; (800c5b8 <HAL_MspInit+0x44>)
+ 800c5a0:      6c5b            ldr     r3, [r3, #68]   ; 0x44
+ 800c5a2:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
+ 800c5a6:      603b            str     r3, [r7, #0]
+ 800c5a8:      683b            ldr     r3, [r7, #0]
   /* System interrupt init*/
 
   /* USER CODE BEGIN MspInit 1 */
 
   /* USER CODE END MspInit 1 */
 }
- 8002636:      bf00            nop
- 8002638:      370c            adds    r7, #12
- 800263a:      46bd            mov     sp, r7
- 800263c:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002640:      4770            bx      lr
- 8002642:      bf00            nop
- 8002644:      40023800        .word   0x40023800
-
-08002648 <HAL_UART_MspInit>:
+ 800c5aa:      bf00            nop
+ 800c5ac:      370c            adds    r7, #12
+ 800c5ae:      46bd            mov     sp, r7
+ 800c5b0:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c5b4:      4770            bx      lr
+ 800c5b6:      bf00            nop
+ 800c5b8:      40023800        .word   0x40023800
+
+0800c5bc <HAL_TIM_OnePulse_MspInit>:
+* This function configures the hardware resources used in this example
+* @param htim_onepulse: TIM_OnePulse handle pointer
+* @retval None
+*/
+void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef* htim_onepulse)
+{
+ 800c5bc:      b480            push    {r7}
+ 800c5be:      b085            sub     sp, #20
+ 800c5c0:      af00            add     r7, sp, #0
+ 800c5c2:      6078            str     r0, [r7, #4]
+  if(htim_onepulse->Instance==TIM2)
+ 800c5c4:      687b            ldr     r3, [r7, #4]
+ 800c5c6:      681b            ldr     r3, [r3, #0]
+ 800c5c8:      f1b3 4f80       cmp.w   r3, #1073741824 ; 0x40000000
+ 800c5cc:      d10b            bne.n   800c5e6 <HAL_TIM_OnePulse_MspInit+0x2a>
+  {
+  /* USER CODE BEGIN TIM2_MspInit 0 */
+
+  /* USER CODE END TIM2_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_TIM2_CLK_ENABLE();
+ 800c5ce:      4b09            ldr     r3, [pc, #36]   ; (800c5f4 <HAL_TIM_OnePulse_MspInit+0x38>)
+ 800c5d0:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800c5d2:      4a08            ldr     r2, [pc, #32]   ; (800c5f4 <HAL_TIM_OnePulse_MspInit+0x38>)
+ 800c5d4:      f043 0301       orr.w   r3, r3, #1
+ 800c5d8:      6413            str     r3, [r2, #64]   ; 0x40
+ 800c5da:      4b06            ldr     r3, [pc, #24]   ; (800c5f4 <HAL_TIM_OnePulse_MspInit+0x38>)
+ 800c5dc:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800c5de:      f003 0301       and.w   r3, r3, #1
+ 800c5e2:      60fb            str     r3, [r7, #12]
+ 800c5e4:      68fb            ldr     r3, [r7, #12]
+  /* USER CODE BEGIN TIM2_MspInit 1 */
+
+  /* USER CODE END TIM2_MspInit 1 */
+  }
+
+}
+ 800c5e6:      bf00            nop
+ 800c5e8:      3714            adds    r7, #20
+ 800c5ea:      46bd            mov     sp, r7
+ 800c5ec:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c5f0:      4770            bx      lr
+ 800c5f2:      bf00            nop
+ 800c5f4:      40023800        .word   0x40023800
+
+0800c5f8 <HAL_UART_MspInit>:
 * This function configures the hardware resources used in this example
 * @param huart: UART handle pointer
 * @retval None
 */
 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
 {
- 8002648:      b580            push    {r7, lr}
- 800264a:      b08a            sub     sp, #40 ; 0x28
- 800264c:      af00            add     r7, sp, #0
- 800264e:      6078            str     r0, [r7, #4]
+ 800c5f8:      b580            push    {r7, lr}
+ 800c5fa:      b08a            sub     sp, #40 ; 0x28
+ 800c5fc:      af00            add     r7, sp, #0
+ 800c5fe:      6078            str     r0, [r7, #4]
   GPIO_InitTypeDef GPIO_InitStruct = {0};
- 8002650:      f107 0314       add.w   r3, r7, #20
- 8002654:      2200            movs    r2, #0
- 8002656:      601a            str     r2, [r3, #0]
- 8002658:      605a            str     r2, [r3, #4]
- 800265a:      609a            str     r2, [r3, #8]
- 800265c:      60da            str     r2, [r3, #12]
- 800265e:      611a            str     r2, [r3, #16]
+ 800c600:      f107 0314       add.w   r3, r7, #20
+ 800c604:      2200            movs    r2, #0
+ 800c606:      601a            str     r2, [r3, #0]
+ 800c608:      605a            str     r2, [r3, #4]
+ 800c60a:      609a            str     r2, [r3, #8]
+ 800c60c:      60da            str     r2, [r3, #12]
+ 800c60e:      611a            str     r2, [r3, #16]
   if(huart->Instance==USART3)
- 8002660:      687b            ldr     r3, [r7, #4]
- 8002662:      681b            ldr     r3, [r3, #0]
- 8002664:      4a17            ldr     r2, [pc, #92]   ; (80026c4 <HAL_UART_MspInit+0x7c>)
- 8002666:      4293            cmp     r3, r2
- 8002668:      d128            bne.n   80026bc <HAL_UART_MspInit+0x74>
+ 800c610:      687b            ldr     r3, [r7, #4]
+ 800c612:      681b            ldr     r3, [r3, #0]
+ 800c614:      4a17            ldr     r2, [pc, #92]   ; (800c674 <HAL_UART_MspInit+0x7c>)
+ 800c616:      4293            cmp     r3, r2
+ 800c618:      d128            bne.n   800c66c <HAL_UART_MspInit+0x74>
   {
   /* USER CODE BEGIN USART3_MspInit 0 */
 
   /* USER CODE END USART3_MspInit 0 */
     /* Peripheral clock enable */
     __HAL_RCC_USART3_CLK_ENABLE();
- 800266a:      4b17            ldr     r3, [pc, #92]   ; (80026c8 <HAL_UART_MspInit+0x80>)
- 800266c:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 800266e:      4a16            ldr     r2, [pc, #88]   ; (80026c8 <HAL_UART_MspInit+0x80>)
- 8002670:      f443 2380       orr.w   r3, r3, #262144 ; 0x40000
- 8002674:      6413            str     r3, [r2, #64]   ; 0x40
- 8002676:      4b14            ldr     r3, [pc, #80]   ; (80026c8 <HAL_UART_MspInit+0x80>)
- 8002678:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 800267a:      f403 2380       and.w   r3, r3, #262144 ; 0x40000
- 800267e:      613b            str     r3, [r7, #16]
- 8002680:      693b            ldr     r3, [r7, #16]
+ 800c61a:      4b17            ldr     r3, [pc, #92]   ; (800c678 <HAL_UART_MspInit+0x80>)
+ 800c61c:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800c61e:      4a16            ldr     r2, [pc, #88]   ; (800c678 <HAL_UART_MspInit+0x80>)
+ 800c620:      f443 2380       orr.w   r3, r3, #262144 ; 0x40000
+ 800c624:      6413            str     r3, [r2, #64]   ; 0x40
+ 800c626:      4b14            ldr     r3, [pc, #80]   ; (800c678 <HAL_UART_MspInit+0x80>)
+ 800c628:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800c62a:      f403 2380       and.w   r3, r3, #262144 ; 0x40000
+ 800c62e:      613b            str     r3, [r7, #16]
+ 800c630:      693b            ldr     r3, [r7, #16]
   
     __HAL_RCC_GPIOD_CLK_ENABLE();
- 8002682:      4b11            ldr     r3, [pc, #68]   ; (80026c8 <HAL_UART_MspInit+0x80>)
- 8002684:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8002686:      4a10            ldr     r2, [pc, #64]   ; (80026c8 <HAL_UART_MspInit+0x80>)
- 8002688:      f043 0308       orr.w   r3, r3, #8
- 800268c:      6313            str     r3, [r2, #48]   ; 0x30
- 800268e:      4b0e            ldr     r3, [pc, #56]   ; (80026c8 <HAL_UART_MspInit+0x80>)
- 8002690:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8002692:      f003 0308       and.w   r3, r3, #8
- 8002696:      60fb            str     r3, [r7, #12]
- 8002698:      68fb            ldr     r3, [r7, #12]
+ 800c632:      4b11            ldr     r3, [pc, #68]   ; (800c678 <HAL_UART_MspInit+0x80>)
+ 800c634:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800c636:      4a10            ldr     r2, [pc, #64]   ; (800c678 <HAL_UART_MspInit+0x80>)
+ 800c638:      f043 0308       orr.w   r3, r3, #8
+ 800c63c:      6313            str     r3, [r2, #48]   ; 0x30
+ 800c63e:      4b0e            ldr     r3, [pc, #56]   ; (800c678 <HAL_UART_MspInit+0x80>)
+ 800c640:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800c642:      f003 0308       and.w   r3, r3, #8
+ 800c646:      60fb            str     r3, [r7, #12]
+ 800c648:      68fb            ldr     r3, [r7, #12]
     /**USART3 GPIO Configuration    
     PD8     ------> USART3_TX
     PD9     ------> USART3_RX 
     */
     GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
- 800269a:      f44f 7340       mov.w   r3, #768        ; 0x300
- 800269e:      617b            str     r3, [r7, #20]
+ 800c64a:      f44f 7340       mov.w   r3, #768        ; 0x300
+ 800c64e:      617b            str     r3, [r7, #20]
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- 80026a0:      2302            movs    r3, #2
- 80026a2:      61bb            str     r3, [r7, #24]
+ 800c650:      2302            movs    r3, #2
+ 800c652:      61bb            str     r3, [r7, #24]
     GPIO_InitStruct.Pull = GPIO_NOPULL;
- 80026a4:      2300            movs    r3, #0
- 80026a6:      61fb            str     r3, [r7, #28]
+ 800c654:      2300            movs    r3, #0
+ 800c656:      61fb            str     r3, [r7, #28]
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- 80026a8:      2303            movs    r3, #3
- 80026aa:      623b            str     r3, [r7, #32]
+ 800c658:      2303            movs    r3, #3
+ 800c65a:      623b            str     r3, [r7, #32]
     GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
- 80026ac:      2307            movs    r3, #7
- 80026ae:      627b            str     r3, [r7, #36]   ; 0x24
+ 800c65c:      2307            movs    r3, #7
+ 800c65e:      627b            str     r3, [r7, #36]   ; 0x24
     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
- 80026b0:      f107 0314       add.w   r3, r7, #20
- 80026b4:      4619            mov     r1, r3
- 80026b6:      4805            ldr     r0, [pc, #20]   ; (80026cc <HAL_UART_MspInit+0x84>)
- 80026b8:      f7fe f882       bl      80007c0 <HAL_GPIO_Init>
+ 800c660:      f107 0314       add.w   r3, r7, #20
+ 800c664:      4619            mov     r1, r3
+ 800c666:      4805            ldr     r0, [pc, #20]   ; (800c67c <HAL_UART_MspInit+0x84>)
+ 800c668:      f7fb feb6       bl      80083d8 <HAL_GPIO_Init>
   /* USER CODE BEGIN USART3_MspInit 1 */
 
   /* USER CODE END USART3_MspInit 1 */
   }
 
 }
- 80026bc:      bf00            nop
- 80026be:      3728            adds    r7, #40 ; 0x28
- 80026c0:      46bd            mov     sp, r7
- 80026c2:      bd80            pop     {r7, pc}
- 80026c4:      40004800        .word   0x40004800
- 80026c8:      40023800        .word   0x40023800
- 80026cc:      40020c00        .word   0x40020c00
-
-080026d0 <NMI_Handler>:
+ 800c66c:      bf00            nop
+ 800c66e:      3728            adds    r7, #40 ; 0x28
+ 800c670:      46bd            mov     sp, r7
+ 800c672:      bd80            pop     {r7, pc}
+ 800c674:      40004800        .word   0x40004800
+ 800c678:      40023800        .word   0x40023800
+ 800c67c:      40020c00        .word   0x40020c00
+
+0800c680 <NMI_Handler>:
 /******************************************************************************/
 /**
   * @brief This function handles Non maskable interrupt.
   */
 void NMI_Handler(void)
 {
- 80026d0:      b480            push    {r7}
- 80026d2:      af00            add     r7, sp, #0
+ 800c680:      b480            push    {r7}
+ 800c682:      af00            add     r7, sp, #0
 
   /* USER CODE END NonMaskableInt_IRQn 0 */
   /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
 
   /* USER CODE END NonMaskableInt_IRQn 1 */
 }
- 80026d4:      bf00            nop
- 80026d6:      46bd            mov     sp, r7
- 80026d8:      f85d 7b04       ldr.w   r7, [sp], #4
- 80026dc:      4770            bx      lr
+ 800c684:      bf00            nop
+ 800c686:      46bd            mov     sp, r7
+ 800c688:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c68c:      4770            bx      lr
 
-080026de <HardFault_Handler>:
+0800c68e <HardFault_Handler>:
 
 /**
   * @brief This function handles Hard fault interrupt.
   */
 void HardFault_Handler(void)
 {
- 80026de:      b480            push    {r7}
- 80026e0:      af00            add     r7, sp, #0
+ 800c68e:      b480            push    {r7}
+ 800c690:      af00            add     r7, sp, #0
   /* USER CODE BEGIN HardFault_IRQn 0 */
 
   /* USER CODE END HardFault_IRQn 0 */
   while (1)
- 80026e2:      e7fe            b.n     80026e2 <HardFault_Handler+0x4>
+ 800c692:      e7fe            b.n     800c692 <HardFault_Handler+0x4>
 
-080026e4 <MemManage_Handler>:
+0800c694 <MemManage_Handler>:
 
 /**
   * @brief This function handles Memory management fault.
   */
 void MemManage_Handler(void)
 {
- 80026e4:      b480            push    {r7}
- 80026e6:      af00            add     r7, sp, #0
+ 800c694:      b480            push    {r7}
+ 800c696:      af00            add     r7, sp, #0
   /* USER CODE BEGIN MemoryManagement_IRQn 0 */
 
   /* USER CODE END MemoryManagement_IRQn 0 */
   while (1)
- 80026e8:      e7fe            b.n     80026e8 <MemManage_Handler+0x4>
+ 800c698:      e7fe            b.n     800c698 <MemManage_Handler+0x4>
 
-080026ea <BusFault_Handler>:
+0800c69a <BusFault_Handler>:
 
 /**
   * @brief This function handles Pre-fetch fault, memory access fault.
   */
 void BusFault_Handler(void)
 {
- 80026ea:      b480            push    {r7}
- 80026ec:      af00            add     r7, sp, #0
+ 800c69a:      b480            push    {r7}
+ 800c69c:      af00            add     r7, sp, #0
   /* USER CODE BEGIN BusFault_IRQn 0 */
 
   /* USER CODE END BusFault_IRQn 0 */
   while (1)
- 80026ee:      e7fe            b.n     80026ee <BusFault_Handler+0x4>
+ 800c69e:      e7fe            b.n     800c69e <BusFault_Handler+0x4>
 
-080026f0 <UsageFault_Handler>:
+0800c6a0 <UsageFault_Handler>:
 
 /**
   * @brief This function handles Undefined instruction or illegal state.
   */
 void UsageFault_Handler(void)
 {
- 80026f0:      b480            push    {r7}
- 80026f2:      af00            add     r7, sp, #0
+ 800c6a0:      b480            push    {r7}
+ 800c6a2:      af00            add     r7, sp, #0
   /* USER CODE BEGIN UsageFault_IRQn 0 */
 
   /* USER CODE END UsageFault_IRQn 0 */
   while (1)
- 80026f4:      e7fe            b.n     80026f4 <UsageFault_Handler+0x4>
+ 800c6a4:      e7fe            b.n     800c6a4 <UsageFault_Handler+0x4>
 
-080026f6 <SVC_Handler>:
+0800c6a6 <SVC_Handler>:
 
 /**
   * @brief This function handles System service call via SWI instruction.
   */
 void SVC_Handler(void)
 {
- 80026f6:      b480            push    {r7}
- 80026f8:      af00            add     r7, sp, #0
+ 800c6a6:      b480            push    {r7}
+ 800c6a8:      af00            add     r7, sp, #0
 
   /* USER CODE END SVCall_IRQn 0 */
   /* USER CODE BEGIN SVCall_IRQn 1 */
 
   /* USER CODE END SVCall_IRQn 1 */
 }
- 80026fa:      bf00            nop
- 80026fc:      46bd            mov     sp, r7
- 80026fe:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002702:      4770            bx      lr
+ 800c6aa:      bf00            nop
+ 800c6ac:      46bd            mov     sp, r7
+ 800c6ae:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c6b2:      4770            bx      lr
 
-08002704 <DebugMon_Handler>:
+0800c6b4 <DebugMon_Handler>:
 
 /**
   * @brief This function handles Debug monitor.
   */
 void DebugMon_Handler(void)
 {
- 8002704:      b480            push    {r7}
- 8002706:      af00            add     r7, sp, #0
+ 800c6b4:      b480            push    {r7}
+ 800c6b6:      af00            add     r7, sp, #0
 
   /* USER CODE END DebugMonitor_IRQn 0 */
   /* USER CODE BEGIN DebugMonitor_IRQn 1 */
 
   /* USER CODE END DebugMonitor_IRQn 1 */
 }
- 8002708:      bf00            nop
- 800270a:      46bd            mov     sp, r7
- 800270c:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002710:      4770            bx      lr
+ 800c6b8:      bf00            nop
+ 800c6ba:      46bd            mov     sp, r7
+ 800c6bc:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c6c0:      4770            bx      lr
 
-08002712 <PendSV_Handler>:
+0800c6c2 <PendSV_Handler>:
 
 /**
   * @brief This function handles Pendable request for system service.
   */
 void PendSV_Handler(void)
 {
- 8002712:      b480            push    {r7}
- 8002714:      af00            add     r7, sp, #0
+ 800c6c2:      b480            push    {r7}
+ 800c6c4:      af00            add     r7, sp, #0
 
   /* USER CODE END PendSV_IRQn 0 */
   /* USER CODE BEGIN PendSV_IRQn 1 */
 
   /* USER CODE END PendSV_IRQn 1 */
 }
- 8002716:      bf00            nop
- 8002718:      46bd            mov     sp, r7
- 800271a:      f85d 7b04       ldr.w   r7, [sp], #4
- 800271e:      4770            bx      lr
+ 800c6c6:      bf00            nop
+ 800c6c8:      46bd            mov     sp, r7
+ 800c6ca:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c6ce:      4770            bx      lr
 
-08002720 <SysTick_Handler>:
+0800c6d0 <SysTick_Handler>:
 
 /**
   * @brief This function handles System tick timer.
   */
 void SysTick_Handler(void)
 {
- 8002720:      b580            push    {r7, lr}
- 8002722:      af00            add     r7, sp, #0
+ 800c6d0:      b580            push    {r7, lr}
+ 800c6d2:      af00            add     r7, sp, #0
   /* USER CODE BEGIN SysTick_IRQn 0 */
 
   /* USER CODE END SysTick_IRQn 0 */
   HAL_IncTick();
- 8002724:      f7fd ff46       bl      80005b4 <HAL_IncTick>
+ 800c6d4:      f7fb fcca       bl      800806c <HAL_IncTick>
   /* USER CODE BEGIN SysTick_IRQn 1 */
 
   /* USER CODE END SysTick_IRQn 1 */
 }
- 8002728:      bf00            nop
- 800272a:      bd80            pop     {r7, pc}
+ 800c6d8:      bf00            nop
+ 800c6da:      bd80            pop     {r7, pc}
+
+0800c6dc <_getpid>:
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ 800c6dc:      b480            push    {r7}
+ 800c6de:      af00            add     r7, sp, #0
+       return 1;
+ 800c6e0:      2301            movs    r3, #1
+}
+ 800c6e2:      4618            mov     r0, r3
+ 800c6e4:      46bd            mov     sp, r7
+ 800c6e6:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c6ea:      4770            bx      lr
+
+0800c6ec <_kill>:
+
+int _kill(int pid, int sig)
+{
+ 800c6ec:      b580            push    {r7, lr}
+ 800c6ee:      b082            sub     sp, #8
+ 800c6f0:      af00            add     r7, sp, #0
+ 800c6f2:      6078            str     r0, [r7, #4]
+ 800c6f4:      6039            str     r1, [r7, #0]
+       errno = EINVAL;
+ 800c6f6:      f001 f9a7       bl      800da48 <__errno>
+ 800c6fa:      4602            mov     r2, r0
+ 800c6fc:      2316            movs    r3, #22
+ 800c6fe:      6013            str     r3, [r2, #0]
+       return -1;
+ 800c700:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+}
+ 800c704:      4618            mov     r0, r3
+ 800c706:      3708            adds    r7, #8
+ 800c708:      46bd            mov     sp, r7
+ 800c70a:      bd80            pop     {r7, pc}
+
+0800c70c <_exit>:
+
+void _exit (int status)
+{
+ 800c70c:      b580            push    {r7, lr}
+ 800c70e:      b082            sub     sp, #8
+ 800c710:      af00            add     r7, sp, #0
+ 800c712:      6078            str     r0, [r7, #4]
+       _kill(status, -1);
+ 800c714:      f04f 31ff       mov.w   r1, #4294967295 ; 0xffffffff
+ 800c718:      6878            ldr     r0, [r7, #4]
+ 800c71a:      f7ff ffe7       bl      800c6ec <_kill>
+       while (1) {}            /* Make sure we hang here */
+ 800c71e:      e7fe            b.n     800c71e <_exit+0x12>
+
+0800c720 <_read>:
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ 800c720:      b580            push    {r7, lr}
+ 800c722:      b086            sub     sp, #24
+ 800c724:      af00            add     r7, sp, #0
+ 800c726:      60f8            str     r0, [r7, #12]
+ 800c728:      60b9            str     r1, [r7, #8]
+ 800c72a:      607a            str     r2, [r7, #4]
+       int DataIdx;
+
+       for (DataIdx = 0; DataIdx < len; DataIdx++)
+ 800c72c:      2300            movs    r3, #0
+ 800c72e:      617b            str     r3, [r7, #20]
+ 800c730:      e00a            b.n     800c748 <_read+0x28>
+       {
+               *ptr++ = __io_getchar();
+ 800c732:      f3af 8000       nop.w
+ 800c736:      4601            mov     r1, r0
+ 800c738:      68bb            ldr     r3, [r7, #8]
+ 800c73a:      1c5a            adds    r2, r3, #1
+ 800c73c:      60ba            str     r2, [r7, #8]
+ 800c73e:      b2ca            uxtb    r2, r1
+ 800c740:      701a            strb    r2, [r3, #0]
+       for (DataIdx = 0; DataIdx < len; DataIdx++)
+ 800c742:      697b            ldr     r3, [r7, #20]
+ 800c744:      3301            adds    r3, #1
+ 800c746:      617b            str     r3, [r7, #20]
+ 800c748:      697a            ldr     r2, [r7, #20]
+ 800c74a:      687b            ldr     r3, [r7, #4]
+ 800c74c:      429a            cmp     r2, r3
+ 800c74e:      dbf0            blt.n   800c732 <_read+0x12>
+       }
+
+return len;
+ 800c750:      687b            ldr     r3, [r7, #4]
+}
+ 800c752:      4618            mov     r0, r3
+ 800c754:      3718            adds    r7, #24
+ 800c756:      46bd            mov     sp, r7
+ 800c758:      bd80            pop     {r7, pc}
+
+0800c75a <_write>:
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ 800c75a:      b580            push    {r7, lr}
+ 800c75c:      b086            sub     sp, #24
+ 800c75e:      af00            add     r7, sp, #0
+ 800c760:      60f8            str     r0, [r7, #12]
+ 800c762:      60b9            str     r1, [r7, #8]
+ 800c764:      607a            str     r2, [r7, #4]
+       int DataIdx;
+
+       for (DataIdx = 0; DataIdx < len; DataIdx++)
+ 800c766:      2300            movs    r3, #0
+ 800c768:      617b            str     r3, [r7, #20]
+ 800c76a:      e009            b.n     800c780 <_write+0x26>
+       {
+               __io_putchar(*ptr++);
+ 800c76c:      68bb            ldr     r3, [r7, #8]
+ 800c76e:      1c5a            adds    r2, r3, #1
+ 800c770:      60ba            str     r2, [r7, #8]
+ 800c772:      781b            ldrb    r3, [r3, #0]
+ 800c774:      4618            mov     r0, r3
+ 800c776:      f3af 8000       nop.w
+       for (DataIdx = 0; DataIdx < len; DataIdx++)
+ 800c77a:      697b            ldr     r3, [r7, #20]
+ 800c77c:      3301            adds    r3, #1
+ 800c77e:      617b            str     r3, [r7, #20]
+ 800c780:      697a            ldr     r2, [r7, #20]
+ 800c782:      687b            ldr     r3, [r7, #4]
+ 800c784:      429a            cmp     r2, r3
+ 800c786:      dbf1            blt.n   800c76c <_write+0x12>
+       }
+       return len;
+ 800c788:      687b            ldr     r3, [r7, #4]
+}
+ 800c78a:      4618            mov     r0, r3
+ 800c78c:      3718            adds    r7, #24
+ 800c78e:      46bd            mov     sp, r7
+ 800c790:      bd80            pop     {r7, pc}
+
+0800c792 <_close>:
+
+int _close(int file)
+{
+ 800c792:      b480            push    {r7}
+ 800c794:      b083            sub     sp, #12
+ 800c796:      af00            add     r7, sp, #0
+ 800c798:      6078            str     r0, [r7, #4]
+       return -1;
+ 800c79a:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+}
+ 800c79e:      4618            mov     r0, r3
+ 800c7a0:      370c            adds    r7, #12
+ 800c7a2:      46bd            mov     sp, r7
+ 800c7a4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c7a8:      4770            bx      lr
+
+0800c7aa <_fstat>:
+
+
+int _fstat(int file, struct stat *st)
+{
+ 800c7aa:      b480            push    {r7}
+ 800c7ac:      b083            sub     sp, #12
+ 800c7ae:      af00            add     r7, sp, #0
+ 800c7b0:      6078            str     r0, [r7, #4]
+ 800c7b2:      6039            str     r1, [r7, #0]
+       st->st_mode = S_IFCHR;
+ 800c7b4:      683b            ldr     r3, [r7, #0]
+ 800c7b6:      f44f 5200       mov.w   r2, #8192       ; 0x2000
+ 800c7ba:      605a            str     r2, [r3, #4]
+       return 0;
+ 800c7bc:      2300            movs    r3, #0
+}
+ 800c7be:      4618            mov     r0, r3
+ 800c7c0:      370c            adds    r7, #12
+ 800c7c2:      46bd            mov     sp, r7
+ 800c7c4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c7c8:      4770            bx      lr
+
+0800c7ca <_isatty>:
+
+int _isatty(int file)
+{
+ 800c7ca:      b480            push    {r7}
+ 800c7cc:      b083            sub     sp, #12
+ 800c7ce:      af00            add     r7, sp, #0
+ 800c7d0:      6078            str     r0, [r7, #4]
+       return 1;
+ 800c7d2:      2301            movs    r3, #1
+}
+ 800c7d4:      4618            mov     r0, r3
+ 800c7d6:      370c            adds    r7, #12
+ 800c7d8:      46bd            mov     sp, r7
+ 800c7da:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c7de:      4770            bx      lr
+
+0800c7e0 <_lseek>:
+
+int _lseek(int file, int ptr, int dir)
+{
+ 800c7e0:      b480            push    {r7}
+ 800c7e2:      b085            sub     sp, #20
+ 800c7e4:      af00            add     r7, sp, #0
+ 800c7e6:      60f8            str     r0, [r7, #12]
+ 800c7e8:      60b9            str     r1, [r7, #8]
+ 800c7ea:      607a            str     r2, [r7, #4]
+       return 0;
+ 800c7ec:      2300            movs    r3, #0
+}
+ 800c7ee:      4618            mov     r0, r3
+ 800c7f0:      3714            adds    r7, #20
+ 800c7f2:      46bd            mov     sp, r7
+ 800c7f4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c7f8:      4770            bx      lr
+       ...
+
+0800c7fc <_sbrk>:
+/**
+ _sbrk
+ Increase program data space. Malloc and related functions depend on this
+**/
+caddr_t _sbrk(int incr)
+{
+ 800c7fc:      b580            push    {r7, lr}
+ 800c7fe:      b084            sub     sp, #16
+ 800c800:      af00            add     r7, sp, #0
+ 800c802:      6078            str     r0, [r7, #4]
+       extern char end asm("end");
+       static char *heap_end;
+       char *prev_heap_end;
+
+       if (heap_end == 0)
+ 800c804:      4b11            ldr     r3, [pc, #68]   ; (800c84c <_sbrk+0x50>)
+ 800c806:      681b            ldr     r3, [r3, #0]
+ 800c808:      2b00            cmp     r3, #0
+ 800c80a:      d102            bne.n   800c812 <_sbrk+0x16>
+               heap_end = &end;
+ 800c80c:      4b0f            ldr     r3, [pc, #60]   ; (800c84c <_sbrk+0x50>)
+ 800c80e:      4a10            ldr     r2, [pc, #64]   ; (800c850 <_sbrk+0x54>)
+ 800c810:      601a            str     r2, [r3, #0]
+
+       prev_heap_end = heap_end;
+ 800c812:      4b0e            ldr     r3, [pc, #56]   ; (800c84c <_sbrk+0x50>)
+ 800c814:      681b            ldr     r3, [r3, #0]
+ 800c816:      60fb            str     r3, [r7, #12]
+       if (heap_end + incr > stack_ptr)
+ 800c818:      4b0c            ldr     r3, [pc, #48]   ; (800c84c <_sbrk+0x50>)
+ 800c81a:      681a            ldr     r2, [r3, #0]
+ 800c81c:      687b            ldr     r3, [r7, #4]
+ 800c81e:      4413            add     r3, r2
+ 800c820:      466a            mov     r2, sp
+ 800c822:      4293            cmp     r3, r2
+ 800c824:      d907            bls.n   800c836 <_sbrk+0x3a>
+       {
+               errno = ENOMEM;
+ 800c826:      f001 f90f       bl      800da48 <__errno>
+ 800c82a:      4602            mov     r2, r0
+ 800c82c:      230c            movs    r3, #12
+ 800c82e:      6013            str     r3, [r2, #0]
+               return (caddr_t) -1;
+ 800c830:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 800c834:      e006            b.n     800c844 <_sbrk+0x48>
+       }
 
-0800272c <SystemInit>:
+       heap_end += incr;
+ 800c836:      4b05            ldr     r3, [pc, #20]   ; (800c84c <_sbrk+0x50>)
+ 800c838:      681a            ldr     r2, [r3, #0]
+ 800c83a:      687b            ldr     r3, [r7, #4]
+ 800c83c:      4413            add     r3, r2
+ 800c83e:      4a03            ldr     r2, [pc, #12]   ; (800c84c <_sbrk+0x50>)
+ 800c840:      6013            str     r3, [r2, #0]
+
+       return (caddr_t) prev_heap_end;
+ 800c842:      68fb            ldr     r3, [r7, #12]
+}
+ 800c844:      4618            mov     r0, r3
+ 800c846:      3710            adds    r7, #16
+ 800c848:      46bd            mov     sp, r7
+ 800c84a:      bd80            pop     {r7, pc}
+ 800c84c:      20000aa0        .word   0x20000aa0
+ 800c850:      20000b10        .word   0x20000b10
+
+0800c854 <SystemInit>:
   *         SystemFrequency variable.
   * @param  None
   * @retval None
   */
 void SystemInit(void)
 {
- 800272c:      b480            push    {r7}
- 800272e:      af00            add     r7, sp, #0
+ 800c854:      b480            push    {r7}
+ 800c856:      af00            add     r7, sp, #0
   /* FPU settings ------------------------------------------------------------*/
   #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
     SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
- 8002730:      4b15            ldr     r3, [pc, #84]   ; (8002788 <SystemInit+0x5c>)
- 8002732:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 8002736:      4a14            ldr     r2, [pc, #80]   ; (8002788 <SystemInit+0x5c>)
- 8002738:      f443 0370       orr.w   r3, r3, #15728640       ; 0xf00000
- 800273c:      f8c2 3088       str.w   r3, [r2, #136]  ; 0x88
+ 800c858:      4b15            ldr     r3, [pc, #84]   ; (800c8b0 <SystemInit+0x5c>)
+ 800c85a:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 800c85e:      4a14            ldr     r2, [pc, #80]   ; (800c8b0 <SystemInit+0x5c>)
+ 800c860:      f443 0370       orr.w   r3, r3, #15728640       ; 0xf00000
+ 800c864:      f8c2 3088       str.w   r3, [r2, #136]  ; 0x88
   #endif
   /* Reset the RCC clock configuration to the default reset state ------------*/
   /* Set HSION bit */
   RCC->CR |= (uint32_t)0x00000001;
- 8002740:      4b12            ldr     r3, [pc, #72]   ; (800278c <SystemInit+0x60>)
- 8002742:      681b            ldr     r3, [r3, #0]
- 8002744:      4a11            ldr     r2, [pc, #68]   ; (800278c <SystemInit+0x60>)
- 8002746:      f043 0301       orr.w   r3, r3, #1
- 800274a:      6013            str     r3, [r2, #0]
+ 800c868:      4b12            ldr     r3, [pc, #72]   ; (800c8b4 <SystemInit+0x60>)
+ 800c86a:      681b            ldr     r3, [r3, #0]
+ 800c86c:      4a11            ldr     r2, [pc, #68]   ; (800c8b4 <SystemInit+0x60>)
+ 800c86e:      f043 0301       orr.w   r3, r3, #1
+ 800c872:      6013            str     r3, [r2, #0]
 
   /* Reset CFGR register */
   RCC->CFGR = 0x00000000;
- 800274c:      4b0f            ldr     r3, [pc, #60]   ; (800278c <SystemInit+0x60>)
- 800274e:      2200            movs    r2, #0
- 8002750:      609a            str     r2, [r3, #8]
+ 800c874:      4b0f            ldr     r3, [pc, #60]   ; (800c8b4 <SystemInit+0x60>)
+ 800c876:      2200            movs    r2, #0
+ 800c878:      609a            str     r2, [r3, #8]
 
   /* Reset HSEON, CSSON and PLLON bits */
   RCC->CR &= (uint32_t)0xFEF6FFFF;
- 8002752:      4b0e            ldr     r3, [pc, #56]   ; (800278c <SystemInit+0x60>)
- 8002754:      681a            ldr     r2, [r3, #0]
- 8002756:      490d            ldr     r1, [pc, #52]   ; (800278c <SystemInit+0x60>)
- 8002758:      4b0d            ldr     r3, [pc, #52]   ; (8002790 <SystemInit+0x64>)
- 800275a:      4013            ands    r3, r2
- 800275c:      600b            str     r3, [r1, #0]
+ 800c87a:      4b0e            ldr     r3, [pc, #56]   ; (800c8b4 <SystemInit+0x60>)
+ 800c87c:      681a            ldr     r2, [r3, #0]
+ 800c87e:      490d            ldr     r1, [pc, #52]   ; (800c8b4 <SystemInit+0x60>)
+ 800c880:      4b0d            ldr     r3, [pc, #52]   ; (800c8b8 <SystemInit+0x64>)
+ 800c882:      4013            ands    r3, r2
+ 800c884:      600b            str     r3, [r1, #0]
 
   /* Reset PLLCFGR register */
   RCC->PLLCFGR = 0x24003010;
- 800275e:      4b0b            ldr     r3, [pc, #44]   ; (800278c <SystemInit+0x60>)
- 8002760:      4a0c            ldr     r2, [pc, #48]   ; (8002794 <SystemInit+0x68>)
- 8002762:      605a            str     r2, [r3, #4]
+ 800c886:      4b0b            ldr     r3, [pc, #44]   ; (800c8b4 <SystemInit+0x60>)
+ 800c888:      4a0c            ldr     r2, [pc, #48]   ; (800c8bc <SystemInit+0x68>)
+ 800c88a:      605a            str     r2, [r3, #4]
 
   /* Reset HSEBYP bit */
   RCC->CR &= (uint32_t)0xFFFBFFFF;
- 8002764:      4b09            ldr     r3, [pc, #36]   ; (800278c <SystemInit+0x60>)
- 8002766:      681b            ldr     r3, [r3, #0]
- 8002768:      4a08            ldr     r2, [pc, #32]   ; (800278c <SystemInit+0x60>)
- 800276a:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
- 800276e:      6013            str     r3, [r2, #0]
+ 800c88c:      4b09            ldr     r3, [pc, #36]   ; (800c8b4 <SystemInit+0x60>)
+ 800c88e:      681b            ldr     r3, [r3, #0]
+ 800c890:      4a08            ldr     r2, [pc, #32]   ; (800c8b4 <SystemInit+0x60>)
+ 800c892:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
+ 800c896:      6013            str     r3, [r2, #0]
 
   /* Disable all interrupts */
   RCC->CIR = 0x00000000;
- 8002770:      4b06            ldr     r3, [pc, #24]   ; (800278c <SystemInit+0x60>)
- 8002772:      2200            movs    r2, #0
- 8002774:      60da            str     r2, [r3, #12]
+ 800c898:      4b06            ldr     r3, [pc, #24]   ; (800c8b4 <SystemInit+0x60>)
+ 800c89a:      2200            movs    r2, #0
+ 800c89c:      60da            str     r2, [r3, #12]
 
   /* Configure the Vector Table location add offset address ------------------*/
 #ifdef VECT_TAB_SRAM
   SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
 #else
   SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
- 8002776:      4b04            ldr     r3, [pc, #16]   ; (8002788 <SystemInit+0x5c>)
- 8002778:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
- 800277c:      609a            str     r2, [r3, #8]
+ 800c89e:      4b04            ldr     r3, [pc, #16]   ; (800c8b0 <SystemInit+0x5c>)
+ 800c8a0:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
+ 800c8a4:      609a            str     r2, [r3, #8]
 #endif
 }
- 800277e:      bf00            nop
- 8002780:      46bd            mov     sp, r7
- 8002782:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002786:      4770            bx      lr
- 8002788:      e000ed00        .word   0xe000ed00
- 800278c:      40023800        .word   0x40023800
- 8002790:      fef6ffff        .word   0xfef6ffff
- 8002794:      24003010        .word   0x24003010
-
-08002798 <_Z5writei>:
-#include "stm32f7xx_hal.h"
-#include "stm32f7xx_hal_uart.h"
-#include "test.hpp"
-
-int write(int i) {
- 8002798:      b480            push    {r7}
- 800279a:      b083            sub     sp, #12
- 800279c:      af00            add     r7, sp, #0
- 800279e:      6078            str     r0, [r7, #4]
-       i = 5;
- 80027a0:      2305            movs    r3, #5
- 80027a2:      607b            str     r3, [r7, #4]
-       return i;
- 80027a4:      687b            ldr     r3, [r7, #4]
-}
- 80027a6:      4618            mov     r0, r3
- 80027a8:      370c            adds    r7, #12
- 80027aa:      46bd            mov     sp, r7
- 80027ac:      f85d 7b04       ldr.w   r7, [sp], #4
- 80027b0:      4770            bx      lr
-       ...
+ 800c8a6:      bf00            nop
+ 800c8a8:      46bd            mov     sp, r7
+ 800c8aa:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800c8ae:      4770            bx      lr
+ 800c8b0:      e000ed00        .word   0xe000ed00
+ 800c8b4:      40023800        .word   0x40023800
+ 800c8b8:      fef6ffff        .word   0xfef6ffff
+ 800c8bc:      24003010        .word   0x24003010
 
-080027b4 <Reset_Handler>:
+0800c8c0 <Reset_Handler>:
 
     .section  .text.Reset_Handler
   .weak  Reset_Handler
   .type  Reset_Handler, %function
 Reset_Handler:  
   ldr   sp, =_estack      /* set stack pointer */
- 80027b4:      f8df d034       ldr.w   sp, [pc, #52]   ; 80027ec <LoopFillZerobss+0x14>
+ 800c8c0:      f8df d034       ldr.w   sp, [pc, #52]   ; 800c8f8 <LoopFillZerobss+0x14>
 
 /* Copy the data segment initializers from flash to SRAM */  
   movs  r1, #0
- 80027b8:      2100            movs    r1, #0
+ 800c8c4:      2100            movs    r1, #0
   b  LoopCopyDataInit
- 80027ba:      e003            b.n     80027c4 <LoopCopyDataInit>
+ 800c8c6:      e003            b.n     800c8d0 <LoopCopyDataInit>
 
-080027bc <CopyDataInit>:
+0800c8c8 <CopyDataInit>:
 
 CopyDataInit:
   ldr  r3, =_sidata
- 80027bc:      4b0c            ldr     r3, [pc, #48]   ; (80027f0 <LoopFillZerobss+0x18>)
+ 800c8c8:      4b0c            ldr     r3, [pc, #48]   ; (800c8fc <LoopFillZerobss+0x18>)
   ldr  r3, [r3, r1]
- 80027be:      585b            ldr     r3, [r3, r1]
+ 800c8ca:      585b            ldr     r3, [r3, r1]
   str  r3, [r0, r1]
- 80027c0:      5043            str     r3, [r0, r1]
+ 800c8cc:      5043            str     r3, [r0, r1]
   adds  r1, r1, #4
- 80027c2:      3104            adds    r1, #4
+ 800c8ce:      3104            adds    r1, #4
 
-080027c4 <LoopCopyDataInit>:
+0800c8d0 <LoopCopyDataInit>:
     
 LoopCopyDataInit:
   ldr  r0, =_sdata
- 80027c4:      480b            ldr     r0, [pc, #44]   ; (80027f4 <LoopFillZerobss+0x1c>)
+ 800c8d0:      480b            ldr     r0, [pc, #44]   ; (800c900 <LoopFillZerobss+0x1c>)
   ldr  r3, =_edata
- 80027c6:      4b0c            ldr     r3, [pc, #48]   ; (80027f8 <LoopFillZerobss+0x20>)
+ 800c8d2:      4b0c            ldr     r3, [pc, #48]   ; (800c904 <LoopFillZerobss+0x20>)
   adds  r2, r0, r1
- 80027c8:      1842            adds    r2, r0, r1
+ 800c8d4:      1842            adds    r2, r0, r1
   cmp  r2, r3
- 80027ca:      429a            cmp     r2, r3
+ 800c8d6:      429a            cmp     r2, r3
   bcc  CopyDataInit
- 80027cc:      d3f6            bcc.n   80027bc <CopyDataInit>
+ 800c8d8:      d3f6            bcc.n   800c8c8 <CopyDataInit>
   ldr  r2, =_sbss
- 80027ce:      4a0b            ldr     r2, [pc, #44]   ; (80027fc <LoopFillZerobss+0x24>)
+ 800c8da:      4a0b            ldr     r2, [pc, #44]   ; (800c908 <LoopFillZerobss+0x24>)
   b  LoopFillZerobss
- 80027d0:      e002            b.n     80027d8 <LoopFillZerobss>
+ 800c8dc:      e002            b.n     800c8e4 <LoopFillZerobss>
 
-080027d2 <FillZerobss>:
+0800c8de <FillZerobss>:
 /* Zero fill the bss segment. */  
 FillZerobss:
   movs  r3, #0
- 80027d2:      2300            movs    r3, #0
+ 800c8de:      2300            movs    r3, #0
   str  r3, [r2], #4
- 80027d4:      f842 3b04       str.w   r3, [r2], #4
+ 800c8e0:      f842 3b04       str.w   r3, [r2], #4
 
-080027d8 <LoopFillZerobss>:
+0800c8e4 <LoopFillZerobss>:
     
 LoopFillZerobss:
   ldr  r3, = _ebss
- 80027d8:      4b09            ldr     r3, [pc, #36]   ; (8002800 <LoopFillZerobss+0x28>)
+ 800c8e4:      4b09            ldr     r3, [pc, #36]   ; (800c90c <LoopFillZerobss+0x28>)
   cmp  r2, r3
- 80027da:      429a            cmp     r2, r3
+ 800c8e6:      429a            cmp     r2, r3
   bcc  FillZerobss
- 80027dc:      d3f9            bcc.n   80027d2 <FillZerobss>
+ 800c8e8:      d3f9            bcc.n   800c8de <FillZerobss>
 
 /* Call the clock system initialization function.*/
   bl  SystemInit   
- 80027de:      f7ff ffa5       bl      800272c <SystemInit>
+ 800c8ea:      f7ff ffb3       bl      800c854 <SystemInit>
 /* Call static constructors */
     bl __libc_init_array
- 80027e2:      f000 f811       bl      8002808 <__libc_init_array>
+ 800c8ee:      f001 fac5       bl      800de7c <__libc_init_array>
 /* Call the application's entry point.*/
   bl  main
- 80027e6:      f7ff fe06       bl      80023f6 <main>
+ 800c8f2:      f7fe ff75       bl      800b7e0 <main>
   bx  lr    
- 80027ea:      4770            bx      lr
+ 800c8f6:      4770            bx      lr
   ldr   sp, =_estack      /* set stack pointer */
- 80027ec:      20080000        .word   0x20080000
+ 800c8f8:      20080000        .word   0x20080000
   ldr  r3, =_sidata
- 80027f0:      080028a0        .word   0x080028a0
+ 800c8fc:      08013338        .word   0x08013338
   ldr  r0, =_sdata
- 80027f4:      20000000        .word   0x20000000
+ 800c900:      20000000        .word   0x20000000
   ldr  r3, =_edata
- 80027f8:      2000000c        .word   0x2000000c
+ 800c904:      200009c0        .word   0x200009c0
   ldr  r2, =_sbss
- 80027fc:      2000000c        .word   0x2000000c
+ 800c908:      200009c0        .word   0x200009c0
   ldr  r3, = _ebss
- 8002800:      200000ac        .word   0x200000ac
+ 800c90c:      20000b0c        .word   0x20000b0c
 
-08002804 <ADC_IRQHandler>:
+0800c910 <ADC_IRQHandler>:
  * @retval None       
 */
     .section  .text.Default_Handler,"ax",%progbits
 Default_Handler:
 Infinite_Loop:
   b  Infinite_Loop
- 8002804:      e7fe            b.n     8002804 <ADC_IRQHandler>
+ 800c910:      e7fe            b.n     800c910 <ADC_IRQHandler>
+       ...
+
+0800c914 <__cxa_pure_virtual>:
+ 800c914:      b508            push    {r3, lr}
+ 800c916:      221b            movs    r2, #27
+ 800c918:      4902            ldr     r1, [pc, #8]    ; (800c924 <__cxa_pure_virtual+0x10>)
+ 800c91a:      2002            movs    r0, #2
+ 800c91c:      f003 f9be       bl      800fc9c <write>
+ 800c920:      f000 f816       bl      800c950 <_ZSt9terminatev>
+ 800c924:      08012390        .word   0x08012390
+
+0800c928 <_ZN10__cxxabiv111__terminateEPFvvE>:
+ 800c928:      b508            push    {r3, lr}
+ 800c92a:      4780            blx     r0
+ 800c92c:      f001 f884       bl      800da38 <abort>
+ 800c930:      f000 fd7c       bl      800d42c <__cxa_begin_catch>
+ 800c934:      f001 f880       bl      800da38 <abort>
+ 800c938:      460d            mov     r5, r1
+ 800c93a:      4604            mov     r4, r0
+ 800c93c:      f000 fdb6       bl      800d4ac <__cxa_end_catch>
+ 800c940:      3501            adds    r5, #1
+ 800c942:      d001            beq.n   800c948 <_ZN10__cxxabiv111__terminateEPFvvE+0x20>
+ 800c944:      f000 f8c8       bl      800cad8 <__cxa_end_cleanup>
+ 800c948:      4620            mov     r0, r4
+ 800c94a:      f000 f857       bl      800c9fc <__cxa_call_unexpected>
+ 800c94e:      bf00            nop
+
+0800c950 <_ZSt9terminatev>:
+ 800c950:      b508            push    {r3, lr}
+ 800c952:      4b03            ldr     r3, [pc, #12]   ; (800c960 <_ZSt9terminatev+0x10>)
+ 800c954:      6818            ldr     r0, [r3, #0]
+ 800c956:      f3bf 8f5b       dmb     ish
+ 800c95a:      f7ff ffe5       bl      800c928 <_ZN10__cxxabiv111__terminateEPFvvE>
+ 800c95e:      bf00            nop
+ 800c960:      20000010        .word   0x20000010
+
+0800c964 <_ZN10__cxxabiv112__unexpectedEPFvvE>:
+ 800c964:      b508            push    {r3, lr}
+ 800c966:      4780            blx     r0
+ 800c968:      f7ff fff2       bl      800c950 <_ZSt9terminatev>
+
+0800c96c <_ZSt10unexpectedv>:
+ 800c96c:      b508            push    {r3, lr}
+ 800c96e:      4b03            ldr     r3, [pc, #12]   ; (800c97c <_ZSt10unexpectedv+0x10>)
+ 800c970:      6818            ldr     r0, [r3, #0]
+ 800c972:      f3bf 8f5b       dmb     ish
+ 800c976:      f7ff fff5       bl      800c964 <_ZN10__cxxabiv112__unexpectedEPFvvE>
+ 800c97a:      bf00            nop
+ 800c97c:      2000000c        .word   0x2000000c
+
+0800c980 <_ZSt13get_terminatev>:
+ 800c980:      4b02            ldr     r3, [pc, #8]    ; (800c98c <_ZSt13get_terminatev+0xc>)
+ 800c982:      6818            ldr     r0, [r3, #0]
+ 800c984:      f3bf 8f5b       dmb     ish
+ 800c988:      4770            bx      lr
+ 800c98a:      bf00            nop
+ 800c98c:      20000010        .word   0x20000010
+
+0800c990 <_ZSt14get_unexpectedv>:
+ 800c990:      4b02            ldr     r3, [pc, #8]    ; (800c99c <_ZSt14get_unexpectedv+0xc>)
+ 800c992:      6818            ldr     r0, [r3, #0]
+ 800c994:      f3bf 8f5b       dmb     ish
+ 800c998:      4770            bx      lr
+ 800c99a:      bf00            nop
+ 800c99c:      2000000c        .word   0x2000000c
+
+0800c9a0 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc>:
+ 800c9a0:      7803            ldrb    r3, [r0, #0]
+ 800c9a2:      2b47            cmp     r3, #71 ; 0x47
+ 800c9a4:      d001            beq.n   800c9aa <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc+0xa>
+ 800c9a6:      2000            movs    r0, #0
+ 800c9a8:      4770            bx      lr
+ 800c9aa:      7843            ldrb    r3, [r0, #1]
+ 800c9ac:      2b4e            cmp     r3, #78 ; 0x4e
+ 800c9ae:      d1fa            bne.n   800c9a6 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc+0x6>
+ 800c9b0:      7883            ldrb    r3, [r0, #2]
+ 800c9b2:      2b55            cmp     r3, #85 ; 0x55
+ 800c9b4:      d1f7            bne.n   800c9a6 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc+0x6>
+ 800c9b6:      78c3            ldrb    r3, [r0, #3]
+ 800c9b8:      2b43            cmp     r3, #67 ; 0x43
+ 800c9ba:      d1f4            bne.n   800c9a6 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc+0x6>
+ 800c9bc:      7903            ldrb    r3, [r0, #4]
+ 800c9be:      2b43            cmp     r3, #67 ; 0x43
+ 800c9c0:      d1f1            bne.n   800c9a6 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc+0x6>
+ 800c9c2:      7943            ldrb    r3, [r0, #5]
+ 800c9c4:      2b2b            cmp     r3, #43 ; 0x2b
+ 800c9c6:      d1ee            bne.n   800c9a6 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc+0x6>
+ 800c9c8:      7983            ldrb    r3, [r0, #6]
+ 800c9ca:      2b2b            cmp     r3, #43 ; 0x2b
+ 800c9cc:      d1eb            bne.n   800c9a6 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc+0x6>
+ 800c9ce:      79c0            ldrb    r0, [r0, #7]
+ 800c9d0:      2801            cmp     r0, #1
+ 800c9d2:      bf8c            ite     hi
+ 800c9d4:      2000            movhi   r0, #0
+ 800c9d6:      2001            movls   r0, #1
+ 800c9d8:      4770            bx      lr
+ 800c9da:      bf00            nop
+
+0800c9dc <__cxa_call_terminate>:
+ 800c9dc:      b510            push    {r4, lr}
+ 800c9de:      b130            cbz     r0, 800c9ee <__cxa_call_terminate+0x12>
+ 800c9e0:      4604            mov     r4, r0
+ 800c9e2:      f000 fd23       bl      800d42c <__cxa_begin_catch>
+ 800c9e6:      4620            mov     r0, r4
+ 800c9e8:      f7ff ffda       bl      800c9a0 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc>
+ 800c9ec:      b908            cbnz    r0, 800c9f2 <__cxa_call_terminate+0x16>
+ 800c9ee:      f7ff ffaf       bl      800c950 <_ZSt9terminatev>
+ 800c9f2:      f854 0c14       ldr.w   r0, [r4, #-20]
+ 800c9f6:      f7ff ff97       bl      800c928 <_ZN10__cxxabiv111__terminateEPFvvE>
+ 800c9fa:      bf00            nop
+
+0800c9fc <__cxa_call_unexpected>:
+ 800c9fc:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800ca00:      b085            sub     sp, #20
+ 800ca02:      4602            mov     r2, r0
+ 800ca04:      f7ff ffcc       bl      800c9a0 <_ZN10__cxxabiv1L24__is_gxx_exception_classEPc>
+ 800ca08:      b150            cbz     r0, 800ca20 <__cxa_call_unexpected+0x24>
+ 800ca0a:      e952 8506       ldrd    r8, r5, [r2, #-24]
+ 800ca0e:      4610            mov     r0, r2
+ 800ca10:      6a96            ldr     r6, [r2, #40]   ; 0x28
+ 800ca12:      e9d2 740c       ldrd    r7, r4, [r2, #48]       ; 0x30
+ 800ca16:      f000 fd09       bl      800d42c <__cxa_begin_catch>
+ 800ca1a:      4640            mov     r0, r8
+ 800ca1c:      f7ff ffa2       bl      800c964 <_ZN10__cxxabiv112__unexpectedEPFvvE>
+ 800ca20:      4610            mov     r0, r2
+ 800ca22:      f000 fd03       bl      800d42c <__cxa_begin_catch>
+ 800ca26:      f7ff ffa1       bl      800c96c <_ZSt10unexpectedv>
+ 800ca2a:      f000 fcff       bl      800d42c <__cxa_begin_catch>
+ 800ca2e:      f7ff ff8f       bl      800c950 <_ZSt9terminatev>
+ 800ca32:      f000 fcfb       bl      800d42c <__cxa_begin_catch>
+ 800ca36:      f000 f917       bl      800cc68 <__cxa_get_globals_fast>
+ 800ca3a:      6803            ldr     r3, [r0, #0]
+ 800ca3c:      f893 2027       ldrb.w  r2, [r3, #39]   ; 0x27
+ 800ca40:      f10d 0a10       add.w   sl, sp, #16
+ 800ca44:      2a01            cmp     r2, #1
+ 800ca46:      bf0c            ite     eq
+ 800ca48:      681a            ldreq   r2, [r3, #0]
+ 800ca4a:      f103 0278       addne.w r2, r3, #120    ; 0x78
+ 800ca4e:      f04f 0800       mov.w   r8, #0
+ 800ca52:      3320            adds    r3, #32
+ 800ca54:      f84a 2d08       str.w   r2, [sl, #-8]!
+ 800ca58:      f027 0b03       bic.w   fp, r7, #3
+ 800ca5c:      9301            str     r3, [sp, #4]
+ 800ca5e:      46c1            mov     r9, r8
+ 800ca60:      45b1            cmp     r9, r6
+ 800ca62:      da1b            bge.n   800ca9c <__cxa_call_unexpected+0xa0>
+ 800ca64:      6827            ldr     r7, [r4, #0]
+ 800ca66:      b107            cbz     r7, 800ca6a <__cxa_call_unexpected+0x6e>
+ 800ca68:      4427            add     r7, r4
+ 800ca6a:      4653            mov     r3, sl
+ 800ca6c:      2200            movs    r2, #0
+ 800ca6e:      4639            mov     r1, r7
+ 800ca70:      9801            ldr     r0, [sp, #4]
+ 800ca72:      f000 f837       bl      800cae4 <__cxa_type_match>
+ 800ca76:      b9e8            cbnz    r0, 800cab4 <__cxa_call_unexpected+0xb8>
+ 800ca78:      683b            ldr     r3, [r7, #0]
+ 800ca7a:      4914            ldr     r1, [pc, #80]   ; (800cacc <__cxa_call_unexpected+0xd0>)
+ 800ca7c:      691b            ldr     r3, [r3, #16]
+ 800ca7e:      9300            str     r3, [sp, #0]
+ 800ca80:      aa04            add     r2, sp, #16
+ 800ca82:      2301            movs    r3, #1
+ 800ca84:      f842 0d04       str.w   r0, [r2, #-4]!
+ 800ca88:      4638            mov     r0, r7
+ 800ca8a:      9f00            ldr     r7, [sp, #0]
+ 800ca8c:      47b8            blx     r7
+ 800ca8e:      2800            cmp     r0, #0
+ 800ca90:      bf18            it      ne
+ 800ca92:      4680            movne   r8, r0
+ 800ca94:      f109 0901       add.w   r9, r9, #1
+ 800ca98:      445c            add     r4, fp
+ 800ca9a:      e7e1            b.n     800ca60 <__cxa_call_unexpected+0x64>
+ 800ca9c:      f1b8 0f00       cmp.w   r8, #0
+ 800caa0:      d010            beq.n   800cac4 <__cxa_call_unexpected+0xc8>
+ 800caa2:      2004            movs    r0, #4
+ 800caa4:      f000 fdc0       bl      800d628 <__cxa_allocate_exception>
+ 800caa8:      4b09            ldr     r3, [pc, #36]   ; (800cad0 <__cxa_call_unexpected+0xd4>)
+ 800caaa:      6003            str     r3, [r0, #0]
+ 800caac:      4a09            ldr     r2, [pc, #36]   ; (800cad4 <__cxa_call_unexpected+0xd8>)
+ 800caae:      4907            ldr     r1, [pc, #28]   ; (800cacc <__cxa_call_unexpected+0xd0>)
+ 800cab0:      f000 fc68       bl      800d384 <__cxa_throw>
+ 800cab4:      f000 fc82       bl      800d3bc <__cxa_rethrow>
+ 800cab8:      f000 fcf8       bl      800d4ac <__cxa_end_catch>
+ 800cabc:      f000 fcf6       bl      800d4ac <__cxa_end_catch>
+ 800cac0:      f000 f80a       bl      800cad8 <__cxa_end_cleanup>
+ 800cac4:      4628            mov     r0, r5
+ 800cac6:      f7ff ff2f       bl      800c928 <_ZN10__cxxabiv111__terminateEPFvvE>
+ 800caca:      bf00            nop
+ 800cacc:      080123d0        .word   0x080123d0
+ 800cad0:      08012454        .word   0x08012454
+ 800cad4:      0800d6a1        .word   0x0800d6a1
+
+0800cad8 <__cxa_end_cleanup>:
+ 800cad8:      b41e            push    {r1, r2, r3, r4}
+ 800cada:      f000 f88d       bl      800cbf8 <__gnu_end_cleanup>
+ 800cade:      bc1e            pop     {r1, r2, r3, r4}
+ 800cae0:      f7fb f882       bl      8007be8 <_Unwind_Resume>
+
+0800cae4 <__cxa_type_match>:
+ 800cae4:      b5f0            push    {r4, r5, r6, r7, lr}
+ 800cae6:      7802            ldrb    r2, [r0, #0]
+ 800cae8:      2a47            cmp     r2, #71 ; 0x47
+ 800caea:      b083            sub     sp, #12
+ 800caec:      460d            mov     r5, r1
+ 800caee:      461f            mov     r7, r3
+ 800caf0:      d01e            beq.n   800cb30 <__cxa_type_match+0x4c>
+ 800caf2:      2300            movs    r3, #0
+ 800caf4:      4c25            ldr     r4, [pc, #148]  ; (800cb8c <__cxa_type_match+0xa8>)
+ 800caf6:      9301            str     r3, [sp, #4]
+ 800caf8:      6823            ldr     r3, [r4, #0]
+ 800cafa:      4620            mov     r0, r4
+ 800cafc:      689b            ldr     r3, [r3, #8]
+ 800cafe:      4798            blx     r3
+ 800cb00:      b180            cbz     r0, 800cb24 <__cxa_type_match+0x40>
+ 800cb02:      9b01            ldr     r3, [sp, #4]
+ 800cb04:      681b            ldr     r3, [r3, #0]
+ 800cb06:      9301            str     r3, [sp, #4]
+ 800cb08:      2602            movs    r6, #2
+ 800cb0a:      682b            ldr     r3, [r5, #0]
+ 800cb0c:      4621            mov     r1, r4
+ 800cb0e:      4628            mov     r0, r5
+ 800cb10:      691c            ldr     r4, [r3, #16]
+ 800cb12:      aa01            add     r2, sp, #4
+ 800cb14:      2301            movs    r3, #1
+ 800cb16:      47a0            blx     r4
+ 800cb18:      b130            cbz     r0, 800cb28 <__cxa_type_match+0x44>
+ 800cb1a:      9b01            ldr     r3, [sp, #4]
+ 800cb1c:      603b            str     r3, [r7, #0]
+ 800cb1e:      4630            mov     r0, r6
+ 800cb20:      b003            add     sp, #12
+ 800cb22:      bdf0            pop     {r4, r5, r6, r7, pc}
+ 800cb24:      2601            movs    r6, #1
+ 800cb26:      e7f0            b.n     800cb0a <__cxa_type_match+0x26>
+ 800cb28:      4606            mov     r6, r0
+ 800cb2a:      4630            mov     r0, r6
+ 800cb2c:      b003            add     sp, #12
+ 800cb2e:      bdf0            pop     {r4, r5, r6, r7, pc}
+ 800cb30:      7843            ldrb    r3, [r0, #1]
+ 800cb32:      2b4e            cmp     r3, #78 ; 0x4e
+ 800cb34:      d1dd            bne.n   800caf2 <__cxa_type_match+0xe>
+ 800cb36:      7883            ldrb    r3, [r0, #2]
+ 800cb38:      2b55            cmp     r3, #85 ; 0x55
+ 800cb3a:      d1da            bne.n   800caf2 <__cxa_type_match+0xe>
+ 800cb3c:      78c3            ldrb    r3, [r0, #3]
+ 800cb3e:      2b43            cmp     r3, #67 ; 0x43
+ 800cb40:      d1d7            bne.n   800caf2 <__cxa_type_match+0xe>
+ 800cb42:      7903            ldrb    r3, [r0, #4]
+ 800cb44:      2b46            cmp     r3, #70 ; 0x46
+ 800cb46:      d015            beq.n   800cb74 <__cxa_type_match+0x90>
+ 800cb48:      7903            ldrb    r3, [r0, #4]
+ 800cb4a:      2b43            cmp     r3, #67 ; 0x43
+ 800cb4c:      d1d1            bne.n   800caf2 <__cxa_type_match+0xe>
+ 800cb4e:      7943            ldrb    r3, [r0, #5]
+ 800cb50:      2b2b            cmp     r3, #43 ; 0x2b
+ 800cb52:      d1ce            bne.n   800caf2 <__cxa_type_match+0xe>
+ 800cb54:      7983            ldrb    r3, [r0, #6]
+ 800cb56:      2b2b            cmp     r3, #43 ; 0x2b
+ 800cb58:      d1cb            bne.n   800caf2 <__cxa_type_match+0xe>
+ 800cb5a:      79c3            ldrb    r3, [r0, #7]
+ 800cb5c:      2b01            cmp     r3, #1
+ 800cb5e:      d8c8            bhi.n   800caf2 <__cxa_type_match+0xe>
+ 800cb60:      f850 4c20       ldr.w   r4, [r0, #-32]
+ 800cb64:      d002            beq.n   800cb6c <__cxa_type_match+0x88>
+ 800cb66:      3058            adds    r0, #88 ; 0x58
+ 800cb68:      9001            str     r0, [sp, #4]
+ 800cb6a:      e7c5            b.n     800caf8 <__cxa_type_match+0x14>
+ 800cb6c:      4620            mov     r0, r4
+ 800cb6e:      f854 4c78       ldr.w   r4, [r4, #-120]
+ 800cb72:      e7f9            b.n     800cb68 <__cxa_type_match+0x84>
+ 800cb74:      7943            ldrb    r3, [r0, #5]
+ 800cb76:      2b4f            cmp     r3, #79 ; 0x4f
+ 800cb78:      d1e6            bne.n   800cb48 <__cxa_type_match+0x64>
+ 800cb7a:      7983            ldrb    r3, [r0, #6]
+ 800cb7c:      2b52            cmp     r3, #82 ; 0x52
+ 800cb7e:      d1e3            bne.n   800cb48 <__cxa_type_match+0x64>
+ 800cb80:      79c3            ldrb    r3, [r0, #7]
+ 800cb82:      2b00            cmp     r3, #0
+ 800cb84:      d1e0            bne.n   800cb48 <__cxa_type_match+0x64>
+ 800cb86:      9301            str     r3, [sp, #4]
+ 800cb88:      4c01            ldr     r4, [pc, #4]    ; (800cb90 <__cxa_type_match+0xac>)
+ 800cb8a:      e7b5            b.n     800caf8 <__cxa_type_match+0x14>
+ 800cb8c:      080123c8        .word   0x080123c8
+ 800cb90:      080123c0        .word   0x080123c0
+
+0800cb94 <__cxa_begin_cleanup>:
+ 800cb94:      b510            push    {r4, lr}
+ 800cb96:      4604            mov     r4, r0
+ 800cb98:      f000 f86a       bl      800cc70 <__cxa_get_globals>
+ 800cb9c:      7823            ldrb    r3, [r4, #0]
+ 800cb9e:      2b47            cmp     r3, #71 ; 0x47
+ 800cba0:      f1a4 0220       sub.w   r2, r4, #32
+ 800cba4:      d004            beq.n   800cbb0 <__cxa_begin_cleanup+0x1c>
+ 800cba6:      6883            ldr     r3, [r0, #8]
+ 800cba8:      bb23            cbnz    r3, 800cbf4 <__cxa_begin_cleanup+0x60>
+ 800cbaa:      6082            str     r2, [r0, #8]
+ 800cbac:      2001            movs    r0, #1
+ 800cbae:      bd10            pop     {r4, pc}
+ 800cbb0:      7863            ldrb    r3, [r4, #1]
+ 800cbb2:      2b4e            cmp     r3, #78 ; 0x4e
+ 800cbb4:      d1f7            bne.n   800cba6 <__cxa_begin_cleanup+0x12>
+ 800cbb6:      78a3            ldrb    r3, [r4, #2]
+ 800cbb8:      2b55            cmp     r3, #85 ; 0x55
+ 800cbba:      d1f4            bne.n   800cba6 <__cxa_begin_cleanup+0x12>
+ 800cbbc:      78e3            ldrb    r3, [r4, #3]
+ 800cbbe:      2b43            cmp     r3, #67 ; 0x43
+ 800cbc0:      d1f1            bne.n   800cba6 <__cxa_begin_cleanup+0x12>
+ 800cbc2:      7923            ldrb    r3, [r4, #4]
+ 800cbc4:      2b43            cmp     r3, #67 ; 0x43
+ 800cbc6:      d1ee            bne.n   800cba6 <__cxa_begin_cleanup+0x12>
+ 800cbc8:      7963            ldrb    r3, [r4, #5]
+ 800cbca:      2b2b            cmp     r3, #43 ; 0x2b
+ 800cbcc:      d1eb            bne.n   800cba6 <__cxa_begin_cleanup+0x12>
+ 800cbce:      79a3            ldrb    r3, [r4, #6]
+ 800cbd0:      2b2b            cmp     r3, #43 ; 0x2b
+ 800cbd2:      d1e8            bne.n   800cba6 <__cxa_begin_cleanup+0x12>
+ 800cbd4:      79e3            ldrb    r3, [r4, #7]
+ 800cbd6:      2b01            cmp     r3, #1
+ 800cbd8:      d8e5            bhi.n   800cba6 <__cxa_begin_cleanup+0x12>
+ 800cbda:      f854 3c04       ldr.w   r3, [r4, #-4]
+ 800cbde:      3301            adds    r3, #1
+ 800cbe0:      2b01            cmp     r3, #1
+ 800cbe2:      f844 3c04       str.w   r3, [r4, #-4]
+ 800cbe6:      d1e1            bne.n   800cbac <__cxa_begin_cleanup+0x18>
+ 800cbe8:      6883            ldr     r3, [r0, #8]
+ 800cbea:      f844 3c08       str.w   r3, [r4, #-8]
+ 800cbee:      6082            str     r2, [r0, #8]
+ 800cbf0:      2001            movs    r0, #1
+ 800cbf2:      bd10            pop     {r4, pc}
+ 800cbf4:      f7ff feac       bl      800c950 <_ZSt9terminatev>
+
+0800cbf8 <__gnu_end_cleanup>:
+ 800cbf8:      b508            push    {r3, lr}
+ 800cbfa:      f000 f839       bl      800cc70 <__cxa_get_globals>
+ 800cbfe:      6883            ldr     r3, [r0, #8]
+ 800cc00:      b383            cbz     r3, 800cc64 <__gnu_end_cleanup+0x6c>
+ 800cc02:      f893 2020       ldrb.w  r2, [r3, #32]
+ 800cc06:      2a47            cmp     r2, #71 ; 0x47
+ 800cc08:      d004            beq.n   800cc14 <__gnu_end_cleanup+0x1c>
+ 800cc0a:      2200            movs    r2, #0
+ 800cc0c:      6082            str     r2, [r0, #8]
+ 800cc0e:      f103 0020       add.w   r0, r3, #32
+ 800cc12:      bd08            pop     {r3, pc}
+ 800cc14:      f893 2021       ldrb.w  r2, [r3, #33]   ; 0x21
+ 800cc18:      2a4e            cmp     r2, #78 ; 0x4e
+ 800cc1a:      d1f6            bne.n   800cc0a <__gnu_end_cleanup+0x12>
+ 800cc1c:      f893 2022       ldrb.w  r2, [r3, #34]   ; 0x22
+ 800cc20:      2a55            cmp     r2, #85 ; 0x55
+ 800cc22:      d1f2            bne.n   800cc0a <__gnu_end_cleanup+0x12>
+ 800cc24:      f893 2023       ldrb.w  r2, [r3, #35]   ; 0x23
+ 800cc28:      2a43            cmp     r2, #67 ; 0x43
+ 800cc2a:      d1ee            bne.n   800cc0a <__gnu_end_cleanup+0x12>
+ 800cc2c:      f893 2024       ldrb.w  r2, [r3, #36]   ; 0x24
+ 800cc30:      2a43            cmp     r2, #67 ; 0x43
+ 800cc32:      d1ea            bne.n   800cc0a <__gnu_end_cleanup+0x12>
+ 800cc34:      f893 2025       ldrb.w  r2, [r3, #37]   ; 0x25
+ 800cc38:      2a2b            cmp     r2, #43 ; 0x2b
+ 800cc3a:      d1e6            bne.n   800cc0a <__gnu_end_cleanup+0x12>
+ 800cc3c:      f893 2026       ldrb.w  r2, [r3, #38]   ; 0x26
+ 800cc40:      2a2b            cmp     r2, #43 ; 0x2b
+ 800cc42:      d1e2            bne.n   800cc0a <__gnu_end_cleanup+0x12>
+ 800cc44:      f893 2027       ldrb.w  r2, [r3, #39]   ; 0x27
+ 800cc48:      2a01            cmp     r2, #1
+ 800cc4a:      d8de            bhi.n   800cc0a <__gnu_end_cleanup+0x12>
+ 800cc4c:      69da            ldr     r2, [r3, #28]
+ 800cc4e:      3a01            subs    r2, #1
+ 800cc50:      61da            str     r2, [r3, #28]
+ 800cc52:      2a00            cmp     r2, #0
+ 800cc54:      d1db            bne.n   800cc0e <__gnu_end_cleanup+0x16>
+ 800cc56:      699a            ldr     r2, [r3, #24]
+ 800cc58:      6082            str     r2, [r0, #8]
+ 800cc5a:      2200            movs    r2, #0
+ 800cc5c:      619a            str     r2, [r3, #24]
+ 800cc5e:      f103 0020       add.w   r0, r3, #32
+ 800cc62:      bd08            pop     {r3, pc}
+ 800cc64:      f7ff fe74       bl      800c950 <_ZSt9terminatev>
+
+0800cc68 <__cxa_get_globals_fast>:
+ 800cc68:      4800            ldr     r0, [pc, #0]    ; (800cc6c <__cxa_get_globals_fast+0x4>)
+ 800cc6a:      4770            bx      lr
+ 800cc6c:      20000aa4        .word   0x20000aa4
+
+0800cc70 <__cxa_get_globals>:
+ 800cc70:      4800            ldr     r0, [pc, #0]    ; (800cc74 <__cxa_get_globals+0x4>)
+ 800cc72:      4770            bx      lr
+ 800cc74:      20000aa4        .word   0x20000aa4
+
+0800cc78 <_ZL28read_encoded_value_with_basehjPKhPj>:
+ 800cc78:      2850            cmp     r0, #80 ; 0x50
+ 800cc7a:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 800cc7c:      d01c            beq.n   800ccb8 <_ZL28read_encoded_value_with_basehjPKhPj+0x40>
+ 800cc7e:      f000 040f       and.w   r4, r0, #15
+ 800cc82:      2c0c            cmp     r4, #12
+ 800cc84:      d856            bhi.n   800cd34 <_ZL28read_encoded_value_with_basehjPKhPj+0xbc>
+ 800cc86:      e8df f004       tbb     [pc, r4]
+ 800cc8a:      4107            .short  0x4107
+ 800cc8c:      551f0751        .word   0x551f0751
+ 800cc90:      27555555        .word   0x27555555
+ 800cc94:      0723            .short  0x0723
+ 800cc96:      1f              .byte   0x1f
+ 800cc97:      00              .byte   0x00
+ 800cc98:      4614            mov     r4, r2
+ 800cc9a:      f854 5b04       ldr.w   r5, [r4], #4
+ 800cc9e:      b145            cbz     r5, 800ccb2 <_ZL28read_encoded_value_with_basehjPKhPj+0x3a>
+ 800cca0:      f000 0670       and.w   r6, r0, #112    ; 0x70
+ 800cca4:      2e10            cmp     r6, #16
+ 800cca6:      bf08            it      eq
+ 800cca8:      4611            moveq   r1, r2
+ 800ccaa:      440d            add     r5, r1
+ 800ccac:      0602            lsls    r2, r0, #24
+ 800ccae:      bf48            it      mi
+ 800ccb0:      682d            ldrmi   r5, [r5, #0]
+ 800ccb2:      601d            str     r5, [r3, #0]
+ 800ccb4:      4620            mov     r0, r4
+ 800ccb6:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 800ccb8:      3203            adds    r2, #3
+ 800ccba:      f022 0403       bic.w   r4, r2, #3
+ 800ccbe:      f854 5b04       ldr.w   r5, [r4], #4
+ 800ccc2:      601d            str     r5, [r3, #0]
+ 800ccc4:      4620            mov     r0, r4
+ 800ccc6:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 800ccc8:      4614            mov     r4, r2
+ 800ccca:      f854 5b08       ldr.w   r5, [r4], #8
+ 800ccce:      e7e6            b.n     800cc9e <_ZL28read_encoded_value_with_basehjPKhPj+0x26>
+ 800ccd0:      4614            mov     r4, r2
+ 800ccd2:      f934 5b02       ldrsh.w r5, [r4], #2
+ 800ccd6:      e7e2            b.n     800cc9e <_ZL28read_encoded_value_with_basehjPKhPj+0x26>
+ 800ccd8:      2500            movs    r5, #0
+ 800ccda:      462f            mov     r7, r5
+ 800ccdc:      4614            mov     r4, r2
+ 800ccde:      f814 cb01       ldrb.w  ip, [r4], #1
+ 800cce2:      f00c 067f       and.w   r6, ip, #127    ; 0x7f
+ 800cce6:      40be            lsls    r6, r7
+ 800cce8:      f01c 0f80       tst.w   ip, #128        ; 0x80
+ 800ccec:      ea45 0506       orr.w   r5, r5, r6
+ 800ccf0:      f107 0707       add.w   r7, r7, #7
+ 800ccf4:      d1f3            bne.n   800ccde <_ZL28read_encoded_value_with_basehjPKhPj+0x66>
+ 800ccf6:      2f1f            cmp     r7, #31
+ 800ccf8:      d8d1            bhi.n   800cc9e <_ZL28read_encoded_value_with_basehjPKhPj+0x26>
+ 800ccfa:      f01c 0f40       tst.w   ip, #64 ; 0x40
+ 800ccfe:      d0ce            beq.n   800cc9e <_ZL28read_encoded_value_with_basehjPKhPj+0x26>
+ 800cd00:      f04f 36ff       mov.w   r6, #4294967295 ; 0xffffffff
+ 800cd04:      fa06 f707       lsl.w   r7, r6, r7
+ 800cd08:      433d            orrs    r5, r7
+ 800cd0a:      e7c9            b.n     800cca0 <_ZL28read_encoded_value_with_basehjPKhPj+0x28>
+ 800cd0c:      2500            movs    r5, #0
+ 800cd0e:      462f            mov     r7, r5
+ 800cd10:      4614            mov     r4, r2
+ 800cd12:      f814 cb01       ldrb.w  ip, [r4], #1
+ 800cd16:      f00c 067f       and.w   r6, ip, #127    ; 0x7f
+ 800cd1a:      40be            lsls    r6, r7
+ 800cd1c:      f01c 0f80       tst.w   ip, #128        ; 0x80
+ 800cd20:      ea45 0506       orr.w   r5, r5, r6
+ 800cd24:      f107 0707       add.w   r7, r7, #7
+ 800cd28:      d1f3            bne.n   800cd12 <_ZL28read_encoded_value_with_basehjPKhPj+0x9a>
+ 800cd2a:      e7b8            b.n     800cc9e <_ZL28read_encoded_value_with_basehjPKhPj+0x26>
+ 800cd2c:      4614            mov     r4, r2
+ 800cd2e:      f834 5b02       ldrh.w  r5, [r4], #2
+ 800cd32:      e7b4            b.n     800cc9e <_ZL28read_encoded_value_with_basehjPKhPj+0x26>
+ 800cd34:      f000 fe80       bl      800da38 <abort>
+
+0800cd38 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3>:
+ 800cd38:      f000 0070       and.w   r0, r0, #112    ; 0x70
+ 800cd3c:      2820            cmp     r0, #32
+ 800cd3e:      d011            beq.n   800cd64 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3+0x2c>
+ 800cd40:      d90b            bls.n   800cd5a <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3+0x22>
+ 800cd42:      2840            cmp     r0, #64 ; 0x40
+ 800cd44:      d006            beq.n   800cd54 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3+0x1c>
+ 800cd46:      2850            cmp     r0, #80 ; 0x50
+ 800cd48:      d00a            beq.n   800cd60 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3+0x28>
+ 800cd4a:      2830            cmp     r0, #48 ; 0x30
+ 800cd4c:      d10d            bne.n   800cd6a <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3+0x32>
+ 800cd4e:      4608            mov     r0, r1
+ 800cd50:      f7fb b944       b.w     8007fdc <_Unwind_GetDataRelBase>
+ 800cd54:      4608            mov     r0, r1
+ 800cd56:      f7fb b931       b.w     8007fbc <_Unwind_GetRegionStart>
+ 800cd5a:      b108            cbz     r0, 800cd60 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3+0x28>
+ 800cd5c:      2810            cmp     r0, #16
+ 800cd5e:      d104            bne.n   800cd6a <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3+0x32>
+ 800cd60:      2000            movs    r0, #0
+ 800cd62:      4770            bx      lr
+ 800cd64:      4608            mov     r0, r1
+ 800cd66:      f7fb b93d       b.w     8007fe4 <_Unwind_GetTextRelBase>
+ 800cd6a:      b508            push    {r3, lr}
+ 800cd6c:      f000 fe64       bl      800da38 <abort>
+
+0800cd70 <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info>:
+ 800cd70:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 800cd72:      460c            mov     r4, r1
+ 800cd74:      4615            mov     r5, r2
+ 800cd76:      4607            mov     r7, r0
+ 800cd78:      b108            cbz     r0, 800cd7e <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info+0xe>
+ 800cd7a:      f7fb f91f       bl      8007fbc <_Unwind_GetRegionStart>
+ 800cd7e:      6028            str     r0, [r5, #0]
+ 800cd80:      7826            ldrb    r6, [r4, #0]
+ 800cd82:      2eff            cmp     r6, #255        ; 0xff
+ 800cd84:      f104 0401       add.w   r4, r4, #1
+ 800cd88:      d129            bne.n   800cdde <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info+0x6e>
+ 800cd8a:      6068            str     r0, [r5, #4]
+ 800cd8c:      7823            ldrb    r3, [r4, #0]
+ 800cd8e:      752b            strb    r3, [r5, #20]
+ 800cd90:      2bff            cmp     r3, #255        ; 0xff
+ 800cd92:      f104 0001       add.w   r0, r4, #1
+ 800cd96:      d032            beq.n   800cdfe <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info+0x8e>
+ 800cd98:      2310            movs    r3, #16
+ 800cd9a:      2400            movs    r4, #0
+ 800cd9c:      752b            strb    r3, [r5, #20]
+ 800cd9e:      4622            mov     r2, r4
+ 800cda0:      f810 1b01       ldrb.w  r1, [r0], #1
+ 800cda4:      f001 037f       and.w   r3, r1, #127    ; 0x7f
+ 800cda8:      4093            lsls    r3, r2
+ 800cdaa:      0609            lsls    r1, r1, #24
+ 800cdac:      ea44 0403       orr.w   r4, r4, r3
+ 800cdb0:      f102 0207       add.w   r2, r2, #7
+ 800cdb4:      d4f4            bmi.n   800cda0 <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info+0x30>
+ 800cdb6:      4404            add     r4, r0
+ 800cdb8:      60ec            str     r4, [r5, #12]
+ 800cdba:      7803            ldrb    r3, [r0, #0]
+ 800cdbc:      756b            strb    r3, [r5, #21]
+ 800cdbe:      2400            movs    r4, #0
+ 800cdc0:      3001            adds    r0, #1
+ 800cdc2:      4622            mov     r2, r4
+ 800cdc4:      f810 1b01       ldrb.w  r1, [r0], #1
+ 800cdc8:      f001 037f       and.w   r3, r1, #127    ; 0x7f
+ 800cdcc:      4093            lsls    r3, r2
+ 800cdce:      431c            orrs    r4, r3
+ 800cdd0:      060b            lsls    r3, r1, #24
+ 800cdd2:      f102 0207       add.w   r2, r2, #7
+ 800cdd6:      d4f5            bmi.n   800cdc4 <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info+0x54>
+ 800cdd8:      4404            add     r4, r0
+ 800cdda:      612c            str     r4, [r5, #16]
+ 800cddc:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 800cdde:      4639            mov     r1, r7
+ 800cde0:      4630            mov     r0, r6
+ 800cde2:      f7ff ffa9       bl      800cd38 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3>
+ 800cde6:      4622            mov     r2, r4
+ 800cde8:      4601            mov     r1, r0
+ 800cdea:      1d2b            adds    r3, r5, #4
+ 800cdec:      4630            mov     r0, r6
+ 800cdee:      f7ff ff43       bl      800cc78 <_ZL28read_encoded_value_with_basehjPKhPj>
+ 800cdf2:      4604            mov     r4, r0
+ 800cdf4:      1c60            adds    r0, r4, #1
+ 800cdf6:      7823            ldrb    r3, [r4, #0]
+ 800cdf8:      752b            strb    r3, [r5, #20]
+ 800cdfa:      2bff            cmp     r3, #255        ; 0xff
+ 800cdfc:      d1cc            bne.n   800cd98 <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info+0x28>
+ 800cdfe:      2300            movs    r3, #0
+ 800ce00:      60eb            str     r3, [r5, #12]
+ 800ce02:      e7da            b.n     800cdba <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info+0x4a>
+
+0800ce04 <__gxx_personality_v0>:
+ 800ce04:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800ce08:      f000 0403       and.w   r4, r0, #3
+ 800ce0c:      b099            sub     sp, #100        ; 0x64
+ 800ce0e:      2300            movs    r3, #0
+ 800ce10:      2c01            cmp     r4, #1
+ 800ce12:      4688            mov     r8, r1
+ 800ce14:      4617            mov     r7, r2
+ 800ce16:      930c            str     r3, [sp, #48]   ; 0x30
+ 800ce18:      f000 8096       beq.w   800cf48 <__gxx_personality_v0+0x144>
+ 800ce1c:      d30d            bcc.n   800ce3a <__gxx_personality_v0+0x36>
+ 800ce1e:      2c02            cmp     r4, #2
+ 800ce20:      f040 825f       bne.w   800d2e2 <__gxx_personality_v0+0x4de>
+ 800ce24:      4639            mov     r1, r7
+ 800ce26:      4640            mov     r0, r8
+ 800ce28:      f7fb f8b4       bl      8007f94 <__gnu_unwind_frame>
+ 800ce2c:      2800            cmp     r0, #0
+ 800ce2e:      f000 809b       beq.w   800cf68 <__gxx_personality_v0+0x164>
+ 800ce32:      2009            movs    r0, #9
+ 800ce34:      b019            add     sp, #100        ; 0x64
+ 800ce36:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800ce3a:      0702            lsls    r2, r0, #28
+ 800ce3c:      d4f2            bmi.n   800ce24 <__gxx_personality_v0+0x20>
+ 800ce3e:      2301            movs    r3, #1
+ 800ce40:      9304            str     r3, [sp, #16]
+ 800ce42:      aa18            add     r2, sp, #96     ; 0x60
+ 800ce44:      2300            movs    r3, #0
+ 800ce46:      f842 8d2c       str.w   r8, [r2, #-44]!
+ 800ce4a:      4619            mov     r1, r3
+ 800ce4c:      9200            str     r2, [sp, #0]
+ 800ce4e:      4638            mov     r0, r7
+ 800ce50:      220c            movs    r2, #12
+ 800ce52:      f7fa fb2f       bl      80074b4 <_Unwind_VRS_Set>
+ 800ce56:      4638            mov     r0, r7
+ 800ce58:      f7fb f8b6       bl      8007fc8 <_Unwind_GetLanguageSpecificData>
+ 800ce5c:      9005            str     r0, [sp, #20]
+ 800ce5e:      2800            cmp     r0, #0
+ 800ce60:      d0e0            beq.n   800ce24 <__gxx_personality_v0+0x20>
+ 800ce62:      ab12            add     r3, sp, #72     ; 0x48
+ 800ce64:      461a            mov     r2, r3
+ 800ce66:      9905            ldr     r1, [sp, #20]
+ 800ce68:      9306            str     r3, [sp, #24]
+ 800ce6a:      4638            mov     r0, r7
+ 800ce6c:      f7ff ff80       bl      800cd70 <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info>
+ 800ce70:      4605            mov     r5, r0
+ 800ce72:      f89d 005c       ldrb.w  r0, [sp, #92]   ; 0x5c
+ 800ce76:      28ff            cmp     r0, #255        ; 0xff
+ 800ce78:      f000 80e5       beq.w   800d046 <__gxx_personality_v0+0x242>
+ 800ce7c:      4639            mov     r1, r7
+ 800ce7e:      f7ff ff5b       bl      800cd38 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3>
+ 800ce82:      4604            mov     r4, r0
+ 800ce84:      2300            movs    r3, #0
+ 800ce86:      f10d 0b44       add.w   fp, sp, #68     ; 0x44
+ 800ce8a:      4619            mov     r1, r3
+ 800ce8c:      f8cd b000       str.w   fp, [sp]
+ 800ce90:      220f            movs    r2, #15
+ 800ce92:      4638            mov     r0, r7
+ 800ce94:      9414            str     r4, [sp, #80]   ; 0x50
+ 800ce96:      f7fa faeb       bl      8007470 <_Unwind_VRS_Get>
+ 800ce9a:      9e11            ldr     r6, [sp, #68]   ; 0x44
+ 800ce9c:      9b16            ldr     r3, [sp, #88]   ; 0x58
+ 800ce9e:      f026 0601       bic.w   r6, r6, #1
+ 800cea2:      429d            cmp     r5, r3
+ 800cea4:      f106 36ff       add.w   r6, r6, #4294967295     ; 0xffffffff
+ 800cea8:      f080 80d4       bcs.w   800d054 <__gxx_personality_v0+0x250>
+ 800ceac:      f10d 0a3c       add.w   sl, sp, #60     ; 0x3c
+ 800ceb0:      f10d 0940       add.w   r9, sp, #64     ; 0x40
+ 800ceb4:      f89d 405d       ldrb.w  r4, [sp, #93]   ; 0x5d
+ 800ceb8:      2cff            cmp     r4, #255        ; 0xff
+ 800ceba:      f04f 0100       mov.w   r1, #0
+ 800cebe:      d003            beq.n   800cec8 <__gxx_personality_v0+0xc4>
+ 800cec0:      4620            mov     r0, r4
+ 800cec2:      f7ff ff39       bl      800cd38 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3>
+ 800cec6:      4601            mov     r1, r0
+ 800cec8:      462a            mov     r2, r5
+ 800ceca:      4620            mov     r0, r4
+ 800cecc:      4653            mov     r3, sl
+ 800cece:      f7ff fed3       bl      800cc78 <_ZL28read_encoded_value_with_basehjPKhPj>
+ 800ced2:      f89d 405d       ldrb.w  r4, [sp, #93]   ; 0x5d
+ 800ced6:      2cff            cmp     r4, #255        ; 0xff
+ 800ced8:      4605            mov     r5, r0
+ 800ceda:      f04f 0100       mov.w   r1, #0
+ 800cede:      d003            beq.n   800cee8 <__gxx_personality_v0+0xe4>
+ 800cee0:      4620            mov     r0, r4
+ 800cee2:      f7ff ff29       bl      800cd38 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3>
+ 800cee6:      4601            mov     r1, r0
+ 800cee8:      462a            mov     r2, r5
+ 800ceea:      4620            mov     r0, r4
+ 800ceec:      464b            mov     r3, r9
+ 800ceee:      f7ff fec3       bl      800cc78 <_ZL28read_encoded_value_with_basehjPKhPj>
+ 800cef2:      f89d 405d       ldrb.w  r4, [sp, #93]   ; 0x5d
+ 800cef6:      2cff            cmp     r4, #255        ; 0xff
+ 800cef8:      4605            mov     r5, r0
+ 800cefa:      f04f 0100       mov.w   r1, #0
+ 800cefe:      d003            beq.n   800cf08 <__gxx_personality_v0+0x104>
+ 800cf00:      4620            mov     r0, r4
+ 800cf02:      f7ff ff19       bl      800cd38 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3>
+ 800cf06:      4601            mov     r1, r0
+ 800cf08:      462a            mov     r2, r5
+ 800cf0a:      4620            mov     r0, r4
+ 800cf0c:      465b            mov     r3, fp
+ 800cf0e:      f7ff feb3       bl      800cc78 <_ZL28read_encoded_value_with_basehjPKhPj>
+ 800cf12:      2400            movs    r4, #0
+ 800cf14:      4605            mov     r5, r0
+ 800cf16:      4621            mov     r1, r4
+ 800cf18:      f815 2b01       ldrb.w  r2, [r5], #1
+ 800cf1c:      f002 037f       and.w   r3, r2, #127    ; 0x7f
+ 800cf20:      408b            lsls    r3, r1
+ 800cf22:      431c            orrs    r4, r3
+ 800cf24:      0613            lsls    r3, r2, #24
+ 800cf26:      f101 0107       add.w   r1, r1, #7
+ 800cf2a:      d4f5            bmi.n   800cf18 <__gxx_personality_v0+0x114>
+ 800cf2c:      9b12            ldr     r3, [sp, #72]   ; 0x48
+ 800cf2e:      9a0f            ldr     r2, [sp, #60]   ; 0x3c
+ 800cf30:      4413            add     r3, r2
+ 800cf32:      42b3            cmp     r3, r6
+ 800cf34:      d91f            bls.n   800cf76 <__gxx_personality_v0+0x172>
+ 800cf36:      9b04            ldr     r3, [sp, #16]
+ 800cf38:      07db            lsls    r3, r3, #31
+ 800cf3a:      f100 8091       bmi.w   800d060 <__gxx_personality_v0+0x25c>
+ 800cf3e:      9b04            ldr     r3, [sp, #16]
+ 800cf40:      071c            lsls    r4, r3, #28
+ 800cf42:      d515            bpl.n   800cf70 <__gxx_personality_v0+0x16c>
+ 800cf44:      f7ff fd04       bl      800c950 <_ZSt9terminatev>
+ 800cf48:      f010 0408       ands.w  r4, r0, #8
+ 800cf4c:      d01c            beq.n   800cf88 <__gxx_personality_v0+0x184>
+ 800cf4e:      aa18            add     r2, sp, #96     ; 0x60
+ 800cf50:      f044 0402       orr.w   r4, r4, #2
+ 800cf54:      f842 1d2c       str.w   r1, [r2, #-44]!
+ 800cf58:      4638            mov     r0, r7
+ 800cf5a:      9200            str     r2, [sp, #0]
+ 800cf5c:      4619            mov     r1, r3
+ 800cf5e:      220c            movs    r2, #12
+ 800cf60:      9404            str     r4, [sp, #16]
+ 800cf62:      f7fa faa7       bl      80074b4 <_Unwind_VRS_Set>
+ 800cf66:      e776            b.n     800ce56 <__gxx_personality_v0+0x52>
+ 800cf68:      2008            movs    r0, #8
+ 800cf6a:      b019            add     sp, #100        ; 0x64
+ 800cf6c:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800cf70:      4640            mov     r0, r8
+ 800cf72:      f7ff fd33       bl      800c9dc <__cxa_call_terminate>
+ 800cf76:      9a10            ldr     r2, [sp, #64]   ; 0x40
+ 800cf78:      4413            add     r3, r2
+ 800cf7a:      42b3            cmp     r3, r6
+ 800cf7c:      f200 8088       bhi.w   800d090 <__gxx_personality_v0+0x28c>
+ 800cf80:      9b16            ldr     r3, [sp, #88]   ; 0x58
+ 800cf82:      42ab            cmp     r3, r5
+ 800cf84:      d896            bhi.n   800ceb4 <__gxx_personality_v0+0xb0>
+ 800cf86:      e7d6            b.n     800cf36 <__gxx_personality_v0+0x132>
+ 800cf88:      ab12            add     r3, sp, #72     ; 0x48
+ 800cf8a:      9300            str     r3, [sp, #0]
+ 800cf8c:      9306            str     r3, [sp, #24]
+ 800cf8e:      220d            movs    r2, #13
+ 800cf90:      4623            mov     r3, r4
+ 800cf92:      4621            mov     r1, r4
+ 800cf94:      4638            mov     r0, r7
+ 800cf96:      f8d8 5020       ldr.w   r5, [r8, #32]
+ 800cf9a:      f7fa fa69       bl      8007470 <_Unwind_VRS_Get>
+ 800cf9e:      9b12            ldr     r3, [sp, #72]   ; 0x48
+ 800cfa0:      429d            cmp     r5, r3
+ 800cfa2:      d002            beq.n   800cfaa <__gxx_personality_v0+0x1a6>
+ 800cfa4:      2302            movs    r3, #2
+ 800cfa6:      9304            str     r3, [sp, #16]
+ 800cfa8:      e74b            b.n     800ce42 <__gxx_personality_v0+0x3e>
+ 800cfaa:      aa18            add     r2, sp, #96     ; 0x60
+ 800cfac:      4623            mov     r3, r4
+ 800cfae:      f842 8d2c       str.w   r8, [r2, #-44]!
+ 800cfb2:      4621            mov     r1, r4
+ 800cfb4:      9200            str     r2, [sp, #0]
+ 800cfb6:      4638            mov     r0, r7
+ 800cfb8:      220c            movs    r2, #12
+ 800cfba:      f7fa fa7b       bl      80074b4 <_Unwind_VRS_Set>
+ 800cfbe:      f8d8 3030       ldr.w   r3, [r8, #48]   ; 0x30
+ 800cfc2:      9303            str     r3, [sp, #12]
+ 800cfc4:      2b00            cmp     r3, #0
+ 800cfc6:      d0d3            beq.n   800cf70 <__gxx_personality_v0+0x16c>
+ 800cfc8:      f8d8 3028       ldr.w   r3, [r8, #40]   ; 0x28
+ 800cfcc:      461a            mov     r2, r3
+ 800cfce:      f8d8 302c       ldr.w   r3, [r8, #44]   ; 0x2c
+ 800cfd2:      9305            str     r3, [sp, #20]
+ 800cfd4:      f10d 0a3c       add.w   sl, sp, #60     ; 0x3c
+ 800cfd8:      f10d 0940       add.w   r9, sp, #64     ; 0x40
+ 800cfdc:      4613            mov     r3, r2
+ 800cfde:      2b00            cmp     r3, #0
+ 800cfe0:      461c            mov     r4, r3
+ 800cfe2:      f2c0 8127       blt.w   800d234 <__gxx_personality_v0+0x430>
+ 800cfe6:      2503            movs    r5, #3
+ 800cfe8:      a918            add     r1, sp, #96     ; 0x60
+ 800cfea:      2300            movs    r3, #0
+ 800cfec:      f841 8d28       str.w   r8, [r1, #-40]!
+ 800cff0:      461a            mov     r2, r3
+ 800cff2:      9100            str     r1, [sp, #0]
+ 800cff4:      4638            mov     r0, r7
+ 800cff6:      4619            mov     r1, r3
+ 800cff8:      f7fa fa5c       bl      80074b4 <_Unwind_VRS_Set>
+ 800cffc:      2300            movs    r3, #0
+ 800cffe:      4619            mov     r1, r3
+ 800d000:      2201            movs    r2, #1
+ 800d002:      f8cd a000       str.w   sl, [sp]
+ 800d006:      4638            mov     r0, r7
+ 800d008:      940f            str     r4, [sp, #60]   ; 0x3c
+ 800d00a:      f7fa fa53       bl      80074b4 <_Unwind_VRS_Set>
+ 800d00e:      2300            movs    r3, #0
+ 800d010:      4619            mov     r1, r3
+ 800d012:      220f            movs    r2, #15
+ 800d014:      f8cd 9000       str.w   r9, [sp]
+ 800d018:      4638            mov     r0, r7
+ 800d01a:      f7fa fa29       bl      8007470 <_Unwind_VRS_Get>
+ 800d01e:      9b10            ldr     r3, [sp, #64]   ; 0x40
+ 800d020:      9a03            ldr     r2, [sp, #12]
+ 800d022:      f8cd 9000       str.w   r9, [sp]
+ 800d026:      f003 0401       and.w   r4, r3, #1
+ 800d02a:      2300            movs    r3, #0
+ 800d02c:      4314            orrs    r4, r2
+ 800d02e:      4638            mov     r0, r7
+ 800d030:      4619            mov     r1, r3
+ 800d032:      220f            movs    r2, #15
+ 800d034:      9410            str     r4, [sp, #64]   ; 0x40
+ 800d036:      f7fa fa3d       bl      80074b4 <_Unwind_VRS_Set>
+ 800d03a:      2d02            cmp     r5, #2
+ 800d03c:      d005            beq.n   800d04a <__gxx_personality_v0+0x246>
+ 800d03e:      2007            movs    r0, #7
+ 800d040:      b019            add     sp, #100        ; 0x64
+ 800d042:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800d046:      2400            movs    r4, #0
+ 800d048:      e71c            b.n     800ce84 <__gxx_personality_v0+0x80>
+ 800d04a:      4640            mov     r0, r8
+ 800d04c:      f7ff fda2       bl      800cb94 <__cxa_begin_cleanup>
+ 800d050:      2007            movs    r0, #7
+ 800d052:      e6ef            b.n     800ce34 <__gxx_personality_v0+0x30>
+ 800d054:      9b04            ldr     r3, [sp, #16]
+ 800d056:      07d9            lsls    r1, r3, #31
+ 800d058:      f57f af71       bpl.w   800cf3e <__gxx_personality_v0+0x13a>
+ 800d05c:      f10d 0940       add.w   r9, sp, #64     ; 0x40
+ 800d060:      2400            movs    r4, #0
+ 800d062:      9403            str     r4, [sp, #12]
+ 800d064:      2300            movs    r3, #0
+ 800d066:      4619            mov     r1, r3
+ 800d068:      220d            movs    r2, #13
+ 800d06a:      f8cd 9000       str.w   r9, [sp]
+ 800d06e:      4638            mov     r0, r7
+ 800d070:      9d0c            ldr     r5, [sp, #48]   ; 0x30
+ 800d072:      f7fa f9fd       bl      8007470 <_Unwind_VRS_Get>
+ 800d076:      9a05            ldr     r2, [sp, #20]
+ 800d078:      9b10            ldr     r3, [sp, #64]   ; 0x40
+ 800d07a:      f8c8 202c       str.w   r2, [r8, #44]   ; 0x2c
+ 800d07e:      9a03            ldr     r2, [sp, #12]
+ 800d080:      f8c8 2030       str.w   r2, [r8, #48]   ; 0x30
+ 800d084:      e9c8 5409       strd    r5, r4, [r8, #36]       ; 0x24
+ 800d088:      f8c8 3020       str.w   r3, [r8, #32]
+ 800d08c:      2006            movs    r0, #6
+ 800d08e:      e6d1            b.n     800ce34 <__gxx_personality_v0+0x30>
+ 800d090:      9b11            ldr     r3, [sp, #68]   ; 0x44
+ 800d092:      2b00            cmp     r3, #0
+ 800d094:      f43f aec6       beq.w   800ce24 <__gxx_personality_v0+0x20>
+ 800d098:      9a13            ldr     r2, [sp, #76]   ; 0x4c
+ 800d09a:      189a            adds    r2, r3, r2
+ 800d09c:      9203            str     r2, [sp, #12]
+ 800d09e:      2c00            cmp     r4, #0
+ 800d0a0:      f000 80f0       beq.w   800d284 <__gxx_personality_v0+0x480>
+ 800d0a4:      9b16            ldr     r3, [sp, #88]   ; 0x58
+ 800d0a6:      3c01            subs    r4, #1
+ 800d0a8:      4423            add     r3, r4
+ 800d0aa:      2a00            cmp     r2, #0
+ 800d0ac:      f43f aeba       beq.w   800ce24 <__gxx_personality_v0+0x20>
+ 800d0b0:      2b00            cmp     r3, #0
+ 800d0b2:      f000 80f8       beq.w   800d2a6 <__gxx_personality_v0+0x4a2>
+ 800d0b6:      9a04            ldr     r2, [sp, #16]
+ 800d0b8:      f012 0208       ands.w  r2, r2, #8
+ 800d0bc:      9209            str     r2, [sp, #36]   ; 0x24
+ 800d0be:      f000 8103       beq.w   800d2c8 <__gxx_personality_v0+0x4c4>
+ 800d0c2:      2147            movs    r1, #71 ; 0x47
+ 800d0c4:      224e            movs    r2, #78 ; 0x4e
+ 800d0c6:      f888 1000       strb.w  r1, [r8]
+ 800d0ca:      f888 2001       strb.w  r2, [r8, #1]
+ 800d0ce:      2155            movs    r1, #85 ; 0x55
+ 800d0d0:      2243            movs    r2, #67 ; 0x43
+ 800d0d2:      f888 1002       strb.w  r1, [r8, #2]
+ 800d0d6:      f888 2003       strb.w  r2, [r8, #3]
+ 800d0da:      2146            movs    r1, #70 ; 0x46
+ 800d0dc:      224f            movs    r2, #79 ; 0x4f
+ 800d0de:      f888 1004       strb.w  r1, [r8, #4]
+ 800d0e2:      f888 2005       strb.w  r2, [r8, #5]
+ 800d0e6:      2152            movs    r1, #82 ; 0x52
+ 800d0e8:      2200            movs    r2, #0
+ 800d0ea:      f888 1006       strb.w  r1, [r8, #6]
+ 800d0ee:      f888 2007       strb.w  r2, [r8, #7]
+ 800d0f2:      e9cd 7a0a       strd    r7, sl, [sp, #40]       ; 0x28
+ 800d0f6:      2200            movs    r2, #0
+ 800d0f8:      9207            str     r2, [sp, #28]
+ 800d0fa:      f8cd 9020       str.w   r9, [sp, #32]
+ 800d0fe:      2400            movs    r4, #0
+ 800d100:      4621            mov     r1, r4
+ 800d102:      e000            b.n     800d106 <__gxx_personality_v0+0x302>
+ 800d104:      462b            mov     r3, r5
+ 800d106:      461d            mov     r5, r3
+ 800d108:      f815 0b01       ldrb.w  r0, [r5], #1
+ 800d10c:      f000 027f       and.w   r2, r0, #127    ; 0x7f
+ 800d110:      408a            lsls    r2, r1
+ 800d112:      0606            lsls    r6, r0, #24
+ 800d114:      ea44 0402       orr.w   r4, r4, r2
+ 800d118:      f101 0107       add.w   r1, r1, #7
+ 800d11c:      d4f2            bmi.n   800d104 <__gxx_personality_v0+0x300>
+ 800d11e:      291f            cmp     r1, #31
+ 800d120:      d805            bhi.n   800d12e <__gxx_personality_v0+0x32a>
+ 800d122:      0640            lsls    r0, r0, #25
+ 800d124:      d503            bpl.n   800d12e <__gxx_personality_v0+0x32a>
+ 800d126:      2201            movs    r2, #1
+ 800d128:      408a            lsls    r2, r1
+ 800d12a:      4252            negs    r2, r2
+ 800d12c:      4314            orrs    r4, r2
+ 800d12e:      2600            movs    r6, #0
+ 800d130:      4631            mov     r1, r6
+ 800d132:      46a1            mov     r9, r4
+ 800d134:      f813 0f01       ldrb.w  r0, [r3, #1]!
+ 800d138:      f000 027f       and.w   r2, r0, #127    ; 0x7f
+ 800d13c:      408a            lsls    r2, r1
+ 800d13e:      4316            orrs    r6, r2
+ 800d140:      0602            lsls    r2, r0, #24
+ 800d142:      f101 0107       add.w   r1, r1, #7
+ 800d146:      d4f5            bmi.n   800d134 <__gxx_personality_v0+0x330>
+ 800d148:      291f            cmp     r1, #31
+ 800d14a:      d805            bhi.n   800d158 <__gxx_personality_v0+0x354>
+ 800d14c:      0647            lsls    r7, r0, #25
+ 800d14e:      d503            bpl.n   800d158 <__gxx_personality_v0+0x354>
+ 800d150:      2301            movs    r3, #1
+ 800d152:      408b            lsls    r3, r1
+ 800d154:      425b            negs    r3, r3
+ 800d156:      431e            orrs    r6, r3
+ 800d158:      2c00            cmp     r4, #0
+ 800d15a:      d04c            beq.n   800d1f6 <__gxx_personality_v0+0x3f2>
+ 800d15c:      dc4e            bgt.n   800d1fc <__gxx_personality_v0+0x3f8>
+ 800d15e:      f104 0a01       add.w   sl, r4, #1
+ 800d162:      ebca 728a       rsb     r2, sl, sl, lsl #30
+ 800d166:      9b15            ldr     r3, [sp, #84]   ; 0x54
+ 800d168:      eb03 0782       add.w   r7, r3, r2, lsl #2
+ 800d16c:      f853 1022       ldr.w   r1, [r3, r2, lsl #2]
+ 800d170:      f1b8 0f00       cmp.w   r8, #0
+ 800d174:      d001            beq.n   800d17a <__gxx_personality_v0+0x376>
+ 800d176:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800d178:      b12b            cbz     r3, 800d186 <__gxx_personality_v0+0x382>
+ 800d17a:      b351            cbz     r1, 800d1d2 <__gxx_personality_v0+0x3ce>
+ 800d17c:      2e00            cmp     r6, #0
+ 800d17e:      f000 808b       beq.w   800d298 <__gxx_personality_v0+0x494>
+ 800d182:      19ab            adds    r3, r5, r6
+ 800d184:      e7bb            b.n     800d0fe <__gxx_personality_v0+0x2fa>
+ 800d186:      9b0c            ldr     r3, [sp, #48]   ; 0x30
+ 800d188:      9311            str     r3, [sp, #68]   ; 0x44
+ 800d18a:      b929            cbnz    r1, 800d198 <__gxx_personality_v0+0x394>
+ 800d18c:      e091            b.n     800d2b2 <__gxx_personality_v0+0x4ae>
+ 800d18e:      f857 1f04       ldr.w   r1, [r7, #4]!
+ 800d192:      2900            cmp     r1, #0
+ 800d194:      f000 808d       beq.w   800d2b2 <__gxx_personality_v0+0x4ae>
+ 800d198:      4439            add     r1, r7
+ 800d19a:      465b            mov     r3, fp
+ 800d19c:      2200            movs    r2, #0
+ 800d19e:      4640            mov     r0, r8
+ 800d1a0:      f7ff fca0       bl      800cae4 <__cxa_type_match>
+ 800d1a4:      2800            cmp     r0, #0
+ 800d1a6:      d0f2            beq.n   800d18e <__gxx_personality_v0+0x38a>
+ 800d1a8:      e7e8            b.n     800d17c <__gxx_personality_v0+0x378>
+ 800d1aa:      00e2            lsls    r2, r4, #3
+ 800d1ac:      4252            negs    r2, r2
+ 800d1ae:      e9dd 1314       ldrd    r1, r3, [sp, #80]       ; 0x50
+ 800d1b2:      441a            add     r2, r3
+ 800d1b4:      9b08            ldr     r3, [sp, #32]
+ 800d1b6:      f7ff fd5f       bl      800cc78 <_ZL28read_encoded_value_with_basehjPKhPj>
+ 800d1ba:      9910            ldr     r1, [sp, #64]   ; 0x40
+ 800d1bc:      b149            cbz     r1, 800d1d2 <__gxx_personality_v0+0x3ce>
+ 800d1be:      f1b8 0f00       cmp.w   r8, #0
+ 800d1c2:      d0db            beq.n   800d17c <__gxx_personality_v0+0x378>
+ 800d1c4:      ab0c            add     r3, sp, #48     ; 0x30
+ 800d1c6:      2200            movs    r2, #0
+ 800d1c8:      4640            mov     r0, r8
+ 800d1ca:      f7ff fc8b       bl      800cae4 <__cxa_type_match>
+ 800d1ce:      2800            cmp     r0, #0
+ 800d1d0:      d0d4            beq.n   800d17c <__gxx_personality_v0+0x378>
+ 800d1d2:      9b04            ldr     r3, [sp, #16]
+ 800d1d4:      07d8            lsls    r0, r3, #31
+ 800d1d6:      464a            mov     r2, r9
+ 800d1d8:      e9dd 7a0a       ldrd    r7, sl, [sp, #40]       ; 0x28
+ 800d1dc:      f8dd 9020       ldr.w   r9, [sp, #32]
+ 800d1e0:      f53f af40       bmi.w   800d064 <__gxx_personality_v0+0x260>
+ 800d1e4:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800d1e6:      2b00            cmp     r3, #0
+ 800d1e8:      f43f aef8       beq.w   800cfdc <__gxx_personality_v0+0x1d8>
+ 800d1ec:      2c00            cmp     r4, #0
+ 800d1ee:      f6bf aefa       bge.w   800cfe6 <__gxx_personality_v0+0x1e2>
+ 800d1f2:      f7ff fbbb       bl      800c96c <_ZSt10unexpectedv>
+ 800d1f6:      2301            movs    r3, #1
+ 800d1f8:      9307            str     r3, [sp, #28]
+ 800d1fa:      e7bf            b.n     800d17c <__gxx_personality_v0+0x378>
+ 800d1fc:      f89d 005c       ldrb.w  r0, [sp, #92]   ; 0x5c
+ 800d200:      28ff            cmp     r0, #255        ; 0xff
+ 800d202:      d03b            beq.n   800d27c <__gxx_personality_v0+0x478>
+ 800d204:      f000 0307       and.w   r3, r0, #7
+ 800d208:      2b04            cmp     r3, #4
+ 800d20a:      d86a            bhi.n   800d2e2 <__gxx_personality_v0+0x4de>
+ 800d20c:      a201            add     r2, pc, #4      ; (adr r2, 800d214 <__gxx_personality_v0+0x410>)
+ 800d20e:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 800d212:      bf00            nop
+ 800d214:      0800d22f        .word   0x0800d22f
+ 800d218:      0800d2e3        .word   0x0800d2e3
+ 800d21c:      0800d229        .word   0x0800d229
+ 800d220:      0800d22f        .word   0x0800d22f
+ 800d224:      0800d1ab        .word   0x0800d1ab
+ 800d228:      0062            lsls    r2, r4, #1
+ 800d22a:      4252            negs    r2, r2
+ 800d22c:      e7bf            b.n     800d1ae <__gxx_personality_v0+0x3aa>
+ 800d22e:      00a2            lsls    r2, r4, #2
+ 800d230:      4252            negs    r2, r2
+ 800d232:      e7bc            b.n     800d1ae <__gxx_personality_v0+0x3aa>
+ 800d234:      3301            adds    r3, #1
+ 800d236:      461d            mov     r5, r3
+ 800d238:      e9dd 1205       ldrd    r1, r2, [sp, #20]
+ 800d23c:      4638            mov     r0, r7
+ 800d23e:      f7ff fd97       bl      800cd70 <_ZL17parse_lsda_headerP15_Unwind_ContextPKhP16lsda_header_info>
+ 800d242:      f89d 005c       ldrb.w  r0, [sp, #92]   ; 0x5c
+ 800d246:      28ff            cmp     r0, #255        ; 0xff
+ 800d248:      d01a            beq.n   800d280 <__gxx_personality_v0+0x47c>
+ 800d24a:      4639            mov     r1, r7
+ 800d24c:      f7ff fd74       bl      800cd38 <_ZL21base_of_encoded_valuehP15_Unwind_Context.part.3>
+ 800d250:      ebc5 7285       rsb     r2, r5, r5, lsl #30
+ 800d254:      0092            lsls    r2, r2, #2
+ 800d256:      9d15            ldr     r5, [sp, #84]   ; 0x54
+ 800d258:      9014            str     r0, [sp, #80]   ; 0x50
+ 800d25a:      58ab            ldr     r3, [r5, r2]
+ 800d25c:      4415            add     r5, r2
+ 800d25e:      b133            cbz     r3, 800d26e <__gxx_personality_v0+0x46a>
+ 800d260:      462a            mov     r2, r5
+ 800d262:      2300            movs    r3, #0
+ 800d264:      f852 1f04       ldr.w   r1, [r2, #4]!
+ 800d268:      3301            adds    r3, #1
+ 800d26a:      2900            cmp     r1, #0
+ 800d26c:      d1fa            bne.n   800d264 <__gxx_personality_v0+0x460>
+ 800d26e:      2204            movs    r2, #4
+ 800d270:      e9c8 250c       strd    r2, r5, [r8, #48]       ; 0x30
+ 800d274:      e9c8 300a       strd    r3, r0, [r8, #40]       ; 0x28
+ 800d278:      2503            movs    r5, #3
+ 800d27a:      e6b5            b.n     800cfe8 <__gxx_personality_v0+0x1e4>
+ 800d27c:      2200            movs    r2, #0
+ 800d27e:      e796            b.n     800d1ae <__gxx_personality_v0+0x3aa>
+ 800d280:      2000            movs    r0, #0
+ 800d282:      e7e5            b.n     800d250 <__gxx_personality_v0+0x44c>
+ 800d284:      9b03            ldr     r3, [sp, #12]
+ 800d286:      2b00            cmp     r3, #0
+ 800d288:      f43f adcc       beq.w   800ce24 <__gxx_personality_v0+0x20>
+ 800d28c:      9b04            ldr     r3, [sp, #16]
+ 800d28e:      07da            lsls    r2, r3, #31
+ 800d290:      f53f adc8       bmi.w   800ce24 <__gxx_personality_v0+0x20>
+ 800d294:      2502            movs    r5, #2
+ 800d296:      e6a7            b.n     800cfe8 <__gxx_personality_v0+0x1e4>
+ 800d298:      e9dd 3907       ldrd    r3, r9, [sp, #28]
+ 800d29c:      e9dd 7a0a       ldrd    r7, sl, [sp, #40]       ; 0x28
+ 800d2a0:      2b00            cmp     r3, #0
+ 800d2a2:      f43f adbf       beq.w   800ce24 <__gxx_personality_v0+0x20>
+ 800d2a6:      9b04            ldr     r3, [sp, #16]
+ 800d2a8:      07dd            lsls    r5, r3, #31
+ 800d2aa:      f53f adbb       bmi.w   800ce24 <__gxx_personality_v0+0x20>
+ 800d2ae:      2400            movs    r4, #0
+ 800d2b0:      e7f0            b.n     800d294 <__gxx_personality_v0+0x490>
+ 800d2b2:      9b04            ldr     r3, [sp, #16]
+ 800d2b4:      9f0a            ldr     r7, [sp, #40]   ; 0x28
+ 800d2b6:      f8dd 9020       ldr.w   r9, [sp, #32]
+ 800d2ba:      07de            lsls    r6, r3, #31
+ 800d2bc:      4655            mov     r5, sl
+ 800d2be:      f8dd a02c       ldr.w   sl, [sp, #44]   ; 0x2c
+ 800d2c2:      f53f aecf       bmi.w   800d064 <__gxx_personality_v0+0x260>
+ 800d2c6:      e7b7            b.n     800d238 <__gxx_personality_v0+0x434>
+ 800d2c8:      f898 2007       ldrb.w  r2, [r8, #7]
+ 800d2cc:      2a01            cmp     r2, #1
+ 800d2ce:      bf0c            ite     eq
+ 800d2d0:      f858 2c20       ldreq.w r2, [r8, #-32]
+ 800d2d4:      f108 0258       addne.w r2, r8, #88     ; 0x58
+ 800d2d8:      920c            str     r2, [sp, #48]   ; 0x30
+ 800d2da:      e70a            b.n     800d0f2 <__gxx_personality_v0+0x2ee>
+ 800d2dc:      f000 f8a6       bl      800d42c <__cxa_begin_catch>
+ 800d2e0:      e630            b.n     800cf44 <__gxx_personality_v0+0x140>
+ 800d2e2:      f000 fba9       bl      800da38 <abort>
+ 800d2e6:      bf00            nop
+
+0800d2e8 <_ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block>:
+ 800d2e8:      2801            cmp     r0, #1
+ 800d2ea:      b510            push    {r4, lr}
+ 800d2ec:      d81a            bhi.n   800d324 <_ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block+0x3c>
+ 800d2ee:      f3bf 8f5b       dmb     ish
+ 800d2f2:      f1a1 0328       sub.w   r3, r1, #40     ; 0x28
+ 800d2f6:      e853 2f00       ldrex   r2, [r3]
+ 800d2fa:      3a01            subs    r2, #1
+ 800d2fc:      e843 2000       strex   r0, r2, [r3]
+ 800d300:      2800            cmp     r0, #0
+ 800d302:      d1f8            bne.n   800d2f6 <_ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block+0xe>
+ 800d304:      f3bf 8f5b       dmb     ish
+ 800d308:      b95a            cbnz    r2, 800d322 <_ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block+0x3a>
+ 800d30a:      f851 3c1c       ldr.w   r3, [r1, #-28]
+ 800d30e:      f101 0458       add.w   r4, r1, #88     ; 0x58
+ 800d312:      b10b            cbz     r3, 800d318 <_ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP21_Unwind_Control_Block+0x30>
+ 800d314:      4620            mov     r0, r4
+ 800d316:      4798            blx     r3
+ 800d318:      4620            mov     r0, r4
+ 800d31a:      e8bd 4010       ldmia.w sp!, {r4, lr}
+ 800d31e:      f000 b99b       b.w     800d658 <__cxa_free_exception>
+ 800d322:      bd10            pop     {r4, pc}
+ 800d324:      f851 0c14       ldr.w   r0, [r1, #-20]
+ 800d328:      f7ff fafe       bl      800c928 <_ZN10__cxxabiv111__terminateEPFvvE>
+
+0800d32c <__cxa_init_primary_exception>:
+ 800d32c:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 800d32e:      2500            movs    r5, #0
+ 800d330:      e940 121e       strd    r1, r2, [r0, #-120]     ; 0x78
+ 800d334:      f840 5c80       str.w   r5, [r0, #-128]
+ 800d338:      4604            mov     r4, r0
+ 800d33a:      f7ff fb29       bl      800c990 <_ZSt14get_unexpectedv>
+ 800d33e:      f844 0c70       str.w   r0, [r4, #-112]
+ 800d342:      f7ff fb1d       bl      800c980 <_ZSt13get_terminatev>
+ 800d346:      2347            movs    r3, #71 ; 0x47
+ 800d348:      2243            movs    r2, #67 ; 0x43
+ 800d34a:      274e            movs    r7, #78 ; 0x4e
+ 800d34c:      2655            movs    r6, #85 ; 0x55
+ 800d34e:      490c            ldr     r1, [pc, #48]   ; (800d380 <__cxa_init_primary_exception+0x54>)
+ 800d350:      f804 3c58       strb.w  r3, [r4, #-88]
+ 800d354:      232b            movs    r3, #43 ; 0x2b
+ 800d356:      f804 5c51       strb.w  r5, [r4, #-81]
+ 800d35a:      f804 7c57       strb.w  r7, [r4, #-87]
+ 800d35e:      f804 6c56       strb.w  r6, [r4, #-86]
+ 800d362:      f844 1c50       str.w   r1, [r4, #-80]
+ 800d366:      f804 2c55       strb.w  r2, [r4, #-85]
+ 800d36a:      f804 2c54       strb.w  r2, [r4, #-84]
+ 800d36e:      f804 3c53       strb.w  r3, [r4, #-83]
+ 800d372:      f804 3c52       strb.w  r3, [r4, #-82]
+ 800d376:      f844 0c6c       str.w   r0, [r4, #-108]
+ 800d37a:      f1a4 0080       sub.w   r0, r4, #128    ; 0x80
+ 800d37e:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 800d380:      0800d2e9        .word   0x0800d2e9
+
+0800d384 <__cxa_throw>:
+ 800d384:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 800d386:      4605            mov     r5, r0
+ 800d388:      460e            mov     r6, r1
+ 800d38a:      4617            mov     r7, r2
+ 800d38c:      f7ff fc70       bl      800cc70 <__cxa_get_globals>
+ 800d390:      6843            ldr     r3, [r0, #4]
+ 800d392:      4604            mov     r4, r0
+ 800d394:      3301            adds    r3, #1
+ 800d396:      463a            mov     r2, r7
+ 800d398:      4631            mov     r1, r6
+ 800d39a:      6063            str     r3, [r4, #4]
+ 800d39c:      4628            mov     r0, r5
+ 800d39e:      f7ff ffc5       bl      800d32c <__cxa_init_primary_exception>
+ 800d3a2:      4604            mov     r4, r0
+ 800d3a4:      2301            movs    r3, #1
+ 800d3a6:      f844 3b28       str.w   r3, [r4], #40
+ 800d3aa:      4620            mov     r0, r4
+ 800d3ac:      f7fa fc0a       bl      8007bc4 <_Unwind_RaiseException>
+ 800d3b0:      4620            mov     r0, r4
+ 800d3b2:      f000 f83b       bl      800d42c <__cxa_begin_catch>
+ 800d3b6:      f7ff facb       bl      800c950 <_ZSt9terminatev>
+ 800d3ba:      bf00            nop
+
+0800d3bc <__cxa_rethrow>:
+ 800d3bc:      b510            push    {r4, lr}
+ 800d3be:      f7ff fc57       bl      800cc70 <__cxa_get_globals>
+ 800d3c2:      e9d0 4200       ldrd    r4, r2, [r0]
+ 800d3c6:      3201            adds    r2, #1
+ 800d3c8:      6042            str     r2, [r0, #4]
+ 800d3ca:      b164            cbz     r4, 800d3e6 <__cxa_rethrow+0x2a>
+ 800d3cc:      f894 2020       ldrb.w  r2, [r4, #32]
+ 800d3d0:      2a47            cmp     r2, #71 ; 0x47
+ 800d3d2:      d00a            beq.n   800d3ea <__cxa_rethrow+0x2e>
+ 800d3d4:      2200            movs    r2, #0
+ 800d3d6:      6002            str     r2, [r0, #0]
+ 800d3d8:      3420            adds    r4, #32
+ 800d3da:      4620            mov     r0, r4
+ 800d3dc:      f7fa fc16       bl      8007c0c <_Unwind_Resume_or_Rethrow>
+ 800d3e0:      4620            mov     r0, r4
+ 800d3e2:      f000 f823       bl      800d42c <__cxa_begin_catch>
+ 800d3e6:      f7ff fab3       bl      800c950 <_ZSt9terminatev>
+ 800d3ea:      f894 2021       ldrb.w  r2, [r4, #33]   ; 0x21
+ 800d3ee:      2a4e            cmp     r2, #78 ; 0x4e
+ 800d3f0:      d1f0            bne.n   800d3d4 <__cxa_rethrow+0x18>
+ 800d3f2:      f894 2022       ldrb.w  r2, [r4, #34]   ; 0x22
+ 800d3f6:      2a55            cmp     r2, #85 ; 0x55
+ 800d3f8:      d1ec            bne.n   800d3d4 <__cxa_rethrow+0x18>
+ 800d3fa:      f894 2023       ldrb.w  r2, [r4, #35]   ; 0x23
+ 800d3fe:      2a43            cmp     r2, #67 ; 0x43
+ 800d400:      d1e8            bne.n   800d3d4 <__cxa_rethrow+0x18>
+ 800d402:      f894 2024       ldrb.w  r2, [r4, #36]   ; 0x24
+ 800d406:      2a43            cmp     r2, #67 ; 0x43
+ 800d408:      d1e4            bne.n   800d3d4 <__cxa_rethrow+0x18>
+ 800d40a:      f894 2025       ldrb.w  r2, [r4, #37]   ; 0x25
+ 800d40e:      2a2b            cmp     r2, #43 ; 0x2b
+ 800d410:      d1e0            bne.n   800d3d4 <__cxa_rethrow+0x18>
+ 800d412:      f894 2026       ldrb.w  r2, [r4, #38]   ; 0x26
+ 800d416:      2a2b            cmp     r2, #43 ; 0x2b
+ 800d418:      d1dc            bne.n   800d3d4 <__cxa_rethrow+0x18>
+ 800d41a:      f894 2027       ldrb.w  r2, [r4, #39]   ; 0x27
+ 800d41e:      2a01            cmp     r2, #1
+ 800d420:      d8d8            bhi.n   800d3d4 <__cxa_rethrow+0x18>
+ 800d422:      6962            ldr     r2, [r4, #20]
+ 800d424:      4252            negs    r2, r2
+ 800d426:      6162            str     r2, [r4, #20]
+ 800d428:      e7d6            b.n     800d3d8 <__cxa_rethrow+0x1c>
+ 800d42a:      bf00            nop
+
+0800d42c <__cxa_begin_catch>:
+ 800d42c:      b538            push    {r3, r4, r5, lr}
+ 800d42e:      4604            mov     r4, r0
+ 800d430:      f7ff fc1e       bl      800cc70 <__cxa_get_globals>
+ 800d434:      7822            ldrb    r2, [r4, #0]
+ 800d436:      6803            ldr     r3, [r0, #0]
+ 800d438:      2a47            cmp     r2, #71 ; 0x47
+ 800d43a:      f1a4 0120       sub.w   r1, r4, #32
+ 800d43e:      d004            beq.n   800d44a <__cxa_begin_catch+0x1e>
+ 800d440:      bb8b            cbnz    r3, 800d4a6 <__cxa_begin_catch+0x7a>
+ 800d442:      461c            mov     r4, r3
+ 800d444:      6001            str     r1, [r0, #0]
+ 800d446:      4620            mov     r0, r4
+ 800d448:      bd38            pop     {r3, r4, r5, pc}
+ 800d44a:      7862            ldrb    r2, [r4, #1]
+ 800d44c:      2a4e            cmp     r2, #78 ; 0x4e
+ 800d44e:      d1f7            bne.n   800d440 <__cxa_begin_catch+0x14>
+ 800d450:      78a2            ldrb    r2, [r4, #2]
+ 800d452:      2a55            cmp     r2, #85 ; 0x55
+ 800d454:      d1f4            bne.n   800d440 <__cxa_begin_catch+0x14>
+ 800d456:      78e2            ldrb    r2, [r4, #3]
+ 800d458:      2a43            cmp     r2, #67 ; 0x43
+ 800d45a:      d1f1            bne.n   800d440 <__cxa_begin_catch+0x14>
+ 800d45c:      7922            ldrb    r2, [r4, #4]
+ 800d45e:      2a43            cmp     r2, #67 ; 0x43
+ 800d460:      d1ee            bne.n   800d440 <__cxa_begin_catch+0x14>
+ 800d462:      7962            ldrb    r2, [r4, #5]
+ 800d464:      2a2b            cmp     r2, #43 ; 0x2b
+ 800d466:      d1eb            bne.n   800d440 <__cxa_begin_catch+0x14>
+ 800d468:      79a2            ldrb    r2, [r4, #6]
+ 800d46a:      2a2b            cmp     r2, #43 ; 0x2b
+ 800d46c:      d1e8            bne.n   800d440 <__cxa_begin_catch+0x14>
+ 800d46e:      79e2            ldrb    r2, [r4, #7]
+ 800d470:      2a01            cmp     r2, #1
+ 800d472:      d8e5            bhi.n   800d440 <__cxa_begin_catch+0x14>
+ 800d474:      f854 2c0c       ldr.w   r2, [r4, #-12]
+ 800d478:      2a00            cmp     r2, #0
+ 800d47a:      db11            blt.n   800d4a0 <__cxa_begin_catch+0x74>
+ 800d47c:      3201            adds    r2, #1
+ 800d47e:      6845            ldr     r5, [r0, #4]
+ 800d480:      f844 2c0c       str.w   r2, [r4, #-12]
+ 800d484:      428b            cmp     r3, r1
+ 800d486:      f105 35ff       add.w   r5, r5, #4294967295     ; 0xffffffff
+ 800d48a:      6045            str     r5, [r0, #4]
+ 800d48c:      bf1c            itt     ne
+ 800d48e:      f844 3c10       strne.w r3, [r4, #-16]
+ 800d492:      6001            strne   r1, [r0, #0]
+ 800d494:      4620            mov     r0, r4
+ 800d496:      6a64            ldr     r4, [r4, #36]   ; 0x24
+ 800d498:      f7f9 ffe2       bl      8007460 <_Unwind_Complete>
+ 800d49c:      4620            mov     r0, r4
+ 800d49e:      bd38            pop     {r3, r4, r5, pc}
+ 800d4a0:      f1c2 0201       rsb     r2, r2, #1
+ 800d4a4:      e7eb            b.n     800d47e <__cxa_begin_catch+0x52>
+ 800d4a6:      f7ff fa53       bl      800c950 <_ZSt9terminatev>
+ 800d4aa:      bf00            nop
+
+0800d4ac <__cxa_end_catch>:
+ 800d4ac:      b508            push    {r3, lr}
+ 800d4ae:      f7ff fbdb       bl      800cc68 <__cxa_get_globals_fast>
+ 800d4b2:      4602            mov     r2, r0
+ 800d4b4:      6800            ldr     r0, [r0, #0]
+ 800d4b6:      b370            cbz     r0, 800d516 <__cxa_end_catch+0x6a>
+ 800d4b8:      f890 3020       ldrb.w  r3, [r0, #32]
+ 800d4bc:      2b47            cmp     r3, #71 ; 0x47
+ 800d4be:      d006            beq.n   800d4ce <__cxa_end_catch+0x22>
+ 800d4c0:      2300            movs    r3, #0
+ 800d4c2:      6013            str     r3, [r2, #0]
+ 800d4c4:      3020            adds    r0, #32
+ 800d4c6:      e8bd 4008       ldmia.w sp!, {r3, lr}
+ 800d4ca:      f7f9 bfcb       b.w     8007464 <_Unwind_DeleteException>
+ 800d4ce:      f890 3021       ldrb.w  r3, [r0, #33]   ; 0x21
+ 800d4d2:      2b4e            cmp     r3, #78 ; 0x4e
+ 800d4d4:      d1f4            bne.n   800d4c0 <__cxa_end_catch+0x14>
+ 800d4d6:      f890 3022       ldrb.w  r3, [r0, #34]   ; 0x22
+ 800d4da:      2b55            cmp     r3, #85 ; 0x55
+ 800d4dc:      d1f0            bne.n   800d4c0 <__cxa_end_catch+0x14>
+ 800d4de:      f890 3023       ldrb.w  r3, [r0, #35]   ; 0x23
+ 800d4e2:      2b43            cmp     r3, #67 ; 0x43
+ 800d4e4:      d1ec            bne.n   800d4c0 <__cxa_end_catch+0x14>
+ 800d4e6:      f890 3024       ldrb.w  r3, [r0, #36]   ; 0x24
+ 800d4ea:      2b43            cmp     r3, #67 ; 0x43
+ 800d4ec:      d1e8            bne.n   800d4c0 <__cxa_end_catch+0x14>
+ 800d4ee:      f890 3025       ldrb.w  r3, [r0, #37]   ; 0x25
+ 800d4f2:      2b2b            cmp     r3, #43 ; 0x2b
+ 800d4f4:      d1e4            bne.n   800d4c0 <__cxa_end_catch+0x14>
+ 800d4f6:      f890 3026       ldrb.w  r3, [r0, #38]   ; 0x26
+ 800d4fa:      2b2b            cmp     r3, #43 ; 0x2b
+ 800d4fc:      d1e0            bne.n   800d4c0 <__cxa_end_catch+0x14>
+ 800d4fe:      f890 3027       ldrb.w  r3, [r0, #39]   ; 0x27
+ 800d502:      2b01            cmp     r3, #1
+ 800d504:      d8dc            bhi.n   800d4c0 <__cxa_end_catch+0x14>
+ 800d506:      6943            ldr     r3, [r0, #20]
+ 800d508:      2b00            cmp     r3, #0
+ 800d50a:      db05            blt.n   800d518 <__cxa_end_catch+0x6c>
+ 800d50c:      3b01            subs    r3, #1
+ 800d50e:      2b00            cmp     r3, #0
+ 800d510:      d007            beq.n   800d522 <__cxa_end_catch+0x76>
+ 800d512:      db0d            blt.n   800d530 <__cxa_end_catch+0x84>
+ 800d514:      6143            str     r3, [r0, #20]
+ 800d516:      bd08            pop     {r3, pc}
+ 800d518:      3301            adds    r3, #1
+ 800d51a:      d1fb            bne.n   800d514 <__cxa_end_catch+0x68>
+ 800d51c:      6901            ldr     r1, [r0, #16]
+ 800d51e:      6011            str     r1, [r2, #0]
+ 800d520:      e7f8            b.n     800d514 <__cxa_end_catch+0x68>
+ 800d522:      6903            ldr     r3, [r0, #16]
+ 800d524:      6013            str     r3, [r2, #0]
+ 800d526:      3020            adds    r0, #32
+ 800d528:      e8bd 4008       ldmia.w sp!, {r3, lr}
+ 800d52c:      f7f9 bf9a       b.w     8007464 <_Unwind_DeleteException>
+ 800d530:      f7ff fa0e       bl      800c950 <_ZSt9terminatev>
+
+0800d534 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4>:
+ 800d534:      b4f0            push    {r4, r5, r6, r7}
+ 800d536:      4c22            ldr     r4, [pc, #136]  ; (800d5c0 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x8c>)
+ 800d538:      6863            ldr     r3, [r4, #4]
+ 800d53a:      f1a0 0608       sub.w   r6, r0, #8
+ 800d53e:      b31b            cbz     r3, 800d588 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x54>
+ 800d540:      f850 7c08       ldr.w   r7, [r0, #-8]
+ 800d544:      19f5            adds    r5, r6, r7
+ 800d546:      42ab            cmp     r3, r5
+ 800d548:      d81e            bhi.n   800d588 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x54>
+ 800d54a:      d022            beq.n   800d592 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x5e>
+ 800d54c:      6859            ldr     r1, [r3, #4]
+ 800d54e:      2900            cmp     r1, #0
+ 800d550:      d031            beq.n   800d5b6 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x82>
+ 800d552:      428d            cmp     r5, r1
+ 800d554:      d303            bcc.n   800d55e <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x2a>
+ 800d556:      e02e            b.n     800d5b6 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x82>
+ 800d558:      4295            cmp     r5, r2
+ 800d55a:      d205            bcs.n   800d568 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x34>
+ 800d55c:      4611            mov     r1, r2
+ 800d55e:      684a            ldr     r2, [r1, #4]
+ 800d560:      1d1c            adds    r4, r3, #4
+ 800d562:      460b            mov     r3, r1
+ 800d564:      2a00            cmp     r2, #0
+ 800d566:      d1f7            bne.n   800d558 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x24>
+ 800d568:      4295            cmp     r5, r2
+ 800d56a:      d01c            beq.n   800d5a6 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x72>
+ 800d56c:      6823            ldr     r3, [r4, #0]
+ 800d56e:      681a            ldr     r2, [r3, #0]
+ 800d570:      1899            adds    r1, r3, r2
+ 800d572:      428e            cmp     r6, r1
+ 800d574:      d01c            beq.n   800d5b0 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x7c>
+ 800d576:      685b            ldr     r3, [r3, #4]
+ 800d578:      f840 3c04       str.w   r3, [r0, #-4]
+ 800d57c:      6823            ldr     r3, [r4, #0]
+ 800d57e:      f840 7c08       str.w   r7, [r0, #-8]
+ 800d582:      605e            str     r6, [r3, #4]
+ 800d584:      bcf0            pop     {r4, r5, r6, r7}
+ 800d586:      4770            bx      lr
+ 800d588:      f840 3c04       str.w   r3, [r0, #-4]
+ 800d58c:      6066            str     r6, [r4, #4]
+ 800d58e:      bcf0            pop     {r4, r5, r6, r7}
+ 800d590:      4770            bx      lr
+ 800d592:      e9d3 2300       ldrd    r2, r3, [r3]
+ 800d596:      4417            add     r7, r2
+ 800d598:      f840 7c08       str.w   r7, [r0, #-8]
+ 800d59c:      f840 3c04       str.w   r3, [r0, #-4]
+ 800d5a0:      6066            str     r6, [r4, #4]
+ 800d5a2:      bcf0            pop     {r4, r5, r6, r7}
+ 800d5a4:      4770            bx      lr
+ 800d5a6:      e9d5 3200       ldrd    r3, r2, [r5]
+ 800d5aa:      604a            str     r2, [r1, #4]
+ 800d5ac:      441f            add     r7, r3
+ 800d5ae:      e7dd            b.n     800d56c <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x38>
+ 800d5b0:      4417            add     r7, r2
+ 800d5b2:      601f            str     r7, [r3, #0]
+ 800d5b4:      e7eb            b.n     800d58e <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x5a>
+ 800d5b6:      460a            mov     r2, r1
+ 800d5b8:      3404            adds    r4, #4
+ 800d5ba:      4619            mov     r1, r3
+ 800d5bc:      e7d4            b.n     800d568 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4+0x34>
+ 800d5be:      bf00            nop
+ 800d5c0:      20000ab0        .word   0x20000ab0
+
+0800d5c4 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5>:
+ 800d5c4:      b430            push    {r4, r5}
+ 800d5c6:      4c17            ldr     r4, [pc, #92]   ; (800d624 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x60>)
+ 800d5c8:      f100 0208       add.w   r2, r0, #8
+ 800d5cc:      6863            ldr     r3, [r4, #4]
+ 800d5ce:      2a08            cmp     r2, #8
+ 800d5d0:      bf38            it      cc
+ 800d5d2:      2208            movcc   r2, #8
+ 800d5d4:      b303            cbz     r3, 800d618 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x54>
+ 800d5d6:      3207            adds    r2, #7
+ 800d5d8:      6819            ldr     r1, [r3, #0]
+ 800d5da:      f022 0207       bic.w   r2, r2, #7
+ 800d5de:      428a            cmp     r2, r1
+ 800d5e0:      d804            bhi.n   800d5ec <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x28>
+ 800d5e2:      e01b            b.n     800d61c <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x58>
+ 800d5e4:      6801            ldr     r1, [r0, #0]
+ 800d5e6:      428a            cmp     r2, r1
+ 800d5e8:      d905            bls.n   800d5f6 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x32>
+ 800d5ea:      4603            mov     r3, r0
+ 800d5ec:      6858            ldr     r0, [r3, #4]
+ 800d5ee:      2800            cmp     r0, #0
+ 800d5f0:      d1f8            bne.n   800d5e4 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x20>
+ 800d5f2:      bc30            pop     {r4, r5}
+ 800d5f4:      4770            bx      lr
+ 800d5f6:      3304            adds    r3, #4
+ 800d5f8:      1a8c            subs    r4, r1, r2
+ 800d5fa:      2c07            cmp     r4, #7
+ 800d5fc:      6845            ldr     r5, [r0, #4]
+ 800d5fe:      d908            bls.n   800d612 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x4e>
+ 800d600:      1881            adds    r1, r0, r2
+ 800d602:      604d            str     r5, [r1, #4]
+ 800d604:      5084            str     r4, [r0, r2]
+ 800d606:      6818            ldr     r0, [r3, #0]
+ 800d608:      6002            str     r2, [r0, #0]
+ 800d60a:      6019            str     r1, [r3, #0]
+ 800d60c:      3008            adds    r0, #8
+ 800d60e:      bc30            pop     {r4, r5}
+ 800d610:      4770            bx      lr
+ 800d612:      6001            str     r1, [r0, #0]
+ 800d614:      601d            str     r5, [r3, #0]
+ 800d616:      e7f9            b.n     800d60c <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x48>
+ 800d618:      4618            mov     r0, r3
+ 800d61a:      e7ea            b.n     800d5f2 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x2e>
+ 800d61c:      4618            mov     r0, r3
+ 800d61e:      1d23            adds    r3, r4, #4
+ 800d620:      e7ea            b.n     800d5f8 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5+0x34>
+ 800d622:      bf00            nop
+ 800d624:      20000ab0        .word   0x20000ab0
+
+0800d628 <__cxa_allocate_exception>:
+ 800d628:      b510            push    {r4, lr}
+ 800d62a:      f100 0480       add.w   r4, r0, #128    ; 0x80
+ 800d62e:      4620            mov     r0, r4
+ 800d630:      f000 fc4c       bl      800decc <malloc>
+ 800d634:      b138            cbz     r0, 800d646 <__cxa_allocate_exception+0x1e>
+ 800d636:      4603            mov     r3, r0
+ 800d638:      2280            movs    r2, #128        ; 0x80
+ 800d63a:      2100            movs    r1, #0
+ 800d63c:      4618            mov     r0, r3
+ 800d63e:      f000 febe       bl      800e3be <memset>
+ 800d642:      3080            adds    r0, #128        ; 0x80
+ 800d644:      bd10            pop     {r4, pc}
+ 800d646:      4620            mov     r0, r4
+ 800d648:      f7ff ffbc       bl      800d5c4 <_ZN12_GLOBAL__N_14pool8allocateEj.constprop.5>
+ 800d64c:      4603            mov     r3, r0
+ 800d64e:      2800            cmp     r0, #0
+ 800d650:      d1f2            bne.n   800d638 <__cxa_allocate_exception+0x10>
+ 800d652:      f7ff f97d       bl      800c950 <_ZSt9terminatev>
+ 800d656:      bf00            nop
+
+0800d658 <__cxa_free_exception>:
+ 800d658:      4a06            ldr     r2, [pc, #24]   ; (800d674 <__cxa_free_exception+0x1c>)
+ 800d65a:      6893            ldr     r3, [r2, #8]
+ 800d65c:      3880            subs    r0, #128        ; 0x80
+ 800d65e:      4298            cmp     r0, r3
+ 800d660:      d903            bls.n   800d66a <__cxa_free_exception+0x12>
+ 800d662:      68d2            ldr     r2, [r2, #12]
+ 800d664:      4413            add     r3, r2
+ 800d666:      4298            cmp     r0, r3
+ 800d668:      d301            bcc.n   800d66e <__cxa_free_exception+0x16>
+ 800d66a:      f000 bc37       b.w     800dedc <free>
+ 800d66e:      f7ff bf61       b.w     800d534 <_ZN12_GLOBAL__N_14pool4freeEPv.constprop.4>
+ 800d672:      bf00            nop
+ 800d674:      20000ab0        .word   0x20000ab0
+
+0800d678 <_GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv>:
+ 800d678:      b538            push    {r3, r4, r5, lr}
+ 800d67a:      4c08            ldr     r4, [pc, #32]   ; (800d69c <_GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv+0x24>)
+ 800d67c:      f44f 651e       mov.w   r5, #2528       ; 0x9e0
+ 800d680:      4628            mov     r0, r5
+ 800d682:      60e5            str     r5, [r4, #12]
+ 800d684:      f000 fc22       bl      800decc <malloc>
+ 800d688:      60a0            str     r0, [r4, #8]
+ 800d68a:      b120            cbz     r0, 800d696 <_GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv+0x1e>
+ 800d68c:      2300            movs    r3, #0
+ 800d68e:      6060            str     r0, [r4, #4]
+ 800d690:      e9c0 5300       strd    r5, r3, [r0]
+ 800d694:      bd38            pop     {r3, r4, r5, pc}
+ 800d696:      60e0            str     r0, [r4, #12]
+ 800d698:      6060            str     r0, [r4, #4]
+ 800d69a:      bd38            pop     {r3, r4, r5, pc}
+ 800d69c:      20000ab0        .word   0x20000ab0
+
+0800d6a0 <_ZNSt13bad_exceptionD1Ev>:
+ 800d6a0:      4770            bx      lr
+ 800d6a2:      bf00            nop
+
+0800d6a4 <_ZGTtNKSt13bad_exception4whatEv>:
+ 800d6a4:      4800            ldr     r0, [pc, #0]    ; (800d6a8 <_ZGTtNKSt13bad_exception4whatEv+0x4>)
+ 800d6a6:      4770            bx      lr
+ 800d6a8:      080123ac        .word   0x080123ac
+
+0800d6ac <_ZNSt13bad_exceptionD0Ev>:
+ 800d6ac:      b510            push    {r4, lr}
+ 800d6ae:      2104            movs    r1, #4
+ 800d6b0:      4604            mov     r4, r0
+ 800d6b2:      f000 f803       bl      800d6bc <_ZdlPvj>
+ 800d6b6:      4620            mov     r0, r4
+ 800d6b8:      bd10            pop     {r4, pc}
+ 800d6ba:      bf00            nop
+
+0800d6bc <_ZdlPvj>:
+ 800d6bc:      f000 b9a0       b.w     800da00 <_ZdlPv>
+
+0800d6c0 <_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv>:
+ 800d6c0:      b570            push    {r4, r5, r6, lr}
+ 800d6c2:      6803            ldr     r3, [r0, #0]
+ 800d6c4:      b084            sub     sp, #16
+ 800d6c6:      2400            movs    r4, #0
+ 800d6c8:      699e            ldr     r6, [r3, #24]
+ 800d6ca:      9400            str     r4, [sp, #0]
+ 800d6cc:      2310            movs    r3, #16
+ 800d6ce:      4615            mov     r5, r2
+ 800d6d0:      e9cd 3402       strd    r3, r4, [sp, #8]
+ 800d6d4:      6812            ldr     r2, [r2, #0]
+ 800d6d6:      f88d 4004       strb.w  r4, [sp, #4]
+ 800d6da:      466b            mov     r3, sp
+ 800d6dc:      47b0            blx     r6
+ 800d6de:      f89d 3004       ldrb.w  r3, [sp, #4]
+ 800d6e2:      f003 0306       and.w   r3, r3, #6
+ 800d6e6:      2b06            cmp     r3, #6
+ 800d6e8:      bf03            ittte   eq
+ 800d6ea:      9b00            ldreq   r3, [sp, #0]
+ 800d6ec:      602b            streq   r3, [r5, #0]
+ 800d6ee:      2001            moveq   r0, #1
+ 800d6f0:      4620            movne   r0, r4
+ 800d6f2:      b004            add     sp, #16
+ 800d6f4:      bd70            pop     {r4, r5, r6, pc}
+ 800d6f6:      bf00            nop
+
+0800d6f8 <_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_>:
+ 800d6f8:      9800            ldr     r0, [sp, #0]
+ 800d6fa:      4290            cmp     r0, r2
+ 800d6fc:      bf0c            ite     eq
+ 800d6fe:      2006            moveq   r0, #6
+ 800d700:      2001            movne   r0, #1
+ 800d702:      4770            bx      lr
+
+0800d704 <_ZN10__cxxabiv117__class_type_infoD1Ev>:
+ 800d704:      b510            push    {r4, lr}
+ 800d706:      4b03            ldr     r3, [pc, #12]   ; (800d714 <_ZN10__cxxabiv117__class_type_infoD1Ev+0x10>)
+ 800d708:      6003            str     r3, [r0, #0]
+ 800d70a:      4604            mov     r4, r0
+ 800d70c:      f000 f97a       bl      800da04 <_ZNSt9type_infoD1Ev>
+ 800d710:      4620            mov     r0, r4
+ 800d712:      bd10            pop     {r4, pc}
+ 800d714:      08012498        .word   0x08012498
+
+0800d718 <_ZN10__cxxabiv117__class_type_infoD0Ev>:
+ 800d718:      b510            push    {r4, lr}
+ 800d71a:      4b05            ldr     r3, [pc, #20]   ; (800d730 <_ZN10__cxxabiv117__class_type_infoD0Ev+0x18>)
+ 800d71c:      6003            str     r3, [r0, #0]
+ 800d71e:      4604            mov     r4, r0
+ 800d720:      f000 f970       bl      800da04 <_ZNSt9type_infoD1Ev>
+ 800d724:      4620            mov     r0, r4
+ 800d726:      2108            movs    r1, #8
+ 800d728:      f7ff ffc8       bl      800d6bc <_ZdlPvj>
+ 800d72c:      4620            mov     r0, r4
+ 800d72e:      bd10            pop     {r4, pc}
+ 800d730:      08012498        .word   0x08012498
+
+0800d734 <_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE>:
+ 800d734:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 800d738:      e9dd 1408       ldrd    r1, r4, [sp, #32]
+ 800d73c:      9d06            ldr     r5, [sp, #24]
+ 800d73e:      428d            cmp     r5, r1
+ 800d740:      4690            mov     r8, r2
+ 800d742:      461f            mov     r7, r3
+ 800d744:      4606            mov     r6, r0
+ 800d746:      d00c            beq.n   800d762 <_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE+0x2e>
+ 800d748:      4639            mov     r1, r7
+ 800d74a:      4630            mov     r0, r6
+ 800d74c:      f000 f95e       bl      800da0c <_ZNKSt9type_infoeqERKS_>
+ 800d750:      b120            cbz     r0, 800d75c <_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE+0x28>
+ 800d752:      2301            movs    r3, #1
+ 800d754:      6025            str     r5, [r4, #0]
+ 800d756:      f884 8004       strb.w  r8, [r4, #4]
+ 800d75a:      71a3            strb    r3, [r4, #6]
+ 800d75c:      2000            movs    r0, #0
+ 800d75e:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800d762:      9907            ldr     r1, [sp, #28]
+ 800d764:      f000 f952       bl      800da0c <_ZNKSt9type_infoeqERKS_>
+ 800d768:      2800            cmp     r0, #0
+ 800d76a:      d0ed            beq.n   800d748 <_ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE+0x14>
+ 800d76c:      f884 8005       strb.w  r8, [r4, #5]
+ 800d770:      2000            movs    r0, #0
+ 800d772:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800d776:      bf00            nop
+
+0800d778 <_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE>:
+ 800d778:      b538            push    {r3, r4, r5, lr}
+ 800d77a:      4615            mov     r5, r2
+ 800d77c:      461c            mov     r4, r3
+ 800d77e:      f000 f945       bl      800da0c <_ZNKSt9type_infoeqERKS_>
+ 800d782:      b120            cbz     r0, 800d78e <_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE+0x16>
+ 800d784:      2208            movs    r2, #8
+ 800d786:      2306            movs    r3, #6
+ 800d788:      6025            str     r5, [r4, #0]
+ 800d78a:      60e2            str     r2, [r4, #12]
+ 800d78c:      7123            strb    r3, [r4, #4]
+ 800d78e:      bd38            pop     {r3, r4, r5, pc}
+
+0800d790 <_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj>:
+ 800d790:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 800d794:      4617            mov     r7, r2
+ 800d796:      461c            mov     r4, r3
+ 800d798:      4606            mov     r6, r0
+ 800d79a:      460d            mov     r5, r1
+ 800d79c:      f000 f936       bl      800da0c <_ZNKSt9type_infoeqERKS_>
+ 800d7a0:      b908            cbnz    r0, 800d7a6 <_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj+0x16>
+ 800d7a2:      2c03            cmp     r4, #3
+ 800d7a4:      d901            bls.n   800d7aa <_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj+0x1a>
+ 800d7a6:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800d7aa:      682b            ldr     r3, [r5, #0]
+ 800d7ac:      463a            mov     r2, r7
+ 800d7ae:      4631            mov     r1, r6
+ 800d7b0:      4628            mov     r0, r5
+ 800d7b2:      695b            ldr     r3, [r3, #20]
+ 800d7b4:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 800d7b8:      4718            bx      r3
+ 800d7ba:      bf00            nop
+
+0800d7bc <_ZN9__gnu_cxx27__verbose_terminate_handlerEv>:
+ 800d7bc:      b570            push    {r4, r5, r6, lr}
+ 800d7be:      4b3c            ldr     r3, [pc, #240]  ; (800d8b0 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xf4>)
+ 800d7c0:      781a            ldrb    r2, [r3, #0]
+ 800d7c2:      b082            sub     sp, #8
+ 800d7c4:      2a00            cmp     r2, #0
+ 800d7c6:      d135            bne.n   800d834 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x78>
+ 800d7c8:      2401            movs    r4, #1
+ 800d7ca:      701c            strb    r4, [r3, #0]
+ 800d7cc:      f000 f87e       bl      800d8cc <__cxa_current_exception_type>
+ 800d7d0:      2800            cmp     r0, #0
+ 800d7d2:      d03d            beq.n   800d850 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x94>
+ 800d7d4:      6844            ldr     r4, [r0, #4]
+ 800d7d6:      4d37            ldr     r5, [pc, #220]  ; (800d8b4 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xf8>)
+ 800d7d8:      7823            ldrb    r3, [r4, #0]
+ 800d7da:      2b2a            cmp     r3, #42 ; 0x2a
+ 800d7dc:      ab02            add     r3, sp, #8
+ 800d7de:      f04f 32ff       mov.w   r2, #4294967295 ; 0xffffffff
+ 800d7e2:      bf08            it      eq
+ 800d7e4:      3401            addeq   r4, #1
+ 800d7e6:      f843 2d04       str.w   r2, [r3, #-4]!
+ 800d7ea:      2200            movs    r2, #0
+ 800d7ec:      4611            mov     r1, r2
+ 800d7ee:      4620            mov     r0, r4
+ 800d7f0:      f7f9 fa1e       bl      8006c30 <__cxa_demangle>
+ 800d7f4:      682b            ldr     r3, [r5, #0]
+ 800d7f6:      4606            mov     r6, r0
+ 800d7f8:      68db            ldr     r3, [r3, #12]
+ 800d7fa:      482f            ldr     r0, [pc, #188]  ; (800d8b8 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xfc>)
+ 800d7fc:      2230            movs    r2, #48 ; 0x30
+ 800d7fe:      2101            movs    r1, #1
+ 800d800:      f000 fb2e       bl      800de60 <fwrite>
+ 800d804:      9b01            ldr     r3, [sp, #4]
+ 800d806:      b17b            cbz     r3, 800d828 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x6c>
+ 800d808:      682b            ldr     r3, [r5, #0]
+ 800d80a:      4620            mov     r0, r4
+ 800d80c:      68d9            ldr     r1, [r3, #12]
+ 800d80e:      f000 f987       bl      800db20 <fputs>
+ 800d812:      682b            ldr     r3, [r5, #0]
+ 800d814:      4829            ldr     r0, [pc, #164]  ; (800d8bc <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x100>)
+ 800d816:      68db            ldr     r3, [r3, #12]
+ 800d818:      2202            movs    r2, #2
+ 800d81a:      2101            movs    r1, #1
+ 800d81c:      f000 fb20       bl      800de60 <fwrite>
+ 800d820:      9b01            ldr     r3, [sp, #4]
+ 800d822:      b18b            cbz     r3, 800d848 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x8c>
+ 800d824:      f7ff fdca       bl      800d3bc <__cxa_rethrow>
+ 800d828:      682b            ldr     r3, [r5, #0]
+ 800d82a:      4630            mov     r0, r6
+ 800d82c:      68d9            ldr     r1, [r3, #12]
+ 800d82e:      f000 f977       bl      800db20 <fputs>
+ 800d832:      e7ee            b.n     800d812 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x56>
+ 800d834:      4b1f            ldr     r3, [pc, #124]  ; (800d8b4 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xf8>)
+ 800d836:      4822            ldr     r0, [pc, #136]  ; (800d8c0 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x104>)
+ 800d838:      681b            ldr     r3, [r3, #0]
+ 800d83a:      221d            movs    r2, #29
+ 800d83c:      68db            ldr     r3, [r3, #12]
+ 800d83e:      2101            movs    r1, #1
+ 800d840:      f000 fb0e       bl      800de60 <fwrite>
+ 800d844:      f000 f8f8       bl      800da38 <abort>
+ 800d848:      4630            mov     r0, r6
+ 800d84a:      f000 fb47       bl      800dedc <free>
+ 800d84e:      e7e9            b.n     800d824 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x68>
+ 800d850:      4b18            ldr     r3, [pc, #96]   ; (800d8b4 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xf8>)
+ 800d852:      481c            ldr     r0, [pc, #112]  ; (800d8c4 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x108>)
+ 800d854:      681b            ldr     r3, [r3, #0]
+ 800d856:      4621            mov     r1, r4
+ 800d858:      68db            ldr     r3, [r3, #12]
+ 800d85a:      222d            movs    r2, #45 ; 0x2d
+ 800d85c:      f000 fb00       bl      800de60 <fwrite>
+ 800d860:      f000 f8ea       bl      800da38 <abort>
+ 800d864:      2901            cmp     r1, #1
+ 800d866:      460c            mov     r4, r1
+ 800d868:      d119            bne.n   800d89e <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xe2>
+ 800d86a:      f7ff fddf       bl      800d42c <__cxa_begin_catch>
+ 800d86e:      6803            ldr     r3, [r0, #0]
+ 800d870:      689b            ldr     r3, [r3, #8]
+ 800d872:      4798            blx     r3
+ 800d874:      682b            ldr     r3, [r5, #0]
+ 800d876:      4606            mov     r6, r0
+ 800d878:      68db            ldr     r3, [r3, #12]
+ 800d87a:      4813            ldr     r0, [pc, #76]   ; (800d8c8 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x10c>)
+ 800d87c:      4621            mov     r1, r4
+ 800d87e:      220b            movs    r2, #11
+ 800d880:      f000 faee       bl      800de60 <fwrite>
+ 800d884:      682b            ldr     r3, [r5, #0]
+ 800d886:      4630            mov     r0, r6
+ 800d888:      68d9            ldr     r1, [r3, #12]
+ 800d88a:      f000 f949       bl      800db20 <fputs>
+ 800d88e:      682b            ldr     r3, [r5, #0]
+ 800d890:      200a            movs    r0, #10
+ 800d892:      68d9            ldr     r1, [r3, #12]
+ 800d894:      f000 f902       bl      800da9c <fputc>
+ 800d898:      f7ff fe08       bl      800d4ac <__cxa_end_catch>
+ 800d89c:      e7e0            b.n     800d860 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xa4>
+ 800d89e:      f7ff fdc5       bl      800d42c <__cxa_begin_catch>
+ 800d8a2:      f7ff fe03       bl      800d4ac <__cxa_end_catch>
+ 800d8a6:      e7db            b.n     800d860 <_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0xa4>
+ 800d8a8:      f7ff fe00       bl      800d4ac <__cxa_end_catch>
+ 800d8ac:      f7ff f914       bl      800cad8 <__cxa_end_cleanup>
+ 800d8b0:      20000ac0        .word   0x20000ac0
+ 800d8b4:      20000014        .word   0x20000014
+ 800d8b8:      080124dc        .word   0x080124dc
+ 800d8bc:      08012510        .word   0x08012510
+ 800d8c0:      080124bc        .word   0x080124bc
+ 800d8c4:      08012514        .word   0x08012514
+ 800d8c8:      08012544        .word   0x08012544
+
+0800d8cc <__cxa_current_exception_type>:
+ 800d8cc:      b508            push    {r3, lr}
+ 800d8ce:      f7ff f9cf       bl      800cc70 <__cxa_get_globals>
+ 800d8d2:      6800            ldr     r0, [r0, #0]
+ 800d8d4:      b130            cbz     r0, 800d8e4 <__cxa_current_exception_type+0x18>
+ 800d8d6:      f890 3027       ldrb.w  r3, [r0, #39]   ; 0x27
+ 800d8da:      6800            ldr     r0, [r0, #0]
+ 800d8dc:      2b01            cmp     r3, #1
+ 800d8de:      bf08            it      eq
+ 800d8e0:      f850 0c78       ldreq.w r0, [r0, #-120]
+ 800d8e4:      bd08            pop     {r3, pc}
+ 800d8e6:      bf00            nop
+
+0800d8e8 <_ZN10__cxxabiv120__si_class_type_infoD1Ev>:
+ 800d8e8:      b510            push    {r4, lr}
+ 800d8ea:      4b03            ldr     r3, [pc, #12]   ; (800d8f8 <_ZN10__cxxabiv120__si_class_type_infoD1Ev+0x10>)
+ 800d8ec:      6003            str     r3, [r0, #0]
+ 800d8ee:      4604            mov     r4, r0
+ 800d8f0:      f7ff ff08       bl      800d704 <_ZN10__cxxabiv117__class_type_infoD1Ev>
+ 800d8f4:      4620            mov     r0, r4
+ 800d8f6:      bd10            pop     {r4, pc}
+ 800d8f8:      08012df0        .word   0x08012df0
+
+0800d8fc <_ZN10__cxxabiv120__si_class_type_infoD0Ev>:
+ 800d8fc:      b510            push    {r4, lr}
+ 800d8fe:      4b05            ldr     r3, [pc, #20]   ; (800d914 <_ZN10__cxxabiv120__si_class_type_infoD0Ev+0x18>)
+ 800d900:      6003            str     r3, [r0, #0]
+ 800d902:      4604            mov     r4, r0
+ 800d904:      f7ff fefe       bl      800d704 <_ZN10__cxxabiv117__class_type_infoD1Ev>
+ 800d908:      4620            mov     r0, r4
+ 800d90a:      210c            movs    r1, #12
+ 800d90c:      f7ff fed6       bl      800d6bc <_ZdlPvj>
+ 800d910:      4620            mov     r0, r4
+ 800d912:      bd10            pop     {r4, pc}
+ 800d914:      08012df0        .word   0x08012df0
+
+0800d918 <_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_>:
+ 800d918:      b570            push    {r4, r5, r6, lr}
+ 800d91a:      b082            sub     sp, #8
+ 800d91c:      460e            mov     r6, r1
+ 800d91e:      9c06            ldr     r4, [sp, #24]
+ 800d920:      4294            cmp     r4, r2
+ 800d922:      4605            mov     r5, r0
+ 800d924:      d009            beq.n   800d93a <_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_+0x22>
+ 800d926:      68a8            ldr     r0, [r5, #8]
+ 800d928:      6805            ldr     r5, [r0, #0]
+ 800d92a:      9406            str     r4, [sp, #24]
+ 800d92c:      6a2c            ldr     r4, [r5, #32]
+ 800d92e:      4631            mov     r1, r6
+ 800d930:      46a4            mov     ip, r4
+ 800d932:      b002            add     sp, #8
+ 800d934:      e8bd 4070       ldmia.w sp!, {r4, r5, r6, lr}
+ 800d938:      4760            bx      ip
+ 800d93a:      4619            mov     r1, r3
+ 800d93c:      9201            str     r2, [sp, #4]
+ 800d93e:      9300            str     r3, [sp, #0]
+ 800d940:      f000 f864       bl      800da0c <_ZNKSt9type_infoeqERKS_>
+ 800d944:      e9dd 3200       ldrd    r3, r2, [sp]
+ 800d948:      2800            cmp     r0, #0
+ 800d94a:      d0ec            beq.n   800d926 <_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_+0xe>
+ 800d94c:      2006            movs    r0, #6
+ 800d94e:      b002            add     sp, #8
+ 800d950:      bd70            pop     {r4, r5, r6, pc}
+ 800d952:      bf00            nop
+
+0800d954 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE>:
+ 800d954:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800d958:      460e            mov     r6, r1
+ 800d95a:      b081            sub     sp, #4
+ 800d95c:      4619            mov     r1, r3
+ 800d95e:      461f            mov     r7, r3
+ 800d960:      4691            mov     r9, r2
+ 800d962:      4683            mov     fp, r0
+ 800d964:      e9dd 4a0a       ldrd    r4, sl, [sp, #40]       ; 0x28
+ 800d968:      e9dd 850c       ldrd    r8, r5, [sp, #48]       ; 0x30
+ 800d96c:      f000 f84e       bl      800da0c <_ZNKSt9type_infoeqERKS_>
+ 800d970:      b170            cbz     r0, 800d990 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE+0x3c>
+ 800d972:      2e00            cmp     r6, #0
+ 800d974:      602c            str     r4, [r5, #0]
+ 800d976:      f885 9004       strb.w  r9, [r5, #4]
+ 800d97a:      db1d            blt.n   800d9b8 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE+0x64>
+ 800d97c:      4434            add     r4, r6
+ 800d97e:      45a0            cmp     r8, r4
+ 800d980:      bf0c            ite     eq
+ 800d982:      2406            moveq   r4, #6
+ 800d984:      2401            movne   r4, #1
+ 800d986:      71ac            strb    r4, [r5, #6]
+ 800d988:      2000            movs    r0, #0
+ 800d98a:      b001            add     sp, #4
+ 800d98c:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800d990:      4544            cmp     r4, r8
+ 800d992:      d016            beq.n   800d9c2 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE+0x6e>
+ 800d994:      f8db 0008       ldr.w   r0, [fp, #8]
+ 800d998:      f8d0 c000       ldr.w   ip, [r0]
+ 800d99c:      e9cd 850c       strd    r8, r5, [sp, #48]       ; 0x30
+ 800d9a0:      e9cd 4a0a       strd    r4, sl, [sp, #40]       ; 0x28
+ 800d9a4:      f8dc 401c       ldr.w   r4, [ip, #28]
+ 800d9a8:      463b            mov     r3, r7
+ 800d9aa:      464a            mov     r2, r9
+ 800d9ac:      4631            mov     r1, r6
+ 800d9ae:      46a4            mov     ip, r4
+ 800d9b0:      b001            add     sp, #4
+ 800d9b2:      e8bd 4ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800d9b6:      4760            bx      ip
+ 800d9b8:      3602            adds    r6, #2
+ 800d9ba:      d1e5            bne.n   800d988 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE+0x34>
+ 800d9bc:      2301            movs    r3, #1
+ 800d9be:      71ab            strb    r3, [r5, #6]
+ 800d9c0:      e7e2            b.n     800d988 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE+0x34>
+ 800d9c2:      4651            mov     r1, sl
+ 800d9c4:      4658            mov     r0, fp
+ 800d9c6:      f000 f821       bl      800da0c <_ZNKSt9type_infoeqERKS_>
+ 800d9ca:      2800            cmp     r0, #0
+ 800d9cc:      d0e2            beq.n   800d994 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE+0x40>
+ 800d9ce:      f885 9005       strb.w  r9, [r5, #5]
+ 800d9d2:      e7d9            b.n     800d988 <_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE+0x34>
+
+0800d9d4 <_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE>:
+ 800d9d4:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 800d9d8:      4607            mov     r7, r0
+ 800d9da:      460c            mov     r4, r1
+ 800d9dc:      4615            mov     r5, r2
+ 800d9de:      461e            mov     r6, r3
+ 800d9e0:      f7ff feca       bl      800d778 <_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE>
+ 800d9e4:      b108            cbz     r0, 800d9ea <_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE+0x16>
+ 800d9e6:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800d9ea:      68b8            ldr     r0, [r7, #8]
+ 800d9ec:      6807            ldr     r7, [r0, #0]
+ 800d9ee:      4621            mov     r1, r4
+ 800d9f0:      69bc            ldr     r4, [r7, #24]
+ 800d9f2:      4633            mov     r3, r6
+ 800d9f4:      462a            mov     r2, r5
+ 800d9f6:      46a4            mov     ip, r4
+ 800d9f8:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 800d9fc:      4760            bx      ip
+ 800d9fe:      bf00            nop
+
+0800da00 <_ZdlPv>:
+ 800da00:      f000 ba6c       b.w     800dedc <free>
+
+0800da04 <_ZNSt9type_infoD1Ev>:
+ 800da04:      4770            bx      lr
+ 800da06:      bf00            nop
+
+0800da08 <_ZNKSt9type_info14__is_pointer_pEv>:
+ 800da08:      2000            movs    r0, #0
+ 800da0a:      4770            bx      lr
+
+0800da0c <_ZNKSt9type_infoeqERKS_>:
+ 800da0c:      4281            cmp     r1, r0
+ 800da0e:      d00f            beq.n   800da30 <_ZNKSt9type_infoeqERKS_+0x24>
+ 800da10:      b508            push    {r3, lr}
+ 800da12:      6840            ldr     r0, [r0, #4]
+ 800da14:      7803            ldrb    r3, [r0, #0]
+ 800da16:      2b2a            cmp     r3, #42 ; 0x2a
+ 800da18:      d00c            beq.n   800da34 <_ZNKSt9type_infoeqERKS_+0x28>
+ 800da1a:      6849            ldr     r1, [r1, #4]
+ 800da1c:      780b            ldrb    r3, [r1, #0]
+ 800da1e:      2b2a            cmp     r3, #42 ; 0x2a
+ 800da20:      bf08            it      eq
+ 800da22:      3101            addeq   r1, #1
+ 800da24:      f7f9 f9cc       bl      8006dc0 <strcmp>
+ 800da28:      fab0 f080       clz     r0, r0
+ 800da2c:      0940            lsrs    r0, r0, #5
+ 800da2e:      bd08            pop     {r3, pc}
+ 800da30:      2001            movs    r0, #1
+ 800da32:      4770            bx      lr
+ 800da34:      2000            movs    r0, #0
+ 800da36:      bd08            pop     {r3, pc}
+
+0800da38 <abort>:
+ 800da38:      b508            push    {r3, lr}
+ 800da3a:      2006            movs    r0, #6
+ 800da3c:      f000 fef2       bl      800e824 <raise>
+ 800da40:      2001            movs    r0, #1
+ 800da42:      f7fe fe63       bl      800c70c <_exit>
+       ...
+
+0800da48 <__errno>:
+ 800da48:      4b01            ldr     r3, [pc, #4]    ; (800da50 <__errno+0x8>)
+ 800da4a:      6818            ldr     r0, [r3, #0]
+ 800da4c:      4770            bx      lr
+ 800da4e:      bf00            nop
+ 800da50:      20000014        .word   0x20000014
+
+0800da54 <_fputc_r>:
+ 800da54:      b570            push    {r4, r5, r6, lr}
+ 800da56:      460e            mov     r6, r1
+ 800da58:      4614            mov     r4, r2
+ 800da5a:      4605            mov     r5, r0
+ 800da5c:      b118            cbz     r0, 800da66 <_fputc_r+0x12>
+ 800da5e:      6b83            ldr     r3, [r0, #56]   ; 0x38
+ 800da60:      b90b            cbnz    r3, 800da66 <_fputc_r+0x12>
+ 800da62:      f003 f8a7       bl      8010bb4 <__sinit>
+ 800da66:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800da68:      07d8            lsls    r0, r3, #31
+ 800da6a:      d405            bmi.n   800da78 <_fputc_r+0x24>
+ 800da6c:      89a3            ldrh    r3, [r4, #12]
+ 800da6e:      0599            lsls    r1, r3, #22
+ 800da70:      d402            bmi.n   800da78 <_fputc_r+0x24>
+ 800da72:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800da74:      f000 fa28       bl      800dec8 <__retarget_lock_acquire_recursive>
+ 800da78:      4622            mov     r2, r4
+ 800da7a:      4628            mov     r0, r5
+ 800da7c:      4631            mov     r1, r6
+ 800da7e:      f000 fcb3       bl      800e3e8 <_putc_r>
+ 800da82:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800da84:      07da            lsls    r2, r3, #31
+ 800da86:      4605            mov     r5, r0
+ 800da88:      d405            bmi.n   800da96 <_fputc_r+0x42>
+ 800da8a:      89a3            ldrh    r3, [r4, #12]
+ 800da8c:      059b            lsls    r3, r3, #22
+ 800da8e:      d402            bmi.n   800da96 <_fputc_r+0x42>
+ 800da90:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800da92:      f000 fa1a       bl      800deca <__retarget_lock_release_recursive>
+ 800da96:      4628            mov     r0, r5
+ 800da98:      bd70            pop     {r4, r5, r6, pc}
+       ...
+
+0800da9c <fputc>:
+ 800da9c:      4b02            ldr     r3, [pc, #8]    ; (800daa8 <fputc+0xc>)
+ 800da9e:      460a            mov     r2, r1
+ 800daa0:      4601            mov     r1, r0
+ 800daa2:      6818            ldr     r0, [r3, #0]
+ 800daa4:      f7ff bfd6       b.w     800da54 <_fputc_r>
+ 800daa8:      20000014        .word   0x20000014
+
+0800daac <_fputs_r>:
+ 800daac:      b530            push    {r4, r5, lr}
+ 800daae:      b087            sub     sp, #28
+ 800dab0:      4605            mov     r5, r0
+ 800dab2:      4608            mov     r0, r1
+ 800dab4:      4614            mov     r4, r2
+ 800dab6:      9101            str     r1, [sp, #4]
+ 800dab8:      f7f9 f98c       bl      8006dd4 <strlen>
+ 800dabc:      ab01            add     r3, sp, #4
+ 800dabe:      9303            str     r3, [sp, #12]
+ 800dac0:      2301            movs    r3, #1
+ 800dac2:      9005            str     r0, [sp, #20]
+ 800dac4:      9002            str     r0, [sp, #8]
+ 800dac6:      9304            str     r3, [sp, #16]
+ 800dac8:      b125            cbz     r5, 800dad4 <_fputs_r+0x28>
+ 800daca:      6bab            ldr     r3, [r5, #56]   ; 0x38
+ 800dacc:      b913            cbnz    r3, 800dad4 <_fputs_r+0x28>
+ 800dace:      4628            mov     r0, r5
+ 800dad0:      f003 f870       bl      8010bb4 <__sinit>
+ 800dad4:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800dad6:      07db            lsls    r3, r3, #31
+ 800dad8:      d405            bmi.n   800dae6 <_fputs_r+0x3a>
+ 800dada:      89a3            ldrh    r3, [r4, #12]
+ 800dadc:      0598            lsls    r0, r3, #22
+ 800dade:      d402            bmi.n   800dae6 <_fputs_r+0x3a>
+ 800dae0:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800dae2:      f000 f9f1       bl      800dec8 <__retarget_lock_acquire_recursive>
+ 800dae6:      f9b4 300c       ldrsh.w r3, [r4, #12]
+ 800daea:      0499            lsls    r1, r3, #18
+ 800daec:      d406            bmi.n   800dafc <_fputs_r+0x50>
+ 800daee:      f443 5300       orr.w   r3, r3, #8192   ; 0x2000
+ 800daf2:      81a3            strh    r3, [r4, #12]
+ 800daf4:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800daf6:      f423 5300       bic.w   r3, r3, #8192   ; 0x2000
+ 800dafa:      6663            str     r3, [r4, #100]  ; 0x64
+ 800dafc:      aa03            add     r2, sp, #12
+ 800dafe:      4628            mov     r0, r5
+ 800db00:      4621            mov     r1, r4
+ 800db02:      f000 f815       bl      800db30 <__sfvwrite_r>
+ 800db06:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800db08:      07da            lsls    r2, r3, #31
+ 800db0a:      4605            mov     r5, r0
+ 800db0c:      d405            bmi.n   800db1a <_fputs_r+0x6e>
+ 800db0e:      89a3            ldrh    r3, [r4, #12]
+ 800db10:      059b            lsls    r3, r3, #22
+ 800db12:      d402            bmi.n   800db1a <_fputs_r+0x6e>
+ 800db14:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800db16:      f000 f9d8       bl      800deca <__retarget_lock_release_recursive>
+ 800db1a:      4628            mov     r0, r5
+ 800db1c:      b007            add     sp, #28
+ 800db1e:      bd30            pop     {r4, r5, pc}
+
+0800db20 <fputs>:
+ 800db20:      4b02            ldr     r3, [pc, #8]    ; (800db2c <fputs+0xc>)
+ 800db22:      460a            mov     r2, r1
+ 800db24:      4601            mov     r1, r0
+ 800db26:      6818            ldr     r0, [r3, #0]
+ 800db28:      f7ff bfc0       b.w     800daac <_fputs_r>
+ 800db2c:      20000014        .word   0x20000014
+
+0800db30 <__sfvwrite_r>:
+ 800db30:      6893            ldr     r3, [r2, #8]
+ 800db32:      e92d 4ff7       stmdb   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800db36:      4680            mov     r8, r0
+ 800db38:      460c            mov     r4, r1
+ 800db3a:      4691            mov     r9, r2
+ 800db3c:      b91b            cbnz    r3, 800db46 <__sfvwrite_r+0x16>
+ 800db3e:      2000            movs    r0, #0
+ 800db40:      b003            add     sp, #12
+ 800db42:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800db46:      898b            ldrh    r3, [r1, #12]
+ 800db48:      0718            lsls    r0, r3, #28
+ 800db4a:      d54f            bpl.n   800dbec <__sfvwrite_r+0xbc>
+ 800db4c:      690b            ldr     r3, [r1, #16]
+ 800db4e:      2b00            cmp     r3, #0
+ 800db50:      d04c            beq.n   800dbec <__sfvwrite_r+0xbc>
+ 800db52:      89a5            ldrh    r5, [r4, #12]
+ 800db54:      f8d9 6000       ldr.w   r6, [r9]
+ 800db58:      f015 0702       ands.w  r7, r5, #2
+ 800db5c:      d169            bne.n   800dc32 <__sfvwrite_r+0x102>
+ 800db5e:      f015 0501       ands.w  r5, r5, #1
+ 800db62:      f000 809a       beq.w   800dc9a <__sfvwrite_r+0x16a>
+ 800db66:      4638            mov     r0, r7
+ 800db68:      46ba            mov     sl, r7
+ 800db6a:      46bb            mov     fp, r7
+ 800db6c:      f1bb 0f00       cmp.w   fp, #0
+ 800db70:      f000 8103       beq.w   800dd7a <__sfvwrite_r+0x24a>
+ 800db74:      b950            cbnz    r0, 800db8c <__sfvwrite_r+0x5c>
+ 800db76:      465a            mov     r2, fp
+ 800db78:      210a            movs    r1, #10
+ 800db7a:      4650            mov     r0, sl
+ 800db7c:      f7f9 f8d0       bl      8006d20 <memchr>
+ 800db80:      2800            cmp     r0, #0
+ 800db82:      f000 80ff       beq.w   800dd84 <__sfvwrite_r+0x254>
+ 800db86:      3001            adds    r0, #1
+ 800db88:      eba0 070a       sub.w   r7, r0, sl
+ 800db8c:      6820            ldr     r0, [r4, #0]
+ 800db8e:      6921            ldr     r1, [r4, #16]
+ 800db90:      6962            ldr     r2, [r4, #20]
+ 800db92:      455f            cmp     r7, fp
+ 800db94:      463b            mov     r3, r7
+ 800db96:      bf28            it      cs
+ 800db98:      465b            movcs   r3, fp
+ 800db9a:      4288            cmp     r0, r1
+ 800db9c:      f240 80f5       bls.w   800dd8a <__sfvwrite_r+0x25a>
+ 800dba0:      68a5            ldr     r5, [r4, #8]
+ 800dba2:      4415            add     r5, r2
+ 800dba4:      42ab            cmp     r3, r5
+ 800dba6:      f340 80f0       ble.w   800dd8a <__sfvwrite_r+0x25a>
+ 800dbaa:      4651            mov     r1, sl
+ 800dbac:      462a            mov     r2, r5
+ 800dbae:      f000 fbed       bl      800e38c <memmove>
+ 800dbb2:      6823            ldr     r3, [r4, #0]
+ 800dbb4:      442b            add     r3, r5
+ 800dbb6:      6023            str     r3, [r4, #0]
+ 800dbb8:      4621            mov     r1, r4
+ 800dbba:      4640            mov     r0, r8
+ 800dbbc:      f002 ff8e       bl      8010adc <_fflush_r>
+ 800dbc0:      2800            cmp     r0, #0
+ 800dbc2:      d165            bne.n   800dc90 <__sfvwrite_r+0x160>
+ 800dbc4:      1b7f            subs    r7, r7, r5
+ 800dbc6:      f040 80fa       bne.w   800ddbe <__sfvwrite_r+0x28e>
+ 800dbca:      4621            mov     r1, r4
+ 800dbcc:      4640            mov     r0, r8
+ 800dbce:      f002 ff85       bl      8010adc <_fflush_r>
+ 800dbd2:      2800            cmp     r0, #0
+ 800dbd4:      d15c            bne.n   800dc90 <__sfvwrite_r+0x160>
+ 800dbd6:      f8d9 3008       ldr.w   r3, [r9, #8]
+ 800dbda:      44aa            add     sl, r5
+ 800dbdc:      ebab 0b05       sub.w   fp, fp, r5
+ 800dbe0:      1b5d            subs    r5, r3, r5
+ 800dbe2:      f8c9 5008       str.w   r5, [r9, #8]
+ 800dbe6:      2d00            cmp     r5, #0
+ 800dbe8:      d1c0            bne.n   800db6c <__sfvwrite_r+0x3c>
+ 800dbea:      e7a8            b.n     800db3e <__sfvwrite_r+0xe>
+ 800dbec:      4621            mov     r1, r4
+ 800dbee:      4640            mov     r0, r8
+ 800dbf0:      f002 f8ba       bl      800fd68 <__swsetup_r>
+ 800dbf4:      2800            cmp     r0, #0
+ 800dbf6:      d0ac            beq.n   800db52 <__sfvwrite_r+0x22>
+ 800dbf8:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 800dbfc:      e7a0            b.n     800db40 <__sfvwrite_r+0x10>
+ 800dbfe:      e9d6 a700       ldrd    sl, r7, [r6]
+ 800dc02:      3608            adds    r6, #8
+ 800dc04:      2f00            cmp     r7, #0
+ 800dc06:      d0fa            beq.n   800dbfe <__sfvwrite_r+0xce>
+ 800dc08:      455f            cmp     r7, fp
+ 800dc0a:      463b            mov     r3, r7
+ 800dc0c:      4652            mov     r2, sl
+ 800dc0e:      bf28            it      cs
+ 800dc10:      465b            movcs   r3, fp
+ 800dc12:      69e1            ldr     r1, [r4, #28]
+ 800dc14:      6a65            ldr     r5, [r4, #36]   ; 0x24
+ 800dc16:      4640            mov     r0, r8
+ 800dc18:      47a8            blx     r5
+ 800dc1a:      2800            cmp     r0, #0
+ 800dc1c:      dd38            ble.n   800dc90 <__sfvwrite_r+0x160>
+ 800dc1e:      f8d9 3008       ldr.w   r3, [r9, #8]
+ 800dc22:      4482            add     sl, r0
+ 800dc24:      1a3f            subs    r7, r7, r0
+ 800dc26:      1a18            subs    r0, r3, r0
+ 800dc28:      f8c9 0008       str.w   r0, [r9, #8]
+ 800dc2c:      2800            cmp     r0, #0
+ 800dc2e:      d1e9            bne.n   800dc04 <__sfvwrite_r+0xd4>
+ 800dc30:      e785            b.n     800db3e <__sfvwrite_r+0xe>
+ 800dc32:      f04f 0a00       mov.w   sl, #0
+ 800dc36:      4657            mov     r7, sl
+ 800dc38:      f8df b18c       ldr.w   fp, [pc, #396]  ; 800ddc8 <__sfvwrite_r+0x298>
+ 800dc3c:      e7e2            b.n     800dc04 <__sfvwrite_r+0xd4>
+ 800dc3e:      e9d6 5a00       ldrd    r5, sl, [r6]
+ 800dc42:      3608            adds    r6, #8
+ 800dc44:      f1ba 0f00       cmp.w   sl, #0
+ 800dc48:      d0f9            beq.n   800dc3e <__sfvwrite_r+0x10e>
+ 800dc4a:      89a2            ldrh    r2, [r4, #12]
+ 800dc4c:      68a3            ldr     r3, [r4, #8]
+ 800dc4e:      6820            ldr     r0, [r4, #0]
+ 800dc50:      0591            lsls    r1, r2, #22
+ 800dc52:      d564            bpl.n   800dd1e <__sfvwrite_r+0x1ee>
+ 800dc54:      4553            cmp     r3, sl
+ 800dc56:      d836            bhi.n   800dcc6 <__sfvwrite_r+0x196>
+ 800dc58:      f412 6f90       tst.w   r2, #1152       ; 0x480
+ 800dc5c:      d033            beq.n   800dcc6 <__sfvwrite_r+0x196>
+ 800dc5e:      6921            ldr     r1, [r4, #16]
+ 800dc60:      6967            ldr     r7, [r4, #20]
+ 800dc62:      eba0 0b01       sub.w   fp, r0, r1
+ 800dc66:      2302            movs    r3, #2
+ 800dc68:      eb07 0747       add.w   r7, r7, r7, lsl #1
+ 800dc6c:      fb97 f7f3       sdiv    r7, r7, r3
+ 800dc70:      f10b 0301       add.w   r3, fp, #1
+ 800dc74:      4453            add     r3, sl
+ 800dc76:      429f            cmp     r7, r3
+ 800dc78:      bf38            it      cc
+ 800dc7a:      461f            movcc   r7, r3
+ 800dc7c:      0553            lsls    r3, r2, #21
+ 800dc7e:      d53e            bpl.n   800dcfe <__sfvwrite_r+0x1ce>
+ 800dc80:      4639            mov     r1, r7
+ 800dc82:      4640            mov     r0, r8
+ 800dc84:      f000 f932       bl      800deec <_malloc_r>
+ 800dc88:      b948            cbnz    r0, 800dc9e <__sfvwrite_r+0x16e>
+ 800dc8a:      230c            movs    r3, #12
+ 800dc8c:      f8c8 3000       str.w   r3, [r8]
+ 800dc90:      89a3            ldrh    r3, [r4, #12]
+ 800dc92:      f043 0340       orr.w   r3, r3, #64     ; 0x40
+ 800dc96:      81a3            strh    r3, [r4, #12]
+ 800dc98:      e7ae            b.n     800dbf8 <__sfvwrite_r+0xc8>
+ 800dc9a:      46aa            mov     sl, r5
+ 800dc9c:      e7d2            b.n     800dc44 <__sfvwrite_r+0x114>
+ 800dc9e:      465a            mov     r2, fp
+ 800dca0:      6921            ldr     r1, [r4, #16]
+ 800dca2:      9001            str     r0, [sp, #4]
+ 800dca4:      f000 fb67       bl      800e376 <memcpy>
+ 800dca8:      89a2            ldrh    r2, [r4, #12]
+ 800dcaa:      9b01            ldr     r3, [sp, #4]
+ 800dcac:      f422 6290       bic.w   r2, r2, #1152   ; 0x480
+ 800dcb0:      f042 0280       orr.w   r2, r2, #128    ; 0x80
+ 800dcb4:      81a2            strh    r2, [r4, #12]
+ 800dcb6:      6123            str     r3, [r4, #16]
+ 800dcb8:      6167            str     r7, [r4, #20]
+ 800dcba:      445b            add     r3, fp
+ 800dcbc:      eba7 070b       sub.w   r7, r7, fp
+ 800dcc0:      6023            str     r3, [r4, #0]
+ 800dcc2:      60a7            str     r7, [r4, #8]
+ 800dcc4:      4653            mov     r3, sl
+ 800dcc6:      4553            cmp     r3, sl
+ 800dcc8:      bf28            it      cs
+ 800dcca:      4653            movcs   r3, sl
+ 800dccc:      461a            mov     r2, r3
+ 800dcce:      4629            mov     r1, r5
+ 800dcd0:      6820            ldr     r0, [r4, #0]
+ 800dcd2:      9301            str     r3, [sp, #4]
+ 800dcd4:      f000 fb5a       bl      800e38c <memmove>
+ 800dcd8:      68a2            ldr     r2, [r4, #8]
+ 800dcda:      9b01            ldr     r3, [sp, #4]
+ 800dcdc:      1ad2            subs    r2, r2, r3
+ 800dcde:      60a2            str     r2, [r4, #8]
+ 800dce0:      6822            ldr     r2, [r4, #0]
+ 800dce2:      4413            add     r3, r2
+ 800dce4:      4657            mov     r7, sl
+ 800dce6:      6023            str     r3, [r4, #0]
+ 800dce8:      f8d9 3008       ldr.w   r3, [r9, #8]
+ 800dcec:      443d            add     r5, r7
+ 800dcee:      ebaa 0a07       sub.w   sl, sl, r7
+ 800dcf2:      1bdf            subs    r7, r3, r7
+ 800dcf4:      f8c9 7008       str.w   r7, [r9, #8]
+ 800dcf8:      2f00            cmp     r7, #0
+ 800dcfa:      d1a3            bne.n   800dc44 <__sfvwrite_r+0x114>
+ 800dcfc:      e71f            b.n     800db3e <__sfvwrite_r+0xe>
+ 800dcfe:      463a            mov     r2, r7
+ 800dd00:      4640            mov     r0, r8
+ 800dd02:      f000 fbad       bl      800e460 <_realloc_r>
+ 800dd06:      4603            mov     r3, r0
+ 800dd08:      2800            cmp     r0, #0
+ 800dd0a:      d1d4            bne.n   800dcb6 <__sfvwrite_r+0x186>
+ 800dd0c:      6921            ldr     r1, [r4, #16]
+ 800dd0e:      4640            mov     r0, r8
+ 800dd10:      f002 ffe0       bl      8010cd4 <_free_r>
+ 800dd14:      89a3            ldrh    r3, [r4, #12]
+ 800dd16:      f023 0380       bic.w   r3, r3, #128    ; 0x80
+ 800dd1a:      81a3            strh    r3, [r4, #12]
+ 800dd1c:      e7b5            b.n     800dc8a <__sfvwrite_r+0x15a>
+ 800dd1e:      6922            ldr     r2, [r4, #16]
+ 800dd20:      4282            cmp     r2, r0
+ 800dd22:      d302            bcc.n   800dd2a <__sfvwrite_r+0x1fa>
+ 800dd24:      6962            ldr     r2, [r4, #20]
+ 800dd26:      4552            cmp     r2, sl
+ 800dd28:      d916            bls.n   800dd58 <__sfvwrite_r+0x228>
+ 800dd2a:      4553            cmp     r3, sl
+ 800dd2c:      bf28            it      cs
+ 800dd2e:      4653            movcs   r3, sl
+ 800dd30:      461a            mov     r2, r3
+ 800dd32:      4629            mov     r1, r5
+ 800dd34:      461f            mov     r7, r3
+ 800dd36:      f000 fb29       bl      800e38c <memmove>
+ 800dd3a:      68a3            ldr     r3, [r4, #8]
+ 800dd3c:      6822            ldr     r2, [r4, #0]
+ 800dd3e:      1bdb            subs    r3, r3, r7
+ 800dd40:      443a            add     r2, r7
+ 800dd42:      60a3            str     r3, [r4, #8]
+ 800dd44:      6022            str     r2, [r4, #0]
+ 800dd46:      2b00            cmp     r3, #0
+ 800dd48:      d1ce            bne.n   800dce8 <__sfvwrite_r+0x1b8>
+ 800dd4a:      4621            mov     r1, r4
+ 800dd4c:      4640            mov     r0, r8
+ 800dd4e:      f002 fec5       bl      8010adc <_fflush_r>
+ 800dd52:      2800            cmp     r0, #0
+ 800dd54:      d0c8            beq.n   800dce8 <__sfvwrite_r+0x1b8>
+ 800dd56:      e79b            b.n     800dc90 <__sfvwrite_r+0x160>
+ 800dd58:      4b1a            ldr     r3, [pc, #104]  ; (800ddc4 <__sfvwrite_r+0x294>)
+ 800dd5a:      6a67            ldr     r7, [r4, #36]   ; 0x24
+ 800dd5c:      69e1            ldr     r1, [r4, #28]
+ 800dd5e:      459a            cmp     sl, r3
+ 800dd60:      bf94            ite     ls
+ 800dd62:      4653            movls   r3, sl
+ 800dd64:      f06f 4300       mvnhi.w r3, #2147483648 ; 0x80000000
+ 800dd68:      4640            mov     r0, r8
+ 800dd6a:      fb93 f3f2       sdiv    r3, r3, r2
+ 800dd6e:      4353            muls    r3, r2
+ 800dd70:      462a            mov     r2, r5
+ 800dd72:      47b8            blx     r7
+ 800dd74:      1e07            subs    r7, r0, #0
+ 800dd76:      dcb7            bgt.n   800dce8 <__sfvwrite_r+0x1b8>
+ 800dd78:      e78a            b.n     800dc90 <__sfvwrite_r+0x160>
+ 800dd7a:      e9d6 ab00       ldrd    sl, fp, [r6]
+ 800dd7e:      2000            movs    r0, #0
+ 800dd80:      3608            adds    r6, #8
+ 800dd82:      e6f3            b.n     800db6c <__sfvwrite_r+0x3c>
+ 800dd84:      f10b 0701       add.w   r7, fp, #1
+ 800dd88:      e700            b.n     800db8c <__sfvwrite_r+0x5c>
+ 800dd8a:      429a            cmp     r2, r3
+ 800dd8c:      dc09            bgt.n   800dda2 <__sfvwrite_r+0x272>
+ 800dd8e:      6a65            ldr     r5, [r4, #36]   ; 0x24
+ 800dd90:      69e1            ldr     r1, [r4, #28]
+ 800dd92:      4613            mov     r3, r2
+ 800dd94:      4640            mov     r0, r8
+ 800dd96:      4652            mov     r2, sl
+ 800dd98:      47a8            blx     r5
+ 800dd9a:      1e05            subs    r5, r0, #0
+ 800dd9c:      f73f af12       bgt.w   800dbc4 <__sfvwrite_r+0x94>
+ 800dda0:      e776            b.n     800dc90 <__sfvwrite_r+0x160>
+ 800dda2:      461a            mov     r2, r3
+ 800dda4:      4651            mov     r1, sl
+ 800dda6:      9301            str     r3, [sp, #4]
+ 800dda8:      f000 faf0       bl      800e38c <memmove>
+ 800ddac:      9b01            ldr     r3, [sp, #4]
+ 800ddae:      68a2            ldr     r2, [r4, #8]
+ 800ddb0:      1ad2            subs    r2, r2, r3
+ 800ddb2:      60a2            str     r2, [r4, #8]
+ 800ddb4:      6822            ldr     r2, [r4, #0]
+ 800ddb6:      441a            add     r2, r3
+ 800ddb8:      6022            str     r2, [r4, #0]
+ 800ddba:      461d            mov     r5, r3
+ 800ddbc:      e702            b.n     800dbc4 <__sfvwrite_r+0x94>
+ 800ddbe:      2001            movs    r0, #1
+ 800ddc0:      e709            b.n     800dbd6 <__sfvwrite_r+0xa6>
+ 800ddc2:      bf00            nop
+ 800ddc4:      7ffffffe        .word   0x7ffffffe
+ 800ddc8:      7ffffc00        .word   0x7ffffc00
+
+0800ddcc <_fwrite_r>:
+ 800ddcc:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 800ddd0:      b086            sub     sp, #24
+ 800ddd2:      fb02 f503       mul.w   r5, r2, r3
+ 800ddd6:      461e            mov     r6, r3
+ 800ddd8:      ab01            add     r3, sp, #4
+ 800ddda:      9303            str     r3, [sp, #12]
+ 800dddc:      2301            movs    r3, #1
+ 800ddde:      4617            mov     r7, r2
+ 800dde0:      9c0c            ldr     r4, [sp, #48]   ; 0x30
+ 800dde2:      9101            str     r1, [sp, #4]
+ 800dde4:      9502            str     r5, [sp, #8]
+ 800dde6:      9505            str     r5, [sp, #20]
+ 800dde8:      9304            str     r3, [sp, #16]
+ 800ddea:      4680            mov     r8, r0
+ 800ddec:      b118            cbz     r0, 800ddf6 <_fwrite_r+0x2a>
+ 800ddee:      6b83            ldr     r3, [r0, #56]   ; 0x38
+ 800ddf0:      b90b            cbnz    r3, 800ddf6 <_fwrite_r+0x2a>
+ 800ddf2:      f002 fedf       bl      8010bb4 <__sinit>
+ 800ddf6:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800ddf8:      07d8            lsls    r0, r3, #31
+ 800ddfa:      d405            bmi.n   800de08 <_fwrite_r+0x3c>
+ 800ddfc:      89a3            ldrh    r3, [r4, #12]
+ 800ddfe:      0599            lsls    r1, r3, #22
+ 800de00:      d402            bmi.n   800de08 <_fwrite_r+0x3c>
+ 800de02:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800de04:      f000 f860       bl      800dec8 <__retarget_lock_acquire_recursive>
+ 800de08:      f9b4 300c       ldrsh.w r3, [r4, #12]
+ 800de0c:      049a            lsls    r2, r3, #18
+ 800de0e:      d406            bmi.n   800de1e <_fwrite_r+0x52>
+ 800de10:      f443 5300       orr.w   r3, r3, #8192   ; 0x2000
+ 800de14:      81a3            strh    r3, [r4, #12]
+ 800de16:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800de18:      f423 5300       bic.w   r3, r3, #8192   ; 0x2000
+ 800de1c:      6663            str     r3, [r4, #100]  ; 0x64
+ 800de1e:      aa03            add     r2, sp, #12
+ 800de20:      4621            mov     r1, r4
+ 800de22:      4640            mov     r0, r8
+ 800de24:      f7ff fe84       bl      800db30 <__sfvwrite_r>
+ 800de28:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800de2a:      b958            cbnz    r0, 800de44 <_fwrite_r+0x78>
+ 800de2c:      07d8            lsls    r0, r3, #31
+ 800de2e:      d405            bmi.n   800de3c <_fwrite_r+0x70>
+ 800de30:      89a3            ldrh    r3, [r4, #12]
+ 800de32:      0599            lsls    r1, r3, #22
+ 800de34:      d402            bmi.n   800de3c <_fwrite_r+0x70>
+ 800de36:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800de38:      f000 f847       bl      800deca <__retarget_lock_release_recursive>
+ 800de3c:      4630            mov     r0, r6
+ 800de3e:      b006            add     sp, #24
+ 800de40:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 800de44:      07da            lsls    r2, r3, #31
+ 800de46:      d405            bmi.n   800de54 <_fwrite_r+0x88>
+ 800de48:      89a3            ldrh    r3, [r4, #12]
+ 800de4a:      059b            lsls    r3, r3, #22
+ 800de4c:      d402            bmi.n   800de54 <_fwrite_r+0x88>
+ 800de4e:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800de50:      f000 f83b       bl      800deca <__retarget_lock_release_recursive>
+ 800de54:      9b05            ldr     r3, [sp, #20]
+ 800de56:      1aed            subs    r5, r5, r3
+ 800de58:      fbb5 f6f7       udiv    r6, r5, r7
+ 800de5c:      e7ee            b.n     800de3c <_fwrite_r+0x70>
+       ...
+
+0800de60 <fwrite>:
+ 800de60:      b507            push    {r0, r1, r2, lr}
+ 800de62:      9300            str     r3, [sp, #0]
+ 800de64:      4613            mov     r3, r2
+ 800de66:      460a            mov     r2, r1
+ 800de68:      4601            mov     r1, r0
+ 800de6a:      4803            ldr     r0, [pc, #12]   ; (800de78 <fwrite+0x18>)
+ 800de6c:      6800            ldr     r0, [r0, #0]
+ 800de6e:      f7ff ffad       bl      800ddcc <_fwrite_r>
+ 800de72:      b003            add     sp, #12
+ 800de74:      f85d fb04       ldr.w   pc, [sp], #4
+ 800de78:      20000014        .word   0x20000014
+
+0800de7c <__libc_init_array>:
+ 800de7c:      b570            push    {r4, r5, r6, lr}
+ 800de7e:      4e0d            ldr     r6, [pc, #52]   ; (800deb4 <__libc_init_array+0x38>)
+ 800de80:      4c0d            ldr     r4, [pc, #52]   ; (800deb8 <__libc_init_array+0x3c>)
+ 800de82:      1ba4            subs    r4, r4, r6
+ 800de84:      10a4            asrs    r4, r4, #2
+ 800de86:      2500            movs    r5, #0
+ 800de88:      42a5            cmp     r5, r4
+ 800de8a:      d109            bne.n   800dea0 <__libc_init_array+0x24>
+ 800de8c:      4e0b            ldr     r6, [pc, #44]   ; (800debc <__libc_init_array+0x40>)
+ 800de8e:      4c0c            ldr     r4, [pc, #48]   ; (800dec0 <__libc_init_array+0x44>)
+ 800de90:      f003 fd82       bl      8011998 <_init>
+ 800de94:      1ba4            subs    r4, r4, r6
+ 800de96:      10a4            asrs    r4, r4, #2
+ 800de98:      2500            movs    r5, #0
+ 800de9a:      42a5            cmp     r5, r4
+ 800de9c:      d105            bne.n   800deaa <__libc_init_array+0x2e>
+ 800de9e:      bd70            pop     {r4, r5, r6, pc}
+ 800dea0:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
+ 800dea4:      4798            blx     r3
+ 800dea6:      3501            adds    r5, #1
+ 800dea8:      e7ee            b.n     800de88 <__libc_init_array+0xc>
+ 800deaa:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
+ 800deae:      4798            blx     r3
+ 800deb0:      3501            adds    r5, #1
+ 800deb2:      e7f2            b.n     800de9a <__libc_init_array+0x1e>
+ 800deb4:      08013328        .word   0x08013328
+ 800deb8:      08013328        .word   0x08013328
+ 800debc:      08013328        .word   0x08013328
+ 800dec0:      08013334        .word   0x08013334
+
+0800dec4 <__retarget_lock_init_recursive>:
+ 800dec4:      4770            bx      lr
+
+0800dec6 <__retarget_lock_close_recursive>:
+ 800dec6:      4770            bx      lr
+
+0800dec8 <__retarget_lock_acquire_recursive>:
+ 800dec8:      4770            bx      lr
+
+0800deca <__retarget_lock_release_recursive>:
+ 800deca:      4770            bx      lr
+
+0800decc <malloc>:
+ 800decc:      4b02            ldr     r3, [pc, #8]    ; (800ded8 <malloc+0xc>)
+ 800dece:      4601            mov     r1, r0
+ 800ded0:      6818            ldr     r0, [r3, #0]
+ 800ded2:      f000 b80b       b.w     800deec <_malloc_r>
+ 800ded6:      bf00            nop
+ 800ded8:      20000014        .word   0x20000014
+
+0800dedc <free>:
+ 800dedc:      4b02            ldr     r3, [pc, #8]    ; (800dee8 <free+0xc>)
+ 800dede:      4601            mov     r1, r0
+ 800dee0:      6818            ldr     r0, [r3, #0]
+ 800dee2:      f002 bef7       b.w     8010cd4 <_free_r>
+ 800dee6:      bf00            nop
+ 800dee8:      20000014        .word   0x20000014
+
+0800deec <_malloc_r>:
+ 800deec:      e92d 4ff7       stmdb   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800def0:      f101 050b       add.w   r5, r1, #11
+ 800def4:      2d16            cmp     r5, #22
+ 800def6:      4606            mov     r6, r0
+ 800def8:      d906            bls.n   800df08 <_malloc_r+0x1c>
+ 800defa:      f035 0507       bics.w  r5, r5, #7
+ 800defe:      d504            bpl.n   800df0a <_malloc_r+0x1e>
+ 800df00:      230c            movs    r3, #12
+ 800df02:      6033            str     r3, [r6, #0]
+ 800df04:      2400            movs    r4, #0
+ 800df06:      e1a8            b.n     800e25a <_malloc_r+0x36e>
+ 800df08:      2510            movs    r5, #16
+ 800df0a:      428d            cmp     r5, r1
+ 800df0c:      d3f8            bcc.n   800df00 <_malloc_r+0x14>
+ 800df0e:      4630            mov     r0, r6
+ 800df10:      f000 fa5e       bl      800e3d0 <__malloc_lock>
+ 800df14:      f5b5 7ffc       cmp.w   r5, #504        ; 0x1f8
+ 800df18:      4fc0            ldr     r7, [pc, #768]  ; (800e21c <_malloc_r+0x330>)
+ 800df1a:      d238            bcs.n   800df8e <_malloc_r+0xa2>
+ 800df1c:      f105 0208       add.w   r2, r5, #8
+ 800df20:      443a            add     r2, r7
+ 800df22:      f1a2 0108       sub.w   r1, r2, #8
+ 800df26:      6854            ldr     r4, [r2, #4]
+ 800df28:      428c            cmp     r4, r1
+ 800df2a:      ea4f 03d5       mov.w   r3, r5, lsr #3
+ 800df2e:      d102            bne.n   800df36 <_malloc_r+0x4a>
+ 800df30:      68d4            ldr     r4, [r2, #12]
+ 800df32:      42a2            cmp     r2, r4
+ 800df34:      d010            beq.n   800df58 <_malloc_r+0x6c>
+ 800df36:      6863            ldr     r3, [r4, #4]
+ 800df38:      e9d4 1202       ldrd    r1, r2, [r4, #8]
+ 800df3c:      f023 0303       bic.w   r3, r3, #3
+ 800df40:      60ca            str     r2, [r1, #12]
+ 800df42:      4423            add     r3, r4
+ 800df44:      6091            str     r1, [r2, #8]
+ 800df46:      685a            ldr     r2, [r3, #4]
+ 800df48:      f042 0201       orr.w   r2, r2, #1
+ 800df4c:      605a            str     r2, [r3, #4]
+ 800df4e:      4630            mov     r0, r6
+ 800df50:      f000 fa44       bl      800e3dc <__malloc_unlock>
+ 800df54:      3408            adds    r4, #8
+ 800df56:      e180            b.n     800e25a <_malloc_r+0x36e>
+ 800df58:      3302            adds    r3, #2
+ 800df5a:      4ab1            ldr     r2, [pc, #708]  ; (800e220 <_malloc_r+0x334>)
+ 800df5c:      693c            ldr     r4, [r7, #16]
+ 800df5e:      4294            cmp     r4, r2
+ 800df60:      4611            mov     r1, r2
+ 800df62:      d075            beq.n   800e050 <_malloc_r+0x164>
+ 800df64:      6860            ldr     r0, [r4, #4]
+ 800df66:      f020 0c03       bic.w   ip, r0, #3
+ 800df6a:      ebac 0005       sub.w   r0, ip, r5
+ 800df6e:      280f            cmp     r0, #15
+ 800df70:      dd48            ble.n   800e004 <_malloc_r+0x118>
+ 800df72:      1963            adds    r3, r4, r5
+ 800df74:      f045 0501       orr.w   r5, r5, #1
+ 800df78:      6065            str     r5, [r4, #4]
+ 800df7a:      e9c7 3304       strd    r3, r3, [r7, #16]
+ 800df7e:      e9c3 2202       strd    r2, r2, [r3, #8]
+ 800df82:      f040 0201       orr.w   r2, r0, #1
+ 800df86:      605a            str     r2, [r3, #4]
+ 800df88:      f844 000c       str.w   r0, [r4, ip]
+ 800df8c:      e7df            b.n     800df4e <_malloc_r+0x62>
+ 800df8e:      0a6b            lsrs    r3, r5, #9
+ 800df90:      d02a            beq.n   800dfe8 <_malloc_r+0xfc>
+ 800df92:      2b04            cmp     r3, #4
+ 800df94:      d812            bhi.n   800dfbc <_malloc_r+0xd0>
+ 800df96:      09ab            lsrs    r3, r5, #6
+ 800df98:      3338            adds    r3, #56 ; 0x38
+ 800df9a:      1c5a            adds    r2, r3, #1
+ 800df9c:      eb07 02c2       add.w   r2, r7, r2, lsl #3
+ 800dfa0:      f1a2 0c08       sub.w   ip, r2, #8
+ 800dfa4:      6854            ldr     r4, [r2, #4]
+ 800dfa6:      4564            cmp     r4, ip
+ 800dfa8:      d006            beq.n   800dfb8 <_malloc_r+0xcc>
+ 800dfaa:      6862            ldr     r2, [r4, #4]
+ 800dfac:      f022 0203       bic.w   r2, r2, #3
+ 800dfb0:      1b50            subs    r0, r2, r5
+ 800dfb2:      280f            cmp     r0, #15
+ 800dfb4:      dd1c            ble.n   800dff0 <_malloc_r+0x104>
+ 800dfb6:      3b01            subs    r3, #1
+ 800dfb8:      3301            adds    r3, #1
+ 800dfba:      e7ce            b.n     800df5a <_malloc_r+0x6e>
+ 800dfbc:      2b14            cmp     r3, #20
+ 800dfbe:      d801            bhi.n   800dfc4 <_malloc_r+0xd8>
+ 800dfc0:      335b            adds    r3, #91 ; 0x5b
+ 800dfc2:      e7ea            b.n     800df9a <_malloc_r+0xae>
+ 800dfc4:      2b54            cmp     r3, #84 ; 0x54
+ 800dfc6:      d802            bhi.n   800dfce <_malloc_r+0xe2>
+ 800dfc8:      0b2b            lsrs    r3, r5, #12
+ 800dfca:      336e            adds    r3, #110        ; 0x6e
+ 800dfcc:      e7e5            b.n     800df9a <_malloc_r+0xae>
+ 800dfce:      f5b3 7faa       cmp.w   r3, #340        ; 0x154
+ 800dfd2:      d802            bhi.n   800dfda <_malloc_r+0xee>
+ 800dfd4:      0beb            lsrs    r3, r5, #15
+ 800dfd6:      3377            adds    r3, #119        ; 0x77
+ 800dfd8:      e7df            b.n     800df9a <_malloc_r+0xae>
+ 800dfda:      f240 5254       movw    r2, #1364       ; 0x554
+ 800dfde:      4293            cmp     r3, r2
+ 800dfe0:      d804            bhi.n   800dfec <_malloc_r+0x100>
+ 800dfe2:      0cab            lsrs    r3, r5, #18
+ 800dfe4:      337c            adds    r3, #124        ; 0x7c
+ 800dfe6:      e7d8            b.n     800df9a <_malloc_r+0xae>
+ 800dfe8:      233f            movs    r3, #63 ; 0x3f
+ 800dfea:      e7d6            b.n     800df9a <_malloc_r+0xae>
+ 800dfec:      237e            movs    r3, #126        ; 0x7e
+ 800dfee:      e7d4            b.n     800df9a <_malloc_r+0xae>
+ 800dff0:      2800            cmp     r0, #0
+ 800dff2:      68e1            ldr     r1, [r4, #12]
+ 800dff4:      db04            blt.n   800e000 <_malloc_r+0x114>
+ 800dff6:      68a3            ldr     r3, [r4, #8]
+ 800dff8:      60d9            str     r1, [r3, #12]
+ 800dffa:      608b            str     r3, [r1, #8]
+ 800dffc:      18a3            adds    r3, r4, r2
+ 800dffe:      e7a2            b.n     800df46 <_malloc_r+0x5a>
+ 800e000:      460c            mov     r4, r1
+ 800e002:      e7d0            b.n     800dfa6 <_malloc_r+0xba>
+ 800e004:      2800            cmp     r0, #0
+ 800e006:      e9c7 2204       strd    r2, r2, [r7, #16]
+ 800e00a:      db07            blt.n   800e01c <_malloc_r+0x130>
+ 800e00c:      44a4            add     ip, r4
+ 800e00e:      f8dc 3004       ldr.w   r3, [ip, #4]
+ 800e012:      f043 0301       orr.w   r3, r3, #1
+ 800e016:      f8cc 3004       str.w   r3, [ip, #4]
+ 800e01a:      e798            b.n     800df4e <_malloc_r+0x62>
+ 800e01c:      f5bc 7f00       cmp.w   ip, #512        ; 0x200
+ 800e020:      6878            ldr     r0, [r7, #4]
+ 800e022:      f080 8099       bcs.w   800e158 <_malloc_r+0x26c>
+ 800e026:      ea4f 0cdc       mov.w   ip, ip, lsr #3
+ 800e02a:      ea4f 0eac       mov.w   lr, ip, asr #2
+ 800e02e:      2201            movs    r2, #1
+ 800e030:      f10c 0c01       add.w   ip, ip, #1
+ 800e034:      fa02 f20e       lsl.w   r2, r2, lr
+ 800e038:      4310            orrs    r0, r2
+ 800e03a:      6078            str     r0, [r7, #4]
+ 800e03c:      eb07 02cc       add.w   r2, r7, ip, lsl #3
+ 800e040:      f857 003c       ldr.w   r0, [r7, ip, lsl #3]
+ 800e044:      3a08            subs    r2, #8
+ 800e046:      e9c4 0202       strd    r0, r2, [r4, #8]
+ 800e04a:      f847 403c       str.w   r4, [r7, ip, lsl #3]
+ 800e04e:      60c4            str     r4, [r0, #12]
+ 800e050:      2001            movs    r0, #1
+ 800e052:      109a            asrs    r2, r3, #2
+ 800e054:      fa00 f202       lsl.w   r2, r0, r2
+ 800e058:      6878            ldr     r0, [r7, #4]
+ 800e05a:      4290            cmp     r0, r2
+ 800e05c:      d326            bcc.n   800e0ac <_malloc_r+0x1c0>
+ 800e05e:      4210            tst     r0, r2
+ 800e060:      d106            bne.n   800e070 <_malloc_r+0x184>
+ 800e062:      f023 0303       bic.w   r3, r3, #3
+ 800e066:      0052            lsls    r2, r2, #1
+ 800e068:      4210            tst     r0, r2
+ 800e06a:      f103 0304       add.w   r3, r3, #4
+ 800e06e:      d0fa            beq.n   800e066 <_malloc_r+0x17a>
+ 800e070:      eb07 0cc3       add.w   ip, r7, r3, lsl #3
+ 800e074:      46e1            mov     r9, ip
+ 800e076:      4698            mov     r8, r3
+ 800e078:      f8d9 400c       ldr.w   r4, [r9, #12]
+ 800e07c:      454c            cmp     r4, r9
+ 800e07e:      f040 80af       bne.w   800e1e0 <_malloc_r+0x2f4>
+ 800e082:      f108 0801       add.w   r8, r8, #1
+ 800e086:      f018 0f03       tst.w   r8, #3
+ 800e08a:      f109 0908       add.w   r9, r9, #8
+ 800e08e:      d1f3            bne.n   800e078 <_malloc_r+0x18c>
+ 800e090:      0798            lsls    r0, r3, #30
+ 800e092:      f040 80e8       bne.w   800e266 <_malloc_r+0x37a>
+ 800e096:      687b            ldr     r3, [r7, #4]
+ 800e098:      ea23 0302       bic.w   r3, r3, r2
+ 800e09c:      607b            str     r3, [r7, #4]
+ 800e09e:      6878            ldr     r0, [r7, #4]
+ 800e0a0:      0052            lsls    r2, r2, #1
+ 800e0a2:      4290            cmp     r0, r2
+ 800e0a4:      d302            bcc.n   800e0ac <_malloc_r+0x1c0>
+ 800e0a6:      2a00            cmp     r2, #0
+ 800e0a8:      f040 80ec       bne.w   800e284 <_malloc_r+0x398>
+ 800e0ac:      f8d7 a008       ldr.w   sl, [r7, #8]
+ 800e0b0:      f8da 4004       ldr.w   r4, [sl, #4]
+ 800e0b4:      f024 0203       bic.w   r2, r4, #3
+ 800e0b8:      42aa            cmp     r2, r5
+ 800e0ba:      d303            bcc.n   800e0c4 <_malloc_r+0x1d8>
+ 800e0bc:      1b53            subs    r3, r2, r5
+ 800e0be:      2b0f            cmp     r3, #15
+ 800e0c0:      f300 8140       bgt.w   800e344 <_malloc_r+0x458>
+ 800e0c4:      4b57            ldr     r3, [pc, #348]  ; (800e224 <_malloc_r+0x338>)
+ 800e0c6:      9200            str     r2, [sp, #0]
+ 800e0c8:      2008            movs    r0, #8
+ 800e0ca:      681c            ldr     r4, [r3, #0]
+ 800e0cc:      f001 fdd8       bl      800fc80 <sysconf>
+ 800e0d0:      4b55            ldr     r3, [pc, #340]  ; (800e228 <_malloc_r+0x33c>)
+ 800e0d2:      9a00            ldr     r2, [sp, #0]
+ 800e0d4:      6819            ldr     r1, [r3, #0]
+ 800e0d6:      3410            adds    r4, #16
+ 800e0d8:      3101            adds    r1, #1
+ 800e0da:      442c            add     r4, r5
+ 800e0dc:      bf1f            itttt   ne
+ 800e0de:      f104 34ff       addne.w r4, r4, #4294967295     ; 0xffffffff
+ 800e0e2:      1824            addne   r4, r4, r0
+ 800e0e4:      4241            negne   r1, r0
+ 800e0e6:      400c            andne   r4, r1
+ 800e0e8:      4680            mov     r8, r0
+ 800e0ea:      4621            mov     r1, r4
+ 800e0ec:      4630            mov     r0, r6
+ 800e0ee:      e9cd 2300       strd    r2, r3, [sp]
+ 800e0f2:      f000 fb5d       bl      800e7b0 <_sbrk_r>
+ 800e0f6:      f1b0 3fff       cmp.w   r0, #4294967295 ; 0xffffffff
+ 800e0fa:      4683            mov     fp, r0
+ 800e0fc:      f000 80fb       beq.w   800e2f6 <_malloc_r+0x40a>
+ 800e100:      9a00            ldr     r2, [sp, #0]
+ 800e102:      9b01            ldr     r3, [sp, #4]
+ 800e104:      eb0a 0102       add.w   r1, sl, r2
+ 800e108:      4281            cmp     r1, r0
+ 800e10a:      d902            bls.n   800e112 <_malloc_r+0x226>
+ 800e10c:      45ba            cmp     sl, r7
+ 800e10e:      f040 80f2       bne.w   800e2f6 <_malloc_r+0x40a>
+ 800e112:      f8df 9120       ldr.w   r9, [pc, #288]  ; 800e234 <_malloc_r+0x348>
+ 800e116:      f8d9 0000       ldr.w   r0, [r9]
+ 800e11a:      4559            cmp     r1, fp
+ 800e11c:      eb00 0e04       add.w   lr, r0, r4
+ 800e120:      f8c9 e000       str.w   lr, [r9]
+ 800e124:      f108 3cff       add.w   ip, r8, #4294967295     ; 0xffffffff
+ 800e128:      f040 80ae       bne.w   800e288 <_malloc_r+0x39c>
+ 800e12c:      ea11 0f0c       tst.w   r1, ip
+ 800e130:      f040 80aa       bne.w   800e288 <_malloc_r+0x39c>
+ 800e134:      68bb            ldr     r3, [r7, #8]
+ 800e136:      4414            add     r4, r2
+ 800e138:      f044 0401       orr.w   r4, r4, #1
+ 800e13c:      605c            str     r4, [r3, #4]
+ 800e13e:      4a3b            ldr     r2, [pc, #236]  ; (800e22c <_malloc_r+0x340>)
+ 800e140:      f8d9 3000       ldr.w   r3, [r9]
+ 800e144:      6811            ldr     r1, [r2, #0]
+ 800e146:      428b            cmp     r3, r1
+ 800e148:      bf88            it      hi
+ 800e14a:      6013            strhi   r3, [r2, #0]
+ 800e14c:      4a38            ldr     r2, [pc, #224]  ; (800e230 <_malloc_r+0x344>)
+ 800e14e:      6811            ldr     r1, [r2, #0]
+ 800e150:      428b            cmp     r3, r1
+ 800e152:      bf88            it      hi
+ 800e154:      6013            strhi   r3, [r2, #0]
+ 800e156:      e0ce            b.n     800e2f6 <_malloc_r+0x40a>
+ 800e158:      ea4f 225c       mov.w   r2, ip, lsr #9
+ 800e15c:      2a04            cmp     r2, #4
+ 800e15e:      d818            bhi.n   800e192 <_malloc_r+0x2a6>
+ 800e160:      ea4f 129c       mov.w   r2, ip, lsr #6
+ 800e164:      3238            adds    r2, #56 ; 0x38
+ 800e166:      f102 0e01       add.w   lr, r2, #1
+ 800e16a:      eb07 08c2       add.w   r8, r7, r2, lsl #3
+ 800e16e:      f857 e03e       ldr.w   lr, [r7, lr, lsl #3]
+ 800e172:      45f0            cmp     r8, lr
+ 800e174:      d12b            bne.n   800e1ce <_malloc_r+0x2e2>
+ 800e176:      1092            asrs    r2, r2, #2
+ 800e178:      f04f 0c01       mov.w   ip, #1
+ 800e17c:      fa0c f202       lsl.w   r2, ip, r2
+ 800e180:      4310            orrs    r0, r2
+ 800e182:      6078            str     r0, [r7, #4]
+ 800e184:      e9c4 e802       strd    lr, r8, [r4, #8]
+ 800e188:      f8c8 4008       str.w   r4, [r8, #8]
+ 800e18c:      f8ce 400c       str.w   r4, [lr, #12]
+ 800e190:      e75e            b.n     800e050 <_malloc_r+0x164>
+ 800e192:      2a14            cmp     r2, #20
+ 800e194:      d801            bhi.n   800e19a <_malloc_r+0x2ae>
+ 800e196:      325b            adds    r2, #91 ; 0x5b
+ 800e198:      e7e5            b.n     800e166 <_malloc_r+0x27a>
+ 800e19a:      2a54            cmp     r2, #84 ; 0x54
+ 800e19c:      d803            bhi.n   800e1a6 <_malloc_r+0x2ba>
+ 800e19e:      ea4f 321c       mov.w   r2, ip, lsr #12
+ 800e1a2:      326e            adds    r2, #110        ; 0x6e
+ 800e1a4:      e7df            b.n     800e166 <_malloc_r+0x27a>
+ 800e1a6:      f5b2 7faa       cmp.w   r2, #340        ; 0x154
+ 800e1aa:      d803            bhi.n   800e1b4 <_malloc_r+0x2c8>
+ 800e1ac:      ea4f 32dc       mov.w   r2, ip, lsr #15
+ 800e1b0:      3277            adds    r2, #119        ; 0x77
+ 800e1b2:      e7d8            b.n     800e166 <_malloc_r+0x27a>
+ 800e1b4:      f240 5e54       movw    lr, #1364       ; 0x554
+ 800e1b8:      4572            cmp     r2, lr
+ 800e1ba:      bf9a            itte    ls
+ 800e1bc:      ea4f 429c       movls.w r2, ip, lsr #18
+ 800e1c0:      327c            addls   r2, #124        ; 0x7c
+ 800e1c2:      227e            movhi   r2, #126        ; 0x7e
+ 800e1c4:      e7cf            b.n     800e166 <_malloc_r+0x27a>
+ 800e1c6:      f8de e008       ldr.w   lr, [lr, #8]
+ 800e1ca:      45f0            cmp     r8, lr
+ 800e1cc:      d005            beq.n   800e1da <_malloc_r+0x2ee>
+ 800e1ce:      f8de 2004       ldr.w   r2, [lr, #4]
+ 800e1d2:      f022 0203       bic.w   r2, r2, #3
+ 800e1d6:      4562            cmp     r2, ip
+ 800e1d8:      d8f5            bhi.n   800e1c6 <_malloc_r+0x2da>
+ 800e1da:      f8de 800c       ldr.w   r8, [lr, #12]
+ 800e1de:      e7d1            b.n     800e184 <_malloc_r+0x298>
+ 800e1e0:      6860            ldr     r0, [r4, #4]
+ 800e1e2:      f8d4 e00c       ldr.w   lr, [r4, #12]
+ 800e1e6:      f020 0003       bic.w   r0, r0, #3
+ 800e1ea:      eba0 0a05       sub.w   sl, r0, r5
+ 800e1ee:      f1ba 0f0f       cmp.w   sl, #15
+ 800e1f2:      dd21            ble.n   800e238 <_malloc_r+0x34c>
+ 800e1f4:      68a2            ldr     r2, [r4, #8]
+ 800e1f6:      1963            adds    r3, r4, r5
+ 800e1f8:      f045 0501       orr.w   r5, r5, #1
+ 800e1fc:      6065            str     r5, [r4, #4]
+ 800e1fe:      f8c2 e00c       str.w   lr, [r2, #12]
+ 800e202:      f8ce 2008       str.w   r2, [lr, #8]
+ 800e206:      f04a 0201       orr.w   r2, sl, #1
+ 800e20a:      e9c7 3304       strd    r3, r3, [r7, #16]
+ 800e20e:      e9c3 1102       strd    r1, r1, [r3, #8]
+ 800e212:      605a            str     r2, [r3, #4]
+ 800e214:      f844 a000       str.w   sl, [r4, r0]
+ 800e218:      e699            b.n     800df4e <_malloc_r+0x62>
+ 800e21a:      bf00            nop
+ 800e21c:      20000440        .word   0x20000440
+ 800e220:      20000448        .word   0x20000448
+ 800e224:      20000af4        .word   0x20000af4
+ 800e228:      20000848        .word   0x20000848
+ 800e22c:      20000aec        .word   0x20000aec
+ 800e230:      20000af0        .word   0x20000af0
+ 800e234:      20000ac4        .word   0x20000ac4
+ 800e238:      f1ba 0f00       cmp.w   sl, #0
+ 800e23c:      db11            blt.n   800e262 <_malloc_r+0x376>
+ 800e23e:      4420            add     r0, r4
+ 800e240:      6843            ldr     r3, [r0, #4]
+ 800e242:      f043 0301       orr.w   r3, r3, #1
+ 800e246:      6043            str     r3, [r0, #4]
+ 800e248:      f854 3f08       ldr.w   r3, [r4, #8]!
+ 800e24c:      4630            mov     r0, r6
+ 800e24e:      f8c3 e00c       str.w   lr, [r3, #12]
+ 800e252:      f8ce 3008       str.w   r3, [lr, #8]
+ 800e256:      f000 f8c1       bl      800e3dc <__malloc_unlock>
+ 800e25a:      4620            mov     r0, r4
+ 800e25c:      b003            add     sp, #12
+ 800e25e:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800e262:      4674            mov     r4, lr
+ 800e264:      e70a            b.n     800e07c <_malloc_r+0x190>
+ 800e266:      f1ac 0008       sub.w   r0, ip, #8
+ 800e26a:      f8dc c000       ldr.w   ip, [ip]
+ 800e26e:      4584            cmp     ip, r0
+ 800e270:      f103 33ff       add.w   r3, r3, #4294967295     ; 0xffffffff
+ 800e274:      f43f af0c       beq.w   800e090 <_malloc_r+0x1a4>
+ 800e278:      e711            b.n     800e09e <_malloc_r+0x1b2>
+ 800e27a:      3304            adds    r3, #4
+ 800e27c:      0052            lsls    r2, r2, #1
+ 800e27e:      4210            tst     r0, r2
+ 800e280:      d0fb            beq.n   800e27a <_malloc_r+0x38e>
+ 800e282:      e6f5            b.n     800e070 <_malloc_r+0x184>
+ 800e284:      4643            mov     r3, r8
+ 800e286:      e7fa            b.n     800e27e <_malloc_r+0x392>
+ 800e288:      6818            ldr     r0, [r3, #0]
+ 800e28a:      9200            str     r2, [sp, #0]
+ 800e28c:      3001            adds    r0, #1
+ 800e28e:      bf1b            ittet   ne
+ 800e290:      ebab 0101       subne.w r1, fp, r1
+ 800e294:      4471            addne   r1, lr
+ 800e296:      f8c3 b000       streq.w fp, [r3]
+ 800e29a:      f8c9 1000       strne.w r1, [r9]
+ 800e29e:      f01b 0307       ands.w  r3, fp, #7
+ 800e2a2:      bf1c            itt     ne
+ 800e2a4:      f1c3 0308       rsbne   r3, r3, #8
+ 800e2a8:      449b            addne   fp, r3
+ 800e2aa:      445c            add     r4, fp
+ 800e2ac:      4498            add     r8, r3
+ 800e2ae:      ea04 030c       and.w   r3, r4, ip
+ 800e2b2:      eba8 0803       sub.w   r8, r8, r3
+ 800e2b6:      4641            mov     r1, r8
+ 800e2b8:      4630            mov     r0, r6
+ 800e2ba:      f000 fa79       bl      800e7b0 <_sbrk_r>
+ 800e2be:      1c43            adds    r3, r0, #1
+ 800e2c0:      bf04            itt     eq
+ 800e2c2:      4658            moveq   r0, fp
+ 800e2c4:      f04f 0800       moveq.w r8, #0
+ 800e2c8:      f8d9 3000       ldr.w   r3, [r9]
+ 800e2cc:      f8c7 b008       str.w   fp, [r7, #8]
+ 800e2d0:      eba0 000b       sub.w   r0, r0, fp
+ 800e2d4:      4440            add     r0, r8
+ 800e2d6:      4443            add     r3, r8
+ 800e2d8:      f040 0001       orr.w   r0, r0, #1
+ 800e2dc:      45ba            cmp     sl, r7
+ 800e2de:      9a00            ldr     r2, [sp, #0]
+ 800e2e0:      f8c9 3000       str.w   r3, [r9]
+ 800e2e4:      f8cb 0004       str.w   r0, [fp, #4]
+ 800e2e8:      f43f af29       beq.w   800e13e <_malloc_r+0x252>
+ 800e2ec:      2a0f            cmp     r2, #15
+ 800e2ee:      d810            bhi.n   800e312 <_malloc_r+0x426>
+ 800e2f0:      2301            movs    r3, #1
+ 800e2f2:      f8cb 3004       str.w   r3, [fp, #4]
+ 800e2f6:      68bb            ldr     r3, [r7, #8]
+ 800e2f8:      685a            ldr     r2, [r3, #4]
+ 800e2fa:      f022 0203       bic.w   r2, r2, #3
+ 800e2fe:      42aa            cmp     r2, r5
+ 800e300:      eba2 0305       sub.w   r3, r2, r5
+ 800e304:      d301            bcc.n   800e30a <_malloc_r+0x41e>
+ 800e306:      2b0f            cmp     r3, #15
+ 800e308:      dc1c            bgt.n   800e344 <_malloc_r+0x458>
+ 800e30a:      4630            mov     r0, r6
+ 800e30c:      f000 f866       bl      800e3dc <__malloc_unlock>
+ 800e310:      e5f8            b.n     800df04 <_malloc_r+0x18>
+ 800e312:      f8da 3004       ldr.w   r3, [sl, #4]
+ 800e316:      f1a2 040c       sub.w   r4, r2, #12
+ 800e31a:      f024 0407       bic.w   r4, r4, #7
+ 800e31e:      f003 0301       and.w   r3, r3, #1
+ 800e322:      4323            orrs    r3, r4
+ 800e324:      f8ca 3004       str.w   r3, [sl, #4]
+ 800e328:      2205            movs    r2, #5
+ 800e32a:      eb0a 0304       add.w   r3, sl, r4
+ 800e32e:      2c0f            cmp     r4, #15
+ 800e330:      e9c3 2201       strd    r2, r2, [r3, #4]
+ 800e334:      f67f af03       bls.w   800e13e <_malloc_r+0x252>
+ 800e338:      f10a 0108       add.w   r1, sl, #8
+ 800e33c:      4630            mov     r0, r6
+ 800e33e:      f002 fcc9       bl      8010cd4 <_free_r>
+ 800e342:      e6fc            b.n     800e13e <_malloc_r+0x252>
+ 800e344:      68bc            ldr     r4, [r7, #8]
+ 800e346:      f045 0201       orr.w   r2, r5, #1
+ 800e34a:      4425            add     r5, r4
+ 800e34c:      f043 0301       orr.w   r3, r3, #1
+ 800e350:      6062            str     r2, [r4, #4]
+ 800e352:      60bd            str     r5, [r7, #8]
+ 800e354:      606b            str     r3, [r5, #4]
+ 800e356:      e5fa            b.n     800df4e <_malloc_r+0x62>
+
+0800e358 <memcmp>:
+ 800e358:      b530            push    {r4, r5, lr}
+ 800e35a:      2400            movs    r4, #0
+ 800e35c:      42a2            cmp     r2, r4
+ 800e35e:      d101            bne.n   800e364 <memcmp+0xc>
+ 800e360:      2000            movs    r0, #0
+ 800e362:      e007            b.n     800e374 <memcmp+0x1c>
+ 800e364:      5d03            ldrb    r3, [r0, r4]
+ 800e366:      3401            adds    r4, #1
+ 800e368:      190d            adds    r5, r1, r4
+ 800e36a:      f815 5c01       ldrb.w  r5, [r5, #-1]
+ 800e36e:      42ab            cmp     r3, r5
+ 800e370:      d0f4            beq.n   800e35c <memcmp+0x4>
+ 800e372:      1b58            subs    r0, r3, r5
+ 800e374:      bd30            pop     {r4, r5, pc}
+
+0800e376 <memcpy>:
+ 800e376:      b510            push    {r4, lr}
+ 800e378:      1e43            subs    r3, r0, #1
+ 800e37a:      440a            add     r2, r1
+ 800e37c:      4291            cmp     r1, r2
+ 800e37e:      d100            bne.n   800e382 <memcpy+0xc>
+ 800e380:      bd10            pop     {r4, pc}
+ 800e382:      f811 4b01       ldrb.w  r4, [r1], #1
+ 800e386:      f803 4f01       strb.w  r4, [r3, #1]!
+ 800e38a:      e7f7            b.n     800e37c <memcpy+0x6>
+
+0800e38c <memmove>:
+ 800e38c:      4288            cmp     r0, r1
+ 800e38e:      b510            push    {r4, lr}
+ 800e390:      eb01 0302       add.w   r3, r1, r2
+ 800e394:      d807            bhi.n   800e3a6 <memmove+0x1a>
+ 800e396:      1e42            subs    r2, r0, #1
+ 800e398:      4299            cmp     r1, r3
+ 800e39a:      d00a            beq.n   800e3b2 <memmove+0x26>
+ 800e39c:      f811 4b01       ldrb.w  r4, [r1], #1
+ 800e3a0:      f802 4f01       strb.w  r4, [r2, #1]!
+ 800e3a4:      e7f8            b.n     800e398 <memmove+0xc>
+ 800e3a6:      4283            cmp     r3, r0
+ 800e3a8:      d9f5            bls.n   800e396 <memmove+0xa>
+ 800e3aa:      1881            adds    r1, r0, r2
+ 800e3ac:      1ad2            subs    r2, r2, r3
+ 800e3ae:      42d3            cmn     r3, r2
+ 800e3b0:      d100            bne.n   800e3b4 <memmove+0x28>
+ 800e3b2:      bd10            pop     {r4, pc}
+ 800e3b4:      f813 4d01       ldrb.w  r4, [r3, #-1]!
+ 800e3b8:      f801 4d01       strb.w  r4, [r1, #-1]!
+ 800e3bc:      e7f7            b.n     800e3ae <memmove+0x22>
+
+0800e3be <memset>:
+ 800e3be:      4402            add     r2, r0
+ 800e3c0:      4603            mov     r3, r0
+ 800e3c2:      4293            cmp     r3, r2
+ 800e3c4:      d100            bne.n   800e3c8 <memset+0xa>
+ 800e3c6:      4770            bx      lr
+ 800e3c8:      f803 1b01       strb.w  r1, [r3], #1
+ 800e3cc:      e7f9            b.n     800e3c2 <memset+0x4>
+       ...
+
+0800e3d0 <__malloc_lock>:
+ 800e3d0:      4801            ldr     r0, [pc, #4]    ; (800e3d8 <__malloc_lock+0x8>)
+ 800e3d2:      f7ff bd79       b.w     800dec8 <__retarget_lock_acquire_recursive>
+ 800e3d6:      bf00            nop
+ 800e3d8:      20000b00        .word   0x20000b00
+
+0800e3dc <__malloc_unlock>:
+ 800e3dc:      4801            ldr     r0, [pc, #4]    ; (800e3e4 <__malloc_unlock+0x8>)
+ 800e3de:      f7ff bd74       b.w     800deca <__retarget_lock_release_recursive>
+ 800e3e2:      bf00            nop
+ 800e3e4:      20000b00        .word   0x20000b00
+
+0800e3e8 <_putc_r>:
+ 800e3e8:      b570            push    {r4, r5, r6, lr}
+ 800e3ea:      460d            mov     r5, r1
+ 800e3ec:      4614            mov     r4, r2
+ 800e3ee:      4606            mov     r6, r0
+ 800e3f0:      b118            cbz     r0, 800e3fa <_putc_r+0x12>
+ 800e3f2:      6b83            ldr     r3, [r0, #56]   ; 0x38
+ 800e3f4:      b90b            cbnz    r3, 800e3fa <_putc_r+0x12>
+ 800e3f6:      f002 fbdd       bl      8010bb4 <__sinit>
+ 800e3fa:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800e3fc:      07d8            lsls    r0, r3, #31
+ 800e3fe:      d405            bmi.n   800e40c <_putc_r+0x24>
+ 800e400:      89a3            ldrh    r3, [r4, #12]
+ 800e402:      0599            lsls    r1, r3, #22
+ 800e404:      d402            bmi.n   800e40c <_putc_r+0x24>
+ 800e406:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800e408:      f7ff fd5e       bl      800dec8 <__retarget_lock_acquire_recursive>
+ 800e40c:      68a3            ldr     r3, [r4, #8]
+ 800e40e:      3b01            subs    r3, #1
+ 800e410:      2b00            cmp     r3, #0
+ 800e412:      60a3            str     r3, [r4, #8]
+ 800e414:      da05            bge.n   800e422 <_putc_r+0x3a>
+ 800e416:      69a2            ldr     r2, [r4, #24]
+ 800e418:      4293            cmp     r3, r2
+ 800e41a:      db12            blt.n   800e442 <_putc_r+0x5a>
+ 800e41c:      b2eb            uxtb    r3, r5
+ 800e41e:      2b0a            cmp     r3, #10
+ 800e420:      d00f            beq.n   800e442 <_putc_r+0x5a>
+ 800e422:      6823            ldr     r3, [r4, #0]
+ 800e424:      1c5a            adds    r2, r3, #1
+ 800e426:      6022            str     r2, [r4, #0]
+ 800e428:      701d            strb    r5, [r3, #0]
+ 800e42a:      b2ed            uxtb    r5, r5
+ 800e42c:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800e42e:      07da            lsls    r2, r3, #31
+ 800e430:      d405            bmi.n   800e43e <_putc_r+0x56>
+ 800e432:      89a3            ldrh    r3, [r4, #12]
+ 800e434:      059b            lsls    r3, r3, #22
+ 800e436:      d402            bmi.n   800e43e <_putc_r+0x56>
+ 800e438:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 800e43a:      f7ff fd46       bl      800deca <__retarget_lock_release_recursive>
+ 800e43e:      4628            mov     r0, r5
+ 800e440:      bd70            pop     {r4, r5, r6, pc}
+ 800e442:      4629            mov     r1, r5
+ 800e444:      4622            mov     r2, r4
+ 800e446:      4630            mov     r0, r6
+ 800e448:      f001 fc32       bl      800fcb0 <__swbuf_r>
+ 800e44c:      4605            mov     r5, r0
+ 800e44e:      e7ed            b.n     800e42c <_putc_r+0x44>
+
+0800e450 <realloc>:
+ 800e450:      4b02            ldr     r3, [pc, #8]    ; (800e45c <realloc+0xc>)
+ 800e452:      460a            mov     r2, r1
+ 800e454:      4601            mov     r1, r0
+ 800e456:      6818            ldr     r0, [r3, #0]
+ 800e458:      f000 b802       b.w     800e460 <_realloc_r>
+ 800e45c:      20000014        .word   0x20000014
+
+0800e460 <_realloc_r>:
+ 800e460:      e92d 4ff7       stmdb   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800e464:      4682            mov     sl, r0
+ 800e466:      460c            mov     r4, r1
+ 800e468:      b929            cbnz    r1, 800e476 <_realloc_r+0x16>
+ 800e46a:      4611            mov     r1, r2
+ 800e46c:      b003            add     sp, #12
+ 800e46e:      e8bd 4ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800e472:      f7ff bd3b       b.w     800deec <_malloc_r>
+ 800e476:      9201            str     r2, [sp, #4]
+ 800e478:      f7ff ffaa       bl      800e3d0 <__malloc_lock>
+ 800e47c:      9a01            ldr     r2, [sp, #4]
+ 800e47e:      f854 5c04       ldr.w   r5, [r4, #-4]
+ 800e482:      f102 080b       add.w   r8, r2, #11
+ 800e486:      f1b8 0f16       cmp.w   r8, #22
+ 800e48a:      f1a4 0908       sub.w   r9, r4, #8
+ 800e48e:      f025 0603       bic.w   r6, r5, #3
+ 800e492:      d90b            bls.n   800e4ac <_realloc_r+0x4c>
+ 800e494:      f038 0807       bics.w  r8, r8, #7
+ 800e498:      d50a            bpl.n   800e4b0 <_realloc_r+0x50>
+ 800e49a:      230c            movs    r3, #12
+ 800e49c:      f8ca 3000       str.w   r3, [sl]
+ 800e4a0:      f04f 0b00       mov.w   fp, #0
+ 800e4a4:      4658            mov     r0, fp
+ 800e4a6:      b003            add     sp, #12
+ 800e4a8:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800e4ac:      f04f 0810       mov.w   r8, #16
+ 800e4b0:      4590            cmp     r8, r2
+ 800e4b2:      d3f2            bcc.n   800e49a <_realloc_r+0x3a>
+ 800e4b4:      45b0            cmp     r8, r6
+ 800e4b6:      f340 8170       ble.w   800e79a <_realloc_r+0x33a>
+ 800e4ba:      49a9            ldr     r1, [pc, #676]  ; (800e760 <_realloc_r+0x300>)
+ 800e4bc:      9101            str     r1, [sp, #4]
+ 800e4be:      f8d1 c008       ldr.w   ip, [r1, #8]
+ 800e4c2:      eb09 0306       add.w   r3, r9, r6
+ 800e4c6:      459c            cmp     ip, r3
+ 800e4c8:      6858            ldr     r0, [r3, #4]
+ 800e4ca:      d005            beq.n   800e4d8 <_realloc_r+0x78>
+ 800e4cc:      f020 0101       bic.w   r1, r0, #1
+ 800e4d0:      4419            add     r1, r3
+ 800e4d2:      6849            ldr     r1, [r1, #4]
+ 800e4d4:      07cf            lsls    r7, r1, #31
+ 800e4d6:      d447            bmi.n   800e568 <_realloc_r+0x108>
+ 800e4d8:      f020 0003       bic.w   r0, r0, #3
+ 800e4dc:      459c            cmp     ip, r3
+ 800e4de:      eb06 0700       add.w   r7, r6, r0
+ 800e4e2:      d119            bne.n   800e518 <_realloc_r+0xb8>
+ 800e4e4:      f108 0110       add.w   r1, r8, #16
+ 800e4e8:      42b9            cmp     r1, r7
+ 800e4ea:      dc3f            bgt.n   800e56c <_realloc_r+0x10c>
+ 800e4ec:      eb09 0308       add.w   r3, r9, r8
+ 800e4f0:      9a01            ldr     r2, [sp, #4]
+ 800e4f2:      eba7 0708       sub.w   r7, r7, r8
+ 800e4f6:      f047 0701       orr.w   r7, r7, #1
+ 800e4fa:      6093            str     r3, [r2, #8]
+ 800e4fc:      605f            str     r7, [r3, #4]
+ 800e4fe:      f854 3c04       ldr.w   r3, [r4, #-4]
+ 800e502:      f003 0301       and.w   r3, r3, #1
+ 800e506:      ea43 0308       orr.w   r3, r3, r8
+ 800e50a:      f844 3c04       str.w   r3, [r4, #-4]
+ 800e50e:      4650            mov     r0, sl
+ 800e510:      f7ff ff64       bl      800e3dc <__malloc_unlock>
+ 800e514:      46a3            mov     fp, r4
+ 800e516:      e7c5            b.n     800e4a4 <_realloc_r+0x44>
+ 800e518:      45b8            cmp     r8, r7
+ 800e51a:      dc27            bgt.n   800e56c <_realloc_r+0x10c>
+ 800e51c:      e9d3 3202       ldrd    r3, r2, [r3, #8]
+ 800e520:      60da            str     r2, [r3, #12]
+ 800e522:      6093            str     r3, [r2, #8]
+ 800e524:      eba7 0008       sub.w   r0, r7, r8
+ 800e528:      f8d9 2004       ldr.w   r2, [r9, #4]
+ 800e52c:      280f            cmp     r0, #15
+ 800e52e:      f002 0201       and.w   r2, r2, #1
+ 800e532:      eb09 0307       add.w   r3, r9, r7
+ 800e536:      f240 8132       bls.w   800e79e <_realloc_r+0x33e>
+ 800e53a:      eb09 0108       add.w   r1, r9, r8
+ 800e53e:      ea48 0202       orr.w   r2, r8, r2
+ 800e542:      f040 0001       orr.w   r0, r0, #1
+ 800e546:      f8c9 2004       str.w   r2, [r9, #4]
+ 800e54a:      6048            str     r0, [r1, #4]
+ 800e54c:      685a            ldr     r2, [r3, #4]
+ 800e54e:      f042 0201       orr.w   r2, r2, #1
+ 800e552:      605a            str     r2, [r3, #4]
+ 800e554:      3108            adds    r1, #8
+ 800e556:      4650            mov     r0, sl
+ 800e558:      f002 fbbc       bl      8010cd4 <_free_r>
+ 800e55c:      4650            mov     r0, sl
+ 800e55e:      f7ff ff3d       bl      800e3dc <__malloc_unlock>
+ 800e562:      f109 0b08       add.w   fp, r9, #8
+ 800e566:      e79d            b.n     800e4a4 <_realloc_r+0x44>
+ 800e568:      2000            movs    r0, #0
+ 800e56a:      4603            mov     r3, r0
+ 800e56c:      07e9            lsls    r1, r5, #31
+ 800e56e:      f100 80c6       bmi.w   800e6fe <_realloc_r+0x29e>
+ 800e572:      f854 5c08       ldr.w   r5, [r4, #-8]
+ 800e576:      eba9 0505       sub.w   r5, r9, r5
+ 800e57a:      6869            ldr     r1, [r5, #4]
+ 800e57c:      f021 0103       bic.w   r1, r1, #3
+ 800e580:      eb01 0b06       add.w   fp, r1, r6
+ 800e584:      2b00            cmp     r3, #0
+ 800e586:      f000 8086       beq.w   800e696 <_realloc_r+0x236>
+ 800e58a:      459c            cmp     ip, r3
+ 800e58c:      eb00 070b       add.w   r7, r0, fp
+ 800e590:      d149            bne.n   800e626 <_realloc_r+0x1c6>
+ 800e592:      f108 0310       add.w   r3, r8, #16
+ 800e596:      42bb            cmp     r3, r7
+ 800e598:      dc7d            bgt.n   800e696 <_realloc_r+0x236>
+ 800e59a:      46ab            mov     fp, r5
+ 800e59c:      68eb            ldr     r3, [r5, #12]
+ 800e59e:      f85b 2f08       ldr.w   r2, [fp, #8]!
+ 800e5a2:      60d3            str     r3, [r2, #12]
+ 800e5a4:      609a            str     r2, [r3, #8]
+ 800e5a6:      1f32            subs    r2, r6, #4
+ 800e5a8:      2a24            cmp     r2, #36 ; 0x24
+ 800e5aa:      d837            bhi.n   800e61c <_realloc_r+0x1bc>
+ 800e5ac:      2a13            cmp     r2, #19
+ 800e5ae:      d933            bls.n   800e618 <_realloc_r+0x1b8>
+ 800e5b0:      6823            ldr     r3, [r4, #0]
+ 800e5b2:      60ab            str     r3, [r5, #8]
+ 800e5b4:      6863            ldr     r3, [r4, #4]
+ 800e5b6:      60eb            str     r3, [r5, #12]
+ 800e5b8:      2a1b            cmp     r2, #27
+ 800e5ba:      d81b            bhi.n   800e5f4 <_realloc_r+0x194>
+ 800e5bc:      3408            adds    r4, #8
+ 800e5be:      f105 0310       add.w   r3, r5, #16
+ 800e5c2:      6822            ldr     r2, [r4, #0]
+ 800e5c4:      601a            str     r2, [r3, #0]
+ 800e5c6:      6862            ldr     r2, [r4, #4]
+ 800e5c8:      605a            str     r2, [r3, #4]
+ 800e5ca:      68a2            ldr     r2, [r4, #8]
+ 800e5cc:      609a            str     r2, [r3, #8]
+ 800e5ce:      eb05 0308       add.w   r3, r5, r8
+ 800e5d2:      9a01            ldr     r2, [sp, #4]
+ 800e5d4:      eba7 0708       sub.w   r7, r7, r8
+ 800e5d8:      f047 0701       orr.w   r7, r7, #1
+ 800e5dc:      6093            str     r3, [r2, #8]
+ 800e5de:      605f            str     r7, [r3, #4]
+ 800e5e0:      686b            ldr     r3, [r5, #4]
+ 800e5e2:      f003 0301       and.w   r3, r3, #1
+ 800e5e6:      ea43 0308       orr.w   r3, r3, r8
+ 800e5ea:      606b            str     r3, [r5, #4]
+ 800e5ec:      4650            mov     r0, sl
+ 800e5ee:      f7ff fef5       bl      800e3dc <__malloc_unlock>
+ 800e5f2:      e757            b.n     800e4a4 <_realloc_r+0x44>
+ 800e5f4:      68a3            ldr     r3, [r4, #8]
+ 800e5f6:      612b            str     r3, [r5, #16]
+ 800e5f8:      68e3            ldr     r3, [r4, #12]
+ 800e5fa:      616b            str     r3, [r5, #20]
+ 800e5fc:      2a24            cmp     r2, #36 ; 0x24
+ 800e5fe:      bf01            itttt   eq
+ 800e600:      6923            ldreq   r3, [r4, #16]
+ 800e602:      61ab            streq   r3, [r5, #24]
+ 800e604:      6962            ldreq   r2, [r4, #20]
+ 800e606:      61ea            streq   r2, [r5, #28]
+ 800e608:      bf19            ittee   ne
+ 800e60a:      3410            addne   r4, #16
+ 800e60c:      f105 0318       addne.w r3, r5, #24
+ 800e610:      f105 0320       addeq.w r3, r5, #32
+ 800e614:      3418            addeq   r4, #24
+ 800e616:      e7d4            b.n     800e5c2 <_realloc_r+0x162>
+ 800e618:      465b            mov     r3, fp
+ 800e61a:      e7d2            b.n     800e5c2 <_realloc_r+0x162>
+ 800e61c:      4621            mov     r1, r4
+ 800e61e:      4658            mov     r0, fp
+ 800e620:      f7ff feb4       bl      800e38c <memmove>
+ 800e624:      e7d3            b.n     800e5ce <_realloc_r+0x16e>
+ 800e626:      45b8            cmp     r8, r7
+ 800e628:      dc35            bgt.n   800e696 <_realloc_r+0x236>
+ 800e62a:      e9d3 3202       ldrd    r3, r2, [r3, #8]
+ 800e62e:      4628            mov     r0, r5
+ 800e630:      60da            str     r2, [r3, #12]
+ 800e632:      6093            str     r3, [r2, #8]
+ 800e634:      f850 2f08       ldr.w   r2, [r0, #8]!
+ 800e638:      68eb            ldr     r3, [r5, #12]
+ 800e63a:      60d3            str     r3, [r2, #12]
+ 800e63c:      609a            str     r2, [r3, #8]
+ 800e63e:      1f32            subs    r2, r6, #4
+ 800e640:      2a24            cmp     r2, #36 ; 0x24
+ 800e642:      d824            bhi.n   800e68e <_realloc_r+0x22e>
+ 800e644:      2a13            cmp     r2, #19
+ 800e646:      d908            bls.n   800e65a <_realloc_r+0x1fa>
+ 800e648:      6823            ldr     r3, [r4, #0]
+ 800e64a:      60ab            str     r3, [r5, #8]
+ 800e64c:      6863            ldr     r3, [r4, #4]
+ 800e64e:      60eb            str     r3, [r5, #12]
+ 800e650:      2a1b            cmp     r2, #27
+ 800e652:      d80a            bhi.n   800e66a <_realloc_r+0x20a>
+ 800e654:      3408            adds    r4, #8
+ 800e656:      f105 0010       add.w   r0, r5, #16
+ 800e65a:      6823            ldr     r3, [r4, #0]
+ 800e65c:      6003            str     r3, [r0, #0]
+ 800e65e:      6863            ldr     r3, [r4, #4]
+ 800e660:      6043            str     r3, [r0, #4]
+ 800e662:      68a3            ldr     r3, [r4, #8]
+ 800e664:      6083            str     r3, [r0, #8]
+ 800e666:      46a9            mov     r9, r5
+ 800e668:      e75c            b.n     800e524 <_realloc_r+0xc4>
+ 800e66a:      68a3            ldr     r3, [r4, #8]
+ 800e66c:      612b            str     r3, [r5, #16]
+ 800e66e:      68e3            ldr     r3, [r4, #12]
+ 800e670:      616b            str     r3, [r5, #20]
+ 800e672:      2a24            cmp     r2, #36 ; 0x24
+ 800e674:      bf01            itttt   eq
+ 800e676:      6923            ldreq   r3, [r4, #16]
+ 800e678:      61ab            streq   r3, [r5, #24]
+ 800e67a:      6963            ldreq   r3, [r4, #20]
+ 800e67c:      61eb            streq   r3, [r5, #28]
+ 800e67e:      bf19            ittee   ne
+ 800e680:      3410            addne   r4, #16
+ 800e682:      f105 0018       addne.w r0, r5, #24
+ 800e686:      f105 0020       addeq.w r0, r5, #32
+ 800e68a:      3418            addeq   r4, #24
+ 800e68c:      e7e5            b.n     800e65a <_realloc_r+0x1fa>
+ 800e68e:      4621            mov     r1, r4
+ 800e690:      f7ff fe7c       bl      800e38c <memmove>
+ 800e694:      e7e7            b.n     800e666 <_realloc_r+0x206>
+ 800e696:      45d8            cmp     r8, fp
+ 800e698:      dc31            bgt.n   800e6fe <_realloc_r+0x29e>
+ 800e69a:      4628            mov     r0, r5
+ 800e69c:      68eb            ldr     r3, [r5, #12]
+ 800e69e:      f850 2f08       ldr.w   r2, [r0, #8]!
+ 800e6a2:      60d3            str     r3, [r2, #12]
+ 800e6a4:      609a            str     r2, [r3, #8]
+ 800e6a6:      1f32            subs    r2, r6, #4
+ 800e6a8:      2a24            cmp     r2, #36 ; 0x24
+ 800e6aa:      d824            bhi.n   800e6f6 <_realloc_r+0x296>
+ 800e6ac:      2a13            cmp     r2, #19
+ 800e6ae:      d908            bls.n   800e6c2 <_realloc_r+0x262>
+ 800e6b0:      6823            ldr     r3, [r4, #0]
+ 800e6b2:      60ab            str     r3, [r5, #8]
+ 800e6b4:      6863            ldr     r3, [r4, #4]
+ 800e6b6:      60eb            str     r3, [r5, #12]
+ 800e6b8:      2a1b            cmp     r2, #27
+ 800e6ba:      d80a            bhi.n   800e6d2 <_realloc_r+0x272>
+ 800e6bc:      3408            adds    r4, #8
+ 800e6be:      f105 0010       add.w   r0, r5, #16
+ 800e6c2:      6823            ldr     r3, [r4, #0]
+ 800e6c4:      6003            str     r3, [r0, #0]
+ 800e6c6:      6863            ldr     r3, [r4, #4]
+ 800e6c8:      6043            str     r3, [r0, #4]
+ 800e6ca:      68a3            ldr     r3, [r4, #8]
+ 800e6cc:      6083            str     r3, [r0, #8]
+ 800e6ce:      465f            mov     r7, fp
+ 800e6d0:      e7c9            b.n     800e666 <_realloc_r+0x206>
+ 800e6d2:      68a3            ldr     r3, [r4, #8]
+ 800e6d4:      612b            str     r3, [r5, #16]
+ 800e6d6:      68e3            ldr     r3, [r4, #12]
+ 800e6d8:      616b            str     r3, [r5, #20]
+ 800e6da:      2a24            cmp     r2, #36 ; 0x24
+ 800e6dc:      bf01            itttt   eq
+ 800e6de:      6923            ldreq   r3, [r4, #16]
+ 800e6e0:      61ab            streq   r3, [r5, #24]
+ 800e6e2:      6963            ldreq   r3, [r4, #20]
+ 800e6e4:      61eb            streq   r3, [r5, #28]
+ 800e6e6:      bf19            ittee   ne
+ 800e6e8:      3410            addne   r4, #16
+ 800e6ea:      f105 0018       addne.w r0, r5, #24
+ 800e6ee:      f105 0020       addeq.w r0, r5, #32
+ 800e6f2:      3418            addeq   r4, #24
+ 800e6f4:      e7e5            b.n     800e6c2 <_realloc_r+0x262>
+ 800e6f6:      4621            mov     r1, r4
+ 800e6f8:      f7ff fe48       bl      800e38c <memmove>
+ 800e6fc:      e7e7            b.n     800e6ce <_realloc_r+0x26e>
+ 800e6fe:      4611            mov     r1, r2
+ 800e700:      4650            mov     r0, sl
+ 800e702:      f7ff fbf3       bl      800deec <_malloc_r>
+ 800e706:      4683            mov     fp, r0
+ 800e708:      2800            cmp     r0, #0
+ 800e70a:      f43f af6f       beq.w   800e5ec <_realloc_r+0x18c>
+ 800e70e:      f854 3c04       ldr.w   r3, [r4, #-4]
+ 800e712:      f023 0301       bic.w   r3, r3, #1
+ 800e716:      444b            add     r3, r9
+ 800e718:      f1a0 0208       sub.w   r2, r0, #8
+ 800e71c:      4293            cmp     r3, r2
+ 800e71e:      d105            bne.n   800e72c <_realloc_r+0x2cc>
+ 800e720:      f850 7c04       ldr.w   r7, [r0, #-4]
+ 800e724:      f027 0703       bic.w   r7, r7, #3
+ 800e728:      4437            add     r7, r6
+ 800e72a:      e6fb            b.n     800e524 <_realloc_r+0xc4>
+ 800e72c:      1f32            subs    r2, r6, #4
+ 800e72e:      2a24            cmp     r2, #36 ; 0x24
+ 800e730:      d82f            bhi.n   800e792 <_realloc_r+0x332>
+ 800e732:      2a13            cmp     r2, #19
+ 800e734:      d92a            bls.n   800e78c <_realloc_r+0x32c>
+ 800e736:      6823            ldr     r3, [r4, #0]
+ 800e738:      6003            str     r3, [r0, #0]
+ 800e73a:      6863            ldr     r3, [r4, #4]
+ 800e73c:      6043            str     r3, [r0, #4]
+ 800e73e:      2a1b            cmp     r2, #27
+ 800e740:      d810            bhi.n   800e764 <_realloc_r+0x304>
+ 800e742:      f104 0208       add.w   r2, r4, #8
+ 800e746:      f100 0308       add.w   r3, r0, #8
+ 800e74a:      6811            ldr     r1, [r2, #0]
+ 800e74c:      6019            str     r1, [r3, #0]
+ 800e74e:      6851            ldr     r1, [r2, #4]
+ 800e750:      6059            str     r1, [r3, #4]
+ 800e752:      6892            ldr     r2, [r2, #8]
+ 800e754:      609a            str     r2, [r3, #8]
+ 800e756:      4621            mov     r1, r4
+ 800e758:      4650            mov     r0, sl
+ 800e75a:      f002 fabb       bl      8010cd4 <_free_r>
+ 800e75e:      e745            b.n     800e5ec <_realloc_r+0x18c>
+ 800e760:      20000440        .word   0x20000440
+ 800e764:      68a3            ldr     r3, [r4, #8]
+ 800e766:      6083            str     r3, [r0, #8]
+ 800e768:      68e3            ldr     r3, [r4, #12]
+ 800e76a:      60c3            str     r3, [r0, #12]
+ 800e76c:      2a24            cmp     r2, #36 ; 0x24
+ 800e76e:      bf01            itttt   eq
+ 800e770:      6923            ldreq   r3, [r4, #16]
+ 800e772:      6103            streq   r3, [r0, #16]
+ 800e774:      6961            ldreq   r1, [r4, #20]
+ 800e776:      6141            streq   r1, [r0, #20]
+ 800e778:      bf19            ittee   ne
+ 800e77a:      f104 0210       addne.w r2, r4, #16
+ 800e77e:      f100 0310       addne.w r3, r0, #16
+ 800e782:      f104 0218       addeq.w r2, r4, #24
+ 800e786:      f100 0318       addeq.w r3, r0, #24
+ 800e78a:      e7de            b.n     800e74a <_realloc_r+0x2ea>
+ 800e78c:      4603            mov     r3, r0
+ 800e78e:      4622            mov     r2, r4
+ 800e790:      e7db            b.n     800e74a <_realloc_r+0x2ea>
+ 800e792:      4621            mov     r1, r4
+ 800e794:      f7ff fdfa       bl      800e38c <memmove>
+ 800e798:      e7dd            b.n     800e756 <_realloc_r+0x2f6>
+ 800e79a:      4637            mov     r7, r6
+ 800e79c:      e6c2            b.n     800e524 <_realloc_r+0xc4>
+ 800e79e:      4317            orrs    r7, r2
+ 800e7a0:      f8c9 7004       str.w   r7, [r9, #4]
+ 800e7a4:      685a            ldr     r2, [r3, #4]
+ 800e7a6:      f042 0201       orr.w   r2, r2, #1
+ 800e7aa:      605a            str     r2, [r3, #4]
+ 800e7ac:      e6d6            b.n     800e55c <_realloc_r+0xfc>
+ 800e7ae:      bf00            nop
+
+0800e7b0 <_sbrk_r>:
+ 800e7b0:      b538            push    {r3, r4, r5, lr}
+ 800e7b2:      4c06            ldr     r4, [pc, #24]   ; (800e7cc <_sbrk_r+0x1c>)
+ 800e7b4:      2300            movs    r3, #0
+ 800e7b6:      4605            mov     r5, r0
+ 800e7b8:      4608            mov     r0, r1
+ 800e7ba:      6023            str     r3, [r4, #0]
+ 800e7bc:      f7fe f81e       bl      800c7fc <_sbrk>
+ 800e7c0:      1c43            adds    r3, r0, #1
+ 800e7c2:      d102            bne.n   800e7ca <_sbrk_r+0x1a>
+ 800e7c4:      6823            ldr     r3, [r4, #0]
+ 800e7c6:      b103            cbz     r3, 800e7ca <_sbrk_r+0x1a>
+ 800e7c8:      602b            str     r3, [r5, #0]
+ 800e7ca:      bd38            pop     {r3, r4, r5, pc}
+ 800e7cc:      20000b08        .word   0x20000b08
+
+0800e7d0 <_raise_r>:
+ 800e7d0:      291f            cmp     r1, #31
+ 800e7d2:      b538            push    {r3, r4, r5, lr}
+ 800e7d4:      4604            mov     r4, r0
+ 800e7d6:      460d            mov     r5, r1
+ 800e7d8:      d904            bls.n   800e7e4 <_raise_r+0x14>
+ 800e7da:      2316            movs    r3, #22
+ 800e7dc:      6003            str     r3, [r0, #0]
+ 800e7de:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 800e7e2:      bd38            pop     {r3, r4, r5, pc}
+ 800e7e4:      f8d0 22dc       ldr.w   r2, [r0, #732]  ; 0x2dc
+ 800e7e8:      b112            cbz     r2, 800e7f0 <_raise_r+0x20>
+ 800e7ea:      f852 3021       ldr.w   r3, [r2, r1, lsl #2]
+ 800e7ee:      b94b            cbnz    r3, 800e804 <_raise_r+0x34>
+ 800e7f0:      4620            mov     r0, r4
+ 800e7f2:      f000 f831       bl      800e858 <_getpid_r>
+ 800e7f6:      462a            mov     r2, r5
+ 800e7f8:      4601            mov     r1, r0
+ 800e7fa:      4620            mov     r0, r4
+ 800e7fc:      e8bd 4038       ldmia.w sp!, {r3, r4, r5, lr}
+ 800e800:      f000 b818       b.w     800e834 <_kill_r>
+ 800e804:      2b01            cmp     r3, #1
+ 800e806:      d00a            beq.n   800e81e <_raise_r+0x4e>
+ 800e808:      1c59            adds    r1, r3, #1
+ 800e80a:      d103            bne.n   800e814 <_raise_r+0x44>
+ 800e80c:      2316            movs    r3, #22
+ 800e80e:      6003            str     r3, [r0, #0]
+ 800e810:      2001            movs    r0, #1
+ 800e812:      e7e6            b.n     800e7e2 <_raise_r+0x12>
+ 800e814:      2400            movs    r4, #0
+ 800e816:      f842 4025       str.w   r4, [r2, r5, lsl #2]
+ 800e81a:      4628            mov     r0, r5
+ 800e81c:      4798            blx     r3
+ 800e81e:      2000            movs    r0, #0
+ 800e820:      e7df            b.n     800e7e2 <_raise_r+0x12>
+       ...
+
+0800e824 <raise>:
+ 800e824:      4b02            ldr     r3, [pc, #8]    ; (800e830 <raise+0xc>)
+ 800e826:      4601            mov     r1, r0
+ 800e828:      6818            ldr     r0, [r3, #0]
+ 800e82a:      f7ff bfd1       b.w     800e7d0 <_raise_r>
+ 800e82e:      bf00            nop
+ 800e830:      20000014        .word   0x20000014
+
+0800e834 <_kill_r>:
+ 800e834:      b538            push    {r3, r4, r5, lr}
+ 800e836:      4c07            ldr     r4, [pc, #28]   ; (800e854 <_kill_r+0x20>)
+ 800e838:      2300            movs    r3, #0
+ 800e83a:      4605            mov     r5, r0
+ 800e83c:      4608            mov     r0, r1
+ 800e83e:      4611            mov     r1, r2
+ 800e840:      6023            str     r3, [r4, #0]
+ 800e842:      f7fd ff53       bl      800c6ec <_kill>
+ 800e846:      1c43            adds    r3, r0, #1
+ 800e848:      d102            bne.n   800e850 <_kill_r+0x1c>
+ 800e84a:      6823            ldr     r3, [r4, #0]
+ 800e84c:      b103            cbz     r3, 800e850 <_kill_r+0x1c>
+ 800e84e:      602b            str     r3, [r5, #0]
+ 800e850:      bd38            pop     {r3, r4, r5, pc}
+ 800e852:      bf00            nop
+ 800e854:      20000b08        .word   0x20000b08
+
+0800e858 <_getpid_r>:
+ 800e858:      f7fd bf40       b.w     800c6dc <_getpid>
+
+0800e85c <sprintf>:
+ 800e85c:      b40e            push    {r1, r2, r3}
+ 800e85e:      b500            push    {lr}
+ 800e860:      b09c            sub     sp, #112        ; 0x70
+ 800e862:      ab1d            add     r3, sp, #116    ; 0x74
+ 800e864:      9002            str     r0, [sp, #8]
+ 800e866:      9006            str     r0, [sp, #24]
+ 800e868:      f06f 4100       mvn.w   r1, #2147483648 ; 0x80000000
+ 800e86c:      4809            ldr     r0, [pc, #36]   ; (800e894 <sprintf+0x38>)
+ 800e86e:      9107            str     r1, [sp, #28]
+ 800e870:      9104            str     r1, [sp, #16]
+ 800e872:      4909            ldr     r1, [pc, #36]   ; (800e898 <sprintf+0x3c>)
+ 800e874:      f853 2b04       ldr.w   r2, [r3], #4
+ 800e878:      9105            str     r1, [sp, #20]
+ 800e87a:      6800            ldr     r0, [r0, #0]
+ 800e87c:      9301            str     r3, [sp, #4]
+ 800e87e:      a902            add     r1, sp, #8
+ 800e880:      f000 f81e       bl      800e8c0 <_svfprintf_r>
+ 800e884:      9b02            ldr     r3, [sp, #8]
+ 800e886:      2200            movs    r2, #0
+ 800e888:      701a            strb    r2, [r3, #0]
+ 800e88a:      b01c            add     sp, #112        ; 0x70
+ 800e88c:      f85d eb04       ldr.w   lr, [sp], #4
+ 800e890:      b003            add     sp, #12
+ 800e892:      4770            bx      lr
+ 800e894:      20000014        .word   0x20000014
+ 800e898:      ffff0208        .word   0xffff0208
+
+0800e89c <strncmp>:
+ 800e89c:      b510            push    {r4, lr}
+ 800e89e:      b16a            cbz     r2, 800e8bc <strncmp+0x20>
+ 800e8a0:      3901            subs    r1, #1
+ 800e8a2:      1884            adds    r4, r0, r2
+ 800e8a4:      f810 3b01       ldrb.w  r3, [r0], #1
+ 800e8a8:      f811 2f01       ldrb.w  r2, [r1, #1]!
+ 800e8ac:      4293            cmp     r3, r2
+ 800e8ae:      d103            bne.n   800e8b8 <strncmp+0x1c>
+ 800e8b0:      42a0            cmp     r0, r4
+ 800e8b2:      d001            beq.n   800e8b8 <strncmp+0x1c>
+ 800e8b4:      2b00            cmp     r3, #0
+ 800e8b6:      d1f5            bne.n   800e8a4 <strncmp+0x8>
+ 800e8b8:      1a98            subs    r0, r3, r2
+ 800e8ba:      bd10            pop     {r4, pc}
+ 800e8bc:      4610            mov     r0, r2
+ 800e8be:      e7fc            b.n     800e8ba <strncmp+0x1e>
+
+0800e8c0 <_svfprintf_r>:
+ 800e8c0:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800e8c4:      ed2d 8b04       vpush   {d8-d9}
+ 800e8c8:      b0cb            sub     sp, #300        ; 0x12c
+ 800e8ca:      468b            mov     fp, r1
+ 800e8cc:      4691            mov     r9, r2
+ 800e8ce:      461e            mov     r6, r3
+ 800e8d0:      9002            str     r0, [sp, #8]
+ 800e8d2:      f002 fad9       bl      8010e88 <_localeconv_r>
+ 800e8d6:      6803            ldr     r3, [r0, #0]
+ 800e8d8:      930f            str     r3, [sp, #60]   ; 0x3c
+ 800e8da:      4618            mov     r0, r3
+ 800e8dc:      f7f8 fa7a       bl      8006dd4 <strlen>
+ 800e8e0:      f8bb 300c       ldrh.w  r3, [fp, #12]
+ 800e8e4:      9009            str     r0, [sp, #36]   ; 0x24
+ 800e8e6:      0618            lsls    r0, r3, #24
+ 800e8e8:      d51a            bpl.n   800e920 <_svfprintf_r+0x60>
+ 800e8ea:      f8db 3010       ldr.w   r3, [fp, #16]
+ 800e8ee:      b9bb            cbnz    r3, 800e920 <_svfprintf_r+0x60>
+ 800e8f0:      2140            movs    r1, #64 ; 0x40
+ 800e8f2:      9802            ldr     r0, [sp, #8]
+ 800e8f4:      f7ff fafa       bl      800deec <_malloc_r>
+ 800e8f8:      f8cb 0000       str.w   r0, [fp]
+ 800e8fc:      f8cb 0010       str.w   r0, [fp, #16]
+ 800e900:      b958            cbnz    r0, 800e91a <_svfprintf_r+0x5a>
+ 800e902:      9a02            ldr     r2, [sp, #8]
+ 800e904:      230c            movs    r3, #12
+ 800e906:      6013            str     r3, [r2, #0]
+ 800e908:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 800e90c:      930a            str     r3, [sp, #40]   ; 0x28
+ 800e90e:      980a            ldr     r0, [sp, #40]   ; 0x28
+ 800e910:      b04b            add     sp, #300        ; 0x12c
+ 800e912:      ecbd 8b04       vpop    {d8-d9}
+ 800e916:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800e91a:      2340            movs    r3, #64 ; 0x40
+ 800e91c:      f8cb 3014       str.w   r3, [fp, #20]
+ 800e920:      2300            movs    r3, #0
+ 800e922:      e9cd 331f       strd    r3, r3, [sp, #124]      ; 0x7c
+ 800e926:      ed9f 8bc6       vldr    d8, [pc, #792]  ; 800ec40 <_svfprintf_r+0x380>
+ 800e92a:      e9cd 3310       strd    r3, r3, [sp, #64]       ; 0x40
+ 800e92e:      ac21            add     r4, sp, #132    ; 0x84
+ 800e930:      941e            str     r4, [sp, #120]  ; 0x78
+ 800e932:      9303            str     r3, [sp, #12]
+ 800e934:      9307            str     r3, [sp, #28]
+ 800e936:      930e            str     r3, [sp, #56]   ; 0x38
+ 800e938:      9312            str     r3, [sp, #72]   ; 0x48
+ 800e93a:      930a            str     r3, [sp, #40]   ; 0x28
+ 800e93c:      464d            mov     r5, r9
+ 800e93e:      462b            mov     r3, r5
+ 800e940:      f813 2b01       ldrb.w  r2, [r3], #1
+ 800e944:      b112            cbz     r2, 800e94c <_svfprintf_r+0x8c>
+ 800e946:      2a25            cmp     r2, #37 ; 0x25
+ 800e948:      f040 80e4       bne.w   800eb14 <_svfprintf_r+0x254>
+ 800e94c:      ebb5 0709       subs.w  r7, r5, r9
+ 800e950:      d00e            beq.n   800e970 <_svfprintf_r+0xb0>
+ 800e952:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800e954:      443b            add     r3, r7
+ 800e956:      9320            str     r3, [sp, #128]  ; 0x80
+ 800e958:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800e95a:      3301            adds    r3, #1
+ 800e95c:      2b07            cmp     r3, #7
+ 800e95e:      e9c4 9700       strd    r9, r7, [r4]
+ 800e962:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800e964:      f300 80d8       bgt.w   800eb18 <_svfprintf_r+0x258>
+ 800e968:      3408            adds    r4, #8
+ 800e96a:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 800e96c:      443b            add     r3, r7
+ 800e96e:      930a            str     r3, [sp, #40]   ; 0x28
+ 800e970:      782b            ldrb    r3, [r5, #0]
+ 800e972:      2b00            cmp     r3, #0
+ 800e974:      f001 8174       beq.w   800fc60 <_svfprintf_r+0x13a0>
+ 800e978:      1c6b            adds    r3, r5, #1
+ 800e97a:      9308            str     r3, [sp, #32]
+ 800e97c:      2300            movs    r3, #0
+ 800e97e:      f88d 305b       strb.w  r3, [sp, #91]   ; 0x5b
+ 800e982:      f04f 38ff       mov.w   r8, #4294967295 ; 0xffffffff
+ 800e986:      930b            str     r3, [sp, #44]   ; 0x2c
+ 800e988:      461d            mov     r5, r3
+ 800e98a:      9b08            ldr     r3, [sp, #32]
+ 800e98c:      781b            ldrb    r3, [r3, #0]
+ 800e98e:      9304            str     r3, [sp, #16]
+ 800e990:      9b08            ldr     r3, [sp, #32]
+ 800e992:      3301            adds    r3, #1
+ 800e994:      9308            str     r3, [sp, #32]
+ 800e996:      9b04            ldr     r3, [sp, #16]
+ 800e998:      3b20            subs    r3, #32
+ 800e99a:      2b5a            cmp     r3, #90 ; 0x5a
+ 800e99c:      f200 85e5       bhi.w   800f56a <_svfprintf_r+0xcaa>
+ 800e9a0:      a201            add     r2, pc, #4      ; (adr r2, 800e9a8 <_svfprintf_r+0xe8>)
+ 800e9a2:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 800e9a6:      bf00            nop
+ 800e9a8:      0800eba7        .word   0x0800eba7
+ 800e9ac:      0800f56b        .word   0x0800f56b
+ 800e9b0:      0800f56b        .word   0x0800f56b
+ 800e9b4:      0800ebb9        .word   0x0800ebb9
+ 800e9b8:      0800f56b        .word   0x0800f56b
+ 800e9bc:      0800f56b        .word   0x0800f56b
+ 800e9c0:      0800f56b        .word   0x0800f56b
+ 800e9c4:      0800eb6d        .word   0x0800eb6d
+ 800e9c8:      0800f56b        .word   0x0800f56b
+ 800e9cc:      0800f56b        .word   0x0800f56b
+ 800e9d0:      0800ebbf        .word   0x0800ebbf
+ 800e9d4:      0800ebd7        .word   0x0800ebd7
+ 800e9d8:      0800f56b        .word   0x0800f56b
+ 800e9dc:      0800ebd1        .word   0x0800ebd1
+ 800e9e0:      0800ebdb        .word   0x0800ebdb
+ 800e9e4:      0800f56b        .word   0x0800f56b
+ 800e9e8:      0800ec13        .word   0x0800ec13
+ 800e9ec:      0800ec19        .word   0x0800ec19
+ 800e9f0:      0800ec19        .word   0x0800ec19
+ 800e9f4:      0800ec19        .word   0x0800ec19
+ 800e9f8:      0800ec19        .word   0x0800ec19
+ 800e9fc:      0800ec19        .word   0x0800ec19
+ 800ea00:      0800ec19        .word   0x0800ec19
+ 800ea04:      0800ec19        .word   0x0800ec19
+ 800ea08:      0800ec19        .word   0x0800ec19
+ 800ea0c:      0800ec19        .word   0x0800ec19
+ 800ea10:      0800f56b        .word   0x0800f56b
+ 800ea14:      0800f56b        .word   0x0800f56b
+ 800ea18:      0800f56b        .word   0x0800f56b
+ 800ea1c:      0800f56b        .word   0x0800f56b
+ 800ea20:      0800f56b        .word   0x0800f56b
+ 800ea24:      0800f56b        .word   0x0800f56b
+ 800ea28:      0800f56b        .word   0x0800f56b
+ 800ea2c:      0800ed13        .word   0x0800ed13
+ 800ea30:      0800f56b        .word   0x0800f56b
+ 800ea34:      0800ec81        .word   0x0800ec81
+ 800ea38:      0800eca5        .word   0x0800eca5
+ 800ea3c:      0800ed13        .word   0x0800ed13
+ 800ea40:      0800ed13        .word   0x0800ed13
+ 800ea44:      0800ed13        .word   0x0800ed13
+ 800ea48:      0800f56b        .word   0x0800f56b
+ 800ea4c:      0800f56b        .word   0x0800f56b
+ 800ea50:      0800f56b        .word   0x0800f56b
+ 800ea54:      0800f56b        .word   0x0800f56b
+ 800ea58:      0800ec3b        .word   0x0800ec3b
+ 800ea5c:      0800f56b        .word   0x0800f56b
+ 800ea60:      0800f56b        .word   0x0800f56b
+ 800ea64:      0800f187        .word   0x0800f187
+ 800ea68:      0800f56b        .word   0x0800f56b
+ 800ea6c:      0800f56b        .word   0x0800f56b
+ 800ea70:      0800f56b        .word   0x0800f56b
+ 800ea74:      0800f20f        .word   0x0800f20f
+ 800ea78:      0800f56b        .word   0x0800f56b
+ 800ea7c:      0800f3e7        .word   0x0800f3e7
+ 800ea80:      0800f56b        .word   0x0800f56b
+ 800ea84:      0800f56b        .word   0x0800f56b
+ 800ea88:      0800eb31        .word   0x0800eb31
+ 800ea8c:      0800f56b        .word   0x0800f56b
+ 800ea90:      0800f56b        .word   0x0800f56b
+ 800ea94:      0800f56b        .word   0x0800f56b
+ 800ea98:      0800f56b        .word   0x0800f56b
+ 800ea9c:      0800f56b        .word   0x0800f56b
+ 800eaa0:      0800f56b        .word   0x0800f56b
+ 800eaa4:      0800f56b        .word   0x0800f56b
+ 800eaa8:      0800f56b        .word   0x0800f56b
+ 800eaac:      0800ed13        .word   0x0800ed13
+ 800eab0:      0800f56b        .word   0x0800f56b
+ 800eab4:      0800ec81        .word   0x0800ec81
+ 800eab8:      0800eca9        .word   0x0800eca9
+ 800eabc:      0800ed13        .word   0x0800ed13
+ 800eac0:      0800ed13        .word   0x0800ed13
+ 800eac4:      0800ed13        .word   0x0800ed13
+ 800eac8:      0800ec4d        .word   0x0800ec4d
+ 800eacc:      0800eca9        .word   0x0800eca9
+ 800ead0:      0800ec75        .word   0x0800ec75
+ 800ead4:      0800f56b        .word   0x0800f56b
+ 800ead8:      0800ec67        .word   0x0800ec67
+ 800eadc:      0800f56b        .word   0x0800f56b
+ 800eae0:      0800f149        .word   0x0800f149
+ 800eae4:      0800f18b        .word   0x0800f18b
+ 800eae8:      0800f1ef        .word   0x0800f1ef
+ 800eaec:      0800ec75        .word   0x0800ec75
+ 800eaf0:      0800f56b        .word   0x0800f56b
+ 800eaf4:      0800f20f        .word   0x0800f20f
+ 800eaf8:      0800e98b        .word   0x0800e98b
+ 800eafc:      0800f3eb        .word   0x0800f3eb
+ 800eb00:      0800f56b        .word   0x0800f56b
+ 800eb04:      0800f56b        .word   0x0800f56b
+ 800eb08:      0800f421        .word   0x0800f421
+ 800eb0c:      0800f56b        .word   0x0800f56b
+ 800eb10:      0800e98b        .word   0x0800e98b
+ 800eb14:      461d            mov     r5, r3
+ 800eb16:      e712            b.n     800e93e <_svfprintf_r+0x7e>
+ 800eb18:      aa1e            add     r2, sp, #120    ; 0x78
+ 800eb1a:      4659            mov     r1, fp
+ 800eb1c:      9802            ldr     r0, [sp, #8]
+ 800eb1e:      f002 fd71       bl      8011604 <__ssprint_r>
+ 800eb22:      2800            cmp     r0, #0
+ 800eb24:      f040 8150       bne.w   800edc8 <_svfprintf_r+0x508>
+ 800eb28:      ac21            add     r4, sp, #132    ; 0x84
+ 800eb2a:      e71e            b.n     800e96a <_svfprintf_r+0xaa>
+ 800eb2c:      461e            mov     r6, r3
+ 800eb2e:      e72c            b.n     800e98a <_svfprintf_r+0xca>
+ 800eb30:      4b45            ldr     r3, [pc, #276]  ; (800ec48 <_svfprintf_r+0x388>)
+ 800eb32:      9311            str     r3, [sp, #68]   ; 0x44
+ 800eb34:      06af            lsls    r7, r5, #26
+ 800eb36:      f140 8476       bpl.w   800f426 <_svfprintf_r+0xb66>
+ 800eb3a:      3607            adds    r6, #7
+ 800eb3c:      f026 0607       bic.w   r6, r6, #7
+ 800eb40:      f106 0308       add.w   r3, r6, #8
+ 800eb44:      e9d6 6700       ldrd    r6, r7, [r6]
+ 800eb48:      9306            str     r3, [sp, #24]
+ 800eb4a:      07eb            lsls    r3, r5, #31
+ 800eb4c:      d50a            bpl.n   800eb64 <_svfprintf_r+0x2a4>
+ 800eb4e:      ea56 0307       orrs.w  r3, r6, r7
+ 800eb52:      d007            beq.n   800eb64 <_svfprintf_r+0x2a4>
+ 800eb54:      2330            movs    r3, #48 ; 0x30
+ 800eb56:      f88d 305c       strb.w  r3, [sp, #92]   ; 0x5c
+ 800eb5a:      9b04            ldr     r3, [sp, #16]
+ 800eb5c:      f88d 305d       strb.w  r3, [sp, #93]   ; 0x5d
+ 800eb60:      f045 0502       orr.w   r5, r5, #2
+ 800eb64:      f425 6580       bic.w   r5, r5, #1024   ; 0x400
+ 800eb68:      2302            movs    r3, #2
+ 800eb6a:      e31b            b.n     800f1a4 <_svfprintf_r+0x8e4>
+ 800eb6c:      9802            ldr     r0, [sp, #8]
+ 800eb6e:      f002 f98b       bl      8010e88 <_localeconv_r>
+ 800eb72:      6843            ldr     r3, [r0, #4]
+ 800eb74:      9312            str     r3, [sp, #72]   ; 0x48
+ 800eb76:      4618            mov     r0, r3
+ 800eb78:      f7f8 f92c       bl      8006dd4 <strlen>
+ 800eb7c:      900e            str     r0, [sp, #56]   ; 0x38
+ 800eb7e:      9802            ldr     r0, [sp, #8]
+ 800eb80:      f002 f982       bl      8010e88 <_localeconv_r>
+ 800eb84:      6883            ldr     r3, [r0, #8]
+ 800eb86:      9307            str     r3, [sp, #28]
+ 800eb88:      9b0e            ldr     r3, [sp, #56]   ; 0x38
+ 800eb8a:      2b00            cmp     r3, #0
+ 800eb8c:      f43f aefd       beq.w   800e98a <_svfprintf_r+0xca>
+ 800eb90:      9b07            ldr     r3, [sp, #28]
+ 800eb92:      2b00            cmp     r3, #0
+ 800eb94:      f43f aef9       beq.w   800e98a <_svfprintf_r+0xca>
+ 800eb98:      781b            ldrb    r3, [r3, #0]
+ 800eb9a:      2b00            cmp     r3, #0
+ 800eb9c:      f43f aef5       beq.w   800e98a <_svfprintf_r+0xca>
+ 800eba0:      f445 6580       orr.w   r5, r5, #1024   ; 0x400
+ 800eba4:      e6f1            b.n     800e98a <_svfprintf_r+0xca>
+ 800eba6:      f89d 305b       ldrb.w  r3, [sp, #91]   ; 0x5b
+ 800ebaa:      2b00            cmp     r3, #0
+ 800ebac:      f47f aeed       bne.w   800e98a <_svfprintf_r+0xca>
+ 800ebb0:      2320            movs    r3, #32
+ 800ebb2:      f88d 305b       strb.w  r3, [sp, #91]   ; 0x5b
+ 800ebb6:      e6e8            b.n     800e98a <_svfprintf_r+0xca>
+ 800ebb8:      f045 0501       orr.w   r5, r5, #1
+ 800ebbc:      e6e5            b.n     800e98a <_svfprintf_r+0xca>
+ 800ebbe:      6832            ldr     r2, [r6, #0]
+ 800ebc0:      920b            str     r2, [sp, #44]   ; 0x2c
+ 800ebc2:      2a00            cmp     r2, #0
+ 800ebc4:      f106 0304       add.w   r3, r6, #4
+ 800ebc8:      dab0            bge.n   800eb2c <_svfprintf_r+0x26c>
+ 800ebca:      4252            negs    r2, r2
+ 800ebcc:      920b            str     r2, [sp, #44]   ; 0x2c
+ 800ebce:      461e            mov     r6, r3
+ 800ebd0:      f045 0504       orr.w   r5, r5, #4
+ 800ebd4:      e6d9            b.n     800e98a <_svfprintf_r+0xca>
+ 800ebd6:      232b            movs    r3, #43 ; 0x2b
+ 800ebd8:      e7eb            b.n     800ebb2 <_svfprintf_r+0x2f2>
+ 800ebda:      9a08            ldr     r2, [sp, #32]
+ 800ebdc:      9b08            ldr     r3, [sp, #32]
+ 800ebde:      7812            ldrb    r2, [r2, #0]
+ 800ebe0:      9204            str     r2, [sp, #16]
+ 800ebe2:      2a2a            cmp     r2, #42 ; 0x2a
+ 800ebe4:      f103 0301       add.w   r3, r3, #1
+ 800ebe8:      d110            bne.n   800ec0c <_svfprintf_r+0x34c>
+ 800ebea:      6832            ldr     r2, [r6, #0]
+ 800ebec:      9308            str     r3, [sp, #32]
+ 800ebee:      ea42 78e2       orr.w   r8, r2, r2, asr #31
+ 800ebf2:      3604            adds    r6, #4
+ 800ebf4:      e6c9            b.n     800e98a <_svfprintf_r+0xca>
+ 800ebf6:      210a            movs    r1, #10
+ 800ebf8:      fb01 2808       mla     r8, r1, r8, r2
+ 800ebfc:      f813 2b01       ldrb.w  r2, [r3], #1
+ 800ec00:      9204            str     r2, [sp, #16]
+ 800ec02:      9a04            ldr     r2, [sp, #16]
+ 800ec04:      3a30            subs    r2, #48 ; 0x30
+ 800ec06:      2a09            cmp     r2, #9
+ 800ec08:      d9f5            bls.n   800ebf6 <_svfprintf_r+0x336>
+ 800ec0a:      e6c3            b.n     800e994 <_svfprintf_r+0xd4>
+ 800ec0c:      f04f 0800       mov.w   r8, #0
+ 800ec10:      e7f7            b.n     800ec02 <_svfprintf_r+0x342>
+ 800ec12:      f045 0580       orr.w   r5, r5, #128    ; 0x80
+ 800ec16:      e6b8            b.n     800e98a <_svfprintf_r+0xca>
+ 800ec18:      2200            movs    r2, #0
+ 800ec1a:      9b08            ldr     r3, [sp, #32]
+ 800ec1c:      920b            str     r2, [sp, #44]   ; 0x2c
+ 800ec1e:      9a04            ldr     r2, [sp, #16]
+ 800ec20:      990b            ldr     r1, [sp, #44]   ; 0x2c
+ 800ec22:      3a30            subs    r2, #48 ; 0x30
+ 800ec24:      200a            movs    r0, #10
+ 800ec26:      fb00 2201       mla     r2, r0, r1, r2
+ 800ec2a:      920b            str     r2, [sp, #44]   ; 0x2c
+ 800ec2c:      f813 2b01       ldrb.w  r2, [r3], #1
+ 800ec30:      9204            str     r2, [sp, #16]
+ 800ec32:      3a30            subs    r2, #48 ; 0x30
+ 800ec34:      2a09            cmp     r2, #9
+ 800ec36:      d9f2            bls.n   800ec1e <_svfprintf_r+0x35e>
+ 800ec38:      e6ac            b.n     800e994 <_svfprintf_r+0xd4>
+ 800ec3a:      f045 0508       orr.w   r5, r5, #8
+ 800ec3e:      e6a4            b.n     800e98a <_svfprintf_r+0xca>
+       ...
+ 800ec48:      08012e51        .word   0x08012e51
+ 800ec4c:      9b08            ldr     r3, [sp, #32]
+ 800ec4e:      781b            ldrb    r3, [r3, #0]
+ 800ec50:      2b68            cmp     r3, #104        ; 0x68
+ 800ec52:      bf01            itttt   eq
+ 800ec54:      9b08            ldreq   r3, [sp, #32]
+ 800ec56:      3301            addeq   r3, #1
+ 800ec58:      9308            streq   r3, [sp, #32]
+ 800ec5a:      f445 7500       orreq.w r5, r5, #512    ; 0x200
+ 800ec5e:      bf18            it      ne
+ 800ec60:      f045 0540       orrne.w r5, r5, #64     ; 0x40
+ 800ec64:      e691            b.n     800e98a <_svfprintf_r+0xca>
+ 800ec66:      9b08            ldr     r3, [sp, #32]
+ 800ec68:      781b            ldrb    r3, [r3, #0]
+ 800ec6a:      2b6c            cmp     r3, #108        ; 0x6c
+ 800ec6c:      d105            bne.n   800ec7a <_svfprintf_r+0x3ba>
+ 800ec6e:      9b08            ldr     r3, [sp, #32]
+ 800ec70:      3301            adds    r3, #1
+ 800ec72:      9308            str     r3, [sp, #32]
+ 800ec74:      f045 0520       orr.w   r5, r5, #32
+ 800ec78:      e687            b.n     800e98a <_svfprintf_r+0xca>
+ 800ec7a:      f045 0510       orr.w   r5, r5, #16
+ 800ec7e:      e684            b.n     800e98a <_svfprintf_r+0xca>
+ 800ec80:      1d33            adds    r3, r6, #4
+ 800ec82:      9306            str     r3, [sp, #24]
+ 800ec84:      6833            ldr     r3, [r6, #0]
+ 800ec86:      f88d 30c4       strb.w  r3, [sp, #196]  ; 0xc4
+ 800ec8a:      2300            movs    r3, #0
+ 800ec8c:      f88d 305b       strb.w  r3, [sp, #91]   ; 0x5b
+ 800ec90:      469a            mov     sl, r3
+ 800ec92:      f04f 0801       mov.w   r8, #1
+ 800ec96:      930c            str     r3, [sp, #48]   ; 0x30
+ 800ec98:      461f            mov     r7, r3
+ 800ec9a:      9305            str     r3, [sp, #20]
+ 800ec9c:      461e            mov     r6, r3
+ 800ec9e:      f10d 09c4       add.w   r9, sp, #196    ; 0xc4
+ 800eca2:      e2ce            b.n     800f242 <_svfprintf_r+0x982>
+ 800eca4:      f045 0510       orr.w   r5, r5, #16
+ 800eca8:      06a9            lsls    r1, r5, #26
+ 800ecaa:      d521            bpl.n   800ecf0 <_svfprintf_r+0x430>
+ 800ecac:      3607            adds    r6, #7
+ 800ecae:      f026 0607       bic.w   r6, r6, #7
+ 800ecb2:      f106 0308       add.w   r3, r6, #8
+ 800ecb6:      e9d6 6700       ldrd    r6, r7, [r6]
+ 800ecba:      9306            str     r3, [sp, #24]
+ 800ecbc:      2e00            cmp     r6, #0
+ 800ecbe:      f177 0300       sbcs.w  r3, r7, #0
+ 800ecc2:      da06            bge.n   800ecd2 <_svfprintf_r+0x412>
+ 800ecc4:      4276            negs    r6, r6
+ 800ecc6:      f04f 032d       mov.w   r3, #45 ; 0x2d
+ 800ecca:      eb67 0747       sbc.w   r7, r7, r7, lsl #1
+ 800ecce:      f88d 305b       strb.w  r3, [sp, #91]   ; 0x5b
+ 800ecd2:      f1b8 3fff       cmp.w   r8, #4294967295 ; 0xffffffff
+ 800ecd6:      f040 83b6       bne.w   800f446 <_svfprintf_r+0xb86>
+ 800ecda:      2f00            cmp     r7, #0
+ 800ecdc:      bf08            it      eq
+ 800ecde:      2e0a            cmpeq   r6, #10
+ 800ece0:      f080 83e8       bcs.w   800f4b4 <_svfprintf_r+0xbf4>
+ 800ece4:      f50d 7994       add.w   r9, sp, #296    ; 0x128
+ 800ece8:      3630            adds    r6, #48 ; 0x30
+ 800ecea:      f809 6d01       strb.w  r6, [r9, #-1]!
+ 800ecee:      e3cc            b.n     800f48a <_svfprintf_r+0xbca>
+ 800ecf0:      1d33            adds    r3, r6, #4
+ 800ecf2:      06ea            lsls    r2, r5, #27
+ 800ecf4:      9306            str     r3, [sp, #24]
+ 800ecf6:      d502            bpl.n   800ecfe <_svfprintf_r+0x43e>
+ 800ecf8:      6836            ldr     r6, [r6, #0]
+ 800ecfa:      17f7            asrs    r7, r6, #31
+ 800ecfc:      e7de            b.n     800ecbc <_svfprintf_r+0x3fc>
+ 800ecfe:      f015 0f40       tst.w   r5, #64 ; 0x40
+ 800ed02:      6836            ldr     r6, [r6, #0]
+ 800ed04:      d001            beq.n   800ed0a <_svfprintf_r+0x44a>
+ 800ed06:      b236            sxth    r6, r6
+ 800ed08:      e7f7            b.n     800ecfa <_svfprintf_r+0x43a>
+ 800ed0a:      05ab            lsls    r3, r5, #22
+ 800ed0c:      bf48            it      mi
+ 800ed0e:      b276            sxtbmi  r6, r6
+ 800ed10:      e7f3            b.n     800ecfa <_svfprintf_r+0x43a>
+ 800ed12:      3607            adds    r6, #7
+ 800ed14:      f026 0607       bic.w   r6, r6, #7
+ 800ed18:      ed96 8b00       vldr    d8, [r6]
+ 800ed1c:      ed9f 7bb0       vldr    d7, [pc, #704]  ; 800efe0 <_svfprintf_r+0x720>
+ 800ed20:      eeb0 6bc8       vabs.f64        d6, d8
+ 800ed24:      f106 0308       add.w   r3, r6, #8
+ 800ed28:      eeb4 6b47       vcmp.f64        d6, d7
+ 800ed2c:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ed30:      9306            str     r3, [sp, #24]
+ 800ed32:      dd17            ble.n   800ed64 <_svfprintf_r+0x4a4>
+ 800ed34:      eeb5 8bc0       vcmpe.f64       d8, #0.0
+ 800ed38:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ed3c:      d502            bpl.n   800ed44 <_svfprintf_r+0x484>
+ 800ed3e:      232d            movs    r3, #45 ; 0x2d
+ 800ed40:      f88d 305b       strb.w  r3, [sp, #91]   ; 0x5b
+ 800ed44:      4aa8            ldr     r2, [pc, #672]  ; (800efe8 <_svfprintf_r+0x728>)
+ 800ed46:      4ba9            ldr     r3, [pc, #676]  ; (800efec <_svfprintf_r+0x72c>)
+ 800ed48:      9904            ldr     r1, [sp, #16]
+ 800ed4a:      f025 0580       bic.w   r5, r5, #128    ; 0x80
+ 800ed4e:      2947            cmp     r1, #71 ; 0x47
+ 800ed50:      bfcc            ite     gt
+ 800ed52:      4691            movgt   r9, r2
+ 800ed54:      4699            movle   r9, r3
+ 800ed56:      f04f 0a00       mov.w   sl, #0
+ 800ed5a:      f04f 0803       mov.w   r8, #3
+ 800ed5e:      f8cd a030       str.w   sl, [sp, #48]   ; 0x30
+ 800ed62:      e399            b.n     800f498 <_svfprintf_r+0xbd8>
+ 800ed64:      eeb4 8b48       vcmp.f64        d8, d8
+ 800ed68:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ed6c:      d709            bvc.n   800ed82 <_svfprintf_r+0x4c2>
+ 800ed6e:      ee18 3a90       vmov    r3, s17
+ 800ed72:      2b00            cmp     r3, #0
+ 800ed74:      bfbc            itt     lt
+ 800ed76:      232d            movlt   r3, #45 ; 0x2d
+ 800ed78:      f88d 305b       strblt.w        r3, [sp, #91]   ; 0x5b
+ 800ed7c:      4a9c            ldr     r2, [pc, #624]  ; (800eff0 <_svfprintf_r+0x730>)
+ 800ed7e:      4b9d            ldr     r3, [pc, #628]  ; (800eff4 <_svfprintf_r+0x734>)
+ 800ed80:      e7e2            b.n     800ed48 <_svfprintf_r+0x488>
+ 800ed82:      9b04            ldr     r3, [sp, #16]
+ 800ed84:      f023 0720       bic.w   r7, r3, #32
+ 800ed88:      2f41            cmp     r7, #65 ; 0x41
+ 800ed8a:      d126            bne.n   800edda <_svfprintf_r+0x51a>
+ 800ed8c:      2330            movs    r3, #48 ; 0x30
+ 800ed8e:      f88d 305c       strb.w  r3, [sp, #92]   ; 0x5c
+ 800ed92:      9b04            ldr     r3, [sp, #16]
+ 800ed94:      2b61            cmp     r3, #97 ; 0x61
+ 800ed96:      bf14            ite     ne
+ 800ed98:      2358            movne   r3, #88 ; 0x58
+ 800ed9a:      2378            moveq   r3, #120        ; 0x78
+ 800ed9c:      f1b8 0f63       cmp.w   r8, #99 ; 0x63
+ 800eda0:      f88d 305d       strb.w  r3, [sp, #93]   ; 0x5d
+ 800eda4:      f045 0502       orr.w   r5, r5, #2
+ 800eda8:      dd24            ble.n   800edf4 <_svfprintf_r+0x534>
+ 800edaa:      f108 0101       add.w   r1, r8, #1
+ 800edae:      9802            ldr     r0, [sp, #8]
+ 800edb0:      f7ff f89c       bl      800deec <_malloc_r>
+ 800edb4:      4681            mov     r9, r0
+ 800edb6:      2800            cmp     r0, #0
+ 800edb8:      f040 80ec       bne.w   800ef94 <_svfprintf_r+0x6d4>
+ 800edbc:      f8bb 300c       ldrh.w  r3, [fp, #12]
+ 800edc0:      f043 0340       orr.w   r3, r3, #64     ; 0x40
+ 800edc4:      f8ab 300c       strh.w  r3, [fp, #12]
+ 800edc8:      f8bb 300c       ldrh.w  r3, [fp, #12]
+ 800edcc:      f013 0f40       tst.w   r3, #64 ; 0x40
+ 800edd0:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 800edd2:      bf18            it      ne
+ 800edd4:      f04f 33ff       movne.w r3, #4294967295 ; 0xffffffff
+ 800edd8:      e598            b.n     800e90c <_svfprintf_r+0x4c>
+ 800edda:      f1b8 3fff       cmp.w   r8, #4294967295 ; 0xffffffff
+ 800edde:      f000 80db       beq.w   800ef98 <_svfprintf_r+0x6d8>
+ 800ede2:      2f47            cmp     r7, #71 ; 0x47
+ 800ede4:      d103            bne.n   800edee <_svfprintf_r+0x52e>
+ 800ede6:      f1b8 0f00       cmp.w   r8, #0
+ 800edea:      f000 80da       beq.w   800efa2 <_svfprintf_r+0x6e2>
+ 800edee:      f04f 0a00       mov.w   sl, #0
+ 800edf2:      e003            b.n     800edfc <_svfprintf_r+0x53c>
+ 800edf4:      f04f 0a00       mov.w   sl, #0
+ 800edf8:      f10d 09c4       add.w   r9, sp, #196    ; 0xc4
+ 800edfc:      f445 7380       orr.w   r3, r5, #256    ; 0x100
+ 800ee00:      930c            str     r3, [sp, #48]   ; 0x30
+ 800ee02:      ee18 3a90       vmov    r3, s17
+ 800ee06:      2b00            cmp     r3, #0
+ 800ee08:      f280 80cf       bge.w   800efaa <_svfprintf_r+0x6ea>
+ 800ee0c:      eeb1 9b48       vneg.f64        d9, d8
+ 800ee10:      232d            movs    r3, #45 ; 0x2d
+ 800ee12:      2f41            cmp     r7, #65 ; 0x41
+ 800ee14:      930d            str     r3, [sp, #52]   ; 0x34
+ 800ee16:      f040 80d9       bne.w   800efcc <_svfprintf_r+0x70c>
+ 800ee1a:      eeb0 0b49       vmov.f64        d0, d9
+ 800ee1e:      a818            add     r0, sp, #96     ; 0x60
+ 800ee20:      f002 fb5e       bl      80114e0 <frexp>
+ 800ee24:      eeb4 7b00       vmov.f64        d7, #64 ; 0x3e000000  0.125
+ 800ee28:      ee20 0b07       vmul.f64        d0, d0, d7
+ 800ee2c:      eeb5 0b40       vcmp.f64        d0, #0.0
+ 800ee30:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ee34:      bf04            itt     eq
+ 800ee36:      2301            moveq   r3, #1
+ 800ee38:      9318            streq   r3, [sp, #96]   ; 0x60
+ 800ee3a:      9a04            ldr     r2, [sp, #16]
+ 800ee3c:      4b6e            ldr     r3, [pc, #440]  ; (800eff8 <_svfprintf_r+0x738>)
+ 800ee3e:      496f            ldr     r1, [pc, #444]  ; (800effc <_svfprintf_r+0x73c>)
+ 800ee40:      eeb3 7b00       vmov.f64        d7, #48 ; 0x41800000  16.0
+ 800ee44:      2a61            cmp     r2, #97 ; 0x61
+ 800ee46:      bf08            it      eq
+ 800ee48:      4619            moveq   r1, r3
+ 800ee4a:      f108 32ff       add.w   r2, r8, #4294967295     ; 0xffffffff
+ 800ee4e:      464b            mov     r3, r9
+ 800ee50:      ee20 0b07       vmul.f64        d0, d0, d7
+ 800ee54:      eefd 6bc0       vcvt.s32.f64    s13, d0
+ 800ee58:      f1b2 3fff       cmp.w   r2, #4294967295 ; 0xffffffff
+ 800ee5c:      ee16 0a90       vmov    r0, s13
+ 800ee60:      5c0e            ldrb    r6, [r1, r0]
+ 800ee62:      f803 6b01       strb.w  r6, [r3], #1
+ 800ee66:      eeb8 6be6       vcvt.f64.s32    d6, s13
+ 800ee6a:      4616            mov     r6, r2
+ 800ee6c:      ee30 0b46       vsub.f64        d0, d0, d6
+ 800ee70:      d006            beq.n   800ee80 <_svfprintf_r+0x5c0>
+ 800ee72:      eeb5 0b40       vcmp.f64        d0, #0.0
+ 800ee76:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ee7a:      f102 32ff       add.w   r2, r2, #4294967295     ; 0xffffffff
+ 800ee7e:      d1e7            bne.n   800ee50 <_svfprintf_r+0x590>
+ 800ee80:      eeb6 7b00       vmov.f64        d7, #96 ; 0x3f000000  0.5
+ 800ee84:      eeb4 0bc7       vcmpe.f64       d0, d7
+ 800ee88:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ee8c:      dc08            bgt.n   800eea0 <_svfprintf_r+0x5e0>
+ 800ee8e:      eeb4 0b47       vcmp.f64        d0, d7
+ 800ee92:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ee96:      f040 8095       bne.w   800efc4 <_svfprintf_r+0x704>
+ 800ee9a:      07c0            lsls    r0, r0, #31
+ 800ee9c:      f140 8092       bpl.w   800efc4 <_svfprintf_r+0x704>
+ 800eea0:      7bce            ldrb    r6, [r1, #15]
+ 800eea2:      931c            str     r3, [sp, #112]  ; 0x70
+ 800eea4:      f04f 0c30       mov.w   ip, #48 ; 0x30
+ 800eea8:      981c            ldr     r0, [sp, #112]  ; 0x70
+ 800eeaa:      1e42            subs    r2, r0, #1
+ 800eeac:      921c            str     r2, [sp, #112]  ; 0x70
+ 800eeae:      f810 2c01       ldrb.w  r2, [r0, #-1]
+ 800eeb2:      42b2            cmp     r2, r6
+ 800eeb4:      d07d            beq.n   800efb2 <_svfprintf_r+0x6f2>
+ 800eeb6:      2a39            cmp     r2, #57 ; 0x39
+ 800eeb8:      bf16            itet    ne
+ 800eeba:      3201            addne   r2, #1
+ 800eebc:      7a8a            ldrbeq  r2, [r1, #10]
+ 800eebe:      b2d2            uxtbne  r2, r2
+ 800eec0:      f800 2c01       strb.w  r2, [r0, #-1]
+ 800eec4:      461a            mov     r2, r3
+ 800eec6:      eba2 0309       sub.w   r3, r2, r9
+ 800eeca:      2f47            cmp     r7, #71 ; 0x47
+ 800eecc:      9303            str     r3, [sp, #12]
+ 800eece:      9e18            ldr     r6, [sp, #96]   ; 0x60
+ 800eed0:      f040 80ce       bne.w   800f070 <_svfprintf_r+0x7b0>
+ 800eed4:      1cf2            adds    r2, r6, #3
+ 800eed6:      db02            blt.n   800eede <_svfprintf_r+0x61e>
+ 800eed8:      45b0            cmp     r8, r6
+ 800eeda:      f280 80f5       bge.w   800f0c8 <_svfprintf_r+0x808>
+ 800eede:      9b04            ldr     r3, [sp, #16]
+ 800eee0:      3b02            subs    r3, #2
+ 800eee2:      9304            str     r3, [sp, #16]
+ 800eee4:      9904            ldr     r1, [sp, #16]
+ 800eee6:      f89d 2010       ldrb.w  r2, [sp, #16]
+ 800eeea:      f021 0120       bic.w   r1, r1, #32
+ 800eeee:      2941            cmp     r1, #65 ; 0x41
+ 800eef0:      bf08            it      eq
+ 800eef2:      320f            addeq   r2, #15
+ 800eef4:      f106 33ff       add.w   r3, r6, #4294967295     ; 0xffffffff
+ 800eef8:      bf06            itte    eq
+ 800eefa:      b2d2            uxtbeq  r2, r2
+ 800eefc:      2101            moveq   r1, #1
+ 800eefe:      2100            movne   r1, #0
+ 800ef00:      2b00            cmp     r3, #0
+ 800ef02:      9318            str     r3, [sp, #96]   ; 0x60
+ 800ef04:      bfb8            it      lt
+ 800ef06:      f1c6 0301       rsblt   r3, r6, #1
+ 800ef0a:      f88d 2068       strb.w  r2, [sp, #104]  ; 0x68
+ 800ef0e:      bfb4            ite     lt
+ 800ef10:      222d            movlt   r2, #45 ; 0x2d
+ 800ef12:      222b            movge   r2, #43 ; 0x2b
+ 800ef14:      2b09            cmp     r3, #9
+ 800ef16:      f88d 2069       strb.w  r2, [sp, #105]  ; 0x69
+ 800ef1a:      f340 80c0       ble.w   800f09e <_svfprintf_r+0x7de>
+ 800ef1e:      f10d 0277       add.w   r2, sp, #119    ; 0x77
+ 800ef22:      260a            movs    r6, #10
+ 800ef24:      fb93 f0f6       sdiv    r0, r3, r6
+ 800ef28:      fb06 3310       mls     r3, r6, r0, r3
+ 800ef2c:      3330            adds    r3, #48 ; 0x30
+ 800ef2e:      2809            cmp     r0, #9
+ 800ef30:      f802 3c01       strb.w  r3, [r2, #-1]
+ 800ef34:      f102 31ff       add.w   r1, r2, #4294967295     ; 0xffffffff
+ 800ef38:      4603            mov     r3, r0
+ 800ef3a:      f300 80a9       bgt.w   800f090 <_svfprintf_r+0x7d0>
+ 800ef3e:      3330            adds    r3, #48 ; 0x30
+ 800ef40:      f801 3c01       strb.w  r3, [r1, #-1]
+ 800ef44:      3a02            subs    r2, #2
+ 800ef46:      f10d 036a       add.w   r3, sp, #106    ; 0x6a
+ 800ef4a:      f10d 0077       add.w   r0, sp, #119    ; 0x77
+ 800ef4e:      4282            cmp     r2, r0
+ 800ef50:      4619            mov     r1, r3
+ 800ef52:      f0c0 809f       bcc.w   800f094 <_svfprintf_r+0x7d4>
+ 800ef56:      9a03            ldr     r2, [sp, #12]
+ 800ef58:      ab1a            add     r3, sp, #104    ; 0x68
+ 800ef5a:      1acb            subs    r3, r1, r3
+ 800ef5c:      2a01            cmp     r2, #1
+ 800ef5e:      9310            str     r3, [sp, #64]   ; 0x40
+ 800ef60:      eb03 0802       add.w   r8, r3, r2
+ 800ef64:      dc01            bgt.n   800ef6a <_svfprintf_r+0x6aa>
+ 800ef66:      07eb            lsls    r3, r5, #31
+ 800ef68:      d501            bpl.n   800ef6e <_svfprintf_r+0x6ae>
+ 800ef6a:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800ef6c:      4498            add     r8, r3
+ 800ef6e:      f425 6580       bic.w   r5, r5, #1024   ; 0x400
+ 800ef72:      2700            movs    r7, #0
+ 800ef74:      f445 7380       orr.w   r3, r5, #256    ; 0x100
+ 800ef78:      930c            str     r3, [sp, #48]   ; 0x30
+ 800ef7a:      9705            str     r7, [sp, #20]
+ 800ef7c:      463e            mov     r6, r7
+ 800ef7e:      9b0d            ldr     r3, [sp, #52]   ; 0x34
+ 800ef80:      2b00            cmp     r3, #0
+ 800ef82:      f000 82fe       beq.w   800f582 <_svfprintf_r+0xcc2>
+ 800ef86:      232d            movs    r3, #45 ; 0x2d
+ 800ef88:      9d0c            ldr     r5, [sp, #48]   ; 0x30
+ 800ef8a:      f88d 305b       strb.w  r3, [sp, #91]   ; 0x5b
+ 800ef8e:      2300            movs    r3, #0
+ 800ef90:      930c            str     r3, [sp, #48]   ; 0x30
+ 800ef92:      e156            b.n     800f242 <_svfprintf_r+0x982>
+ 800ef94:      4682            mov     sl, r0
+ 800ef96:      e731            b.n     800edfc <_svfprintf_r+0x53c>
+ 800ef98:      f04f 0a00       mov.w   sl, #0
+ 800ef9c:      f04f 0806       mov.w   r8, #6
+ 800efa0:      e72c            b.n     800edfc <_svfprintf_r+0x53c>
+ 800efa2:      46c2            mov     sl, r8
+ 800efa4:      f04f 0801       mov.w   r8, #1
+ 800efa8:      e728            b.n     800edfc <_svfprintf_r+0x53c>
+ 800efaa:      eeb0 9b48       vmov.f64        d9, d8
+ 800efae:      2300            movs    r3, #0
+ 800efb0:      e72f            b.n     800ee12 <_svfprintf_r+0x552>
+ 800efb2:      f800 cc01       strb.w  ip, [r0, #-1]
+ 800efb6:      e777            b.n     800eea8 <_svfprintf_r+0x5e8>
+ 800efb8:      f802 0b01       strb.w  r0, [r2], #1
+ 800efbc:      1a99            subs    r1, r3, r2
+ 800efbe:      2900            cmp     r1, #0
+ 800efc0:      dafa            bge.n   800efb8 <_svfprintf_r+0x6f8>
+ 800efc2:      e780            b.n     800eec6 <_svfprintf_r+0x606>
+ 800efc4:      461a            mov     r2, r3
+ 800efc6:      2030            movs    r0, #48 ; 0x30
+ 800efc8:      4433            add     r3, r6
+ 800efca:      e7f7            b.n     800efbc <_svfprintf_r+0x6fc>
+ 800efcc:      2f46            cmp     r7, #70 ; 0x46
+ 800efce:      d017            beq.n   800f000 <_svfprintf_r+0x740>
+ 800efd0:      2f45            cmp     r7, #69 ; 0x45
+ 800efd2:      d146            bne.n   800f062 <_svfprintf_r+0x7a2>
+ 800efd4:      f108 0601       add.w   r6, r8, #1
+ 800efd8:      2102            movs    r1, #2
+ 800efda:      e013            b.n     800f004 <_svfprintf_r+0x744>
+ 800efdc:      f3af 8000       nop.w
+ 800efe0:      ffffffff        .word   0xffffffff
+ 800efe4:      7fefffff        .word   0x7fefffff
+ 800efe8:      08012e34        .word   0x08012e34
+ 800efec:      08012e30        .word   0x08012e30
+ 800eff0:      08012e3c        .word   0x08012e3c
+ 800eff4:      08012e38        .word   0x08012e38
+ 800eff8:      08012e40        .word   0x08012e40
+ 800effc:      08012e51        .word   0x08012e51
+ 800f000:      4646            mov     r6, r8
+ 800f002:      2103            movs    r1, #3
+ 800f004:      ab1c            add     r3, sp, #112    ; 0x70
+ 800f006:      9301            str     r3, [sp, #4]
+ 800f008:      ab19            add     r3, sp, #100    ; 0x64
+ 800f00a:      9300            str     r3, [sp, #0]
+ 800f00c:      4632            mov     r2, r6
+ 800f00e:      ab18            add     r3, sp, #96     ; 0x60
+ 800f010:      eeb0 0b49       vmov.f64        d0, d9
+ 800f014:      9802            ldr     r0, [sp, #8]
+ 800f016:      f000 ff9b       bl      800ff50 <_dtoa_r>
+ 800f01a:      2f47            cmp     r7, #71 ; 0x47
+ 800f01c:      4681            mov     r9, r0
+ 800f01e:      d101            bne.n   800f024 <_svfprintf_r+0x764>
+ 800f020:      07e9            lsls    r1, r5, #31
+ 800f022:      d521            bpl.n   800f068 <_svfprintf_r+0x7a8>
+ 800f024:      2f46            cmp     r7, #70 ; 0x46
+ 800f026:      eb09 0306       add.w   r3, r9, r6
+ 800f02a:      d10d            bne.n   800f048 <_svfprintf_r+0x788>
+ 800f02c:      f899 2000       ldrb.w  r2, [r9]
+ 800f030:      2a30            cmp     r2, #48 ; 0x30
+ 800f032:      d107            bne.n   800f044 <_svfprintf_r+0x784>
+ 800f034:      eeb5 9b40       vcmp.f64        d9, #0.0
+ 800f038:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800f03c:      bf1c            itt     ne
+ 800f03e:      f1c6 0601       rsbne   r6, r6, #1
+ 800f042:      9618            strne   r6, [sp, #96]   ; 0x60
+ 800f044:      9a18            ldr     r2, [sp, #96]   ; 0x60
+ 800f046:      4413            add     r3, r2
+ 800f048:      eeb5 9b40       vcmp.f64        d9, #0.0
+ 800f04c:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800f050:      d009            beq.n   800f066 <_svfprintf_r+0x7a6>
+ 800f052:      2130            movs    r1, #48 ; 0x30
+ 800f054:      9a1c            ldr     r2, [sp, #112]  ; 0x70
+ 800f056:      4293            cmp     r3, r2
+ 800f058:      d906            bls.n   800f068 <_svfprintf_r+0x7a8>
+ 800f05a:      1c50            adds    r0, r2, #1
+ 800f05c:      901c            str     r0, [sp, #112]  ; 0x70
+ 800f05e:      7011            strb    r1, [r2, #0]
+ 800f060:      e7f8            b.n     800f054 <_svfprintf_r+0x794>
+ 800f062:      4646            mov     r6, r8
+ 800f064:      e7b8            b.n     800efd8 <_svfprintf_r+0x718>
+ 800f066:      931c            str     r3, [sp, #112]  ; 0x70
+ 800f068:      9b1c            ldr     r3, [sp, #112]  ; 0x70
+ 800f06a:      eba3 0309       sub.w   r3, r3, r9
+ 800f06e:      e72c            b.n     800eeca <_svfprintf_r+0x60a>
+ 800f070:      2f46            cmp     r7, #70 ; 0x46
+ 800f072:      f47f af37       bne.w   800eee4 <_svfprintf_r+0x624>
+ 800f076:      2e00            cmp     r6, #0
+ 800f078:      dd1e            ble.n   800f0b8 <_svfprintf_r+0x7f8>
+ 800f07a:      f1b8 0f00       cmp.w   r8, #0
+ 800f07e:      d101            bne.n   800f084 <_svfprintf_r+0x7c4>
+ 800f080:      07ef            lsls    r7, r5, #31
+ 800f082:      d535            bpl.n   800f0f0 <_svfprintf_r+0x830>
+ 800f084:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800f086:      18f3            adds    r3, r6, r3
+ 800f088:      4498            add     r8, r3
+ 800f08a:      2366            movs    r3, #102        ; 0x66
+ 800f08c:      9304            str     r3, [sp, #16]
+ 800f08e:      e035            b.n     800f0fc <_svfprintf_r+0x83c>
+ 800f090:      460a            mov     r2, r1
+ 800f092:      e746            b.n     800ef22 <_svfprintf_r+0x662>
+ 800f094:      f812 1b01       ldrb.w  r1, [r2], #1
+ 800f098:      f803 1b01       strb.w  r1, [r3], #1
+ 800f09c:      e757            b.n     800ef4e <_svfprintf_r+0x68e>
+ 800f09e:      b941            cbnz    r1, 800f0b2 <_svfprintf_r+0x7f2>
+ 800f0a0:      2230            movs    r2, #48 ; 0x30
+ 800f0a2:      f88d 206a       strb.w  r2, [sp, #106]  ; 0x6a
+ 800f0a6:      f10d 026b       add.w   r2, sp, #107    ; 0x6b
+ 800f0aa:      3330            adds    r3, #48 ; 0x30
+ 800f0ac:      1c51            adds    r1, r2, #1
+ 800f0ae:      7013            strb    r3, [r2, #0]
+ 800f0b0:      e751            b.n     800ef56 <_svfprintf_r+0x696>
+ 800f0b2:      f10d 026a       add.w   r2, sp, #106    ; 0x6a
+ 800f0b6:      e7f8            b.n     800f0aa <_svfprintf_r+0x7ea>
+ 800f0b8:      f1b8 0f00       cmp.w   r8, #0
+ 800f0bc:      d101            bne.n   800f0c2 <_svfprintf_r+0x802>
+ 800f0be:      07e8            lsls    r0, r5, #31
+ 800f0c0:      d518            bpl.n   800f0f4 <_svfprintf_r+0x834>
+ 800f0c2:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800f0c4:      3301            adds    r3, #1
+ 800f0c6:      e7df            b.n     800f088 <_svfprintf_r+0x7c8>
+ 800f0c8:      9b03            ldr     r3, [sp, #12]
+ 800f0ca:      42b3            cmp     r3, r6
+ 800f0cc:      dc06            bgt.n   800f0dc <_svfprintf_r+0x81c>
+ 800f0ce:      07e9            lsls    r1, r5, #31
+ 800f0d0:      d527            bpl.n   800f122 <_svfprintf_r+0x862>
+ 800f0d2:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800f0d4:      eb06 0803       add.w   r8, r6, r3
+ 800f0d8:      2367            movs    r3, #103        ; 0x67
+ 800f0da:      e7d7            b.n     800f08c <_svfprintf_r+0x7cc>
+ 800f0dc:      9b03            ldr     r3, [sp, #12]
+ 800f0de:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 800f0e0:      2e00            cmp     r6, #0
+ 800f0e2:      eb03 0802       add.w   r8, r3, r2
+ 800f0e6:      dcf7            bgt.n   800f0d8 <_svfprintf_r+0x818>
+ 800f0e8:      f1c6 0301       rsb     r3, r6, #1
+ 800f0ec:      4498            add     r8, r3
+ 800f0ee:      e7f3            b.n     800f0d8 <_svfprintf_r+0x818>
+ 800f0f0:      46b0            mov     r8, r6
+ 800f0f2:      e7ca            b.n     800f08a <_svfprintf_r+0x7ca>
+ 800f0f4:      2366            movs    r3, #102        ; 0x66
+ 800f0f6:      9304            str     r3, [sp, #16]
+ 800f0f8:      f04f 0801       mov.w   r8, #1
+ 800f0fc:      f415 6380       ands.w  r3, r5, #1024   ; 0x400
+ 800f100:      9305            str     r3, [sp, #20]
+ 800f102:      d01f            beq.n   800f144 <_svfprintf_r+0x884>
+ 800f104:      2700            movs    r7, #0
+ 800f106:      2e00            cmp     r6, #0
+ 800f108:      9705            str     r7, [sp, #20]
+ 800f10a:      f77f af38       ble.w   800ef7e <_svfprintf_r+0x6be>
+ 800f10e:      9b07            ldr     r3, [sp, #28]
+ 800f110:      781b            ldrb    r3, [r3, #0]
+ 800f112:      2bff            cmp     r3, #255        ; 0xff
+ 800f114:      d107            bne.n   800f126 <_svfprintf_r+0x866>
+ 800f116:      9b05            ldr     r3, [sp, #20]
+ 800f118:      9a0e            ldr     r2, [sp, #56]   ; 0x38
+ 800f11a:      443b            add     r3, r7
+ 800f11c:      fb02 8803       mla     r8, r2, r3, r8
+ 800f120:      e72d            b.n     800ef7e <_svfprintf_r+0x6be>
+ 800f122:      46b0            mov     r8, r6
+ 800f124:      e7d8            b.n     800f0d8 <_svfprintf_r+0x818>
+ 800f126:      42b3            cmp     r3, r6
+ 800f128:      daf5            bge.n   800f116 <_svfprintf_r+0x856>
+ 800f12a:      1af6            subs    r6, r6, r3
+ 800f12c:      9b07            ldr     r3, [sp, #28]
+ 800f12e:      785b            ldrb    r3, [r3, #1]
+ 800f130:      b133            cbz     r3, 800f140 <_svfprintf_r+0x880>
+ 800f132:      9b05            ldr     r3, [sp, #20]
+ 800f134:      3301            adds    r3, #1
+ 800f136:      9305            str     r3, [sp, #20]
+ 800f138:      9b07            ldr     r3, [sp, #28]
+ 800f13a:      3301            adds    r3, #1
+ 800f13c:      9307            str     r3, [sp, #28]
+ 800f13e:      e7e6            b.n     800f10e <_svfprintf_r+0x84e>
+ 800f140:      3701            adds    r7, #1
+ 800f142:      e7e4            b.n     800f10e <_svfprintf_r+0x84e>
+ 800f144:      9f05            ldr     r7, [sp, #20]
+ 800f146:      e71a            b.n     800ef7e <_svfprintf_r+0x6be>
+ 800f148:      4632            mov     r2, r6
+ 800f14a:      f852 3b04       ldr.w   r3, [r2], #4
+ 800f14e:      9206            str     r2, [sp, #24]
+ 800f150:      06aa            lsls    r2, r5, #26
+ 800f152:      d509            bpl.n   800f168 <_svfprintf_r+0x8a8>
+ 800f154:      9a0a            ldr     r2, [sp, #40]   ; 0x28
+ 800f156:      4610            mov     r0, r2
+ 800f158:      17d1            asrs    r1, r2, #31
+ 800f15a:      e9c3 0100       strd    r0, r1, [r3]
+ 800f15e:      9e06            ldr     r6, [sp, #24]
+ 800f160:      f8dd 9020       ldr.w   r9, [sp, #32]
+ 800f164:      f7ff bbea       b.w     800e93c <_svfprintf_r+0x7c>
+ 800f168:      06ef            lsls    r7, r5, #27
+ 800f16a:      d502            bpl.n   800f172 <_svfprintf_r+0x8b2>
+ 800f16c:      9a0a            ldr     r2, [sp, #40]   ; 0x28
+ 800f16e:      601a            str     r2, [r3, #0]
+ 800f170:      e7f5            b.n     800f15e <_svfprintf_r+0x89e>
+ 800f172:      066e            lsls    r6, r5, #25
+ 800f174:      d502            bpl.n   800f17c <_svfprintf_r+0x8bc>
+ 800f176:      9a0a            ldr     r2, [sp, #40]   ; 0x28
+ 800f178:      801a            strh    r2, [r3, #0]
+ 800f17a:      e7f0            b.n     800f15e <_svfprintf_r+0x89e>
+ 800f17c:      05a8            lsls    r0, r5, #22
+ 800f17e:      d5f5            bpl.n   800f16c <_svfprintf_r+0x8ac>
+ 800f180:      9a0a            ldr     r2, [sp, #40]   ; 0x28
+ 800f182:      701a            strb    r2, [r3, #0]
+ 800f184:      e7eb            b.n     800f15e <_svfprintf_r+0x89e>
+ 800f186:      f045 0510       orr.w   r5, r5, #16
+ 800f18a:      06a9            lsls    r1, r5, #26
+ 800f18c:      d520            bpl.n   800f1d0 <_svfprintf_r+0x910>
+ 800f18e:      3607            adds    r6, #7
+ 800f190:      f026 0607       bic.w   r6, r6, #7
+ 800f194:      f106 0308       add.w   r3, r6, #8
+ 800f198:      e9d6 6700       ldrd    r6, r7, [r6]
+ 800f19c:      9306            str     r3, [sp, #24]
+ 800f19e:      f425 6580       bic.w   r5, r5, #1024   ; 0x400
+ 800f1a2:      2300            movs    r3, #0
+ 800f1a4:      2200            movs    r2, #0
+ 800f1a6:      f1b8 3fff       cmp.w   r8, #4294967295 ; 0xffffffff
+ 800f1aa:      f88d 205b       strb.w  r2, [sp, #91]   ; 0x5b
+ 800f1ae:      f000 814d       beq.w   800f44c <_svfprintf_r+0xb8c>
+ 800f1b2:      462a            mov     r2, r5
+ 800f1b4:      ea56 0107       orrs.w  r1, r6, r7
+ 800f1b8:      f025 0580       bic.w   r5, r5, #128    ; 0x80
+ 800f1bc:      f040 8146       bne.w   800f44c <_svfprintf_r+0xb8c>
+ 800f1c0:      f1b8 0f00       cmp.w   r8, #0
+ 800f1c4:      f000 81c7       beq.w   800f556 <_svfprintf_r+0xc96>
+ 800f1c8:      2b01            cmp     r3, #1
+ 800f1ca:      f040 8142       bne.w   800f452 <_svfprintf_r+0xb92>
+ 800f1ce:      e589            b.n     800ece4 <_svfprintf_r+0x424>
+ 800f1d0:      1d33            adds    r3, r6, #4
+ 800f1d2:      06ea            lsls    r2, r5, #27
+ 800f1d4:      9306            str     r3, [sp, #24]
+ 800f1d6:      d501            bpl.n   800f1dc <_svfprintf_r+0x91c>
+ 800f1d8:      6836            ldr     r6, [r6, #0]
+ 800f1da:      e002            b.n     800f1e2 <_svfprintf_r+0x922>
+ 800f1dc:      066b            lsls    r3, r5, #25
+ 800f1de:      d502            bpl.n   800f1e6 <_svfprintf_r+0x926>
+ 800f1e0:      8836            ldrh    r6, [r6, #0]
+ 800f1e2:      2700            movs    r7, #0
+ 800f1e4:      e7db            b.n     800f19e <_svfprintf_r+0x8de>
+ 800f1e6:      05af            lsls    r7, r5, #22
+ 800f1e8:      d5f6            bpl.n   800f1d8 <_svfprintf_r+0x918>
+ 800f1ea:      7836            ldrb    r6, [r6, #0]
+ 800f1ec:      e7f9            b.n     800f1e2 <_svfprintf_r+0x922>
+ 800f1ee:      1d33            adds    r3, r6, #4
+ 800f1f0:      9306            str     r3, [sp, #24]
+ 800f1f2:      f647 0330       movw    r3, #30768      ; 0x7830
+ 800f1f6:      f8ad 305c       strh.w  r3, [sp, #92]   ; 0x5c
+ 800f1fa:      2278            movs    r2, #120        ; 0x78
+ 800f1fc:      4baa            ldr     r3, [pc, #680]  ; (800f4a8 <_svfprintf_r+0xbe8>)
+ 800f1fe:      9311            str     r3, [sp, #68]   ; 0x44
+ 800f200:      6836            ldr     r6, [r6, #0]
+ 800f202:      9204            str     r2, [sp, #16]
+ 800f204:      2700            movs    r7, #0
+ 800f206:      f045 0502       orr.w   r5, r5, #2
+ 800f20a:      2302            movs    r3, #2
+ 800f20c:      e7ca            b.n     800f1a4 <_svfprintf_r+0x8e4>
+ 800f20e:      1d33            adds    r3, r6, #4
+ 800f210:      f8d6 9000       ldr.w   r9, [r6]
+ 800f214:      9306            str     r3, [sp, #24]
+ 800f216:      2600            movs    r6, #0
+ 800f218:      f1b8 3fff       cmp.w   r8, #4294967295 ; 0xffffffff
+ 800f21c:      f88d 605b       strb.w  r6, [sp, #91]   ; 0x5b
+ 800f220:      f000 80db       beq.w   800f3da <_svfprintf_r+0xb1a>
+ 800f224:      4642            mov     r2, r8
+ 800f226:      4631            mov     r1, r6
+ 800f228:      4648            mov     r0, r9
+ 800f22a:      f7f7 fd79       bl      8006d20 <memchr>
+ 800f22e:      4682            mov     sl, r0
+ 800f230:      2800            cmp     r0, #0
+ 800f232:      f43f ad94       beq.w   800ed5e <_svfprintf_r+0x49e>
+ 800f236:      eba0 0809       sub.w   r8, r0, r9
+ 800f23a:      46b2            mov     sl, r6
+ 800f23c:      960c            str     r6, [sp, #48]   ; 0x30
+ 800f23e:      4637            mov     r7, r6
+ 800f240:      9605            str     r6, [sp, #20]
+ 800f242:      9b0c            ldr     r3, [sp, #48]   ; 0x30
+ 800f244:      4543            cmp     r3, r8
+ 800f246:      bfb8            it      lt
+ 800f248:      4643            movlt   r3, r8
+ 800f24a:      930d            str     r3, [sp, #52]   ; 0x34
+ 800f24c:      f89d 305b       ldrb.w  r3, [sp, #91]   ; 0x5b
+ 800f250:      b113            cbz     r3, 800f258 <_svfprintf_r+0x998>
+ 800f252:      9b0d            ldr     r3, [sp, #52]   ; 0x34
+ 800f254:      3301            adds    r3, #1
+ 800f256:      930d            str     r3, [sp, #52]   ; 0x34
+ 800f258:      f015 0302       ands.w  r3, r5, #2
+ 800f25c:      9313            str     r3, [sp, #76]   ; 0x4c
+ 800f25e:      bf1e            ittt    ne
+ 800f260:      9b0d            ldrne   r3, [sp, #52]   ; 0x34
+ 800f262:      3302            addne   r3, #2
+ 800f264:      930d            strne   r3, [sp, #52]   ; 0x34
+ 800f266:      f015 0384       ands.w  r3, r5, #132    ; 0x84
+ 800f26a:      9314            str     r3, [sp, #80]   ; 0x50
+ 800f26c:      d120            bne.n   800f2b0 <_svfprintf_r+0x9f0>
+ 800f26e:      9b0b            ldr     r3, [sp, #44]   ; 0x2c
+ 800f270:      9a0d            ldr     r2, [sp, #52]   ; 0x34
+ 800f272:      1a9b            subs    r3, r3, r2
+ 800f274:      2b00            cmp     r3, #0
+ 800f276:      dd1b            ble.n   800f2b0 <_svfprintf_r+0x9f0>
+ 800f278:      e9dd 2c1f       ldrd    r2, ip, [sp, #124]      ; 0x7c
+ 800f27c:      498b            ldr     r1, [pc, #556]  ; (800f4ac <_svfprintf_r+0xbec>)
+ 800f27e:      6021            str     r1, [r4, #0]
+ 800f280:      2b10            cmp     r3, #16
+ 800f282:      f102 0201       add.w   r2, r2, #1
+ 800f286:      f104 0008       add.w   r0, r4, #8
+ 800f28a:      f300 817d       bgt.w   800f588 <_svfprintf_r+0xcc8>
+ 800f28e:      eb0c 0103       add.w   r1, ip, r3
+ 800f292:      2a07            cmp     r2, #7
+ 800f294:      6063            str     r3, [r4, #4]
+ 800f296:      e9cd 211f       strd    r2, r1, [sp, #124]      ; 0x7c
+ 800f29a:      f340 818a       ble.w   800f5b2 <_svfprintf_r+0xcf2>
+ 800f29e:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f2a0:      4659            mov     r1, fp
+ 800f2a2:      9802            ldr     r0, [sp, #8]
+ 800f2a4:      f002 f9ae       bl      8011604 <__ssprint_r>
+ 800f2a8:      2800            cmp     r0, #0
+ 800f2aa:      f040 84b7       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f2ae:      ac21            add     r4, sp, #132    ; 0x84
+ 800f2b0:      f89d 305b       ldrb.w  r3, [sp, #91]   ; 0x5b
+ 800f2b4:      b173            cbz     r3, 800f2d4 <_svfprintf_r+0xa14>
+ 800f2b6:      f10d 035b       add.w   r3, sp, #91     ; 0x5b
+ 800f2ba:      6023            str     r3, [r4, #0]
+ 800f2bc:      2301            movs    r3, #1
+ 800f2be:      6063            str     r3, [r4, #4]
+ 800f2c0:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f2c2:      3301            adds    r3, #1
+ 800f2c4:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f2c6:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f2c8:      3301            adds    r3, #1
+ 800f2ca:      2b07            cmp     r3, #7
+ 800f2cc:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f2ce:      f300 8172       bgt.w   800f5b6 <_svfprintf_r+0xcf6>
+ 800f2d2:      3408            adds    r4, #8
+ 800f2d4:      9b13            ldr     r3, [sp, #76]   ; 0x4c
+ 800f2d6:      b16b            cbz     r3, 800f2f4 <_svfprintf_r+0xa34>
+ 800f2d8:      ab17            add     r3, sp, #92     ; 0x5c
+ 800f2da:      6023            str     r3, [r4, #0]
+ 800f2dc:      2302            movs    r3, #2
+ 800f2de:      6063            str     r3, [r4, #4]
+ 800f2e0:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f2e2:      3302            adds    r3, #2
+ 800f2e4:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f2e6:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f2e8:      3301            adds    r3, #1
+ 800f2ea:      2b07            cmp     r3, #7
+ 800f2ec:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f2ee:      f300 816c       bgt.w   800f5ca <_svfprintf_r+0xd0a>
+ 800f2f2:      3408            adds    r4, #8
+ 800f2f4:      9b14            ldr     r3, [sp, #80]   ; 0x50
+ 800f2f6:      2b80            cmp     r3, #128        ; 0x80
+ 800f2f8:      d120            bne.n   800f33c <_svfprintf_r+0xa7c>
+ 800f2fa:      9b0b            ldr     r3, [sp, #44]   ; 0x2c
+ 800f2fc:      9a0d            ldr     r2, [sp, #52]   ; 0x34
+ 800f2fe:      1a9b            subs    r3, r3, r2
+ 800f300:      2b00            cmp     r3, #0
+ 800f302:      dd1b            ble.n   800f33c <_svfprintf_r+0xa7c>
+ 800f304:      e9dd 2c1f       ldrd    r2, ip, [sp, #124]      ; 0x7c
+ 800f308:      4969            ldr     r1, [pc, #420]  ; (800f4b0 <_svfprintf_r+0xbf0>)
+ 800f30a:      6021            str     r1, [r4, #0]
+ 800f30c:      2b10            cmp     r3, #16
+ 800f30e:      f102 0201       add.w   r2, r2, #1
+ 800f312:      f104 0008       add.w   r0, r4, #8
+ 800f316:      f300 8162       bgt.w   800f5de <_svfprintf_r+0xd1e>
+ 800f31a:      eb0c 0103       add.w   r1, ip, r3
+ 800f31e:      2a07            cmp     r2, #7
+ 800f320:      6063            str     r3, [r4, #4]
+ 800f322:      e9cd 211f       strd    r2, r1, [sp, #124]      ; 0x7c
+ 800f326:      f340 816f       ble.w   800f608 <_svfprintf_r+0xd48>
+ 800f32a:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f32c:      4659            mov     r1, fp
+ 800f32e:      9802            ldr     r0, [sp, #8]
+ 800f330:      f002 f968       bl      8011604 <__ssprint_r>
+ 800f334:      2800            cmp     r0, #0
+ 800f336:      f040 8471       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f33a:      ac21            add     r4, sp, #132    ; 0x84
+ 800f33c:      9b0c            ldr     r3, [sp, #48]   ; 0x30
+ 800f33e:      eba3 0308       sub.w   r3, r3, r8
+ 800f342:      2b00            cmp     r3, #0
+ 800f344:      930c            str     r3, [sp, #48]   ; 0x30
+ 800f346:      dd1c            ble.n   800f382 <_svfprintf_r+0xac2>
+ 800f348:      980c            ldr     r0, [sp, #48]   ; 0x30
+ 800f34a:      e9dd 231f       ldrd    r2, r3, [sp, #124]      ; 0x7c
+ 800f34e:      2810            cmp     r0, #16
+ 800f350:      4857            ldr     r0, [pc, #348]  ; (800f4b0 <_svfprintf_r+0xbf0>)
+ 800f352:      6020            str     r0, [r4, #0]
+ 800f354:      f102 0201       add.w   r2, r2, #1
+ 800f358:      f104 0108       add.w   r1, r4, #8
+ 800f35c:      f300 8156       bgt.w   800f60c <_svfprintf_r+0xd4c>
+ 800f360:      980c            ldr     r0, [sp, #48]   ; 0x30
+ 800f362:      6060            str     r0, [r4, #4]
+ 800f364:      4403            add     r3, r0
+ 800f366:      2a07            cmp     r2, #7
+ 800f368:      e9cd 231f       strd    r2, r3, [sp, #124]      ; 0x7c
+ 800f36c:      f340 8163       ble.w   800f636 <_svfprintf_r+0xd76>
+ 800f370:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f372:      4659            mov     r1, fp
+ 800f374:      9802            ldr     r0, [sp, #8]
+ 800f376:      f002 f945       bl      8011604 <__ssprint_r>
+ 800f37a:      2800            cmp     r0, #0
+ 800f37c:      f040 844e       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f380:      ac21            add     r4, sp, #132    ; 0x84
+ 800f382:      05e8            lsls    r0, r5, #23
+ 800f384:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f386:      f100 8158       bmi.w   800f63a <_svfprintf_r+0xd7a>
+ 800f38a:      4443            add     r3, r8
+ 800f38c:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f38e:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f390:      3301            adds    r3, #1
+ 800f392:      2b07            cmp     r3, #7
+ 800f394:      e9c4 9800       strd    r9, r8, [r4]
+ 800f398:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f39a:      f300 8190       bgt.w   800f6be <_svfprintf_r+0xdfe>
+ 800f39e:      3408            adds    r4, #8
+ 800f3a0:      076b            lsls    r3, r5, #29
+ 800f3a2:      f100 841d       bmi.w   800fbe0 <_svfprintf_r+0x1320>
+ 800f3a6:      e9dd 320a       ldrd    r3, r2, [sp, #40]       ; 0x28
+ 800f3aa:      990d            ldr     r1, [sp, #52]   ; 0x34
+ 800f3ac:      428a            cmp     r2, r1
+ 800f3ae:      bfac            ite     ge
+ 800f3b0:      189b            addge   r3, r3, r2
+ 800f3b2:      185b            addlt   r3, r3, r1
+ 800f3b4:      930a            str     r3, [sp, #40]   ; 0x28
+ 800f3b6:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f3b8:      b13b            cbz     r3, 800f3ca <_svfprintf_r+0xb0a>
+ 800f3ba:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f3bc:      4659            mov     r1, fp
+ 800f3be:      9802            ldr     r0, [sp, #8]
+ 800f3c0:      f002 f920       bl      8011604 <__ssprint_r>
+ 800f3c4:      2800            cmp     r0, #0
+ 800f3c6:      f040 8429       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f3ca:      2300            movs    r3, #0
+ 800f3cc:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f3ce:      f1ba 0f00       cmp.w   sl, #0
+ 800f3d2:      f040 843f       bne.w   800fc54 <_svfprintf_r+0x1394>
+ 800f3d6:      ac21            add     r4, sp, #132    ; 0x84
+ 800f3d8:      e6c1            b.n     800f15e <_svfprintf_r+0x89e>
+ 800f3da:      4648            mov     r0, r9
+ 800f3dc:      f7f7 fcfa       bl      8006dd4 <strlen>
+ 800f3e0:      46b2            mov     sl, r6
+ 800f3e2:      4680            mov     r8, r0
+ 800f3e4:      e4bb            b.n     800ed5e <_svfprintf_r+0x49e>
+ 800f3e6:      f045 0510       orr.w   r5, r5, #16
+ 800f3ea:      06a8            lsls    r0, r5, #26
+ 800f3ec:      d509            bpl.n   800f402 <_svfprintf_r+0xb42>
+ 800f3ee:      3607            adds    r6, #7
+ 800f3f0:      f026 0607       bic.w   r6, r6, #7
+ 800f3f4:      f106 0308       add.w   r3, r6, #8
+ 800f3f8:      e9d6 6700       ldrd    r6, r7, [r6]
+ 800f3fc:      9306            str     r3, [sp, #24]
+ 800f3fe:      2301            movs    r3, #1
+ 800f400:      e6d0            b.n     800f1a4 <_svfprintf_r+0x8e4>
+ 800f402:      1d33            adds    r3, r6, #4
+ 800f404:      06e9            lsls    r1, r5, #27
+ 800f406:      9306            str     r3, [sp, #24]
+ 800f408:      d501            bpl.n   800f40e <_svfprintf_r+0xb4e>
+ 800f40a:      6836            ldr     r6, [r6, #0]
+ 800f40c:      e002            b.n     800f414 <_svfprintf_r+0xb54>
+ 800f40e:      066a            lsls    r2, r5, #25
+ 800f410:      d502            bpl.n   800f418 <_svfprintf_r+0xb58>
+ 800f412:      8836            ldrh    r6, [r6, #0]
+ 800f414:      2700            movs    r7, #0
+ 800f416:      e7f2            b.n     800f3fe <_svfprintf_r+0xb3e>
+ 800f418:      05ab            lsls    r3, r5, #22
+ 800f41a:      d5f6            bpl.n   800f40a <_svfprintf_r+0xb4a>
+ 800f41c:      7836            ldrb    r6, [r6, #0]
+ 800f41e:      e7f9            b.n     800f414 <_svfprintf_r+0xb54>
+ 800f420:      4b21            ldr     r3, [pc, #132]  ; (800f4a8 <_svfprintf_r+0xbe8>)
+ 800f422:      f7ff bb86       b.w     800eb32 <_svfprintf_r+0x272>
+ 800f426:      1d33            adds    r3, r6, #4
+ 800f428:      06e8            lsls    r0, r5, #27
+ 800f42a:      9306            str     r3, [sp, #24]
+ 800f42c:      d501            bpl.n   800f432 <_svfprintf_r+0xb72>
+ 800f42e:      6836            ldr     r6, [r6, #0]
+ 800f430:      e002            b.n     800f438 <_svfprintf_r+0xb78>
+ 800f432:      0669            lsls    r1, r5, #25
+ 800f434:      d503            bpl.n   800f43e <_svfprintf_r+0xb7e>
+ 800f436:      8836            ldrh    r6, [r6, #0]
+ 800f438:      2700            movs    r7, #0
+ 800f43a:      f7ff bb86       b.w     800eb4a <_svfprintf_r+0x28a>
+ 800f43e:      05aa            lsls    r2, r5, #22
+ 800f440:      d5f5            bpl.n   800f42e <_svfprintf_r+0xb6e>
+ 800f442:      7836            ldrb    r6, [r6, #0]
+ 800f444:      e7f8            b.n     800f438 <_svfprintf_r+0xb78>
+ 800f446:      462a            mov     r2, r5
+ 800f448:      2301            movs    r3, #1
+ 800f44a:      e6b3            b.n     800f1b4 <_svfprintf_r+0x8f4>
+ 800f44c:      2b01            cmp     r3, #1
+ 800f44e:      f43f ac44       beq.w   800ecda <_svfprintf_r+0x41a>
+ 800f452:      2b02            cmp     r3, #2
+ 800f454:      d06d            beq.n   800f532 <_svfprintf_r+0xc72>
+ 800f456:      ab4a            add     r3, sp, #296    ; 0x128
+ 800f458:      08f1            lsrs    r1, r6, #3
+ 800f45a:      ea41 7147       orr.w   r1, r1, r7, lsl #29
+ 800f45e:      08f8            lsrs    r0, r7, #3
+ 800f460:      f006 0207       and.w   r2, r6, #7
+ 800f464:      4607            mov     r7, r0
+ 800f466:      460e            mov     r6, r1
+ 800f468:      3230            adds    r2, #48 ; 0x30
+ 800f46a:      ea56 0107       orrs.w  r1, r6, r7
+ 800f46e:      f103 39ff       add.w   r9, r3, #4294967295     ; 0xffffffff
+ 800f472:      f803 2c01       strb.w  r2, [r3, #-1]
+ 800f476:      d114            bne.n   800f4a2 <_svfprintf_r+0xbe2>
+ 800f478:      07ef            lsls    r7, r5, #31
+ 800f47a:      d506            bpl.n   800f48a <_svfprintf_r+0xbca>
+ 800f47c:      2a30            cmp     r2, #48 ; 0x30
+ 800f47e:      d004            beq.n   800f48a <_svfprintf_r+0xbca>
+ 800f480:      2230            movs    r2, #48 ; 0x30
+ 800f482:      f809 2c01       strb.w  r2, [r9, #-1]
+ 800f486:      f1a3 0902       sub.w   r9, r3, #2
+ 800f48a:      ab4a            add     r3, sp, #296    ; 0x128
+ 800f48c:      f8cd 8030       str.w   r8, [sp, #48]   ; 0x30
+ 800f490:      f04f 0a00       mov.w   sl, #0
+ 800f494:      eba3 0809       sub.w   r8, r3, r9
+ 800f498:      4657            mov     r7, sl
+ 800f49a:      f8cd a014       str.w   sl, [sp, #20]
+ 800f49e:      4656            mov     r6, sl
+ 800f4a0:      e6cf            b.n     800f242 <_svfprintf_r+0x982>
+ 800f4a2:      464b            mov     r3, r9
+ 800f4a4:      e7d8            b.n     800f458 <_svfprintf_r+0xb98>
+ 800f4a6:      bf00            nop
+ 800f4a8:      08012e40        .word   0x08012e40
+ 800f4ac:      08012e64        .word   0x08012e64
+ 800f4b0:      08012e74        .word   0x08012e74
+ 800f4b4:      2300            movs    r3, #0
+ 800f4b6:      9303            str     r3, [sp, #12]
+ 800f4b8:      f405 6380       and.w   r3, r5, #1024   ; 0x400
+ 800f4bc:      f50d 7a94       add.w   sl, sp, #296    ; 0x128
+ 800f4c0:      9305            str     r3, [sp, #20]
+ 800f4c2:      220a            movs    r2, #10
+ 800f4c4:      2300            movs    r3, #0
+ 800f4c6:      4630            mov     r0, r6
+ 800f4c8:      4639            mov     r1, r7
+ 800f4ca:      f7f7 fc8b       bl      8006de4 <__aeabi_uldivmod>
+ 800f4ce:      9b03            ldr     r3, [sp, #12]
+ 800f4d0:      3301            adds    r3, #1
+ 800f4d2:      9303            str     r3, [sp, #12]
+ 800f4d4:      9b05            ldr     r3, [sp, #20]
+ 800f4d6:      3230            adds    r2, #48 ; 0x30
+ 800f4d8:      f10a 39ff       add.w   r9, sl, #4294967295     ; 0xffffffff
+ 800f4dc:      f80a 2c01       strb.w  r2, [sl, #-1]
+ 800f4e0:      b1d3            cbz     r3, 800f518 <_svfprintf_r+0xc58>
+ 800f4e2:      9b07            ldr     r3, [sp, #28]
+ 800f4e4:      9a03            ldr     r2, [sp, #12]
+ 800f4e6:      781b            ldrb    r3, [r3, #0]
+ 800f4e8:      429a            cmp     r2, r3
+ 800f4ea:      d115            bne.n   800f518 <_svfprintf_r+0xc58>
+ 800f4ec:      2aff            cmp     r2, #255        ; 0xff
+ 800f4ee:      d013            beq.n   800f518 <_svfprintf_r+0xc58>
+ 800f4f0:      2f00            cmp     r7, #0
+ 800f4f2:      bf08            it      eq
+ 800f4f4:      2e0a            cmpeq   r6, #10
+ 800f4f6:      d30f            bcc.n   800f518 <_svfprintf_r+0xc58>
+ 800f4f8:      9b0e            ldr     r3, [sp, #56]   ; 0x38
+ 800f4fa:      9912            ldr     r1, [sp, #72]   ; 0x48
+ 800f4fc:      eba9 0903       sub.w   r9, r9, r3
+ 800f500:      461a            mov     r2, r3
+ 800f502:      4648            mov     r0, r9
+ 800f504:      f002 f869       bl      80115da <strncpy>
+ 800f508:      9b07            ldr     r3, [sp, #28]
+ 800f50a:      785b            ldrb    r3, [r3, #1]
+ 800f50c:      b11b            cbz     r3, 800f516 <_svfprintf_r+0xc56>
+ 800f50e:      9b07            ldr     r3, [sp, #28]
+ 800f510:      3301            adds    r3, #1
+ 800f512:      9307            str     r3, [sp, #28]
+ 800f514:      2300            movs    r3, #0
+ 800f516:      9303            str     r3, [sp, #12]
+ 800f518:      2300            movs    r3, #0
+ 800f51a:      4630            mov     r0, r6
+ 800f51c:      4639            mov     r1, r7
+ 800f51e:      220a            movs    r2, #10
+ 800f520:      f7f7 fc60       bl      8006de4 <__aeabi_uldivmod>
+ 800f524:      4606            mov     r6, r0
+ 800f526:      460f            mov     r7, r1
+ 800f528:      ea56 0307       orrs.w  r3, r6, r7
+ 800f52c:      d0ad            beq.n   800f48a <_svfprintf_r+0xbca>
+ 800f52e:      46ca            mov     sl, r9
+ 800f530:      e7c7            b.n     800f4c2 <_svfprintf_r+0xc02>
+ 800f532:      f50d 7994       add.w   r9, sp, #296    ; 0x128
+ 800f536:      f006 030f       and.w   r3, r6, #15
+ 800f53a:      9a11            ldr     r2, [sp, #68]   ; 0x44
+ 800f53c:      5cd3            ldrb    r3, [r2, r3]
+ 800f53e:      f809 3d01       strb.w  r3, [r9, #-1]!
+ 800f542:      0933            lsrs    r3, r6, #4
+ 800f544:      ea43 7307       orr.w   r3, r3, r7, lsl #28
+ 800f548:      093a            lsrs    r2, r7, #4
+ 800f54a:      461e            mov     r6, r3
+ 800f54c:      4617            mov     r7, r2
+ 800f54e:      ea56 0307       orrs.w  r3, r6, r7
+ 800f552:      d1f0            bne.n   800f536 <_svfprintf_r+0xc76>
+ 800f554:      e799            b.n     800f48a <_svfprintf_r+0xbca>
+ 800f556:      f50d 7994       add.w   r9, sp, #296    ; 0x128
+ 800f55a:      2b00            cmp     r3, #0
+ 800f55c:      d195            bne.n   800f48a <_svfprintf_r+0xbca>
+ 800f55e:      07d6            lsls    r6, r2, #31
+ 800f560:      bf44            itt     mi
+ 800f562:      2330            movmi   r3, #48 ; 0x30
+ 800f564:      f809 3d01       strbmi.w        r3, [r9, #-1]!
+ 800f568:      e78f            b.n     800f48a <_svfprintf_r+0xbca>
+ 800f56a:      9b04            ldr     r3, [sp, #16]
+ 800f56c:      2b00            cmp     r3, #0
+ 800f56e:      f000 8377       beq.w   800fc60 <_svfprintf_r+0x13a0>
+ 800f572:      f88d 30c4       strb.w  r3, [sp, #196]  ; 0xc4
+ 800f576:      2300            movs    r3, #0
+ 800f578:      f88d 305b       strb.w  r3, [sp, #91]   ; 0x5b
+ 800f57c:      9606            str     r6, [sp, #24]
+ 800f57e:      f7ff bb87       b.w     800ec90 <_svfprintf_r+0x3d0>
+ 800f582:      e9dd 530c       ldrd    r5, r3, [sp, #48]       ; 0x30
+ 800f586:      e503            b.n     800ef90 <_svfprintf_r+0x6d0>
+ 800f588:      2110            movs    r1, #16
+ 800f58a:      6061            str     r1, [r4, #4]
+ 800f58c:      2a07            cmp     r2, #7
+ 800f58e:      4461            add     r1, ip
+ 800f590:      e9cd 211f       strd    r2, r1, [sp, #124]      ; 0x7c
+ 800f594:      dd0a            ble.n   800f5ac <_svfprintf_r+0xcec>
+ 800f596:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f598:      4659            mov     r1, fp
+ 800f59a:      9802            ldr     r0, [sp, #8]
+ 800f59c:      9315            str     r3, [sp, #84]   ; 0x54
+ 800f59e:      f002 f831       bl      8011604 <__ssprint_r>
+ 800f5a2:      2800            cmp     r0, #0
+ 800f5a4:      f040 833a       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f5a8:      9b15            ldr     r3, [sp, #84]   ; 0x54
+ 800f5aa:      a821            add     r0, sp, #132    ; 0x84
+ 800f5ac:      3b10            subs    r3, #16
+ 800f5ae:      4604            mov     r4, r0
+ 800f5b0:      e662            b.n     800f278 <_svfprintf_r+0x9b8>
+ 800f5b2:      4604            mov     r4, r0
+ 800f5b4:      e67c            b.n     800f2b0 <_svfprintf_r+0x9f0>
+ 800f5b6:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f5b8:      4659            mov     r1, fp
+ 800f5ba:      9802            ldr     r0, [sp, #8]
+ 800f5bc:      f002 f822       bl      8011604 <__ssprint_r>
+ 800f5c0:      2800            cmp     r0, #0
+ 800f5c2:      f040 832b       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f5c6:      ac21            add     r4, sp, #132    ; 0x84
+ 800f5c8:      e684            b.n     800f2d4 <_svfprintf_r+0xa14>
+ 800f5ca:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f5cc:      4659            mov     r1, fp
+ 800f5ce:      9802            ldr     r0, [sp, #8]
+ 800f5d0:      f002 f818       bl      8011604 <__ssprint_r>
+ 800f5d4:      2800            cmp     r0, #0
+ 800f5d6:      f040 8321       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f5da:      ac21            add     r4, sp, #132    ; 0x84
+ 800f5dc:      e68a            b.n     800f2f4 <_svfprintf_r+0xa34>
+ 800f5de:      2110            movs    r1, #16
+ 800f5e0:      6061            str     r1, [r4, #4]
+ 800f5e2:      2a07            cmp     r2, #7
+ 800f5e4:      4461            add     r1, ip
+ 800f5e6:      e9cd 211f       strd    r2, r1, [sp, #124]      ; 0x7c
+ 800f5ea:      dd0a            ble.n   800f602 <_svfprintf_r+0xd42>
+ 800f5ec:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f5ee:      4659            mov     r1, fp
+ 800f5f0:      9802            ldr     r0, [sp, #8]
+ 800f5f2:      9313            str     r3, [sp, #76]   ; 0x4c
+ 800f5f4:      f002 f806       bl      8011604 <__ssprint_r>
+ 800f5f8:      2800            cmp     r0, #0
+ 800f5fa:      f040 830f       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f5fe:      9b13            ldr     r3, [sp, #76]   ; 0x4c
+ 800f600:      a821            add     r0, sp, #132    ; 0x84
+ 800f602:      3b10            subs    r3, #16
+ 800f604:      4604            mov     r4, r0
+ 800f606:      e67d            b.n     800f304 <_svfprintf_r+0xa44>
+ 800f608:      4604            mov     r4, r0
+ 800f60a:      e697            b.n     800f33c <_svfprintf_r+0xa7c>
+ 800f60c:      2010            movs    r0, #16
+ 800f60e:      4403            add     r3, r0
+ 800f610:      2a07            cmp     r2, #7
+ 800f612:      6060            str     r0, [r4, #4]
+ 800f614:      e9cd 231f       strd    r2, r3, [sp, #124]      ; 0x7c
+ 800f618:      dd08            ble.n   800f62c <_svfprintf_r+0xd6c>
+ 800f61a:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f61c:      4659            mov     r1, fp
+ 800f61e:      9802            ldr     r0, [sp, #8]
+ 800f620:      f001 fff0       bl      8011604 <__ssprint_r>
+ 800f624:      2800            cmp     r0, #0
+ 800f626:      f040 82f9       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f62a:      a921            add     r1, sp, #132    ; 0x84
+ 800f62c:      9b0c            ldr     r3, [sp, #48]   ; 0x30
+ 800f62e:      3b10            subs    r3, #16
+ 800f630:      930c            str     r3, [sp, #48]   ; 0x30
+ 800f632:      460c            mov     r4, r1
+ 800f634:      e688            b.n     800f348 <_svfprintf_r+0xa88>
+ 800f636:      460c            mov     r4, r1
+ 800f638:      e6a3            b.n     800f382 <_svfprintf_r+0xac2>
+ 800f63a:      9a04            ldr     r2, [sp, #16]
+ 800f63c:      2a65            cmp     r2, #101        ; 0x65
+ 800f63e:      f340 8243       ble.w   800fac8 <_svfprintf_r+0x1208>
+ 800f642:      eeb5 8b40       vcmp.f64        d8, #0.0
+ 800f646:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800f64a:      d169            bne.n   800f720 <_svfprintf_r+0xe60>
+ 800f64c:      4a72            ldr     r2, [pc, #456]  ; (800f818 <_svfprintf_r+0xf58>)
+ 800f64e:      6022            str     r2, [r4, #0]
+ 800f650:      2201            movs    r2, #1
+ 800f652:      4413            add     r3, r2
+ 800f654:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f656:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f658:      6062            str     r2, [r4, #4]
+ 800f65a:      4413            add     r3, r2
+ 800f65c:      2b07            cmp     r3, #7
+ 800f65e:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f660:      dc37            bgt.n   800f6d2 <_svfprintf_r+0xe12>
+ 800f662:      3408            adds    r4, #8
+ 800f664:      9b18            ldr     r3, [sp, #96]   ; 0x60
+ 800f666:      9a03            ldr     r2, [sp, #12]
+ 800f668:      4293            cmp     r3, r2
+ 800f66a:      db02            blt.n   800f672 <_svfprintf_r+0xdb2>
+ 800f66c:      07e9            lsls    r1, r5, #31
+ 800f66e:      f57f ae97       bpl.w   800f3a0 <_svfprintf_r+0xae0>
+ 800f672:      9b0f            ldr     r3, [sp, #60]   ; 0x3c
+ 800f674:      6023            str     r3, [r4, #0]
+ 800f676:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800f678:      6063            str     r3, [r4, #4]
+ 800f67a:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 800f67c:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f67e:      4413            add     r3, r2
+ 800f680:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f682:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f684:      3301            adds    r3, #1
+ 800f686:      2b07            cmp     r3, #7
+ 800f688:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f68a:      dc2c            bgt.n   800f6e6 <_svfprintf_r+0xe26>
+ 800f68c:      3408            adds    r4, #8
+ 800f68e:      9b03            ldr     r3, [sp, #12]
+ 800f690:      1e5e            subs    r6, r3, #1
+ 800f692:      2e00            cmp     r6, #0
+ 800f694:      f77f ae84       ble.w   800f3a0 <_svfprintf_r+0xae0>
+ 800f698:      4f60            ldr     r7, [pc, #384]  ; (800f81c <_svfprintf_r+0xf5c>)
+ 800f69a:      f04f 0810       mov.w   r8, #16
+ 800f69e:      e9dd 321f       ldrd    r3, r2, [sp, #124]      ; 0x7c
+ 800f6a2:      2e10            cmp     r6, #16
+ 800f6a4:      f103 0301       add.w   r3, r3, #1
+ 800f6a8:      f104 0108       add.w   r1, r4, #8
+ 800f6ac:      6027            str     r7, [r4, #0]
+ 800f6ae:      dc24            bgt.n   800f6fa <_svfprintf_r+0xe3a>
+ 800f6b0:      6066            str     r6, [r4, #4]
+ 800f6b2:      2b07            cmp     r3, #7
+ 800f6b4:      4416            add     r6, r2
+ 800f6b6:      e9cd 361f       strd    r3, r6, [sp, #124]      ; 0x7c
+ 800f6ba:      f340 828e       ble.w   800fbda <_svfprintf_r+0x131a>
+ 800f6be:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f6c0:      4659            mov     r1, fp
+ 800f6c2:      9802            ldr     r0, [sp, #8]
+ 800f6c4:      f001 ff9e       bl      8011604 <__ssprint_r>
+ 800f6c8:      2800            cmp     r0, #0
+ 800f6ca:      f040 82a7       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f6ce:      ac21            add     r4, sp, #132    ; 0x84
+ 800f6d0:      e666            b.n     800f3a0 <_svfprintf_r+0xae0>
+ 800f6d2:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f6d4:      4659            mov     r1, fp
+ 800f6d6:      9802            ldr     r0, [sp, #8]
+ 800f6d8:      f001 ff94       bl      8011604 <__ssprint_r>
+ 800f6dc:      2800            cmp     r0, #0
+ 800f6de:      f040 829d       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f6e2:      ac21            add     r4, sp, #132    ; 0x84
+ 800f6e4:      e7be            b.n     800f664 <_svfprintf_r+0xda4>
+ 800f6e6:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f6e8:      4659            mov     r1, fp
+ 800f6ea:      9802            ldr     r0, [sp, #8]
+ 800f6ec:      f001 ff8a       bl      8011604 <__ssprint_r>
+ 800f6f0:      2800            cmp     r0, #0
+ 800f6f2:      f040 8293       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f6f6:      ac21            add     r4, sp, #132    ; 0x84
+ 800f6f8:      e7c9            b.n     800f68e <_svfprintf_r+0xdce>
+ 800f6fa:      3210            adds    r2, #16
+ 800f6fc:      2b07            cmp     r3, #7
+ 800f6fe:      f8c4 8004       str.w   r8, [r4, #4]
+ 800f702:      e9cd 321f       strd    r3, r2, [sp, #124]      ; 0x7c
+ 800f706:      dd08            ble.n   800f71a <_svfprintf_r+0xe5a>
+ 800f708:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f70a:      4659            mov     r1, fp
+ 800f70c:      9802            ldr     r0, [sp, #8]
+ 800f70e:      f001 ff79       bl      8011604 <__ssprint_r>
+ 800f712:      2800            cmp     r0, #0
+ 800f714:      f040 8282       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f718:      a921            add     r1, sp, #132    ; 0x84
+ 800f71a:      3e10            subs    r6, #16
+ 800f71c:      460c            mov     r4, r1
+ 800f71e:      e7be            b.n     800f69e <_svfprintf_r+0xdde>
+ 800f720:      9a18            ldr     r2, [sp, #96]   ; 0x60
+ 800f722:      2a00            cmp     r2, #0
+ 800f724:      dc7c            bgt.n   800f820 <_svfprintf_r+0xf60>
+ 800f726:      4a3c            ldr     r2, [pc, #240]  ; (800f818 <_svfprintf_r+0xf58>)
+ 800f728:      6022            str     r2, [r4, #0]
+ 800f72a:      2201            movs    r2, #1
+ 800f72c:      4413            add     r3, r2
+ 800f72e:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f730:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f732:      6062            str     r2, [r4, #4]
+ 800f734:      4413            add     r3, r2
+ 800f736:      2b07            cmp     r3, #7
+ 800f738:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f73a:      dc46            bgt.n   800f7ca <_svfprintf_r+0xf0a>
+ 800f73c:      3408            adds    r4, #8
+ 800f73e:      9b18            ldr     r3, [sp, #96]   ; 0x60
+ 800f740:      b923            cbnz    r3, 800f74c <_svfprintf_r+0xe8c>
+ 800f742:      9b03            ldr     r3, [sp, #12]
+ 800f744:      b913            cbnz    r3, 800f74c <_svfprintf_r+0xe8c>
+ 800f746:      07ea            lsls    r2, r5, #31
+ 800f748:      f57f ae2a       bpl.w   800f3a0 <_svfprintf_r+0xae0>
+ 800f74c:      9b0f            ldr     r3, [sp, #60]   ; 0x3c
+ 800f74e:      6023            str     r3, [r4, #0]
+ 800f750:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800f752:      6063            str     r3, [r4, #4]
+ 800f754:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 800f756:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f758:      4413            add     r3, r2
+ 800f75a:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f75c:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f75e:      3301            adds    r3, #1
+ 800f760:      2b07            cmp     r3, #7
+ 800f762:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f764:      dc3b            bgt.n   800f7de <_svfprintf_r+0xf1e>
+ 800f766:      f104 0308       add.w   r3, r4, #8
+ 800f76a:      9e18            ldr     r6, [sp, #96]   ; 0x60
+ 800f76c:      2e00            cmp     r6, #0
+ 800f76e:      da1b            bge.n   800f7a8 <_svfprintf_r+0xee8>
+ 800f770:      4f2a            ldr     r7, [pc, #168]  ; (800f81c <_svfprintf_r+0xf5c>)
+ 800f772:      4276            negs    r6, r6
+ 800f774:      461a            mov     r2, r3
+ 800f776:      2410            movs    r4, #16
+ 800f778:      e9dd 101f       ldrd    r1, r0, [sp, #124]      ; 0x7c
+ 800f77c:      2e10            cmp     r6, #16
+ 800f77e:      f101 0101       add.w   r1, r1, #1
+ 800f782:      f103 0308       add.w   r3, r3, #8
+ 800f786:      6017            str     r7, [r2, #0]
+ 800f788:      dc33            bgt.n   800f7f2 <_svfprintf_r+0xf32>
+ 800f78a:      6056            str     r6, [r2, #4]
+ 800f78c:      2907            cmp     r1, #7
+ 800f78e:      4406            add     r6, r0
+ 800f790:      e9cd 161f       strd    r1, r6, [sp, #124]      ; 0x7c
+ 800f794:      dd08            ble.n   800f7a8 <_svfprintf_r+0xee8>
+ 800f796:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f798:      4659            mov     r1, fp
+ 800f79a:      9802            ldr     r0, [sp, #8]
+ 800f79c:      f001 ff32       bl      8011604 <__ssprint_r>
+ 800f7a0:      2800            cmp     r0, #0
+ 800f7a2:      f040 823b       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f7a6:      ab21            add     r3, sp, #132    ; 0x84
+ 800f7a8:      9a03            ldr     r2, [sp, #12]
+ 800f7aa:      605a            str     r2, [r3, #4]
+ 800f7ac:      9903            ldr     r1, [sp, #12]
+ 800f7ae:      9a20            ldr     r2, [sp, #128]  ; 0x80
+ 800f7b0:      f8c3 9000       str.w   r9, [r3]
+ 800f7b4:      440a            add     r2, r1
+ 800f7b6:      9220            str     r2, [sp, #128]  ; 0x80
+ 800f7b8:      9a1f            ldr     r2, [sp, #124]  ; 0x7c
+ 800f7ba:      3201            adds    r2, #1
+ 800f7bc:      2a07            cmp     r2, #7
+ 800f7be:      921f            str     r2, [sp, #124]  ; 0x7c
+ 800f7c0:      f73f af7d       bgt.w   800f6be <_svfprintf_r+0xdfe>
+ 800f7c4:      f103 0408       add.w   r4, r3, #8
+ 800f7c8:      e5ea            b.n     800f3a0 <_svfprintf_r+0xae0>
+ 800f7ca:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f7cc:      4659            mov     r1, fp
+ 800f7ce:      9802            ldr     r0, [sp, #8]
+ 800f7d0:      f001 ff18       bl      8011604 <__ssprint_r>
+ 800f7d4:      2800            cmp     r0, #0
+ 800f7d6:      f040 8221       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f7da:      ac21            add     r4, sp, #132    ; 0x84
+ 800f7dc:      e7af            b.n     800f73e <_svfprintf_r+0xe7e>
+ 800f7de:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f7e0:      4659            mov     r1, fp
+ 800f7e2:      9802            ldr     r0, [sp, #8]
+ 800f7e4:      f001 ff0e       bl      8011604 <__ssprint_r>
+ 800f7e8:      2800            cmp     r0, #0
+ 800f7ea:      f040 8217       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f7ee:      ab21            add     r3, sp, #132    ; 0x84
+ 800f7f0:      e7bb            b.n     800f76a <_svfprintf_r+0xeaa>
+ 800f7f2:      3010            adds    r0, #16
+ 800f7f4:      2907            cmp     r1, #7
+ 800f7f6:      6054            str     r4, [r2, #4]
+ 800f7f8:      e9cd 101f       strd    r1, r0, [sp, #124]      ; 0x7c
+ 800f7fc:      dd08            ble.n   800f810 <_svfprintf_r+0xf50>
+ 800f7fe:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f800:      4659            mov     r1, fp
+ 800f802:      9802            ldr     r0, [sp, #8]
+ 800f804:      f001 fefe       bl      8011604 <__ssprint_r>
+ 800f808:      2800            cmp     r0, #0
+ 800f80a:      f040 8207       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f80e:      ab21            add     r3, sp, #132    ; 0x84
+ 800f810:      3e10            subs    r6, #16
+ 800f812:      461a            mov     r2, r3
+ 800f814:      e7b0            b.n     800f778 <_svfprintf_r+0xeb8>
+ 800f816:      bf00            nop
+ 800f818:      08012e62        .word   0x08012e62
+ 800f81c:      08012e74        .word   0x08012e74
+ 800f820:      9a03            ldr     r2, [sp, #12]
+ 800f822:      42b2            cmp     r2, r6
+ 800f824:      bfa8            it      ge
+ 800f826:      4632            movge   r2, r6
+ 800f828:      2a00            cmp     r2, #0
+ 800f82a:      4690            mov     r8, r2
+ 800f82c:      dd0a            ble.n   800f844 <_svfprintf_r+0xf84>
+ 800f82e:      4413            add     r3, r2
+ 800f830:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f832:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f834:      3301            adds    r3, #1
+ 800f836:      2b07            cmp     r3, #7
+ 800f838:      e9c4 9200       strd    r9, r2, [r4]
+ 800f83c:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f83e:      f300 808a       bgt.w   800f956 <_svfprintf_r+0x1096>
+ 800f842:      3408            adds    r4, #8
+ 800f844:      f1b8 0f00       cmp.w   r8, #0
+ 800f848:      bfac            ite     ge
+ 800f84a:      eba6 0808       subge.w r8, r6, r8
+ 800f84e:      46b0            movlt   r8, r6
+ 800f850:      f1b8 0f00       cmp.w   r8, #0
+ 800f854:      dd1b            ble.n   800f88e <_svfprintf_r+0xfce>
+ 800f856:      e9dd 231f       ldrd    r2, r3, [sp, #124]      ; 0x7c
+ 800f85a:      489a            ldr     r0, [pc, #616]  ; (800fac4 <_svfprintf_r+0x1204>)
+ 800f85c:      6020            str     r0, [r4, #0]
+ 800f85e:      f1b8 0f10       cmp.w   r8, #16
+ 800f862:      f102 0201       add.w   r2, r2, #1
+ 800f866:      f104 0108       add.w   r1, r4, #8
+ 800f86a:      dc7e            bgt.n   800f96a <_svfprintf_r+0x10aa>
+ 800f86c:      4443            add     r3, r8
+ 800f86e:      2a07            cmp     r2, #7
+ 800f870:      f8c4 8004       str.w   r8, [r4, #4]
+ 800f874:      e9cd 231f       strd    r2, r3, [sp, #124]      ; 0x7c
+ 800f878:      f340 808b       ble.w   800f992 <_svfprintf_r+0x10d2>
+ 800f87c:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f87e:      4659            mov     r1, fp
+ 800f880:      9802            ldr     r0, [sp, #8]
+ 800f882:      f001 febf       bl      8011604 <__ssprint_r>
+ 800f886:      2800            cmp     r0, #0
+ 800f888:      f040 81c8       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f88c:      ac21            add     r4, sp, #132    ; 0x84
+ 800f88e:      056b            lsls    r3, r5, #21
+ 800f890:      444e            add     r6, r9
+ 800f892:      d509            bpl.n   800f8a8 <_svfprintf_r+0xfe8>
+ 800f894:      9b05            ldr     r3, [sp, #20]
+ 800f896:      2b00            cmp     r3, #0
+ 800f898:      d17d            bne.n   800f996 <_svfprintf_r+0x10d6>
+ 800f89a:      2f00            cmp     r7, #0
+ 800f89c:      d17d            bne.n   800f99a <_svfprintf_r+0x10da>
+ 800f89e:      9b03            ldr     r3, [sp, #12]
+ 800f8a0:      444b            add     r3, r9
+ 800f8a2:      429e            cmp     r6, r3
+ 800f8a4:      bf28            it      cs
+ 800f8a6:      461e            movcs   r6, r3
+ 800f8a8:      9b18            ldr     r3, [sp, #96]   ; 0x60
+ 800f8aa:      9a03            ldr     r2, [sp, #12]
+ 800f8ac:      4293            cmp     r3, r2
+ 800f8ae:      db01            blt.n   800f8b4 <_svfprintf_r+0xff4>
+ 800f8b0:      07ef            lsls    r7, r5, #31
+ 800f8b2:      d50e            bpl.n   800f8d2 <_svfprintf_r+0x1012>
+ 800f8b4:      9b0f            ldr     r3, [sp, #60]   ; 0x3c
+ 800f8b6:      6023            str     r3, [r4, #0]
+ 800f8b8:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 800f8ba:      6063            str     r3, [r4, #4]
+ 800f8bc:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 800f8be:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f8c0:      4413            add     r3, r2
+ 800f8c2:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f8c4:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f8c6:      3301            adds    r3, #1
+ 800f8c8:      2b07            cmp     r3, #7
+ 800f8ca:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f8cc:      f300 80e5       bgt.w   800fa9a <_svfprintf_r+0x11da>
+ 800f8d0:      3408            adds    r4, #8
+ 800f8d2:      9b03            ldr     r3, [sp, #12]
+ 800f8d4:      9a03            ldr     r2, [sp, #12]
+ 800f8d6:      eb09 0703       add.w   r7, r9, r3
+ 800f8da:      1bbb            subs    r3, r7, r6
+ 800f8dc:      9f18            ldr     r7, [sp, #96]   ; 0x60
+ 800f8de:      1bd7            subs    r7, r2, r7
+ 800f8e0:      429f            cmp     r7, r3
+ 800f8e2:      bfa8            it      ge
+ 800f8e4:      461f            movge   r7, r3
+ 800f8e6:      2f00            cmp     r7, #0
+ 800f8e8:      dd0b            ble.n   800f902 <_svfprintf_r+0x1042>
+ 800f8ea:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f8ec:      443b            add     r3, r7
+ 800f8ee:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f8f0:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f8f2:      3301            adds    r3, #1
+ 800f8f4:      2b07            cmp     r3, #7
+ 800f8f6:      e9c4 6700       strd    r6, r7, [r4]
+ 800f8fa:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f8fc:      f300 80d7       bgt.w   800faae <_svfprintf_r+0x11ee>
+ 800f900:      3408            adds    r4, #8
+ 800f902:      9e18            ldr     r6, [sp, #96]   ; 0x60
+ 800f904:      9b03            ldr     r3, [sp, #12]
+ 800f906:      2f00            cmp     r7, #0
+ 800f908:      eba3 0606       sub.w   r6, r3, r6
+ 800f90c:      bfa8            it      ge
+ 800f90e:      1bf6            subge   r6, r6, r7
+ 800f910:      2e00            cmp     r6, #0
+ 800f912:      f77f ad45       ble.w   800f3a0 <_svfprintf_r+0xae0>
+ 800f916:      4f6b            ldr     r7, [pc, #428]  ; (800fac4 <_svfprintf_r+0x1204>)
+ 800f918:      f04f 0810       mov.w   r8, #16
+ 800f91c:      e9dd 321f       ldrd    r3, r2, [sp, #124]      ; 0x7c
+ 800f920:      2e10            cmp     r6, #16
+ 800f922:      f103 0301       add.w   r3, r3, #1
+ 800f926:      f104 0108       add.w   r1, r4, #8
+ 800f92a:      6027            str     r7, [r4, #0]
+ 800f92c:      f77f aec0       ble.w   800f6b0 <_svfprintf_r+0xdf0>
+ 800f930:      3210            adds    r2, #16
+ 800f932:      2b07            cmp     r3, #7
+ 800f934:      f8c4 8004       str.w   r8, [r4, #4]
+ 800f938:      e9cd 321f       strd    r3, r2, [sp, #124]      ; 0x7c
+ 800f93c:      dd08            ble.n   800f950 <_svfprintf_r+0x1090>
+ 800f93e:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f940:      4659            mov     r1, fp
+ 800f942:      9802            ldr     r0, [sp, #8]
+ 800f944:      f001 fe5e       bl      8011604 <__ssprint_r>
+ 800f948:      2800            cmp     r0, #0
+ 800f94a:      f040 8167       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f94e:      a921            add     r1, sp, #132    ; 0x84
+ 800f950:      3e10            subs    r6, #16
+ 800f952:      460c            mov     r4, r1
+ 800f954:      e7e2            b.n     800f91c <_svfprintf_r+0x105c>
+ 800f956:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f958:      4659            mov     r1, fp
+ 800f95a:      9802            ldr     r0, [sp, #8]
+ 800f95c:      f001 fe52       bl      8011604 <__ssprint_r>
+ 800f960:      2800            cmp     r0, #0
+ 800f962:      f040 815b       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f966:      ac21            add     r4, sp, #132    ; 0x84
+ 800f968:      e76c            b.n     800f844 <_svfprintf_r+0xf84>
+ 800f96a:      2010            movs    r0, #16
+ 800f96c:      4403            add     r3, r0
+ 800f96e:      2a07            cmp     r2, #7
+ 800f970:      6060            str     r0, [r4, #4]
+ 800f972:      e9cd 231f       strd    r2, r3, [sp, #124]      ; 0x7c
+ 800f976:      dd08            ble.n   800f98a <_svfprintf_r+0x10ca>
+ 800f978:      aa1e            add     r2, sp, #120    ; 0x78
+ 800f97a:      4659            mov     r1, fp
+ 800f97c:      9802            ldr     r0, [sp, #8]
+ 800f97e:      f001 fe41       bl      8011604 <__ssprint_r>
+ 800f982:      2800            cmp     r0, #0
+ 800f984:      f040 814a       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800f988:      a921            add     r1, sp, #132    ; 0x84
+ 800f98a:      f1a8 0810       sub.w   r8, r8, #16
+ 800f98e:      460c            mov     r4, r1
+ 800f990:      e761            b.n     800f856 <_svfprintf_r+0xf96>
+ 800f992:      460c            mov     r4, r1
+ 800f994:      e77b            b.n     800f88e <_svfprintf_r+0xfce>
+ 800f996:      2f00            cmp     r7, #0
+ 800f998:      d04e            beq.n   800fa38 <_svfprintf_r+0x1178>
+ 800f99a:      3f01            subs    r7, #1
+ 800f99c:      9b12            ldr     r3, [sp, #72]   ; 0x48
+ 800f99e:      6023            str     r3, [r4, #0]
+ 800f9a0:      9b0e            ldr     r3, [sp, #56]   ; 0x38
+ 800f9a2:      6063            str     r3, [r4, #4]
+ 800f9a4:      9a0e            ldr     r2, [sp, #56]   ; 0x38
+ 800f9a6:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f9a8:      4413            add     r3, r2
+ 800f9aa:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f9ac:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f9ae:      3301            adds    r3, #1
+ 800f9b0:      2b07            cmp     r3, #7
+ 800f9b2:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f9b4:      dc47            bgt.n   800fa46 <_svfprintf_r+0x1186>
+ 800f9b6:      3408            adds    r4, #8
+ 800f9b8:      9b03            ldr     r3, [sp, #12]
+ 800f9ba:      444b            add     r3, r9
+ 800f9bc:      1b9a            subs    r2, r3, r6
+ 800f9be:      9b07            ldr     r3, [sp, #28]
+ 800f9c0:      781b            ldrb    r3, [r3, #0]
+ 800f9c2:      4293            cmp     r3, r2
+ 800f9c4:      bfa8            it      ge
+ 800f9c6:      4613            movge   r3, r2
+ 800f9c8:      2b00            cmp     r3, #0
+ 800f9ca:      4698            mov     r8, r3
+ 800f9cc:      dd0a            ble.n   800f9e4 <_svfprintf_r+0x1124>
+ 800f9ce:      e9c4 6300       strd    r6, r3, [r4]
+ 800f9d2:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800f9d4:      4443            add     r3, r8
+ 800f9d6:      9320            str     r3, [sp, #128]  ; 0x80
+ 800f9d8:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800f9da:      3301            adds    r3, #1
+ 800f9dc:      2b07            cmp     r3, #7
+ 800f9de:      931f            str     r3, [sp, #124]  ; 0x7c
+ 800f9e0:      dc3b            bgt.n   800fa5a <_svfprintf_r+0x119a>
+ 800f9e2:      3408            adds    r4, #8
+ 800f9e4:      9b07            ldr     r3, [sp, #28]
+ 800f9e6:      781b            ldrb    r3, [r3, #0]
+ 800f9e8:      f1b8 0f00       cmp.w   r8, #0
+ 800f9ec:      bfac            ite     ge
+ 800f9ee:      eba3 0808       subge.w r8, r3, r8
+ 800f9f2:      4698            movlt   r8, r3
+ 800f9f4:      f1b8 0f00       cmp.w   r8, #0
+ 800f9f8:      dd1a            ble.n   800fa30 <_svfprintf_r+0x1170>
+ 800f9fa:      e9dd 231f       ldrd    r2, r3, [sp, #124]      ; 0x7c
+ 800f9fe:      4831            ldr     r0, [pc, #196]  ; (800fac4 <_svfprintf_r+0x1204>)
+ 800fa00:      6020            str     r0, [r4, #0]
+ 800fa02:      f1b8 0f10       cmp.w   r8, #16
+ 800fa06:      f102 0201       add.w   r2, r2, #1
+ 800fa0a:      f104 0108       add.w   r1, r4, #8
+ 800fa0e:      dc2e            bgt.n   800fa6e <_svfprintf_r+0x11ae>
+ 800fa10:      4443            add     r3, r8
+ 800fa12:      2a07            cmp     r2, #7
+ 800fa14:      f8c4 8004       str.w   r8, [r4, #4]
+ 800fa18:      e9cd 231f       strd    r2, r3, [sp, #124]      ; 0x7c
+ 800fa1c:      dd3b            ble.n   800fa96 <_svfprintf_r+0x11d6>
+ 800fa1e:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fa20:      4659            mov     r1, fp
+ 800fa22:      9802            ldr     r0, [sp, #8]
+ 800fa24:      f001 fdee       bl      8011604 <__ssprint_r>
+ 800fa28:      2800            cmp     r0, #0
+ 800fa2a:      f040 80f7       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800fa2e:      ac21            add     r4, sp, #132    ; 0x84
+ 800fa30:      9b07            ldr     r3, [sp, #28]
+ 800fa32:      781b            ldrb    r3, [r3, #0]
+ 800fa34:      441e            add     r6, r3
+ 800fa36:      e72d            b.n     800f894 <_svfprintf_r+0xfd4>
+ 800fa38:      9b07            ldr     r3, [sp, #28]
+ 800fa3a:      3b01            subs    r3, #1
+ 800fa3c:      9307            str     r3, [sp, #28]
+ 800fa3e:      9b05            ldr     r3, [sp, #20]
+ 800fa40:      3b01            subs    r3, #1
+ 800fa42:      9305            str     r3, [sp, #20]
+ 800fa44:      e7aa            b.n     800f99c <_svfprintf_r+0x10dc>
+ 800fa46:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fa48:      4659            mov     r1, fp
+ 800fa4a:      9802            ldr     r0, [sp, #8]
+ 800fa4c:      f001 fdda       bl      8011604 <__ssprint_r>
+ 800fa50:      2800            cmp     r0, #0
+ 800fa52:      f040 80e3       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800fa56:      ac21            add     r4, sp, #132    ; 0x84
+ 800fa58:      e7ae            b.n     800f9b8 <_svfprintf_r+0x10f8>
+ 800fa5a:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fa5c:      4659            mov     r1, fp
+ 800fa5e:      9802            ldr     r0, [sp, #8]
+ 800fa60:      f001 fdd0       bl      8011604 <__ssprint_r>
+ 800fa64:      2800            cmp     r0, #0
+ 800fa66:      f040 80d9       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800fa6a:      ac21            add     r4, sp, #132    ; 0x84
+ 800fa6c:      e7ba            b.n     800f9e4 <_svfprintf_r+0x1124>
+ 800fa6e:      2010            movs    r0, #16
+ 800fa70:      4403            add     r3, r0
+ 800fa72:      2a07            cmp     r2, #7
+ 800fa74:      6060            str     r0, [r4, #4]
+ 800fa76:      e9cd 231f       strd    r2, r3, [sp, #124]      ; 0x7c
+ 800fa7a:      dd08            ble.n   800fa8e <_svfprintf_r+0x11ce>
+ 800fa7c:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fa7e:      4659            mov     r1, fp
+ 800fa80:      9802            ldr     r0, [sp, #8]
+ 800fa82:      f001 fdbf       bl      8011604 <__ssprint_r>
+ 800fa86:      2800            cmp     r0, #0
+ 800fa88:      f040 80c8       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800fa8c:      a921            add     r1, sp, #132    ; 0x84
+ 800fa8e:      f1a8 0810       sub.w   r8, r8, #16
+ 800fa92:      460c            mov     r4, r1
+ 800fa94:      e7b1            b.n     800f9fa <_svfprintf_r+0x113a>
+ 800fa96:      460c            mov     r4, r1
+ 800fa98:      e7ca            b.n     800fa30 <_svfprintf_r+0x1170>
+ 800fa9a:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fa9c:      4659            mov     r1, fp
+ 800fa9e:      9802            ldr     r0, [sp, #8]
+ 800faa0:      f001 fdb0       bl      8011604 <__ssprint_r>
+ 800faa4:      2800            cmp     r0, #0
+ 800faa6:      f040 80b9       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800faaa:      ac21            add     r4, sp, #132    ; 0x84
+ 800faac:      e711            b.n     800f8d2 <_svfprintf_r+0x1012>
+ 800faae:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fab0:      4659            mov     r1, fp
+ 800fab2:      9802            ldr     r0, [sp, #8]
+ 800fab4:      f001 fda6       bl      8011604 <__ssprint_r>
+ 800fab8:      2800            cmp     r0, #0
+ 800faba:      f040 80af       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800fabe:      ac21            add     r4, sp, #132    ; 0x84
+ 800fac0:      e71f            b.n     800f902 <_svfprintf_r+0x1042>
+ 800fac2:      bf00            nop
+ 800fac4:      08012e74        .word   0x08012e74
+ 800fac8:      9803            ldr     r0, [sp, #12]
+ 800faca:      991f            ldr     r1, [sp, #124]  ; 0x7c
+ 800facc:      2801            cmp     r0, #1
+ 800face:      f103 0201       add.w   r2, r3, #1
+ 800fad2:      f101 0101       add.w   r1, r1, #1
+ 800fad6:      f104 0308       add.w   r3, r4, #8
+ 800fada:      dc01            bgt.n   800fae0 <_svfprintf_r+0x1220>
+ 800fadc:      07e8            lsls    r0, r5, #31
+ 800fade:      d571            bpl.n   800fbc4 <_svfprintf_r+0x1304>
+ 800fae0:      2001            movs    r0, #1
+ 800fae2:      2907            cmp     r1, #7
+ 800fae4:      f8c4 9000       str.w   r9, [r4]
+ 800fae8:      6060            str     r0, [r4, #4]
+ 800faea:      e9cd 121f       strd    r1, r2, [sp, #124]      ; 0x7c
+ 800faee:      dd08            ble.n   800fb02 <_svfprintf_r+0x1242>
+ 800faf0:      aa1e            add     r2, sp, #120    ; 0x78
+ 800faf2:      4659            mov     r1, fp
+ 800faf4:      9802            ldr     r0, [sp, #8]
+ 800faf6:      f001 fd85       bl      8011604 <__ssprint_r>
+ 800fafa:      2800            cmp     r0, #0
+ 800fafc:      f040 808e       bne.w   800fc1c <_svfprintf_r+0x135c>
+ 800fb00:      ab21            add     r3, sp, #132    ; 0x84
+ 800fb02:      9a0f            ldr     r2, [sp, #60]   ; 0x3c
+ 800fb04:      601a            str     r2, [r3, #0]
+ 800fb06:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 800fb08:      605a            str     r2, [r3, #4]
+ 800fb0a:      9909            ldr     r1, [sp, #36]   ; 0x24
+ 800fb0c:      9a20            ldr     r2, [sp, #128]  ; 0x80
+ 800fb0e:      440a            add     r2, r1
+ 800fb10:      9220            str     r2, [sp, #128]  ; 0x80
+ 800fb12:      9a1f            ldr     r2, [sp, #124]  ; 0x7c
+ 800fb14:      3201            adds    r2, #1
+ 800fb16:      2a07            cmp     r2, #7
+ 800fb18:      921f            str     r2, [sp, #124]  ; 0x7c
+ 800fb1a:      dc25            bgt.n   800fb68 <_svfprintf_r+0x12a8>
+ 800fb1c:      3308            adds    r3, #8
+ 800fb1e:      9a03            ldr     r2, [sp, #12]
+ 800fb20:      eeb5 8b40       vcmp.f64        d8, #0.0
+ 800fb24:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800fb28:      f102 34ff       add.w   r4, r2, #4294967295     ; 0xffffffff
+ 800fb2c:      d025            beq.n   800fb7a <_svfprintf_r+0x12ba>
+ 800fb2e:      f109 0201       add.w   r2, r9, #1
+ 800fb32:      991f            ldr     r1, [sp, #124]  ; 0x7c
+ 800fb34:      9803            ldr     r0, [sp, #12]
+ 800fb36:      e9c3 2400       strd    r2, r4, [r3]
+ 800fb3a:      9a20            ldr     r2, [sp, #128]  ; 0x80
+ 800fb3c:      3101            adds    r1, #1
+ 800fb3e:      3a01            subs    r2, #1
+ 800fb40:      4402            add     r2, r0
+ 800fb42:      2907            cmp     r1, #7
+ 800fb44:      e9cd 121f       strd    r1, r2, [sp, #124]      ; 0x7c
+ 800fb48:      dd45            ble.n   800fbd6 <_svfprintf_r+0x1316>
+ 800fb4a:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fb4c:      4659            mov     r1, fp
+ 800fb4e:      9802            ldr     r0, [sp, #8]
+ 800fb50:      f001 fd58       bl      8011604 <__ssprint_r>
+ 800fb54:      2800            cmp     r0, #0
+ 800fb56:      d161            bne.n   800fc1c <_svfprintf_r+0x135c>
+ 800fb58:      ab21            add     r3, sp, #132    ; 0x84
+ 800fb5a:      aa1a            add     r2, sp, #104    ; 0x68
+ 800fb5c:      601a            str     r2, [r3, #0]
+ 800fb5e:      9a10            ldr     r2, [sp, #64]   ; 0x40
+ 800fb60:      605a            str     r2, [r3, #4]
+ 800fb62:      9910            ldr     r1, [sp, #64]   ; 0x40
+ 800fb64:      9a20            ldr     r2, [sp, #128]  ; 0x80
+ 800fb66:      e625            b.n     800f7b4 <_svfprintf_r+0xef4>
+ 800fb68:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fb6a:      4659            mov     r1, fp
+ 800fb6c:      9802            ldr     r0, [sp, #8]
+ 800fb6e:      f001 fd49       bl      8011604 <__ssprint_r>
+ 800fb72:      2800            cmp     r0, #0
+ 800fb74:      d152            bne.n   800fc1c <_svfprintf_r+0x135c>
+ 800fb76:      ab21            add     r3, sp, #132    ; 0x84
+ 800fb78:      e7d1            b.n     800fb1e <_svfprintf_r+0x125e>
+ 800fb7a:      2c00            cmp     r4, #0
+ 800fb7c:      dded            ble.n   800fb5a <_svfprintf_r+0x129a>
+ 800fb7e:      4e3e            ldr     r6, [pc, #248]  ; (800fc78 <_svfprintf_r+0x13b8>)
+ 800fb80:      2710            movs    r7, #16
+ 800fb82:      e9dd 211f       ldrd    r2, r1, [sp, #124]      ; 0x7c
+ 800fb86:      2c10            cmp     r4, #16
+ 800fb88:      f102 0201       add.w   r2, r2, #1
+ 800fb8c:      f103 0008       add.w   r0, r3, #8
+ 800fb90:      601e            str     r6, [r3, #0]
+ 800fb92:      dc07            bgt.n   800fba4 <_svfprintf_r+0x12e4>
+ 800fb94:      605c            str     r4, [r3, #4]
+ 800fb96:      2a07            cmp     r2, #7
+ 800fb98:      440c            add     r4, r1
+ 800fb9a:      e9cd 241f       strd    r2, r4, [sp, #124]      ; 0x7c
+ 800fb9e:      dcd4            bgt.n   800fb4a <_svfprintf_r+0x128a>
+ 800fba0:      4603            mov     r3, r0
+ 800fba2:      e7da            b.n     800fb5a <_svfprintf_r+0x129a>
+ 800fba4:      3110            adds    r1, #16
+ 800fba6:      2a07            cmp     r2, #7
+ 800fba8:      605f            str     r7, [r3, #4]
+ 800fbaa:      e9cd 211f       strd    r2, r1, [sp, #124]      ; 0x7c
+ 800fbae:      dd06            ble.n   800fbbe <_svfprintf_r+0x12fe>
+ 800fbb0:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fbb2:      4659            mov     r1, fp
+ 800fbb4:      9802            ldr     r0, [sp, #8]
+ 800fbb6:      f001 fd25       bl      8011604 <__ssprint_r>
+ 800fbba:      bb78            cbnz    r0, 800fc1c <_svfprintf_r+0x135c>
+ 800fbbc:      a821            add     r0, sp, #132    ; 0x84
+ 800fbbe:      3c10            subs    r4, #16
+ 800fbc0:      4603            mov     r3, r0
+ 800fbc2:      e7de            b.n     800fb82 <_svfprintf_r+0x12c2>
+ 800fbc4:      2001            movs    r0, #1
+ 800fbc6:      2907            cmp     r1, #7
+ 800fbc8:      f8c4 9000       str.w   r9, [r4]
+ 800fbcc:      6060            str     r0, [r4, #4]
+ 800fbce:      e9cd 121f       strd    r1, r2, [sp, #124]      ; 0x7c
+ 800fbd2:      ddc2            ble.n   800fb5a <_svfprintf_r+0x129a>
+ 800fbd4:      e7b9            b.n     800fb4a <_svfprintf_r+0x128a>
+ 800fbd6:      3308            adds    r3, #8
+ 800fbd8:      e7bf            b.n     800fb5a <_svfprintf_r+0x129a>
+ 800fbda:      460c            mov     r4, r1
+ 800fbdc:      f7ff bbe0       b.w     800f3a0 <_svfprintf_r+0xae0>
+ 800fbe0:      9b0b            ldr     r3, [sp, #44]   ; 0x2c
+ 800fbe2:      9a0d            ldr     r2, [sp, #52]   ; 0x34
+ 800fbe4:      1a9d            subs    r5, r3, r2
+ 800fbe6:      2d00            cmp     r5, #0
+ 800fbe8:      f77f abdd       ble.w   800f3a6 <_svfprintf_r+0xae6>
+ 800fbec:      4e23            ldr     r6, [pc, #140]  ; (800fc7c <_svfprintf_r+0x13bc>)
+ 800fbee:      2710            movs    r7, #16
+ 800fbf0:      e9dd 321f       ldrd    r3, r2, [sp, #124]      ; 0x7c
+ 800fbf4:      2d10            cmp     r5, #16
+ 800fbf6:      f103 0301       add.w   r3, r3, #1
+ 800fbfa:      6026            str     r6, [r4, #0]
+ 800fbfc:      dc18            bgt.n   800fc30 <_svfprintf_r+0x1370>
+ 800fbfe:      6065            str     r5, [r4, #4]
+ 800fc00:      2b07            cmp     r3, #7
+ 800fc02:      4415            add     r5, r2
+ 800fc04:      e9cd 351f       strd    r3, r5, [sp, #124]      ; 0x7c
+ 800fc08:      f77f abcd       ble.w   800f3a6 <_svfprintf_r+0xae6>
+ 800fc0c:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fc0e:      4659            mov     r1, fp
+ 800fc10:      9802            ldr     r0, [sp, #8]
+ 800fc12:      f001 fcf7       bl      8011604 <__ssprint_r>
+ 800fc16:      2800            cmp     r0, #0
+ 800fc18:      f43f abc5       beq.w   800f3a6 <_svfprintf_r+0xae6>
+ 800fc1c:      f1ba 0f00       cmp.w   sl, #0
+ 800fc20:      f43f a8d2       beq.w   800edc8 <_svfprintf_r+0x508>
+ 800fc24:      4651            mov     r1, sl
+ 800fc26:      9802            ldr     r0, [sp, #8]
+ 800fc28:      f001 f854       bl      8010cd4 <_free_r>
+ 800fc2c:      f7ff b8cc       b.w     800edc8 <_svfprintf_r+0x508>
+ 800fc30:      3210            adds    r2, #16
+ 800fc32:      2b07            cmp     r3, #7
+ 800fc34:      6067            str     r7, [r4, #4]
+ 800fc36:      e9cd 321f       strd    r3, r2, [sp, #124]      ; 0x7c
+ 800fc3a:      dc02            bgt.n   800fc42 <_svfprintf_r+0x1382>
+ 800fc3c:      3408            adds    r4, #8
+ 800fc3e:      3d10            subs    r5, #16
+ 800fc40:      e7d6            b.n     800fbf0 <_svfprintf_r+0x1330>
+ 800fc42:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fc44:      4659            mov     r1, fp
+ 800fc46:      9802            ldr     r0, [sp, #8]
+ 800fc48:      f001 fcdc       bl      8011604 <__ssprint_r>
+ 800fc4c:      2800            cmp     r0, #0
+ 800fc4e:      d1e5            bne.n   800fc1c <_svfprintf_r+0x135c>
+ 800fc50:      ac21            add     r4, sp, #132    ; 0x84
+ 800fc52:      e7f4            b.n     800fc3e <_svfprintf_r+0x137e>
+ 800fc54:      4651            mov     r1, sl
+ 800fc56:      9802            ldr     r0, [sp, #8]
+ 800fc58:      f001 f83c       bl      8010cd4 <_free_r>
+ 800fc5c:      f7ff bbbb       b.w     800f3d6 <_svfprintf_r+0xb16>
+ 800fc60:      9b20            ldr     r3, [sp, #128]  ; 0x80
+ 800fc62:      2b00            cmp     r3, #0
+ 800fc64:      f43f a8b0       beq.w   800edc8 <_svfprintf_r+0x508>
+ 800fc68:      aa1e            add     r2, sp, #120    ; 0x78
+ 800fc6a:      4659            mov     r1, fp
+ 800fc6c:      9802            ldr     r0, [sp, #8]
+ 800fc6e:      f001 fcc9       bl      8011604 <__ssprint_r>
+ 800fc72:      f7ff b8a9       b.w     800edc8 <_svfprintf_r+0x508>
+ 800fc76:      bf00            nop
+ 800fc78:      08012e74        .word   0x08012e74
+ 800fc7c:      08012e64        .word   0x08012e64
+
+0800fc80 <sysconf>:
+ 800fc80:      2808            cmp     r0, #8
+ 800fc82:      b508            push    {r3, lr}
+ 800fc84:      d006            beq.n   800fc94 <sysconf+0x14>
+ 800fc86:      f7fd fedf       bl      800da48 <__errno>
+ 800fc8a:      2316            movs    r3, #22
+ 800fc8c:      6003            str     r3, [r0, #0]
+ 800fc8e:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 800fc92:      bd08            pop     {r3, pc}
+ 800fc94:      f44f 5080       mov.w   r0, #4096       ; 0x1000
+ 800fc98:      e7fb            b.n     800fc92 <sysconf+0x12>
+       ...
+
+0800fc9c <write>:
+ 800fc9c:      4613            mov     r3, r2
+ 800fc9e:      460a            mov     r2, r1
+ 800fca0:      4601            mov     r1, r0
+ 800fca2:      4802            ldr     r0, [pc, #8]    ; (800fcac <write+0x10>)
+ 800fca4:      6800            ldr     r0, [r0, #0]
+ 800fca6:      f000 b84d       b.w     800fd44 <_write_r>
+ 800fcaa:      bf00            nop
+ 800fcac:      20000014        .word   0x20000014
+
+0800fcb0 <__swbuf_r>:
+ 800fcb0:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 800fcb2:      460d            mov     r5, r1
+ 800fcb4:      4614            mov     r4, r2
+ 800fcb6:      4606            mov     r6, r0
+ 800fcb8:      b118            cbz     r0, 800fcc2 <__swbuf_r+0x12>
+ 800fcba:      6b83            ldr     r3, [r0, #56]   ; 0x38
+ 800fcbc:      b90b            cbnz    r3, 800fcc2 <__swbuf_r+0x12>
+ 800fcbe:      f000 ff79       bl      8010bb4 <__sinit>
+ 800fcc2:      69a3            ldr     r3, [r4, #24]
+ 800fcc4:      60a3            str     r3, [r4, #8]
+ 800fcc6:      89a3            ldrh    r3, [r4, #12]
+ 800fcc8:      0719            lsls    r1, r3, #28
+ 800fcca:      d528            bpl.n   800fd1e <__swbuf_r+0x6e>
+ 800fccc:      6923            ldr     r3, [r4, #16]
+ 800fcce:      b333            cbz     r3, 800fd1e <__swbuf_r+0x6e>
+ 800fcd0:      f9b4 300c       ldrsh.w r3, [r4, #12]
+ 800fcd4:      b2ed            uxtb    r5, r5
+ 800fcd6:      049a            lsls    r2, r3, #18
+ 800fcd8:      462f            mov     r7, r5
+ 800fcda:      d52a            bpl.n   800fd32 <__swbuf_r+0x82>
+ 800fcdc:      6923            ldr     r3, [r4, #16]
+ 800fcde:      6820            ldr     r0, [r4, #0]
+ 800fce0:      1ac0            subs    r0, r0, r3
+ 800fce2:      6963            ldr     r3, [r4, #20]
+ 800fce4:      4283            cmp     r3, r0
+ 800fce6:      dc04            bgt.n   800fcf2 <__swbuf_r+0x42>
+ 800fce8:      4621            mov     r1, r4
+ 800fcea:      4630            mov     r0, r6
+ 800fcec:      f000 fef6       bl      8010adc <_fflush_r>
+ 800fcf0:      b9d8            cbnz    r0, 800fd2a <__swbuf_r+0x7a>
+ 800fcf2:      68a3            ldr     r3, [r4, #8]
+ 800fcf4:      3b01            subs    r3, #1
+ 800fcf6:      60a3            str     r3, [r4, #8]
+ 800fcf8:      6823            ldr     r3, [r4, #0]
+ 800fcfa:      1c5a            adds    r2, r3, #1
+ 800fcfc:      6022            str     r2, [r4, #0]
+ 800fcfe:      701d            strb    r5, [r3, #0]
+ 800fd00:      6963            ldr     r3, [r4, #20]
+ 800fd02:      3001            adds    r0, #1
+ 800fd04:      4283            cmp     r3, r0
+ 800fd06:      d004            beq.n   800fd12 <__swbuf_r+0x62>
+ 800fd08:      89a3            ldrh    r3, [r4, #12]
+ 800fd0a:      07db            lsls    r3, r3, #31
+ 800fd0c:      d50f            bpl.n   800fd2e <__swbuf_r+0x7e>
+ 800fd0e:      2d0a            cmp     r5, #10
+ 800fd10:      d10d            bne.n   800fd2e <__swbuf_r+0x7e>
+ 800fd12:      4621            mov     r1, r4
+ 800fd14:      4630            mov     r0, r6
+ 800fd16:      f000 fee1       bl      8010adc <_fflush_r>
+ 800fd1a:      b140            cbz     r0, 800fd2e <__swbuf_r+0x7e>
+ 800fd1c:      e005            b.n     800fd2a <__swbuf_r+0x7a>
+ 800fd1e:      4621            mov     r1, r4
+ 800fd20:      4630            mov     r0, r6
+ 800fd22:      f000 f821       bl      800fd68 <__swsetup_r>
+ 800fd26:      2800            cmp     r0, #0
+ 800fd28:      d0d2            beq.n   800fcd0 <__swbuf_r+0x20>
+ 800fd2a:      f04f 37ff       mov.w   r7, #4294967295 ; 0xffffffff
+ 800fd2e:      4638            mov     r0, r7
+ 800fd30:      bdf8            pop     {r3, r4, r5, r6, r7, pc}
+ 800fd32:      f443 5300       orr.w   r3, r3, #8192   ; 0x2000
+ 800fd36:      81a3            strh    r3, [r4, #12]
+ 800fd38:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 800fd3a:      f423 5300       bic.w   r3, r3, #8192   ; 0x2000
+ 800fd3e:      6663            str     r3, [r4, #100]  ; 0x64
+ 800fd40:      e7cc            b.n     800fcdc <__swbuf_r+0x2c>
+       ...
+
+0800fd44 <_write_r>:
+ 800fd44:      b538            push    {r3, r4, r5, lr}
+ 800fd46:      4c07            ldr     r4, [pc, #28]   ; (800fd64 <_write_r+0x20>)
+ 800fd48:      4605            mov     r5, r0
+ 800fd4a:      4608            mov     r0, r1
+ 800fd4c:      4611            mov     r1, r2
+ 800fd4e:      2200            movs    r2, #0
+ 800fd50:      6022            str     r2, [r4, #0]
+ 800fd52:      461a            mov     r2, r3
+ 800fd54:      f7fc fd01       bl      800c75a <_write>
+ 800fd58:      1c43            adds    r3, r0, #1
+ 800fd5a:      d102            bne.n   800fd62 <_write_r+0x1e>
+ 800fd5c:      6823            ldr     r3, [r4, #0]
+ 800fd5e:      b103            cbz     r3, 800fd62 <_write_r+0x1e>
+ 800fd60:      602b            str     r3, [r5, #0]
+ 800fd62:      bd38            pop     {r3, r4, r5, pc}
+ 800fd64:      20000b08        .word   0x20000b08
+
+0800fd68 <__swsetup_r>:
+ 800fd68:      b538            push    {r3, r4, r5, lr}
+ 800fd6a:      4b2a            ldr     r3, [pc, #168]  ; (800fe14 <__swsetup_r+0xac>)
+ 800fd6c:      4605            mov     r5, r0
+ 800fd6e:      6818            ldr     r0, [r3, #0]
+ 800fd70:      460c            mov     r4, r1
+ 800fd72:      b118            cbz     r0, 800fd7c <__swsetup_r+0x14>
+ 800fd74:      6b83            ldr     r3, [r0, #56]   ; 0x38
+ 800fd76:      b90b            cbnz    r3, 800fd7c <__swsetup_r+0x14>
+ 800fd78:      f000 ff1c       bl      8010bb4 <__sinit>
+ 800fd7c:      f9b4 300c       ldrsh.w r3, [r4, #12]
+ 800fd80:      b29a            uxth    r2, r3
+ 800fd82:      0711            lsls    r1, r2, #28
+ 800fd84:      d422            bmi.n   800fdcc <__swsetup_r+0x64>
+ 800fd86:      06d0            lsls    r0, r2, #27
+ 800fd88:      d407            bmi.n   800fd9a <__swsetup_r+0x32>
+ 800fd8a:      2209            movs    r2, #9
+ 800fd8c:      602a            str     r2, [r5, #0]
+ 800fd8e:      f043 0340       orr.w   r3, r3, #64     ; 0x40
+ 800fd92:      81a3            strh    r3, [r4, #12]
+ 800fd94:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 800fd98:      e034            b.n     800fe04 <__swsetup_r+0x9c>
+ 800fd9a:      0751            lsls    r1, r2, #29
+ 800fd9c:      d512            bpl.n   800fdc4 <__swsetup_r+0x5c>
+ 800fd9e:      6b21            ldr     r1, [r4, #48]   ; 0x30
+ 800fda0:      b141            cbz     r1, 800fdb4 <__swsetup_r+0x4c>
+ 800fda2:      f104 0340       add.w   r3, r4, #64     ; 0x40
+ 800fda6:      4299            cmp     r1, r3
+ 800fda8:      d002            beq.n   800fdb0 <__swsetup_r+0x48>
+ 800fdaa:      4628            mov     r0, r5
+ 800fdac:      f000 ff92       bl      8010cd4 <_free_r>
+ 800fdb0:      2300            movs    r3, #0
+ 800fdb2:      6323            str     r3, [r4, #48]   ; 0x30
+ 800fdb4:      89a3            ldrh    r3, [r4, #12]
+ 800fdb6:      f023 0324       bic.w   r3, r3, #36     ; 0x24
+ 800fdba:      81a3            strh    r3, [r4, #12]
+ 800fdbc:      2300            movs    r3, #0
+ 800fdbe:      6063            str     r3, [r4, #4]
+ 800fdc0:      6923            ldr     r3, [r4, #16]
+ 800fdc2:      6023            str     r3, [r4, #0]
+ 800fdc4:      89a3            ldrh    r3, [r4, #12]
+ 800fdc6:      f043 0308       orr.w   r3, r3, #8
+ 800fdca:      81a3            strh    r3, [r4, #12]
+ 800fdcc:      6923            ldr     r3, [r4, #16]
+ 800fdce:      b94b            cbnz    r3, 800fde4 <__swsetup_r+0x7c>
+ 800fdd0:      89a3            ldrh    r3, [r4, #12]
+ 800fdd2:      f403 7320       and.w   r3, r3, #640    ; 0x280
+ 800fdd6:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
+ 800fdda:      d003            beq.n   800fde4 <__swsetup_r+0x7c>
+ 800fddc:      4621            mov     r1, r4
+ 800fdde:      4628            mov     r0, r5
+ 800fde0:      f001 f88c       bl      8010efc <__smakebuf_r>
+ 800fde4:      89a2            ldrh    r2, [r4, #12]
+ 800fde6:      f012 0301       ands.w  r3, r2, #1
+ 800fdea:      d00c            beq.n   800fe06 <__swsetup_r+0x9e>
+ 800fdec:      2300            movs    r3, #0
+ 800fdee:      60a3            str     r3, [r4, #8]
+ 800fdf0:      6963            ldr     r3, [r4, #20]
+ 800fdf2:      425b            negs    r3, r3
+ 800fdf4:      61a3            str     r3, [r4, #24]
+ 800fdf6:      6923            ldr     r3, [r4, #16]
+ 800fdf8:      b953            cbnz    r3, 800fe10 <__swsetup_r+0xa8>
+ 800fdfa:      f9b4 300c       ldrsh.w r3, [r4, #12]
+ 800fdfe:      f013 0080       ands.w  r0, r3, #128    ; 0x80
+ 800fe02:      d1c4            bne.n   800fd8e <__swsetup_r+0x26>
+ 800fe04:      bd38            pop     {r3, r4, r5, pc}
+ 800fe06:      0792            lsls    r2, r2, #30
+ 800fe08:      bf58            it      pl
+ 800fe0a:      6963            ldrpl   r3, [r4, #20]
+ 800fe0c:      60a3            str     r3, [r4, #8]
+ 800fe0e:      e7f2            b.n     800fdf6 <__swsetup_r+0x8e>
+ 800fe10:      2000            movs    r0, #0
+ 800fe12:      e7f7            b.n     800fe04 <__swsetup_r+0x9c>
+ 800fe14:      20000014        .word   0x20000014
+
+0800fe18 <register_fini>:
+ 800fe18:      4b02            ldr     r3, [pc, #8]    ; (800fe24 <register_fini+0xc>)
+ 800fe1a:      b113            cbz     r3, 800fe22 <register_fini+0xa>
+ 800fe1c:      4802            ldr     r0, [pc, #8]    ; (800fe28 <register_fini+0x10>)
+ 800fe1e:      f000 b805       b.w     800fe2c <atexit>
+ 800fe22:      4770            bx      lr
+ 800fe24:      00000000        .word   0x00000000
+ 800fe28:      08010c05        .word   0x08010c05
+
+0800fe2c <atexit>:
+ 800fe2c:      2300            movs    r3, #0
+ 800fe2e:      4601            mov     r1, r0
+ 800fe30:      461a            mov     r2, r3
+ 800fe32:      4618            mov     r0, r3
+ 800fe34:      f001 bc5e       b.w     80116f4 <__register_exitproc>
+
+0800fe38 <quorem>:
+ 800fe38:      e92d 4ff7       stmdb   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800fe3c:      6903            ldr     r3, [r0, #16]
+ 800fe3e:      690c            ldr     r4, [r1, #16]
+ 800fe40:      42a3            cmp     r3, r4
+ 800fe42:      4680            mov     r8, r0
+ 800fe44:      f2c0 8082       blt.w   800ff4c <quorem+0x114>
+ 800fe48:      3c01            subs    r4, #1
+ 800fe4a:      f101 0714       add.w   r7, r1, #20
+ 800fe4e:      ea4f 0c84       mov.w   ip, r4, lsl #2
+ 800fe52:      f100 0614       add.w   r6, r0, #20
+ 800fe56:      f857 5024       ldr.w   r5, [r7, r4, lsl #2]
+ 800fe5a:      f856 0024       ldr.w   r0, [r6, r4, lsl #2]
+ 800fe5e:      eb06 030c       add.w   r3, r6, ip
+ 800fe62:      3501            adds    r5, #1
+ 800fe64:      eb07 090c       add.w   r9, r7, ip
+ 800fe68:      9301            str     r3, [sp, #4]
+ 800fe6a:      fbb0 f5f5       udiv    r5, r0, r5
+ 800fe6e:      b395            cbz     r5, 800fed6 <quorem+0x9e>
+ 800fe70:      f04f 0a00       mov.w   sl, #0
+ 800fe74:      4638            mov     r0, r7
+ 800fe76:      46b6            mov     lr, r6
+ 800fe78:      46d3            mov     fp, sl
+ 800fe7a:      f850 2b04       ldr.w   r2, [r0], #4
+ 800fe7e:      b293            uxth    r3, r2
+ 800fe80:      fb05 a303       mla     r3, r5, r3, sl
+ 800fe84:      ea4f 4a13       mov.w   sl, r3, lsr #16
+ 800fe88:      b29b            uxth    r3, r3
+ 800fe8a:      ebab 0303       sub.w   r3, fp, r3
+ 800fe8e:      0c12            lsrs    r2, r2, #16
+ 800fe90:      f8de b000       ldr.w   fp, [lr]
+ 800fe94:      fb05 a202       mla     r2, r5, r2, sl
+ 800fe98:      fa13 f38b       uxtah   r3, r3, fp
+ 800fe9c:      ea4f 4a12       mov.w   sl, r2, lsr #16
+ 800fea0:      fa1f fb82       uxth.w  fp, r2
+ 800fea4:      f8de 2000       ldr.w   r2, [lr]
+ 800fea8:      ebcb 4212       rsb     r2, fp, r2, lsr #16
+ 800feac:      eb02 4223       add.w   r2, r2, r3, asr #16
+ 800feb0:      b29b            uxth    r3, r3
+ 800feb2:      ea43 4302       orr.w   r3, r3, r2, lsl #16
+ 800feb6:      4581            cmp     r9, r0
+ 800feb8:      ea4f 4b22       mov.w   fp, r2, asr #16
+ 800febc:      f84e 3b04       str.w   r3, [lr], #4
+ 800fec0:      d2db            bcs.n   800fe7a <quorem+0x42>
+ 800fec2:      f856 300c       ldr.w   r3, [r6, ip]
+ 800fec6:      b933            cbnz    r3, 800fed6 <quorem+0x9e>
+ 800fec8:      9b01            ldr     r3, [sp, #4]
+ 800feca:      3b04            subs    r3, #4
+ 800fecc:      429e            cmp     r6, r3
+ 800fece:      461a            mov     r2, r3
+ 800fed0:      d330            bcc.n   800ff34 <quorem+0xfc>
+ 800fed2:      f8c8 4010       str.w   r4, [r8, #16]
+ 800fed6:      4640            mov     r0, r8
+ 800fed8:      f001 fa3a       bl      8011350 <__mcmp>
+ 800fedc:      2800            cmp     r0, #0
+ 800fede:      db25            blt.n   800ff2c <quorem+0xf4>
+ 800fee0:      3501            adds    r5, #1
+ 800fee2:      4630            mov     r0, r6
+ 800fee4:      f04f 0c00       mov.w   ip, #0
+ 800fee8:      f857 2b04       ldr.w   r2, [r7], #4
+ 800feec:      f8d0 e000       ldr.w   lr, [r0]
+ 800fef0:      b293            uxth    r3, r2
+ 800fef2:      ebac 0303       sub.w   r3, ip, r3
+ 800fef6:      0c12            lsrs    r2, r2, #16
+ 800fef8:      fa13 f38e       uxtah   r3, r3, lr
+ 800fefc:      ebc2 421e       rsb     r2, r2, lr, lsr #16
+ 800ff00:      eb02 4223       add.w   r2, r2, r3, asr #16
+ 800ff04:      b29b            uxth    r3, r3
+ 800ff06:      ea43 4302       orr.w   r3, r3, r2, lsl #16
+ 800ff0a:      45b9            cmp     r9, r7
+ 800ff0c:      ea4f 4c22       mov.w   ip, r2, asr #16
+ 800ff10:      f840 3b04       str.w   r3, [r0], #4
+ 800ff14:      d2e8            bcs.n   800fee8 <quorem+0xb0>
+ 800ff16:      f856 2024       ldr.w   r2, [r6, r4, lsl #2]
+ 800ff1a:      eb06 0384       add.w   r3, r6, r4, lsl #2
+ 800ff1e:      b92a            cbnz    r2, 800ff2c <quorem+0xf4>
+ 800ff20:      3b04            subs    r3, #4
+ 800ff22:      429e            cmp     r6, r3
+ 800ff24:      461a            mov     r2, r3
+ 800ff26:      d30b            bcc.n   800ff40 <quorem+0x108>
+ 800ff28:      f8c8 4010       str.w   r4, [r8, #16]
+ 800ff2c:      4628            mov     r0, r5
+ 800ff2e:      b003            add     sp, #12
+ 800ff30:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800ff34:      6812            ldr     r2, [r2, #0]
+ 800ff36:      3b04            subs    r3, #4
+ 800ff38:      2a00            cmp     r2, #0
+ 800ff3a:      d1ca            bne.n   800fed2 <quorem+0x9a>
+ 800ff3c:      3c01            subs    r4, #1
+ 800ff3e:      e7c5            b.n     800fecc <quorem+0x94>
+ 800ff40:      6812            ldr     r2, [r2, #0]
+ 800ff42:      3b04            subs    r3, #4
+ 800ff44:      2a00            cmp     r2, #0
+ 800ff46:      d1ef            bne.n   800ff28 <quorem+0xf0>
+ 800ff48:      3c01            subs    r4, #1
+ 800ff4a:      e7ea            b.n     800ff22 <quorem+0xea>
+ 800ff4c:      2000            movs    r0, #0
+ 800ff4e:      e7ee            b.n     800ff2e <quorem+0xf6>
+
+0800ff50 <_dtoa_r>:
+ 800ff50:      e92d 4ff0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 800ff54:      b095            sub     sp, #84 ; 0x54
+ 800ff56:      ec57 6b10       vmov    r6, r7, d0
+ 800ff5a:      9108            str     r1, [sp, #32]
+ 800ff5c:      6c01            ldr     r1, [r0, #64]   ; 0x40
+ 800ff5e:      920a            str     r2, [sp, #40]   ; 0x28
+ 800ff60:      4604            mov     r4, r0
+ 800ff62:      9311            str     r3, [sp, #68]   ; 0x44
+ 800ff64:      9d1e            ldr     r5, [sp, #120]  ; 0x78
+ 800ff66:      e9cd 6704       strd    r6, r7, [sp, #16]
+ 800ff6a:      b141            cbz     r1, 800ff7e <_dtoa_r+0x2e>
+ 800ff6c:      6c42            ldr     r2, [r0, #68]   ; 0x44
+ 800ff6e:      604a            str     r2, [r1, #4]
+ 800ff70:      2301            movs    r3, #1
+ 800ff72:      4093            lsls    r3, r2
+ 800ff74:      608b            str     r3, [r1, #8]
+ 800ff76:      f001 f826       bl      8010fc6 <_Bfree>
+ 800ff7a:      2300            movs    r3, #0
+ 800ff7c:      6423            str     r3, [r4, #64]   ; 0x40
+ 800ff7e:      1e3b            subs    r3, r7, #0
+ 800ff80:      bfbb            ittet   lt
+ 800ff82:      f023 4300       biclt.w r3, r3, #2147483648     ; 0x80000000
+ 800ff86:      9305            strlt   r3, [sp, #20]
+ 800ff88:      2300            movge   r3, #0
+ 800ff8a:      2201            movlt   r2, #1
+ 800ff8c:      bfac            ite     ge
+ 800ff8e:      602b            strge   r3, [r5, #0]
+ 800ff90:      602a            strlt   r2, [r5, #0]
+ 800ff92:      4ba9            ldr     r3, [pc, #676]  ; (8010238 <_dtoa_r+0x2e8>)
+ 800ff94:      9d05            ldr     r5, [sp, #20]
+ 800ff96:      43ab            bics    r3, r5
+ 800ff98:      d11b            bne.n   800ffd2 <_dtoa_r+0x82>
+ 800ff9a:      9a11            ldr     r2, [sp, #68]   ; 0x44
+ 800ff9c:      f242 730f       movw    r3, #9999       ; 0x270f
+ 800ffa0:      6013            str     r3, [r2, #0]
+ 800ffa2:      9b04            ldr     r3, [sp, #16]
+ 800ffa4:      b923            cbnz    r3, 800ffb0 <_dtoa_r+0x60>
+ 800ffa6:      f3c5 0513       ubfx    r5, r5, #0, #20
+ 800ffaa:      2d00            cmp     r5, #0
+ 800ffac:      f000 84d9       beq.w   8010962 <_dtoa_r+0xa12>
+ 800ffb0:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800ffb2:      b90b            cbnz    r3, 800ffb8 <_dtoa_r+0x68>
+ 800ffb4:      4ba1            ldr     r3, [pc, #644]  ; (801023c <_dtoa_r+0x2ec>)
+ 800ffb6:      e020            b.n     800fffa <_dtoa_r+0xaa>
+ 800ffb8:      4ba0            ldr     r3, [pc, #640]  ; (801023c <_dtoa_r+0x2ec>)
+ 800ffba:      9302            str     r3, [sp, #8]
+ 800ffbc:      3303            adds    r3, #3
+ 800ffbe:      9a1f            ldr     r2, [sp, #124]  ; 0x7c
+ 800ffc0:      6013            str     r3, [r2, #0]
+ 800ffc2:      9802            ldr     r0, [sp, #8]
+ 800ffc4:      b015            add     sp, #84 ; 0x54
+ 800ffc6:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 800ffca:      4b9d            ldr     r3, [pc, #628]  ; (8010240 <_dtoa_r+0x2f0>)
+ 800ffcc:      9302            str     r3, [sp, #8]
+ 800ffce:      3308            adds    r3, #8
+ 800ffd0:      e7f5            b.n     800ffbe <_dtoa_r+0x6e>
+ 800ffd2:      ed9d 7b04       vldr    d7, [sp, #16]
+ 800ffd6:      eeb5 7b40       vcmp.f64        d7, #0.0
+ 800ffda:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 800ffde:      ed8d 7b02       vstr    d7, [sp, #8]
+ 800ffe2:      d10c            bne.n   800fffe <_dtoa_r+0xae>
+ 800ffe4:      9a11            ldr     r2, [sp, #68]   ; 0x44
+ 800ffe6:      2301            movs    r3, #1
+ 800ffe8:      6013            str     r3, [r2, #0]
+ 800ffea:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 800ffec:      2b00            cmp     r3, #0
+ 800ffee:      f000 84b5       beq.w   801095c <_dtoa_r+0xa0c>
+ 800fff2:      4b94            ldr     r3, [pc, #592]  ; (8010244 <_dtoa_r+0x2f4>)
+ 800fff4:      9a1f            ldr     r2, [sp, #124]  ; 0x7c
+ 800fff6:      6013            str     r3, [r2, #0]
+ 800fff8:      3b01            subs    r3, #1
+ 800fffa:      9302            str     r3, [sp, #8]
+ 800fffc:      e7e1            b.n     800ffc2 <_dtoa_r+0x72>
+ 800fffe:      a913            add     r1, sp, #76     ; 0x4c
+ 8010000:      aa12            add     r2, sp, #72     ; 0x48
+ 8010002:      ed9d 0b02       vldr    d0, [sp, #8]
+ 8010006:      4620            mov     r0, r4
+ 8010008:      f001 fa19       bl      801143e <__d2b>
+ 801000c:      f3c5 560a       ubfx    r6, r5, #20, #11
+ 8010010:      9001            str     r0, [sp, #4]
+ 8010012:      9912            ldr     r1, [sp, #72]   ; 0x48
+ 8010014:      2e00            cmp     r6, #0
+ 8010016:      d046            beq.n   80100a6 <_dtoa_r+0x156>
+ 8010018:      9803            ldr     r0, [sp, #12]
+ 801001a:      f3c0 0013       ubfx    r0, r0, #0, #20
+ 801001e:      e9dd 2302       ldrd    r2, r3, [sp, #8]
+ 8010022:      f040 537f       orr.w   r3, r0, #1069547520     ; 0x3fc00000
+ 8010026:      f443 1340       orr.w   r3, r3, #3145728        ; 0x300000
+ 801002a:      f2a6 3aff       subw    sl, r6, #1023   ; 0x3ff
+ 801002e:      2700            movs    r7, #0
+ 8010030:      ee07 aa90       vmov    s15, sl
+ 8010034:      ec43 2b16       vmov    d6, r2, r3
+ 8010038:      eeb8 5be7       vcvt.f64.s32    d5, s15
+ 801003c:      ed9f 4b78       vldr    d4, [pc, #480]  ; 8010220 <_dtoa_r+0x2d0>
+ 8010040:      eeb7 7b08       vmov.f64        d7, #120        ; 0x3fc00000  1.5
+ 8010044:      ee36 7b47       vsub.f64        d7, d6, d7
+ 8010048:      ed9f 6b77       vldr    d6, [pc, #476]  ; 8010228 <_dtoa_r+0x2d8>
+ 801004c:      eea7 6b04       vfma.f64        d6, d7, d4
+ 8010050:      eeb0 7b46       vmov.f64        d7, d6
+ 8010054:      ed9f 6b76       vldr    d6, [pc, #472]  ; 8010230 <_dtoa_r+0x2e0>
+ 8010058:      eea5 7b06       vfma.f64        d7, d5, d6
+ 801005c:      eefd 6bc7       vcvt.s32.f64    s13, d7
+ 8010060:      eeb5 7bc0       vcmpe.f64       d7, #0.0
+ 8010064:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 8010068:      ee16 ba90       vmov    fp, s13
+ 801006c:      d508            bpl.n   8010080 <_dtoa_r+0x130>
+ 801006e:      eeb8 6be6       vcvt.f64.s32    d6, s13
+ 8010072:      eeb4 6b47       vcmp.f64        d6, d7
+ 8010076:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 801007a:      bf18            it      ne
+ 801007c:      f10b 3bff       addne.w fp, fp, #4294967295     ; 0xffffffff
+ 8010080:      f1bb 0f16       cmp.w   fp, #22
+ 8010084:      d834            bhi.n   80100f0 <_dtoa_r+0x1a0>
+ 8010086:      4b70            ldr     r3, [pc, #448]  ; (8010248 <_dtoa_r+0x2f8>)
+ 8010088:      eb03 03cb       add.w   r3, r3, fp, lsl #3
+ 801008c:      ed93 7b00       vldr    d7, [r3]
+ 8010090:      ed9d 6b04       vldr    d6, [sp, #16]
+ 8010094:      eeb4 7bc6       vcmpe.f64       d7, d6
+ 8010098:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 801009c:      dd01            ble.n   80100a2 <_dtoa_r+0x152>
+ 801009e:      f10b 3bff       add.w   fp, fp, #4294967295     ; 0xffffffff
+ 80100a2:      2300            movs    r3, #0
+ 80100a4:      e025            b.n     80100f2 <_dtoa_r+0x1a2>
+ 80100a6:      9b13            ldr     r3, [sp, #76]   ; 0x4c
+ 80100a8:      eb01 0a03       add.w   sl, r1, r3
+ 80100ac:      f20a 4332       addw    r3, sl, #1074   ; 0x432
+ 80100b0:      2b20            cmp     r3, #32
+ 80100b2:      dd17            ble.n   80100e4 <_dtoa_r+0x194>
+ 80100b4:      f1c3 0340       rsb     r3, r3, #64     ; 0x40
+ 80100b8:      9a04            ldr     r2, [sp, #16]
+ 80100ba:      409d            lsls    r5, r3
+ 80100bc:      f20a 4312       addw    r3, sl, #1042   ; 0x412
+ 80100c0:      fa22 f303       lsr.w   r3, r2, r3
+ 80100c4:      432b            orrs    r3, r5
+ 80100c6:      ee07 3a90       vmov    s15, r3
+ 80100ca:      eeb8 7b67       vcvt.f64.u32    d7, s15
+ 80100ce:      f10a 3aff       add.w   sl, sl, #4294967295     ; 0xffffffff
+ 80100d2:      ed8d 7b02       vstr    d7, [sp, #8]
+ 80100d6:      9803            ldr     r0, [sp, #12]
+ 80100d8:      e9dd 2302       ldrd    r2, r3, [sp, #8]
+ 80100dc:      2701            movs    r7, #1
+ 80100de:      f1a0 73f8       sub.w   r3, r0, #32505856       ; 0x1f00000
+ 80100e2:      e7a5            b.n     8010030 <_dtoa_r+0xe0>
+ 80100e4:      9a04            ldr     r2, [sp, #16]
+ 80100e6:      f1c3 0320       rsb     r3, r3, #32
+ 80100ea:      fa02 f303       lsl.w   r3, r2, r3
+ 80100ee:      e7ea            b.n     80100c6 <_dtoa_r+0x176>
+ 80100f0:      2301            movs    r3, #1
+ 80100f2:      eba1 0a0a       sub.w   sl, r1, sl
+ 80100f6:      9310            str     r3, [sp, #64]   ; 0x40
+ 80100f8:      f1ba 0301       subs.w  r3, sl, #1
+ 80100fc:      9307            str     r3, [sp, #28]
+ 80100fe:      bf43            ittte   mi
+ 8010100:      2300            movmi   r3, #0
+ 8010102:      f1ca 0a01       rsbmi   sl, sl, #1
+ 8010106:      9307            strmi   r3, [sp, #28]
+ 8010108:      f04f 0a00       movpl.w sl, #0
+ 801010c:      f1bb 0f00       cmp.w   fp, #0
+ 8010110:      db19            blt.n   8010146 <_dtoa_r+0x1f6>
+ 8010112:      9b07            ldr     r3, [sp, #28]
+ 8010114:      f8cd b02c       str.w   fp, [sp, #44]   ; 0x2c
+ 8010118:      445b            add     r3, fp
+ 801011a:      9307            str     r3, [sp, #28]
+ 801011c:      f04f 0800       mov.w   r8, #0
+ 8010120:      9b08            ldr     r3, [sp, #32]
+ 8010122:      2b09            cmp     r3, #9
+ 8010124:      d863            bhi.n   80101ee <_dtoa_r+0x29e>
+ 8010126:      2b05            cmp     r3, #5
+ 8010128:      bfc4            itt     gt
+ 801012a:      3b04            subgt   r3, #4
+ 801012c:      9308            strgt   r3, [sp, #32]
+ 801012e:      9b08            ldr     r3, [sp, #32]
+ 8010130:      f1a3 0302       sub.w   r3, r3, #2
+ 8010134:      bfcc            ite     gt
+ 8010136:      2500            movgt   r5, #0
+ 8010138:      2501            movle   r5, #1
+ 801013a:      2b03            cmp     r3, #3
+ 801013c:      d863            bhi.n   8010206 <_dtoa_r+0x2b6>
+ 801013e:      e8df f003       tbb     [pc, r3]
+ 8010142:      5452            .short  0x5452
+ 8010144:      4609            .short  0x4609
+ 8010146:      2300            movs    r3, #0
+ 8010148:      ebaa 0a0b       sub.w   sl, sl, fp
+ 801014c:      f1cb 0800       rsb     r8, fp, #0
+ 8010150:      930b            str     r3, [sp, #44]   ; 0x2c
+ 8010152:      e7e5            b.n     8010120 <_dtoa_r+0x1d0>
+ 8010154:      2301            movs    r3, #1
+ 8010156:      9309            str     r3, [sp, #36]   ; 0x24
+ 8010158:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 801015a:      2b00            cmp     r3, #0
+ 801015c:      dd56            ble.n   801020c <_dtoa_r+0x2bc>
+ 801015e:      9306            str     r3, [sp, #24]
+ 8010160:      4699            mov     r9, r3
+ 8010162:      2200            movs    r2, #0
+ 8010164:      6462            str     r2, [r4, #68]   ; 0x44
+ 8010166:      2204            movs    r2, #4
+ 8010168:      f102 0014       add.w   r0, r2, #20
+ 801016c:      4298            cmp     r0, r3
+ 801016e:      6c61            ldr     r1, [r4, #68]   ; 0x44
+ 8010170:      d951            bls.n   8010216 <_dtoa_r+0x2c6>
+ 8010172:      4620            mov     r0, r4
+ 8010174:      f000 ff02       bl      8010f7c <_Balloc>
+ 8010178:      f1b9 0f0e       cmp.w   r9, #14
+ 801017c:      9002            str     r0, [sp, #8]
+ 801017e:      6420            str     r0, [r4, #64]   ; 0x40
+ 8010180:      f200 80c1       bhi.w   8010306 <_dtoa_r+0x3b6>
+ 8010184:      2d00            cmp     r5, #0
+ 8010186:      f000 80be       beq.w   8010306 <_dtoa_r+0x3b6>
+ 801018a:      ed9d 7b04       vldr    d7, [sp, #16]
+ 801018e:      f1bb 0f00       cmp.w   fp, #0
+ 8010192:      ed8d 7b0e       vstr    d7, [sp, #56]   ; 0x38
+ 8010196:      f340 80e5       ble.w   8010364 <_dtoa_r+0x414>
+ 801019a:      4a2b            ldr     r2, [pc, #172]  ; (8010248 <_dtoa_r+0x2f8>)
+ 801019c:      f00b 030f       and.w   r3, fp, #15
+ 80101a0:      eb02 03c3       add.w   r3, r2, r3, lsl #3
+ 80101a4:      ed93 7b00       vldr    d7, [r3]
+ 80101a8:      ea4f 132b       mov.w   r3, fp, asr #4
+ 80101ac:      06da            lsls    r2, r3, #27
+ 80101ae:      f140 80d7       bpl.w   8010360 <_dtoa_r+0x410>
+ 80101b2:      4a26            ldr     r2, [pc, #152]  ; (801024c <_dtoa_r+0x2fc>)
+ 80101b4:      ed9d 5b0e       vldr    d5, [sp, #56]   ; 0x38
+ 80101b8:      ed92 6b08       vldr    d6, [r2, #32]
+ 80101bc:      ee85 6b06       vdiv.f64        d6, d5, d6
+ 80101c0:      ed8d 6b04       vstr    d6, [sp, #16]
+ 80101c4:      f003 030f       and.w   r3, r3, #15
+ 80101c8:      2203            movs    r2, #3
+ 80101ca:      4920            ldr     r1, [pc, #128]  ; (801024c <_dtoa_r+0x2fc>)
+ 80101cc:      e049            b.n     8010262 <_dtoa_r+0x312>
+ 80101ce:      2301            movs    r3, #1
+ 80101d0:      9309            str     r3, [sp, #36]   ; 0x24
+ 80101d2:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 80101d4:      445b            add     r3, fp
+ 80101d6:      f103 0901       add.w   r9, r3, #1
+ 80101da:      9306            str     r3, [sp, #24]
+ 80101dc:      464b            mov     r3, r9
+ 80101de:      2b01            cmp     r3, #1
+ 80101e0:      bfb8            it      lt
+ 80101e2:      2301            movlt   r3, #1
+ 80101e4:      e7bd            b.n     8010162 <_dtoa_r+0x212>
+ 80101e6:      2300            movs    r3, #0
+ 80101e8:      e7b5            b.n     8010156 <_dtoa_r+0x206>
+ 80101ea:      2300            movs    r3, #0
+ 80101ec:      e7f0            b.n     80101d0 <_dtoa_r+0x280>
+ 80101ee:      2501            movs    r5, #1
+ 80101f0:      2300            movs    r3, #0
+ 80101f2:      e9cd 3508       strd    r3, r5, [sp, #32]
+ 80101f6:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 80101fa:      9306            str     r3, [sp, #24]
+ 80101fc:      4699            mov     r9, r3
+ 80101fe:      2200            movs    r2, #0
+ 8010200:      2312            movs    r3, #18
+ 8010202:      920a            str     r2, [sp, #40]   ; 0x28
+ 8010204:      e7ad            b.n     8010162 <_dtoa_r+0x212>
+ 8010206:      2301            movs    r3, #1
+ 8010208:      9309            str     r3, [sp, #36]   ; 0x24
+ 801020a:      e7f4            b.n     80101f6 <_dtoa_r+0x2a6>
+ 801020c:      2301            movs    r3, #1
+ 801020e:      9306            str     r3, [sp, #24]
+ 8010210:      4699            mov     r9, r3
+ 8010212:      461a            mov     r2, r3
+ 8010214:      e7f5            b.n     8010202 <_dtoa_r+0x2b2>
+ 8010216:      3101            adds    r1, #1
+ 8010218:      6461            str     r1, [r4, #68]   ; 0x44
+ 801021a:      0052            lsls    r2, r2, #1
+ 801021c:      e7a4            b.n     8010168 <_dtoa_r+0x218>
+ 801021e:      bf00            nop
+ 8010220:      636f4361        .word   0x636f4361
+ 8010224:      3fd287a7        .word   0x3fd287a7
+ 8010228:      8b60c8b3        .word   0x8b60c8b3
+ 801022c:      3fc68a28        .word   0x3fc68a28
+ 8010230:      509f79fb        .word   0x509f79fb
+ 8010234:      3fd34413        .word   0x3fd34413
+ 8010238:      7ff00000        .word   0x7ff00000
+ 801023c:      08012e8d        .word   0x08012e8d
+ 8010240:      08012e84        .word   0x08012e84
+ 8010244:      08012e63        .word   0x08012e63
+ 8010248:      08012ec0        .word   0x08012ec0
+ 801024c:      08012e98        .word   0x08012e98
+ 8010250:      07de            lsls    r6, r3, #31
+ 8010252:      d504            bpl.n   801025e <_dtoa_r+0x30e>
+ 8010254:      ed91 6b00       vldr    d6, [r1]
+ 8010258:      3201            adds    r2, #1
+ 801025a:      ee27 7b06       vmul.f64        d7, d7, d6
+ 801025e:      105b            asrs    r3, r3, #1
+ 8010260:      3108            adds    r1, #8
+ 8010262:      2b00            cmp     r3, #0
+ 8010264:      d1f4            bne.n   8010250 <_dtoa_r+0x300>
+ 8010266:      ed9d 6b04       vldr    d6, [sp, #16]
+ 801026a:      ee86 7b07       vdiv.f64        d7, d6, d7
+ 801026e:      ed8d 7b04       vstr    d7, [sp, #16]
+ 8010272:      9b10            ldr     r3, [sp, #64]   ; 0x40
+ 8010274:      2b00            cmp     r3, #0
+ 8010276:      f000 80a7       beq.w   80103c8 <_dtoa_r+0x478>
+ 801027a:      eeb7 6b00       vmov.f64        d6, #112        ; 0x3f800000  1.0
+ 801027e:      ed9d 7b04       vldr    d7, [sp, #16]
+ 8010282:      eeb4 7bc6       vcmpe.f64       d7, d6
+ 8010286:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 801028a:      f140 809d       bpl.w   80103c8 <_dtoa_r+0x478>
+ 801028e:      f1b9 0f00       cmp.w   r9, #0
+ 8010292:      f000 8099       beq.w   80103c8 <_dtoa_r+0x478>
+ 8010296:      9b06            ldr     r3, [sp, #24]
+ 8010298:      2b00            cmp     r3, #0
+ 801029a:      dd30            ble.n   80102fe <_dtoa_r+0x3ae>
+ 801029c:      eeb2 6b04       vmov.f64        d6, #36 ; 0x41200000  10.0
+ 80102a0:      ee27 7b06       vmul.f64        d7, d7, d6
+ 80102a4:      ed8d 7b04       vstr    d7, [sp, #16]
+ 80102a8:      9d06            ldr     r5, [sp, #24]
+ 80102aa:      f10b 33ff       add.w   r3, fp, #4294967295     ; 0xffffffff
+ 80102ae:      3201            adds    r2, #1
+ 80102b0:      ed9d 6b04       vldr    d6, [sp, #16]
+ 80102b4:      eeb1 5b0c       vmov.f64        d5, #28 ; 0x40e00000  7.0
+ 80102b8:      ee07 2a90       vmov    s15, r2
+ 80102bc:      eeb8 7be7       vcvt.f64.s32    d7, s15
+ 80102c0:      eea7 5b06       vfma.f64        d5, d7, d6
+ 80102c4:      ed8d 5b04       vstr    d5, [sp, #16]
+ 80102c8:      9a05            ldr     r2, [sp, #20]
+ 80102ca:      e9dd 0104       ldrd    r0, r1, [sp, #16]
+ 80102ce:      f1a2 7150       sub.w   r1, r2, #54525952       ; 0x3400000
+ 80102d2:      2d00            cmp     r5, #0
+ 80102d4:      d17b            bne.n   80103ce <_dtoa_r+0x47e>
+ 80102d6:      eeb1 7b04       vmov.f64        d7, #20 ; 0x40a00000  5.0
+ 80102da:      ee36 6b47       vsub.f64        d6, d6, d7
+ 80102de:      ec41 0b17       vmov    d7, r0, r1
+ 80102e2:      eeb4 6bc7       vcmpe.f64       d6, d7
+ 80102e6:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 80102ea:      f300 8253       bgt.w   8010794 <_dtoa_r+0x844>
+ 80102ee:      eeb1 7b47       vneg.f64        d7, d7
+ 80102f2:      eeb4 6bc7       vcmpe.f64       d6, d7
+ 80102f6:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 80102fa:      f100 8249       bmi.w   8010790 <_dtoa_r+0x840>
+ 80102fe:      e9dd 230e       ldrd    r2, r3, [sp, #56]       ; 0x38
+ 8010302:      e9cd 2304       strd    r2, r3, [sp, #16]
+ 8010306:      9b13            ldr     r3, [sp, #76]   ; 0x4c
+ 8010308:      2b00            cmp     r3, #0
+ 801030a:      f2c0 8119       blt.w   8010540 <_dtoa_r+0x5f0>
+ 801030e:      f1bb 0f0e       cmp.w   fp, #14
+ 8010312:      f300 8115       bgt.w   8010540 <_dtoa_r+0x5f0>
+ 8010316:      4bc3            ldr     r3, [pc, #780]  ; (8010624 <_dtoa_r+0x6d4>)
+ 8010318:      eb03 03cb       add.w   r3, r3, fp, lsl #3
+ 801031c:      ed93 6b00       vldr    d6, [r3]
+ 8010320:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 8010322:      2b00            cmp     r3, #0
+ 8010324:      f280 80ba       bge.w   801049c <_dtoa_r+0x54c>
+ 8010328:      f1b9 0f00       cmp.w   r9, #0
+ 801032c:      f300 80b6       bgt.w   801049c <_dtoa_r+0x54c>
+ 8010330:      f040 822d       bne.w   801078e <_dtoa_r+0x83e>
+ 8010334:      eeb1 7b04       vmov.f64        d7, #20 ; 0x40a00000  5.0
+ 8010338:      ee26 6b07       vmul.f64        d6, d6, d7
+ 801033c:      ed9d 7b04       vldr    d7, [sp, #16]
+ 8010340:      eeb4 6bc7       vcmpe.f64       d6, d7
+ 8010344:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 8010348:      464d            mov     r5, r9
+ 801034a:      464f            mov     r7, r9
+ 801034c:      f280 8204       bge.w   8010758 <_dtoa_r+0x808>
+ 8010350:      9b02            ldr     r3, [sp, #8]
+ 8010352:      9a02            ldr     r2, [sp, #8]
+ 8010354:      1c5e            adds    r6, r3, #1
+ 8010356:      2331            movs    r3, #49 ; 0x31
+ 8010358:      7013            strb    r3, [r2, #0]
+ 801035a:      f10b 0b01       add.w   fp, fp, #1
+ 801035e:      e1ff            b.n     8010760 <_dtoa_r+0x810>
+ 8010360:      2202            movs    r2, #2
+ 8010362:      e732            b.n     80101ca <_dtoa_r+0x27a>
+ 8010364:      d02e            beq.n   80103c4 <_dtoa_r+0x474>
+ 8010366:      f1cb 0300       rsb     r3, fp, #0
+ 801036a:      4aae            ldr     r2, [pc, #696]  ; (8010624 <_dtoa_r+0x6d4>)
+ 801036c:      f003 010f       and.w   r1, r3, #15
+ 8010370:      eb02 02c1       add.w   r2, r2, r1, lsl #3
+ 8010374:      ed92 7b00       vldr    d7, [r2]
+ 8010378:      ed9d 6b0e       vldr    d6, [sp, #56]   ; 0x38
+ 801037c:      ee26 7b07       vmul.f64        d7, d6, d7
+ 8010380:      ed8d 7b0c       vstr    d7, [sp, #48]   ; 0x30
+ 8010384:      e9dd 120c       ldrd    r1, r2, [sp, #48]       ; 0x30
+ 8010388:      e9cd 1204       strd    r1, r2, [sp, #16]
+ 801038c:      49a6            ldr     r1, [pc, #664]  ; (8010628 <_dtoa_r+0x6d8>)
+ 801038e:      111b            asrs    r3, r3, #4
+ 8010390:      2000            movs    r0, #0
+ 8010392:      2202            movs    r2, #2
+ 8010394:      b93b            cbnz    r3, 80103a6 <_dtoa_r+0x456>
+ 8010396:      2800            cmp     r0, #0
+ 8010398:      f43f af6b       beq.w   8010272 <_dtoa_r+0x322>
+ 801039c:      e9dd 010c       ldrd    r0, r1, [sp, #48]       ; 0x30
+ 80103a0:      e9cd 0104       strd    r0, r1, [sp, #16]
+ 80103a4:      e765            b.n     8010272 <_dtoa_r+0x322>
+ 80103a6:      07dd            lsls    r5, r3, #31
+ 80103a8:      d509            bpl.n   80103be <_dtoa_r+0x46e>
+ 80103aa:      ed9d 6b0c       vldr    d6, [sp, #48]   ; 0x30
+ 80103ae:      ed91 7b00       vldr    d7, [r1]
+ 80103b2:      ee26 7b07       vmul.f64        d7, d6, d7
+ 80103b6:      ed8d 7b0c       vstr    d7, [sp, #48]   ; 0x30
+ 80103ba:      3201            adds    r2, #1
+ 80103bc:      2001            movs    r0, #1
+ 80103be:      105b            asrs    r3, r3, #1
+ 80103c0:      3108            adds    r1, #8
+ 80103c2:      e7e7            b.n     8010394 <_dtoa_r+0x444>
+ 80103c4:      2202            movs    r2, #2
+ 80103c6:      e754            b.n     8010272 <_dtoa_r+0x322>
+ 80103c8:      465b            mov     r3, fp
+ 80103ca:      464d            mov     r5, r9
+ 80103cc:      e770            b.n     80102b0 <_dtoa_r+0x360>
+ 80103ce:      4a95            ldr     r2, [pc, #596]  ; (8010624 <_dtoa_r+0x6d4>)
+ 80103d0:      eb02 02c5       add.w   r2, r2, r5, lsl #3
+ 80103d4:      ed12 4b02       vldr    d4, [r2, #-8]
+ 80103d8:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 80103da:      ec41 0b17       vmov    d7, r0, r1
+ 80103de:      b35a            cbz     r2, 8010438 <_dtoa_r+0x4e8>
+ 80103e0:      eeb6 3b00       vmov.f64        d3, #96 ; 0x3f000000  0.5
+ 80103e4:      eeb7 2b00       vmov.f64        d2, #112        ; 0x3f800000  1.0
+ 80103e8:      9e02            ldr     r6, [sp, #8]
+ 80103ea:      ee83 5b04       vdiv.f64        d5, d3, d4
+ 80103ee:      eeb2 3b04       vmov.f64        d3, #36 ; 0x41200000  10.0
+ 80103f2:      ee35 7b47       vsub.f64        d7, d5, d7
+ 80103f6:      eefd 4bc6       vcvt.s32.f64    s9, d6
+ 80103fa:      ee14 2a90       vmov    r2, s9
+ 80103fe:      eeb8 5be4       vcvt.f64.s32    d5, s9
+ 8010402:      3230            adds    r2, #48 ; 0x30
+ 8010404:      ee36 6b45       vsub.f64        d6, d6, d5
+ 8010408:      eeb4 6bc7       vcmpe.f64       d6, d7
+ 801040c:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 8010410:      f806 2b01       strb.w  r2, [r6], #1
+ 8010414:      d43b            bmi.n   801048e <_dtoa_r+0x53e>
+ 8010416:      ee32 5b46       vsub.f64        d5, d2, d6
+ 801041a:      eeb4 5bc7       vcmpe.f64       d5, d7
+ 801041e:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 8010422:      d472            bmi.n   801050a <_dtoa_r+0x5ba>
+ 8010424:      9a02            ldr     r2, [sp, #8]
+ 8010426:      1ab2            subs    r2, r6, r2
+ 8010428:      4295            cmp     r5, r2
+ 801042a:      f77f af68       ble.w   80102fe <_dtoa_r+0x3ae>
+ 801042e:      ee27 7b03       vmul.f64        d7, d7, d3
+ 8010432:      ee26 6b03       vmul.f64        d6, d6, d3
+ 8010436:      e7de            b.n     80103f6 <_dtoa_r+0x4a6>
+ 8010438:      9a02            ldr     r2, [sp, #8]
+ 801043a:      ee24 7b07       vmul.f64        d7, d4, d7
+ 801043e:      1956            adds    r6, r2, r5
+ 8010440:      4611            mov     r1, r2
+ 8010442:      eeb2 3b04       vmov.f64        d3, #36 ; 0x41200000  10.0
+ 8010446:      eefd 4bc6       vcvt.s32.f64    s9, d6
+ 801044a:      ee14 2a90       vmov    r2, s9
+ 801044e:      3230            adds    r2, #48 ; 0x30
+ 8010450:      f801 2b01       strb.w  r2, [r1], #1
+ 8010454:      42b1            cmp     r1, r6
+ 8010456:      eeb8 5be4       vcvt.f64.s32    d5, s9
+ 801045a:      ee36 6b45       vsub.f64        d6, d6, d5
+ 801045e:      d11a            bne.n   8010496 <_dtoa_r+0x546>
+ 8010460:      eeb6 5b00       vmov.f64        d5, #96 ; 0x3f000000  0.5
+ 8010464:      ee37 4b05       vadd.f64        d4, d7, d5
+ 8010468:      eeb4 6bc4       vcmpe.f64       d6, d4
+ 801046c:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 8010470:      dc4b            bgt.n   801050a <_dtoa_r+0x5ba>
+ 8010472:      ee35 7b47       vsub.f64        d7, d5, d7
+ 8010476:      eeb4 6bc7       vcmpe.f64       d6, d7
+ 801047a:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 801047e:      f57f af3e       bpl.w   80102fe <_dtoa_r+0x3ae>
+ 8010482:      f816 2c01       ldrb.w  r2, [r6, #-1]
+ 8010486:      2a30            cmp     r2, #48 ; 0x30
+ 8010488:      f106 31ff       add.w   r1, r6, #4294967295     ; 0xffffffff
+ 801048c:      d001            beq.n   8010492 <_dtoa_r+0x542>
+ 801048e:      469b            mov     fp, r3
+ 8010490:      e02a            b.n     80104e8 <_dtoa_r+0x598>
+ 8010492:      460e            mov     r6, r1
+ 8010494:      e7f5            b.n     8010482 <_dtoa_r+0x532>
+ 8010496:      ee26 6b03       vmul.f64        d6, d6, d3
+ 801049a:      e7d4            b.n     8010446 <_dtoa_r+0x4f6>
+ 801049c:      ed9d 7b04       vldr    d7, [sp, #16]
+ 80104a0:      eeb2 4b04       vmov.f64        d4, #36 ; 0x41200000  10.0
+ 80104a4:      9e02            ldr     r6, [sp, #8]
+ 80104a6:      ee87 5b06       vdiv.f64        d5, d7, d6
+ 80104aa:      eebd 5bc5       vcvt.s32.f64    s10, d5
+ 80104ae:      ee15 3a10       vmov    r3, s10
+ 80104b2:      3330            adds    r3, #48 ; 0x30
+ 80104b4:      f806 3b01       strb.w  r3, [r6], #1
+ 80104b8:      9b02            ldr     r3, [sp, #8]
+ 80104ba:      1af3            subs    r3, r6, r3
+ 80104bc:      4599            cmp     r9, r3
+ 80104be:      eeb8 3bc5       vcvt.f64.s32    d3, s10
+ 80104c2:      eea3 7b46       vfms.f64        d7, d3, d6
+ 80104c6:      d133            bne.n   8010530 <_dtoa_r+0x5e0>
+ 80104c8:      ee37 7b07       vadd.f64        d7, d7, d7
+ 80104cc:      eeb4 7bc6       vcmpe.f64       d7, d6
+ 80104d0:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 80104d4:      dc18            bgt.n   8010508 <_dtoa_r+0x5b8>
+ 80104d6:      eeb4 7b46       vcmp.f64        d7, d6
+ 80104da:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 80104de:      d103            bne.n   80104e8 <_dtoa_r+0x598>
+ 80104e0:      ee15 3a10       vmov    r3, s10
+ 80104e4:      07db            lsls    r3, r3, #31
+ 80104e6:      d40f            bmi.n   8010508 <_dtoa_r+0x5b8>
+ 80104e8:      9901            ldr     r1, [sp, #4]
+ 80104ea:      4620            mov     r0, r4
+ 80104ec:      f000 fd6b       bl      8010fc6 <_Bfree>
+ 80104f0:      2300            movs    r3, #0
+ 80104f2:      9a11            ldr     r2, [sp, #68]   ; 0x44
+ 80104f4:      7033            strb    r3, [r6, #0]
+ 80104f6:      f10b 0301       add.w   r3, fp, #1
+ 80104fa:      6013            str     r3, [r2, #0]
+ 80104fc:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 80104fe:      2b00            cmp     r3, #0
+ 8010500:      f43f ad5f       beq.w   800ffc2 <_dtoa_r+0x72>
+ 8010504:      601e            str     r6, [r3, #0]
+ 8010506:      e55c            b.n     800ffc2 <_dtoa_r+0x72>
+ 8010508:      465b            mov     r3, fp
+ 801050a:      f816 1c01       ldrb.w  r1, [r6, #-1]
+ 801050e:      2939            cmp     r1, #57 ; 0x39
+ 8010510:      f106 32ff       add.w   r2, r6, #4294967295     ; 0xffffffff
+ 8010514:      d106            bne.n   8010524 <_dtoa_r+0x5d4>
+ 8010516:      9902            ldr     r1, [sp, #8]
+ 8010518:      4291            cmp     r1, r2
+ 801051a:      d107            bne.n   801052c <_dtoa_r+0x5dc>
+ 801051c:      2230            movs    r2, #48 ; 0x30
+ 801051e:      700a            strb    r2, [r1, #0]
+ 8010520:      3301            adds    r3, #1
+ 8010522:      460a            mov     r2, r1
+ 8010524:      7811            ldrb    r1, [r2, #0]
+ 8010526:      3101            adds    r1, #1
+ 8010528:      7011            strb    r1, [r2, #0]
+ 801052a:      e7b0            b.n     801048e <_dtoa_r+0x53e>
+ 801052c:      4616            mov     r6, r2
+ 801052e:      e7ec            b.n     801050a <_dtoa_r+0x5ba>
+ 8010530:      ee27 7b04       vmul.f64        d7, d7, d4
+ 8010534:      eeb5 7b40       vcmp.f64        d7, #0.0
+ 8010538:      eef1 fa10       vmrs    APSR_nzcv, fpscr
+ 801053c:      d1b3            bne.n   80104a6 <_dtoa_r+0x556>
+ 801053e:      e7d3            b.n     80104e8 <_dtoa_r+0x598>
+ 8010540:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 8010542:      2a00            cmp     r2, #0
+ 8010544:      f000 808d       beq.w   8010662 <_dtoa_r+0x712>
+ 8010548:      9a08            ldr     r2, [sp, #32]
+ 801054a:      2a01            cmp     r2, #1
+ 801054c:      dc72            bgt.n   8010634 <_dtoa_r+0x6e4>
+ 801054e:      2f00            cmp     r7, #0
+ 8010550:      d06c            beq.n   801062c <_dtoa_r+0x6dc>
+ 8010552:      f203 4333       addw    r3, r3, #1075   ; 0x433
+ 8010556:      4645            mov     r5, r8
+ 8010558:      4656            mov     r6, sl
+ 801055a:      9a07            ldr     r2, [sp, #28]
+ 801055c:      2101            movs    r1, #1
+ 801055e:      441a            add     r2, r3
+ 8010560:      4620            mov     r0, r4
+ 8010562:      449a            add     sl, r3
+ 8010564:      9207            str     r2, [sp, #28]
+ 8010566:      f000 fdc0       bl      80110ea <__i2b>
+ 801056a:      4607            mov     r7, r0
+ 801056c:      2e00            cmp     r6, #0
+ 801056e:      dd0b            ble.n   8010588 <_dtoa_r+0x638>
+ 8010570:      9b07            ldr     r3, [sp, #28]
+ 8010572:      2b00            cmp     r3, #0
+ 8010574:      dd08            ble.n   8010588 <_dtoa_r+0x638>
+ 8010576:      42b3            cmp     r3, r6
+ 8010578:      9a07            ldr     r2, [sp, #28]
+ 801057a:      bfa8            it      ge
+ 801057c:      4633            movge   r3, r6
+ 801057e:      ebaa 0a03       sub.w   sl, sl, r3
+ 8010582:      1af6            subs    r6, r6, r3
+ 8010584:      1ad3            subs    r3, r2, r3
+ 8010586:      9307            str     r3, [sp, #28]
+ 8010588:      f1b8 0f00       cmp.w   r8, #0
+ 801058c:      d01d            beq.n   80105ca <_dtoa_r+0x67a>
+ 801058e:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 8010590:      2b00            cmp     r3, #0
+ 8010592:      d06a            beq.n   801066a <_dtoa_r+0x71a>
+ 8010594:      b18d            cbz     r5, 80105ba <_dtoa_r+0x66a>
+ 8010596:      4639            mov     r1, r7
+ 8010598:      462a            mov     r2, r5
+ 801059a:      4620            mov     r0, r4
+ 801059c:      f000 fe44       bl      8011228 <__pow5mult>
+ 80105a0:      9a01            ldr     r2, [sp, #4]
+ 80105a2:      4601            mov     r1, r0
+ 80105a4:      4607            mov     r7, r0
+ 80105a6:      4620            mov     r0, r4
+ 80105a8:      f000 fda8       bl      80110fc <__multiply>
+ 80105ac:      9901            ldr     r1, [sp, #4]
+ 80105ae:      900c            str     r0, [sp, #48]   ; 0x30
+ 80105b0:      4620            mov     r0, r4
+ 80105b2:      f000 fd08       bl      8010fc6 <_Bfree>
+ 80105b6:      9b0c            ldr     r3, [sp, #48]   ; 0x30
+ 80105b8:      9301            str     r3, [sp, #4]
+ 80105ba:      ebb8 0205       subs.w  r2, r8, r5
+ 80105be:      d004            beq.n   80105ca <_dtoa_r+0x67a>
+ 80105c0:      9901            ldr     r1, [sp, #4]
+ 80105c2:      4620            mov     r0, r4
+ 80105c4:      f000 fe30       bl      8011228 <__pow5mult>
+ 80105c8:      9001            str     r0, [sp, #4]
+ 80105ca:      2101            movs    r1, #1
+ 80105cc:      4620            mov     r0, r4
+ 80105ce:      f000 fd8c       bl      80110ea <__i2b>
+ 80105d2:      9b0b            ldr     r3, [sp, #44]   ; 0x2c
+ 80105d4:      4605            mov     r5, r0
+ 80105d6:      2b00            cmp     r3, #0
+ 80105d8:      f000 81ca       beq.w   8010970 <_dtoa_r+0xa20>
+ 80105dc:      461a            mov     r2, r3
+ 80105de:      4601            mov     r1, r0
+ 80105e0:      4620            mov     r0, r4
+ 80105e2:      f000 fe21       bl      8011228 <__pow5mult>
+ 80105e6:      9b08            ldr     r3, [sp, #32]
+ 80105e8:      2b01            cmp     r3, #1
+ 80105ea:      4605            mov     r5, r0
+ 80105ec:      dc44            bgt.n   8010678 <_dtoa_r+0x728>
+ 80105ee:      9b04            ldr     r3, [sp, #16]
+ 80105f0:      2b00            cmp     r3, #0
+ 80105f2:      d13c            bne.n   801066e <_dtoa_r+0x71e>
+ 80105f4:      9b05            ldr     r3, [sp, #20]
+ 80105f6:      f3c3 0313       ubfx    r3, r3, #0, #20
+ 80105fa:      2b00            cmp     r3, #0
+ 80105fc:      d137            bne.n   801066e <_dtoa_r+0x71e>
+ 80105fe:      9b05            ldr     r3, [sp, #20]
+ 8010600:      f023 4300       bic.w   r3, r3, #2147483648     ; 0x80000000
+ 8010604:      0d1b            lsrs    r3, r3, #20
+ 8010606:      051b            lsls    r3, r3, #20
+ 8010608:      2b00            cmp     r3, #0
+ 801060a:      d033            beq.n   8010674 <_dtoa_r+0x724>
+ 801060c:      9b07            ldr     r3, [sp, #28]
+ 801060e:      3301            adds    r3, #1
+ 8010610:      f10a 0a01       add.w   sl, sl, #1
+ 8010614:      9307            str     r3, [sp, #28]
+ 8010616:      f04f 0801       mov.w   r8, #1
+ 801061a:      9b0b            ldr     r3, [sp, #44]   ; 0x2c
+ 801061c:      bb73            cbnz    r3, 801067c <_dtoa_r+0x72c>
+ 801061e:      2001            movs    r0, #1
+ 8010620:      e034            b.n     801068c <_dtoa_r+0x73c>
+ 8010622:      bf00            nop
+ 8010624:      08012ec0        .word   0x08012ec0
+ 8010628:      08012e98        .word   0x08012e98
+ 801062c:      9b12            ldr     r3, [sp, #72]   ; 0x48
+ 801062e:      f1c3 0336       rsb     r3, r3, #54     ; 0x36
+ 8010632:      e790            b.n     8010556 <_dtoa_r+0x606>
+ 8010634:      f109 35ff       add.w   r5, r9, #4294967295     ; 0xffffffff
+ 8010638:      45a8            cmp     r8, r5
+ 801063a:      bfbf            itttt   lt
+ 801063c:      9b0b            ldrlt   r3, [sp, #44]   ; 0x2c
+ 801063e:      eba5 0808       sublt.w r8, r5, r8
+ 8010642:      4443            addlt   r3, r8
+ 8010644:      930b            strlt   r3, [sp, #44]   ; 0x2c
+ 8010646:      bfb6            itet    lt
+ 8010648:      46a8            movlt   r8, r5
+ 801064a:      eba8 0505       subge.w r5, r8, r5
+ 801064e:      2500            movlt   r5, #0
+ 8010650:      f1b9 0f00       cmp.w   r9, #0
+ 8010654:      bfb9            ittee   lt
+ 8010656:      ebaa 0609       sublt.w r6, sl, r9
+ 801065a:      2300            movlt   r3, #0
+ 801065c:      4656            movge   r6, sl
+ 801065e:      464b            movge   r3, r9
+ 8010660:      e77b            b.n     801055a <_dtoa_r+0x60a>
+ 8010662:      4645            mov     r5, r8
+ 8010664:      4656            mov     r6, sl
+ 8010666:      9f09            ldr     r7, [sp, #36]   ; 0x24
+ 8010668:      e780            b.n     801056c <_dtoa_r+0x61c>
+ 801066a:      4642            mov     r2, r8
+ 801066c:      e7a8            b.n     80105c0 <_dtoa_r+0x670>
+ 801066e:      f04f 0800       mov.w   r8, #0
+ 8010672:      e7d2            b.n     801061a <_dtoa_r+0x6ca>
+ 8010674:      4698            mov     r8, r3
+ 8010676:      e7d0            b.n     801061a <_dtoa_r+0x6ca>
+ 8010678:      f04f 0800       mov.w   r8, #0
+ 801067c:      692b            ldr     r3, [r5, #16]
+ 801067e:      eb05 0383       add.w   r3, r5, r3, lsl #2
+ 8010682:      6918            ldr     r0, [r3, #16]
+ 8010684:      f000 fce3       bl      801104e <__hi0bits>
+ 8010688:      f1c0 0020       rsb     r0, r0, #32
+ 801068c:      9b07            ldr     r3, [sp, #28]
+ 801068e:      4418            add     r0, r3
+ 8010690:      f010 001f       ands.w  r0, r0, #31
+ 8010694:      d047            beq.n   8010726 <_dtoa_r+0x7d6>
+ 8010696:      f1c0 0320       rsb     r3, r0, #32
+ 801069a:      2b04            cmp     r3, #4
+ 801069c:      dd3b            ble.n   8010716 <_dtoa_r+0x7c6>
+ 801069e:      9b07            ldr     r3, [sp, #28]
+ 80106a0:      f1c0 001c       rsb     r0, r0, #28
+ 80106a4:      4482            add     sl, r0
+ 80106a6:      4406            add     r6, r0
+ 80106a8:      4403            add     r3, r0
+ 80106aa:      9307            str     r3, [sp, #28]
+ 80106ac:      f1ba 0f00       cmp.w   sl, #0
+ 80106b0:      dd05            ble.n   80106be <_dtoa_r+0x76e>
+ 80106b2:      4652            mov     r2, sl
+ 80106b4:      9901            ldr     r1, [sp, #4]
+ 80106b6:      4620            mov     r0, r4
+ 80106b8:      f000 fdf6       bl      80112a8 <__lshift>
+ 80106bc:      9001            str     r0, [sp, #4]
+ 80106be:      9b07            ldr     r3, [sp, #28]
+ 80106c0:      2b00            cmp     r3, #0
+ 80106c2:      dd05            ble.n   80106d0 <_dtoa_r+0x780>
+ 80106c4:      4629            mov     r1, r5
+ 80106c6:      461a            mov     r2, r3
+ 80106c8:      4620            mov     r0, r4
+ 80106ca:      f000 fded       bl      80112a8 <__lshift>
+ 80106ce:      4605            mov     r5, r0
+ 80106d0:      9b10            ldr     r3, [sp, #64]   ; 0x40
+ 80106d2:      b353            cbz     r3, 801072a <_dtoa_r+0x7da>
+ 80106d4:      4629            mov     r1, r5
+ 80106d6:      9801            ldr     r0, [sp, #4]
+ 80106d8:      f000 fe3a       bl      8011350 <__mcmp>
+ 80106dc:      2800            cmp     r0, #0
+ 80106de:      da24            bge.n   801072a <_dtoa_r+0x7da>
+ 80106e0:      2300            movs    r3, #0
+ 80106e2:      220a            movs    r2, #10
+ 80106e4:      9901            ldr     r1, [sp, #4]
+ 80106e6:      4620            mov     r0, r4
+ 80106e8:      f000 fc76       bl      8010fd8 <__multadd>
+ 80106ec:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 80106ee:      9001            str     r0, [sp, #4]
+ 80106f0:      f10b 3bff       add.w   fp, fp, #4294967295     ; 0xffffffff
+ 80106f4:      2b00            cmp     r3, #0
+ 80106f6:      f000 8142       beq.w   801097e <_dtoa_r+0xa2e>
+ 80106fa:      2300            movs    r3, #0
+ 80106fc:      4639            mov     r1, r7
+ 80106fe:      220a            movs    r2, #10
+ 8010700:      4620            mov     r0, r4
+ 8010702:      f000 fc69       bl      8010fd8 <__multadd>
+ 8010706:      9b06            ldr     r3, [sp, #24]
+ 8010708:      2b00            cmp     r3, #0
+ 801070a:      4607            mov     r7, r0
+ 801070c:      dc4b            bgt.n   80107a6 <_dtoa_r+0x856>
+ 801070e:      9b08            ldr     r3, [sp, #32]
+ 8010710:      2b02            cmp     r3, #2
+ 8010712:      dd48            ble.n   80107a6 <_dtoa_r+0x856>
+ 8010714:      e011            b.n     801073a <_dtoa_r+0x7ea>
+ 8010716:      d0c9            beq.n   80106ac <_dtoa_r+0x75c>
+ 8010718:      9a07            ldr     r2, [sp, #28]
+ 801071a:      331c            adds    r3, #28
+ 801071c:      441a            add     r2, r3
+ 801071e:      449a            add     sl, r3
+ 8010720:      441e            add     r6, r3
+ 8010722:      4613            mov     r3, r2
+ 8010724:      e7c1            b.n     80106aa <_dtoa_r+0x75a>
+ 8010726:      4603            mov     r3, r0
+ 8010728:      e7f6            b.n     8010718 <_dtoa_r+0x7c8>
+ 801072a:      f1b9 0f00       cmp.w   r9, #0
+ 801072e:      dc34            bgt.n   801079a <_dtoa_r+0x84a>
+ 8010730:      9b08            ldr     r3, [sp, #32]
+ 8010732:      2b02            cmp     r3, #2
+ 8010734:      dd31            ble.n   801079a <_dtoa_r+0x84a>
+ 8010736:      f8cd 9018       str.w   r9, [sp, #24]
+ 801073a:      9b06            ldr     r3, [sp, #24]
+ 801073c:      b963            cbnz    r3, 8010758 <_dtoa_r+0x808>
+ 801073e:      4629            mov     r1, r5
+ 8010740:      2205            movs    r2, #5
+ 8010742:      4620            mov     r0, r4
+ 8010744:      f000 fc48       bl      8010fd8 <__multadd>
+ 8010748:      4601            mov     r1, r0
+ 801074a:      4605            mov     r5, r0
+ 801074c:      9801            ldr     r0, [sp, #4]
+ 801074e:      f000 fdff       bl      8011350 <__mcmp>
+ 8010752:      2800            cmp     r0, #0
+ 8010754:      f73f adfc       bgt.w   8010350 <_dtoa_r+0x400>
+ 8010758:      9b0a            ldr     r3, [sp, #40]   ; 0x28
+ 801075a:      9e02            ldr     r6, [sp, #8]
+ 801075c:      ea6f 0b03       mvn.w   fp, r3
+ 8010760:      f04f 0900       mov.w   r9, #0
+ 8010764:      4629            mov     r1, r5
+ 8010766:      4620            mov     r0, r4
+ 8010768:      f000 fc2d       bl      8010fc6 <_Bfree>
+ 801076c:      2f00            cmp     r7, #0
+ 801076e:      f43f aebb       beq.w   80104e8 <_dtoa_r+0x598>
+ 8010772:      f1b9 0f00       cmp.w   r9, #0
+ 8010776:      d005            beq.n   8010784 <_dtoa_r+0x834>
+ 8010778:      45b9            cmp     r9, r7
+ 801077a:      d003            beq.n   8010784 <_dtoa_r+0x834>
+ 801077c:      4649            mov     r1, r9
+ 801077e:      4620            mov     r0, r4
+ 8010780:      f000 fc21       bl      8010fc6 <_Bfree>
+ 8010784:      4639            mov     r1, r7
+ 8010786:      4620            mov     r0, r4
+ 8010788:      f000 fc1d       bl      8010fc6 <_Bfree>
+ 801078c:      e6ac            b.n     80104e8 <_dtoa_r+0x598>
+ 801078e:      2500            movs    r5, #0
+ 8010790:      462f            mov     r7, r5
+ 8010792:      e7e1            b.n     8010758 <_dtoa_r+0x808>
+ 8010794:      469b            mov     fp, r3
+ 8010796:      462f            mov     r7, r5
+ 8010798:      e5da            b.n     8010350 <_dtoa_r+0x400>
+ 801079a:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 801079c:      f8cd 9018       str.w   r9, [sp, #24]
+ 80107a0:      2b00            cmp     r3, #0
+ 80107a2:      f000 80f3       beq.w   801098c <_dtoa_r+0xa3c>
+ 80107a6:      2e00            cmp     r6, #0
+ 80107a8:      dd05            ble.n   80107b6 <_dtoa_r+0x866>
+ 80107aa:      4639            mov     r1, r7
+ 80107ac:      4632            mov     r2, r6
+ 80107ae:      4620            mov     r0, r4
+ 80107b0:      f000 fd7a       bl      80112a8 <__lshift>
+ 80107b4:      4607            mov     r7, r0
+ 80107b6:      f1b8 0f00       cmp.w   r8, #0
+ 80107ba:      d04c            beq.n   8010856 <_dtoa_r+0x906>
+ 80107bc:      6879            ldr     r1, [r7, #4]
+ 80107be:      4620            mov     r0, r4
+ 80107c0:      f000 fbdc       bl      8010f7c <_Balloc>
+ 80107c4:      693a            ldr     r2, [r7, #16]
+ 80107c6:      3202            adds    r2, #2
+ 80107c8:      4606            mov     r6, r0
+ 80107ca:      0092            lsls    r2, r2, #2
+ 80107cc:      f107 010c       add.w   r1, r7, #12
+ 80107d0:      300c            adds    r0, #12
+ 80107d2:      f7fd fdd0       bl      800e376 <memcpy>
+ 80107d6:      2201            movs    r2, #1
+ 80107d8:      4631            mov     r1, r6
+ 80107da:      4620            mov     r0, r4
+ 80107dc:      f000 fd64       bl      80112a8 <__lshift>
+ 80107e0:      9b04            ldr     r3, [sp, #16]
+ 80107e2:      f8dd a008       ldr.w   sl, [sp, #8]
+ 80107e6:      f003 0301       and.w   r3, r3, #1
+ 80107ea:      46b9            mov     r9, r7
+ 80107ec:      9307            str     r3, [sp, #28]
+ 80107ee:      4607            mov     r7, r0
+ 80107f0:      4629            mov     r1, r5
+ 80107f2:      9801            ldr     r0, [sp, #4]
+ 80107f4:      f7ff fb20       bl      800fe38 <quorem>
+ 80107f8:      4649            mov     r1, r9
+ 80107fa:      4606            mov     r6, r0
+ 80107fc:      f100 0830       add.w   r8, r0, #48     ; 0x30
+ 8010800:      9801            ldr     r0, [sp, #4]
+ 8010802:      f000 fda5       bl      8011350 <__mcmp>
+ 8010806:      463a            mov     r2, r7
+ 8010808:      9004            str     r0, [sp, #16]
+ 801080a:      4629            mov     r1, r5
+ 801080c:      4620            mov     r0, r4
+ 801080e:      f000 fdb9       bl      8011384 <__mdiff>
+ 8010812:      68c3            ldr     r3, [r0, #12]
+ 8010814:      4602            mov     r2, r0
+ 8010816:      bb03            cbnz    r3, 801085a <_dtoa_r+0x90a>
+ 8010818:      4601            mov     r1, r0
+ 801081a:      9009            str     r0, [sp, #36]   ; 0x24
+ 801081c:      9801            ldr     r0, [sp, #4]
+ 801081e:      f000 fd97       bl      8011350 <__mcmp>
+ 8010822:      9a09            ldr     r2, [sp, #36]   ; 0x24
+ 8010824:      4603            mov     r3, r0
+ 8010826:      4611            mov     r1, r2
+ 8010828:      4620            mov     r0, r4
+ 801082a:      9309            str     r3, [sp, #36]   ; 0x24
+ 801082c:      f000 fbcb       bl      8010fc6 <_Bfree>
+ 8010830:      9b09            ldr     r3, [sp, #36]   ; 0x24
+ 8010832:      b9a3            cbnz    r3, 801085e <_dtoa_r+0x90e>
+ 8010834:      9a08            ldr     r2, [sp, #32]
+ 8010836:      b992            cbnz    r2, 801085e <_dtoa_r+0x90e>
+ 8010838:      9a07            ldr     r2, [sp, #28]
+ 801083a:      b982            cbnz    r2, 801085e <_dtoa_r+0x90e>
+ 801083c:      f1b8 0f39       cmp.w   r8, #57 ; 0x39
+ 8010840:      d029            beq.n   8010896 <_dtoa_r+0x946>
+ 8010842:      9b04            ldr     r3, [sp, #16]
+ 8010844:      2b00            cmp     r3, #0
+ 8010846:      dd01            ble.n   801084c <_dtoa_r+0x8fc>
+ 8010848:      f106 0831       add.w   r8, r6, #49     ; 0x31
+ 801084c:      f10a 0601       add.w   r6, sl, #1
+ 8010850:      f88a 8000       strb.w  r8, [sl]
+ 8010854:      e786            b.n     8010764 <_dtoa_r+0x814>
+ 8010856:      4638            mov     r0, r7
+ 8010858:      e7c2            b.n     80107e0 <_dtoa_r+0x890>
+ 801085a:      2301            movs    r3, #1
+ 801085c:      e7e3            b.n     8010826 <_dtoa_r+0x8d6>
+ 801085e:      9a04            ldr     r2, [sp, #16]
+ 8010860:      2a00            cmp     r2, #0
+ 8010862:      db04            blt.n   801086e <_dtoa_r+0x91e>
+ 8010864:      d124            bne.n   80108b0 <_dtoa_r+0x960>
+ 8010866:      9a08            ldr     r2, [sp, #32]
+ 8010868:      bb12            cbnz    r2, 80108b0 <_dtoa_r+0x960>
+ 801086a:      9a07            ldr     r2, [sp, #28]
+ 801086c:      bb02            cbnz    r2, 80108b0 <_dtoa_r+0x960>
+ 801086e:      2b00            cmp     r3, #0
+ 8010870:      ddec            ble.n   801084c <_dtoa_r+0x8fc>
+ 8010872:      2201            movs    r2, #1
+ 8010874:      9901            ldr     r1, [sp, #4]
+ 8010876:      4620            mov     r0, r4
+ 8010878:      f000 fd16       bl      80112a8 <__lshift>
+ 801087c:      4629            mov     r1, r5
+ 801087e:      9001            str     r0, [sp, #4]
+ 8010880:      f000 fd66       bl      8011350 <__mcmp>
+ 8010884:      2800            cmp     r0, #0
+ 8010886:      dc03            bgt.n   8010890 <_dtoa_r+0x940>
+ 8010888:      d1e0            bne.n   801084c <_dtoa_r+0x8fc>
+ 801088a:      f018 0f01       tst.w   r8, #1
+ 801088e:      d0dd            beq.n   801084c <_dtoa_r+0x8fc>
+ 8010890:      f1b8 0f39       cmp.w   r8, #57 ; 0x39
+ 8010894:      d1d8            bne.n   8010848 <_dtoa_r+0x8f8>
+ 8010896:      2339            movs    r3, #57 ; 0x39
+ 8010898:      f10a 0601       add.w   r6, sl, #1
+ 801089c:      f88a 3000       strb.w  r3, [sl]
+ 80108a0:      f816 3c01       ldrb.w  r3, [r6, #-1]
+ 80108a4:      2b39            cmp     r3, #57 ; 0x39
+ 80108a6:      f106 32ff       add.w   r2, r6, #4294967295     ; 0xffffffff
+ 80108aa:      d04c            beq.n   8010946 <_dtoa_r+0x9f6>
+ 80108ac:      3301            adds    r3, #1
+ 80108ae:      e051            b.n     8010954 <_dtoa_r+0xa04>
+ 80108b0:      2b00            cmp     r3, #0
+ 80108b2:      f10a 0601       add.w   r6, sl, #1
+ 80108b6:      dd05            ble.n   80108c4 <_dtoa_r+0x974>
+ 80108b8:      f1b8 0f39       cmp.w   r8, #57 ; 0x39
+ 80108bc:      d0eb            beq.n   8010896 <_dtoa_r+0x946>
+ 80108be:      f108 0801       add.w   r8, r8, #1
+ 80108c2:      e7c5            b.n     8010850 <_dtoa_r+0x900>
+ 80108c4:      9b02            ldr     r3, [sp, #8]
+ 80108c6:      9a06            ldr     r2, [sp, #24]
+ 80108c8:      f806 8c01       strb.w  r8, [r6, #-1]
+ 80108cc:      1af3            subs    r3, r6, r3
+ 80108ce:      4293            cmp     r3, r2
+ 80108d0:      d021            beq.n   8010916 <_dtoa_r+0x9c6>
+ 80108d2:      2300            movs    r3, #0
+ 80108d4:      220a            movs    r2, #10
+ 80108d6:      9901            ldr     r1, [sp, #4]
+ 80108d8:      4620            mov     r0, r4
+ 80108da:      f000 fb7d       bl      8010fd8 <__multadd>
+ 80108de:      45b9            cmp     r9, r7
+ 80108e0:      9001            str     r0, [sp, #4]
+ 80108e2:      f04f 0300       mov.w   r3, #0
+ 80108e6:      f04f 020a       mov.w   r2, #10
+ 80108ea:      4649            mov     r1, r9
+ 80108ec:      4620            mov     r0, r4
+ 80108ee:      d105            bne.n   80108fc <_dtoa_r+0x9ac>
+ 80108f0:      f000 fb72       bl      8010fd8 <__multadd>
+ 80108f4:      4681            mov     r9, r0
+ 80108f6:      4607            mov     r7, r0
+ 80108f8:      46b2            mov     sl, r6
+ 80108fa:      e779            b.n     80107f0 <_dtoa_r+0x8a0>
+ 80108fc:      f000 fb6c       bl      8010fd8 <__multadd>
+ 8010900:      4639            mov     r1, r7
+ 8010902:      4681            mov     r9, r0
+ 8010904:      2300            movs    r3, #0
+ 8010906:      220a            movs    r2, #10
+ 8010908:      4620            mov     r0, r4
+ 801090a:      f000 fb65       bl      8010fd8 <__multadd>
+ 801090e:      4607            mov     r7, r0
+ 8010910:      e7f2            b.n     80108f8 <_dtoa_r+0x9a8>
+ 8010912:      f04f 0900       mov.w   r9, #0
+ 8010916:      2201            movs    r2, #1
+ 8010918:      9901            ldr     r1, [sp, #4]
+ 801091a:      4620            mov     r0, r4
+ 801091c:      f000 fcc4       bl      80112a8 <__lshift>
+ 8010920:      4629            mov     r1, r5
+ 8010922:      9001            str     r0, [sp, #4]
+ 8010924:      f000 fd14       bl      8011350 <__mcmp>
+ 8010928:      2800            cmp     r0, #0
+ 801092a:      dcb9            bgt.n   80108a0 <_dtoa_r+0x950>
+ 801092c:      d102            bne.n   8010934 <_dtoa_r+0x9e4>
+ 801092e:      f018 0f01       tst.w   r8, #1
+ 8010932:      d1b5            bne.n   80108a0 <_dtoa_r+0x950>
+ 8010934:      f816 3c01       ldrb.w  r3, [r6, #-1]
+ 8010938:      2b30            cmp     r3, #48 ; 0x30
+ 801093a:      f106 32ff       add.w   r2, r6, #4294967295     ; 0xffffffff
+ 801093e:      f47f af11       bne.w   8010764 <_dtoa_r+0x814>
+ 8010942:      4616            mov     r6, r2
+ 8010944:      e7f6            b.n     8010934 <_dtoa_r+0x9e4>
+ 8010946:      9b02            ldr     r3, [sp, #8]
+ 8010948:      4293            cmp     r3, r2
+ 801094a:      d105            bne.n   8010958 <_dtoa_r+0xa08>
+ 801094c:      9a02            ldr     r2, [sp, #8]
+ 801094e:      f10b 0b01       add.w   fp, fp, #1
+ 8010952:      2331            movs    r3, #49 ; 0x31
+ 8010954:      7013            strb    r3, [r2, #0]
+ 8010956:      e705            b.n     8010764 <_dtoa_r+0x814>
+ 8010958:      4616            mov     r6, r2
+ 801095a:      e7a1            b.n     80108a0 <_dtoa_r+0x950>
+ 801095c:      4b16            ldr     r3, [pc, #88]   ; (80109b8 <_dtoa_r+0xa68>)
+ 801095e:      f7ff bb4c       b.w     800fffa <_dtoa_r+0xaa>
+ 8010962:      9b1f            ldr     r3, [sp, #124]  ; 0x7c
+ 8010964:      2b00            cmp     r3, #0
+ 8010966:      f47f ab30       bne.w   800ffca <_dtoa_r+0x7a>
+ 801096a:      4b14            ldr     r3, [pc, #80]   ; (80109bc <_dtoa_r+0xa6c>)
+ 801096c:      f7ff bb45       b.w     800fffa <_dtoa_r+0xaa>
+ 8010970:      9b08            ldr     r3, [sp, #32]
+ 8010972:      2b01            cmp     r3, #1
+ 8010974:      f77f ae3b       ble.w   80105ee <_dtoa_r+0x69e>
+ 8010978:      f8dd 802c       ldr.w   r8, [sp, #44]   ; 0x2c
+ 801097c:      e64f            b.n     801061e <_dtoa_r+0x6ce>
+ 801097e:      9b06            ldr     r3, [sp, #24]
+ 8010980:      2b00            cmp     r3, #0
+ 8010982:      dc03            bgt.n   801098c <_dtoa_r+0xa3c>
+ 8010984:      9b08            ldr     r3, [sp, #32]
+ 8010986:      2b02            cmp     r3, #2
+ 8010988:      f73f aed7       bgt.w   801073a <_dtoa_r+0x7ea>
+ 801098c:      9e02            ldr     r6, [sp, #8]
+ 801098e:      9801            ldr     r0, [sp, #4]
+ 8010990:      4629            mov     r1, r5
+ 8010992:      f7ff fa51       bl      800fe38 <quorem>
+ 8010996:      f100 0830       add.w   r8, r0, #48     ; 0x30
+ 801099a:      f806 8b01       strb.w  r8, [r6], #1
+ 801099e:      9b02            ldr     r3, [sp, #8]
+ 80109a0:      9a06            ldr     r2, [sp, #24]
+ 80109a2:      1af3            subs    r3, r6, r3
+ 80109a4:      429a            cmp     r2, r3
+ 80109a6:      ddb4            ble.n   8010912 <_dtoa_r+0x9c2>
+ 80109a8:      2300            movs    r3, #0
+ 80109aa:      220a            movs    r2, #10
+ 80109ac:      9901            ldr     r1, [sp, #4]
+ 80109ae:      4620            mov     r0, r4
+ 80109b0:      f000 fb12       bl      8010fd8 <__multadd>
+ 80109b4:      9001            str     r0, [sp, #4]
+ 80109b6:      e7ea            b.n     801098e <_dtoa_r+0xa3e>
+ 80109b8:      08012e62        .word   0x08012e62
+ 80109bc:      08012e84        .word   0x08012e84
+
+080109c0 <__sflush_r>:
+ 80109c0:      f9b1 200c       ldrsh.w r2, [r1, #12]
+ 80109c4:      b293            uxth    r3, r2
+ 80109c6:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 80109ca:      4605            mov     r5, r0
+ 80109cc:      0718            lsls    r0, r3, #28
+ 80109ce:      460c            mov     r4, r1
+ 80109d0:      d45f            bmi.n   8010a92 <__sflush_r+0xd2>
+ 80109d2:      684b            ldr     r3, [r1, #4]
+ 80109d4:      f442 6200       orr.w   r2, r2, #2048   ; 0x800
+ 80109d8:      2b00            cmp     r3, #0
+ 80109da:      818a            strh    r2, [r1, #12]
+ 80109dc:      dc05            bgt.n   80109ea <__sflush_r+0x2a>
+ 80109de:      6bcb            ldr     r3, [r1, #60]   ; 0x3c
+ 80109e0:      2b00            cmp     r3, #0
+ 80109e2:      dc02            bgt.n   80109ea <__sflush_r+0x2a>
+ 80109e4:      2000            movs    r0, #0
+ 80109e6:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 80109ea:      6aa6            ldr     r6, [r4, #40]   ; 0x28
+ 80109ec:      2e00            cmp     r6, #0
+ 80109ee:      d0f9            beq.n   80109e4 <__sflush_r+0x24>
+ 80109f0:      2300            movs    r3, #0
+ 80109f2:      f412 5280       ands.w  r2, r2, #4096   ; 0x1000
+ 80109f6:      682f            ldr     r7, [r5, #0]
+ 80109f8:      69e1            ldr     r1, [r4, #28]
+ 80109fa:      602b            str     r3, [r5, #0]
+ 80109fc:      d036            beq.n   8010a6c <__sflush_r+0xac>
+ 80109fe:      6d20            ldr     r0, [r4, #80]   ; 0x50
+ 8010a00:      89a3            ldrh    r3, [r4, #12]
+ 8010a02:      075a            lsls    r2, r3, #29
+ 8010a04:      d505            bpl.n   8010a12 <__sflush_r+0x52>
+ 8010a06:      6863            ldr     r3, [r4, #4]
+ 8010a08:      1ac0            subs    r0, r0, r3
+ 8010a0a:      6b23            ldr     r3, [r4, #48]   ; 0x30
+ 8010a0c:      b10b            cbz     r3, 8010a12 <__sflush_r+0x52>
+ 8010a0e:      6be3            ldr     r3, [r4, #60]   ; 0x3c
+ 8010a10:      1ac0            subs    r0, r0, r3
+ 8010a12:      2300            movs    r3, #0
+ 8010a14:      4602            mov     r2, r0
+ 8010a16:      6aa6            ldr     r6, [r4, #40]   ; 0x28
+ 8010a18:      69e1            ldr     r1, [r4, #28]
+ 8010a1a:      4628            mov     r0, r5
+ 8010a1c:      47b0            blx     r6
+ 8010a1e:      1c43            adds    r3, r0, #1
+ 8010a20:      89a3            ldrh    r3, [r4, #12]
+ 8010a22:      d106            bne.n   8010a32 <__sflush_r+0x72>
+ 8010a24:      6829            ldr     r1, [r5, #0]
+ 8010a26:      291d            cmp     r1, #29
+ 8010a28:      d84c            bhi.n   8010ac4 <__sflush_r+0x104>
+ 8010a2a:      4a2b            ldr     r2, [pc, #172]  ; (8010ad8 <__sflush_r+0x118>)
+ 8010a2c:      40ca            lsrs    r2, r1
+ 8010a2e:      07d6            lsls    r6, r2, #31
+ 8010a30:      d548            bpl.n   8010ac4 <__sflush_r+0x104>
+ 8010a32:      f423 6300       bic.w   r3, r3, #2048   ; 0x800
+ 8010a36:      b21b            sxth    r3, r3
+ 8010a38:      2200            movs    r2, #0
+ 8010a3a:      6062            str     r2, [r4, #4]
+ 8010a3c:      04d9            lsls    r1, r3, #19
+ 8010a3e:      6922            ldr     r2, [r4, #16]
+ 8010a40:      81a3            strh    r3, [r4, #12]
+ 8010a42:      6022            str     r2, [r4, #0]
+ 8010a44:      d504            bpl.n   8010a50 <__sflush_r+0x90>
+ 8010a46:      1c42            adds    r2, r0, #1
+ 8010a48:      d101            bne.n   8010a4e <__sflush_r+0x8e>
+ 8010a4a:      682b            ldr     r3, [r5, #0]
+ 8010a4c:      b903            cbnz    r3, 8010a50 <__sflush_r+0x90>
+ 8010a4e:      6520            str     r0, [r4, #80]   ; 0x50
+ 8010a50:      6b21            ldr     r1, [r4, #48]   ; 0x30
+ 8010a52:      602f            str     r7, [r5, #0]
+ 8010a54:      2900            cmp     r1, #0
+ 8010a56:      d0c5            beq.n   80109e4 <__sflush_r+0x24>
+ 8010a58:      f104 0340       add.w   r3, r4, #64     ; 0x40
+ 8010a5c:      4299            cmp     r1, r3
+ 8010a5e:      d002            beq.n   8010a66 <__sflush_r+0xa6>
+ 8010a60:      4628            mov     r0, r5
+ 8010a62:      f000 f937       bl      8010cd4 <_free_r>
+ 8010a66:      2000            movs    r0, #0
+ 8010a68:      6320            str     r0, [r4, #48]   ; 0x30
+ 8010a6a:      e7bc            b.n     80109e6 <__sflush_r+0x26>
+ 8010a6c:      2301            movs    r3, #1
+ 8010a6e:      4628            mov     r0, r5
+ 8010a70:      47b0            blx     r6
+ 8010a72:      1c41            adds    r1, r0, #1
+ 8010a74:      d1c4            bne.n   8010a00 <__sflush_r+0x40>
+ 8010a76:      682b            ldr     r3, [r5, #0]
+ 8010a78:      2b00            cmp     r3, #0
+ 8010a7a:      d0c1            beq.n   8010a00 <__sflush_r+0x40>
+ 8010a7c:      2b1d            cmp     r3, #29
+ 8010a7e:      d001            beq.n   8010a84 <__sflush_r+0xc4>
+ 8010a80:      2b16            cmp     r3, #22
+ 8010a82:      d101            bne.n   8010a88 <__sflush_r+0xc8>
+ 8010a84:      602f            str     r7, [r5, #0]
+ 8010a86:      e7ad            b.n     80109e4 <__sflush_r+0x24>
+ 8010a88:      89a3            ldrh    r3, [r4, #12]
+ 8010a8a:      f043 0340       orr.w   r3, r3, #64     ; 0x40
+ 8010a8e:      81a3            strh    r3, [r4, #12]
+ 8010a90:      e7a9            b.n     80109e6 <__sflush_r+0x26>
+ 8010a92:      690f            ldr     r7, [r1, #16]
+ 8010a94:      2f00            cmp     r7, #0
+ 8010a96:      d0a5            beq.n   80109e4 <__sflush_r+0x24>
+ 8010a98:      079b            lsls    r3, r3, #30
+ 8010a9a:      680e            ldr     r6, [r1, #0]
+ 8010a9c:      bf08            it      eq
+ 8010a9e:      694b            ldreq   r3, [r1, #20]
+ 8010aa0:      600f            str     r7, [r1, #0]
+ 8010aa2:      bf18            it      ne
+ 8010aa4:      2300            movne   r3, #0
+ 8010aa6:      eba6 0807       sub.w   r8, r6, r7
+ 8010aaa:      608b            str     r3, [r1, #8]
+ 8010aac:      f1b8 0f00       cmp.w   r8, #0
+ 8010ab0:      dd98            ble.n   80109e4 <__sflush_r+0x24>
+ 8010ab2:      4643            mov     r3, r8
+ 8010ab4:      463a            mov     r2, r7
+ 8010ab6:      69e1            ldr     r1, [r4, #28]
+ 8010ab8:      6a66            ldr     r6, [r4, #36]   ; 0x24
+ 8010aba:      4628            mov     r0, r5
+ 8010abc:      47b0            blx     r6
+ 8010abe:      2800            cmp     r0, #0
+ 8010ac0:      dc06            bgt.n   8010ad0 <__sflush_r+0x110>
+ 8010ac2:      89a3            ldrh    r3, [r4, #12]
+ 8010ac4:      f043 0340       orr.w   r3, r3, #64     ; 0x40
+ 8010ac8:      81a3            strh    r3, [r4, #12]
+ 8010aca:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 8010ace:      e78a            b.n     80109e6 <__sflush_r+0x26>
+ 8010ad0:      4407            add     r7, r0
+ 8010ad2:      eba8 0800       sub.w   r8, r8, r0
+ 8010ad6:      e7e9            b.n     8010aac <__sflush_r+0xec>
+ 8010ad8:      20400001        .word   0x20400001
+
+08010adc <_fflush_r>:
+ 8010adc:      b538            push    {r3, r4, r5, lr}
+ 8010ade:      460c            mov     r4, r1
+ 8010ae0:      4605            mov     r5, r0
+ 8010ae2:      b118            cbz     r0, 8010aec <_fflush_r+0x10>
+ 8010ae4:      6b83            ldr     r3, [r0, #56]   ; 0x38
+ 8010ae6:      b90b            cbnz    r3, 8010aec <_fflush_r+0x10>
+ 8010ae8:      f000 f864       bl      8010bb4 <__sinit>
+ 8010aec:      f9b4 000c       ldrsh.w r0, [r4, #12]
+ 8010af0:      b1b8            cbz     r0, 8010b22 <_fflush_r+0x46>
+ 8010af2:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 8010af4:      07db            lsls    r3, r3, #31
+ 8010af6:      d404            bmi.n   8010b02 <_fflush_r+0x26>
+ 8010af8:      0581            lsls    r1, r0, #22
+ 8010afa:      d402            bmi.n   8010b02 <_fflush_r+0x26>
+ 8010afc:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 8010afe:      f7fd f9e3       bl      800dec8 <__retarget_lock_acquire_recursive>
+ 8010b02:      4628            mov     r0, r5
+ 8010b04:      4621            mov     r1, r4
+ 8010b06:      f7ff ff5b       bl      80109c0 <__sflush_r>
+ 8010b0a:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 8010b0c:      07da            lsls    r2, r3, #31
+ 8010b0e:      4605            mov     r5, r0
+ 8010b10:      d405            bmi.n   8010b1e <_fflush_r+0x42>
+ 8010b12:      89a3            ldrh    r3, [r4, #12]
+ 8010b14:      059b            lsls    r3, r3, #22
+ 8010b16:      d402            bmi.n   8010b1e <_fflush_r+0x42>
+ 8010b18:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 8010b1a:      f7fd f9d6       bl      800deca <__retarget_lock_release_recursive>
+ 8010b1e:      4628            mov     r0, r5
+ 8010b20:      bd38            pop     {r3, r4, r5, pc}
+ 8010b22:      4605            mov     r5, r0
+ 8010b24:      e7fb            b.n     8010b1e <_fflush_r+0x42>
+       ...
+
+08010b28 <std>:
+ 8010b28:      2300            movs    r3, #0
+ 8010b2a:      b510            push    {r4, lr}
+ 8010b2c:      4604            mov     r4, r0
+ 8010b2e:      e9c0 3300       strd    r3, r3, [r0]
+ 8010b32:      6083            str     r3, [r0, #8]
+ 8010b34:      8181            strh    r1, [r0, #12]
+ 8010b36:      6643            str     r3, [r0, #100]  ; 0x64
+ 8010b38:      81c2            strh    r2, [r0, #14]
+ 8010b3a:      e9c0 3304       strd    r3, r3, [r0, #16]
+ 8010b3e:      6183            str     r3, [r0, #24]
+ 8010b40:      4619            mov     r1, r3
+ 8010b42:      2208            movs    r2, #8
+ 8010b44:      305c            adds    r0, #92 ; 0x5c
+ 8010b46:      f7fd fc3a       bl      800e3be <memset>
+ 8010b4a:      4b07            ldr     r3, [pc, #28]   ; (8010b68 <std+0x40>)
+ 8010b4c:      6223            str     r3, [r4, #32]
+ 8010b4e:      4b07            ldr     r3, [pc, #28]   ; (8010b6c <std+0x44>)
+ 8010b50:      6263            str     r3, [r4, #36]   ; 0x24
+ 8010b52:      4b07            ldr     r3, [pc, #28]   ; (8010b70 <std+0x48>)
+ 8010b54:      62a3            str     r3, [r4, #40]   ; 0x28
+ 8010b56:      4b07            ldr     r3, [pc, #28]   ; (8010b74 <std+0x4c>)
+ 8010b58:      61e4            str     r4, [r4, #28]
+ 8010b5a:      62e3            str     r3, [r4, #44]   ; 0x2c
+ 8010b5c:      f104 0058       add.w   r0, r4, #88     ; 0x58
+ 8010b60:      e8bd 4010       ldmia.w sp!, {r4, lr}
+ 8010b64:      f7fd b9ae       b.w     800dec4 <__retarget_lock_init_recursive>
+ 8010b68:      08011555        .word   0x08011555
+ 8010b6c:      08011577        .word   0x08011577
+ 8010b70:      080115af        .word   0x080115af
+ 8010b74:      080115d3        .word   0x080115d3
+
+08010b78 <_cleanup_r>:
+ 8010b78:      4901            ldr     r1, [pc, #4]    ; (8010b80 <_cleanup_r+0x8>)
+ 8010b7a:      f000 b967       b.w     8010e4c <_fwalk_reent>
+ 8010b7e:      bf00            nop
+ 8010b80:      0801181d        .word   0x0801181d
+
+08010b84 <__sfp_lock_acquire>:
+ 8010b84:      4801            ldr     r0, [pc, #4]    ; (8010b8c <__sfp_lock_acquire+0x8>)
+ 8010b86:      f7fd b99f       b.w     800dec8 <__retarget_lock_acquire_recursive>
+ 8010b8a:      bf00            nop
+ 8010b8c:      20000b04        .word   0x20000b04
+
+08010b90 <__sfp_lock_release>:
+ 8010b90:      4801            ldr     r0, [pc, #4]    ; (8010b98 <__sfp_lock_release+0x8>)
+ 8010b92:      f7fd b99a       b.w     800deca <__retarget_lock_release_recursive>
+ 8010b96:      bf00            nop
+ 8010b98:      20000b04        .word   0x20000b04
+
+08010b9c <__sinit_lock_acquire>:
+ 8010b9c:      4801            ldr     r0, [pc, #4]    ; (8010ba4 <__sinit_lock_acquire+0x8>)
+ 8010b9e:      f7fd b993       b.w     800dec8 <__retarget_lock_acquire_recursive>
+ 8010ba2:      bf00            nop
+ 8010ba4:      20000aff        .word   0x20000aff
+
+08010ba8 <__sinit_lock_release>:
+ 8010ba8:      4801            ldr     r0, [pc, #4]    ; (8010bb0 <__sinit_lock_release+0x8>)
+ 8010baa:      f7fd b98e       b.w     800deca <__retarget_lock_release_recursive>
+ 8010bae:      bf00            nop
+ 8010bb0:      20000aff        .word   0x20000aff
+
+08010bb4 <__sinit>:
+ 8010bb4:      b510            push    {r4, lr}
+ 8010bb6:      4604            mov     r4, r0
+ 8010bb8:      f7ff fff0       bl      8010b9c <__sinit_lock_acquire>
+ 8010bbc:      6ba2            ldr     r2, [r4, #56]   ; 0x38
+ 8010bbe:      b11a            cbz     r2, 8010bc8 <__sinit+0x14>
+ 8010bc0:      e8bd 4010       ldmia.w sp!, {r4, lr}
+ 8010bc4:      f7ff bff0       b.w     8010ba8 <__sinit_lock_release>
+ 8010bc8:      4b0d            ldr     r3, [pc, #52]   ; (8010c00 <__sinit+0x4c>)
+ 8010bca:      63e3            str     r3, [r4, #60]   ; 0x3c
+ 8010bcc:      2303            movs    r3, #3
+ 8010bce:      f8c4 32e4       str.w   r3, [r4, #740]  ; 0x2e4
+ 8010bd2:      f504 733b       add.w   r3, r4, #748    ; 0x2ec
+ 8010bd6:      f8c4 32e8       str.w   r3, [r4, #744]  ; 0x2e8
+ 8010bda:      f8c4 22e0       str.w   r2, [r4, #736]  ; 0x2e0
+ 8010bde:      2104            movs    r1, #4
+ 8010be0:      6860            ldr     r0, [r4, #4]
+ 8010be2:      f7ff ffa1       bl      8010b28 <std>
+ 8010be6:      2201            movs    r2, #1
+ 8010be8:      2109            movs    r1, #9
+ 8010bea:      68a0            ldr     r0, [r4, #8]
+ 8010bec:      f7ff ff9c       bl      8010b28 <std>
+ 8010bf0:      2202            movs    r2, #2
+ 8010bf2:      2112            movs    r1, #18
+ 8010bf4:      68e0            ldr     r0, [r4, #12]
+ 8010bf6:      f7ff ff97       bl      8010b28 <std>
+ 8010bfa:      2301            movs    r3, #1
+ 8010bfc:      63a3            str     r3, [r4, #56]   ; 0x38
+ 8010bfe:      e7df            b.n     8010bc0 <__sinit+0xc>
+ 8010c00:      08010b79        .word   0x08010b79
+
+08010c04 <__libc_fini_array>:
+ 8010c04:      b538            push    {r3, r4, r5, lr}
+ 8010c06:      4d07            ldr     r5, [pc, #28]   ; (8010c24 <__libc_fini_array+0x20>)
+ 8010c08:      4c07            ldr     r4, [pc, #28]   ; (8010c28 <__libc_fini_array+0x24>)
+ 8010c0a:      1b64            subs    r4, r4, r5
+ 8010c0c:      10a4            asrs    r4, r4, #2
+ 8010c0e:      b91c            cbnz    r4, 8010c18 <__libc_fini_array+0x14>
+ 8010c10:      e8bd 4038       ldmia.w sp!, {r3, r4, r5, lr}
+ 8010c14:      f000 bec6       b.w     80119a4 <_fini>
+ 8010c18:      3c01            subs    r4, #1
+ 8010c1a:      f855 3024       ldr.w   r3, [r5, r4, lsl #2]
+ 8010c1e:      4798            blx     r3
+ 8010c20:      e7f5            b.n     8010c0e <__libc_fini_array+0xa>
+ 8010c22:      bf00            nop
+ 8010c24:      08013334        .word   0x08013334
+ 8010c28:      08013338        .word   0x08013338
+
+08010c2c <_malloc_trim_r>:
+ 8010c2c:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8010c30:      4605            mov     r5, r0
+ 8010c32:      2008            movs    r0, #8
+ 8010c34:      460c            mov     r4, r1
+ 8010c36:      f7ff f823       bl      800fc80 <sysconf>
+ 8010c3a:      4f23            ldr     r7, [pc, #140]  ; (8010cc8 <_malloc_trim_r+0x9c>)
+ 8010c3c:      4680            mov     r8, r0
+ 8010c3e:      4628            mov     r0, r5
+ 8010c40:      f7fd fbc6       bl      800e3d0 <__malloc_lock>
+ 8010c44:      68bb            ldr     r3, [r7, #8]
+ 8010c46:      685e            ldr     r6, [r3, #4]
+ 8010c48:      f026 0603       bic.w   r6, r6, #3
+ 8010c4c:      1b34            subs    r4, r6, r4
+ 8010c4e:      3c11            subs    r4, #17
+ 8010c50:      4444            add     r4, r8
+ 8010c52:      fbb4 f4f8       udiv    r4, r4, r8
+ 8010c56:      3c01            subs    r4, #1
+ 8010c58:      fb08 f404       mul.w   r4, r8, r4
+ 8010c5c:      45a0            cmp     r8, r4
+ 8010c5e:      dd05            ble.n   8010c6c <_malloc_trim_r+0x40>
+ 8010c60:      4628            mov     r0, r5
+ 8010c62:      f7fd fbbb       bl      800e3dc <__malloc_unlock>
+ 8010c66:      2000            movs    r0, #0
+ 8010c68:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8010c6c:      2100            movs    r1, #0
+ 8010c6e:      4628            mov     r0, r5
+ 8010c70:      f7fd fd9e       bl      800e7b0 <_sbrk_r>
+ 8010c74:      68bb            ldr     r3, [r7, #8]
+ 8010c76:      4433            add     r3, r6
+ 8010c78:      4298            cmp     r0, r3
+ 8010c7a:      d1f1            bne.n   8010c60 <_malloc_trim_r+0x34>
+ 8010c7c:      4261            negs    r1, r4
+ 8010c7e:      4628            mov     r0, r5
+ 8010c80:      f7fd fd96       bl      800e7b0 <_sbrk_r>
+ 8010c84:      3001            adds    r0, #1
+ 8010c86:      d110            bne.n   8010caa <_malloc_trim_r+0x7e>
+ 8010c88:      2100            movs    r1, #0
+ 8010c8a:      4628            mov     r0, r5
+ 8010c8c:      f7fd fd90       bl      800e7b0 <_sbrk_r>
+ 8010c90:      68ba            ldr     r2, [r7, #8]
+ 8010c92:      1a83            subs    r3, r0, r2
+ 8010c94:      2b0f            cmp     r3, #15
+ 8010c96:      dde3            ble.n   8010c60 <_malloc_trim_r+0x34>
+ 8010c98:      490c            ldr     r1, [pc, #48]   ; (8010ccc <_malloc_trim_r+0xa0>)
+ 8010c9a:      6809            ldr     r1, [r1, #0]
+ 8010c9c:      1a40            subs    r0, r0, r1
+ 8010c9e:      490c            ldr     r1, [pc, #48]   ; (8010cd0 <_malloc_trim_r+0xa4>)
+ 8010ca0:      f043 0301       orr.w   r3, r3, #1
+ 8010ca4:      6008            str     r0, [r1, #0]
+ 8010ca6:      6053            str     r3, [r2, #4]
+ 8010ca8:      e7da            b.n     8010c60 <_malloc_trim_r+0x34>
+ 8010caa:      68bb            ldr     r3, [r7, #8]
+ 8010cac:      4a08            ldr     r2, [pc, #32]   ; (8010cd0 <_malloc_trim_r+0xa4>)
+ 8010cae:      1b36            subs    r6, r6, r4
+ 8010cb0:      f046 0601       orr.w   r6, r6, #1
+ 8010cb4:      605e            str     r6, [r3, #4]
+ 8010cb6:      6813            ldr     r3, [r2, #0]
+ 8010cb8:      4628            mov     r0, r5
+ 8010cba:      1b1c            subs    r4, r3, r4
+ 8010cbc:      6014            str     r4, [r2, #0]
+ 8010cbe:      f7fd fb8d       bl      800e3dc <__malloc_unlock>
+ 8010cc2:      2001            movs    r0, #1
+ 8010cc4:      e7d0            b.n     8010c68 <_malloc_trim_r+0x3c>
+ 8010cc6:      bf00            nop
+ 8010cc8:      20000440        .word   0x20000440
+ 8010ccc:      20000848        .word   0x20000848
+ 8010cd0:      20000ac4        .word   0x20000ac4
+
+08010cd4 <_free_r>:
+ 8010cd4:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8010cd8:      4604            mov     r4, r0
+ 8010cda:      4688            mov     r8, r1
+ 8010cdc:      2900            cmp     r1, #0
+ 8010cde:      f000 80ab       beq.w   8010e38 <_free_r+0x164>
+ 8010ce2:      f7fd fb75       bl      800e3d0 <__malloc_lock>
+ 8010ce6:      f858 2c04       ldr.w   r2, [r8, #-4]
+ 8010cea:      4d54            ldr     r5, [pc, #336]  ; (8010e3c <_free_r+0x168>)
+ 8010cec:      f022 0001       bic.w   r0, r2, #1
+ 8010cf0:      f1a8 0308       sub.w   r3, r8, #8
+ 8010cf4:      181f            adds    r7, r3, r0
+ 8010cf6:      68a9            ldr     r1, [r5, #8]
+ 8010cf8:      687e            ldr     r6, [r7, #4]
+ 8010cfa:      42b9            cmp     r1, r7
+ 8010cfc:      f026 0603       bic.w   r6, r6, #3
+ 8010d00:      f002 0201       and.w   r2, r2, #1
+ 8010d04:      d11b            bne.n   8010d3e <_free_r+0x6a>
+ 8010d06:      4430            add     r0, r6
+ 8010d08:      b93a            cbnz    r2, 8010d1a <_free_r+0x46>
+ 8010d0a:      f858 2c08       ldr.w   r2, [r8, #-8]
+ 8010d0e:      1a9b            subs    r3, r3, r2
+ 8010d10:      4410            add     r0, r2
+ 8010d12:      e9d3 1202       ldrd    r1, r2, [r3, #8]
+ 8010d16:      60ca            str     r2, [r1, #12]
+ 8010d18:      6091            str     r1, [r2, #8]
+ 8010d1a:      f040 0201       orr.w   r2, r0, #1
+ 8010d1e:      605a            str     r2, [r3, #4]
+ 8010d20:      60ab            str     r3, [r5, #8]
+ 8010d22:      4b47            ldr     r3, [pc, #284]  ; (8010e40 <_free_r+0x16c>)
+ 8010d24:      681b            ldr     r3, [r3, #0]
+ 8010d26:      4283            cmp     r3, r0
+ 8010d28:      d804            bhi.n   8010d34 <_free_r+0x60>
+ 8010d2a:      4b46            ldr     r3, [pc, #280]  ; (8010e44 <_free_r+0x170>)
+ 8010d2c:      4620            mov     r0, r4
+ 8010d2e:      6819            ldr     r1, [r3, #0]
+ 8010d30:      f7ff ff7c       bl      8010c2c <_malloc_trim_r>
+ 8010d34:      4620            mov     r0, r4
+ 8010d36:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 8010d3a:      f7fd bb4f       b.w     800e3dc <__malloc_unlock>
+ 8010d3e:      607e            str     r6, [r7, #4]
+ 8010d40:      2a00            cmp     r2, #0
+ 8010d42:      d139            bne.n   8010db8 <_free_r+0xe4>
+ 8010d44:      f858 1c08       ldr.w   r1, [r8, #-8]
+ 8010d48:      1a5b            subs    r3, r3, r1
+ 8010d4a:      4408            add     r0, r1
+ 8010d4c:      6899            ldr     r1, [r3, #8]
+ 8010d4e:      f105 0c08       add.w   ip, r5, #8
+ 8010d52:      4561            cmp     r1, ip
+ 8010d54:      d032            beq.n   8010dbc <_free_r+0xe8>
+ 8010d56:      f8d3 c00c       ldr.w   ip, [r3, #12]
+ 8010d5a:      f8c1 c00c       str.w   ip, [r1, #12]
+ 8010d5e:      f8cc 1008       str.w   r1, [ip, #8]
+ 8010d62:      19b9            adds    r1, r7, r6
+ 8010d64:      6849            ldr     r1, [r1, #4]
+ 8010d66:      07c9            lsls    r1, r1, #31
+ 8010d68:      d40a            bmi.n   8010d80 <_free_r+0xac>
+ 8010d6a:      4430            add     r0, r6
+ 8010d6c:      68b9            ldr     r1, [r7, #8]
+ 8010d6e:      bb3a            cbnz    r2, 8010dc0 <_free_r+0xec>
+ 8010d70:      4e35            ldr     r6, [pc, #212]  ; (8010e48 <_free_r+0x174>)
+ 8010d72:      42b1            cmp     r1, r6
+ 8010d74:      d124            bne.n   8010dc0 <_free_r+0xec>
+ 8010d76:      e9c5 3304       strd    r3, r3, [r5, #16]
+ 8010d7a:      e9c3 1102       strd    r1, r1, [r3, #8]
+ 8010d7e:      2201            movs    r2, #1
+ 8010d80:      f040 0101       orr.w   r1, r0, #1
+ 8010d84:      6059            str     r1, [r3, #4]
+ 8010d86:      5018            str     r0, [r3, r0]
+ 8010d88:      2a00            cmp     r2, #0
+ 8010d8a:      d1d3            bne.n   8010d34 <_free_r+0x60>
+ 8010d8c:      f5b0 7f00       cmp.w   r0, #512        ; 0x200
+ 8010d90:      d21a            bcs.n   8010dc8 <_free_r+0xf4>
+ 8010d92:      08c0            lsrs    r0, r0, #3
+ 8010d94:      1081            asrs    r1, r0, #2
+ 8010d96:      2201            movs    r2, #1
+ 8010d98:      408a            lsls    r2, r1
+ 8010d9a:      6869            ldr     r1, [r5, #4]
+ 8010d9c:      3001            adds    r0, #1
+ 8010d9e:      430a            orrs    r2, r1
+ 8010da0:      606a            str     r2, [r5, #4]
+ 8010da2:      f855 1030       ldr.w   r1, [r5, r0, lsl #3]
+ 8010da6:      eb05 02c0       add.w   r2, r5, r0, lsl #3
+ 8010daa:      3a08            subs    r2, #8
+ 8010dac:      e9c3 1202       strd    r1, r2, [r3, #8]
+ 8010db0:      f845 3030       str.w   r3, [r5, r0, lsl #3]
+ 8010db4:      60cb            str     r3, [r1, #12]
+ 8010db6:      e7bd            b.n     8010d34 <_free_r+0x60>
+ 8010db8:      2200            movs    r2, #0
+ 8010dba:      e7d2            b.n     8010d62 <_free_r+0x8e>
+ 8010dbc:      2201            movs    r2, #1
+ 8010dbe:      e7d0            b.n     8010d62 <_free_r+0x8e>
+ 8010dc0:      68fe            ldr     r6, [r7, #12]
+ 8010dc2:      60ce            str     r6, [r1, #12]
+ 8010dc4:      60b1            str     r1, [r6, #8]
+ 8010dc6:      e7db            b.n     8010d80 <_free_r+0xac>
+ 8010dc8:      0a42            lsrs    r2, r0, #9
+ 8010dca:      2a04            cmp     r2, #4
+ 8010dcc:      d813            bhi.n   8010df6 <_free_r+0x122>
+ 8010dce:      0982            lsrs    r2, r0, #6
+ 8010dd0:      3238            adds    r2, #56 ; 0x38
+ 8010dd2:      1c51            adds    r1, r2, #1
+ 8010dd4:      eb05 06c2       add.w   r6, r5, r2, lsl #3
+ 8010dd8:      f855 1031       ldr.w   r1, [r5, r1, lsl #3]
+ 8010ddc:      428e            cmp     r6, r1
+ 8010dde:      d124            bne.n   8010e2a <_free_r+0x156>
+ 8010de0:      2001            movs    r0, #1
+ 8010de2:      1092            asrs    r2, r2, #2
+ 8010de4:      fa00 f202       lsl.w   r2, r0, r2
+ 8010de8:      6868            ldr     r0, [r5, #4]
+ 8010dea:      4302            orrs    r2, r0
+ 8010dec:      606a            str     r2, [r5, #4]
+ 8010dee:      e9c3 1602       strd    r1, r6, [r3, #8]
+ 8010df2:      60b3            str     r3, [r6, #8]
+ 8010df4:      e7de            b.n     8010db4 <_free_r+0xe0>
+ 8010df6:      2a14            cmp     r2, #20
+ 8010df8:      d801            bhi.n   8010dfe <_free_r+0x12a>
+ 8010dfa:      325b            adds    r2, #91 ; 0x5b
+ 8010dfc:      e7e9            b.n     8010dd2 <_free_r+0xfe>
+ 8010dfe:      2a54            cmp     r2, #84 ; 0x54
+ 8010e00:      d802            bhi.n   8010e08 <_free_r+0x134>
+ 8010e02:      0b02            lsrs    r2, r0, #12
+ 8010e04:      326e            adds    r2, #110        ; 0x6e
+ 8010e06:      e7e4            b.n     8010dd2 <_free_r+0xfe>
+ 8010e08:      f5b2 7faa       cmp.w   r2, #340        ; 0x154
+ 8010e0c:      d802            bhi.n   8010e14 <_free_r+0x140>
+ 8010e0e:      0bc2            lsrs    r2, r0, #15
+ 8010e10:      3277            adds    r2, #119        ; 0x77
+ 8010e12:      e7de            b.n     8010dd2 <_free_r+0xfe>
+ 8010e14:      f240 5154       movw    r1, #1364       ; 0x554
+ 8010e18:      428a            cmp     r2, r1
+ 8010e1a:      bf9a            itte    ls
+ 8010e1c:      0c82            lsrls   r2, r0, #18
+ 8010e1e:      327c            addls   r2, #124        ; 0x7c
+ 8010e20:      227e            movhi   r2, #126        ; 0x7e
+ 8010e22:      e7d6            b.n     8010dd2 <_free_r+0xfe>
+ 8010e24:      6889            ldr     r1, [r1, #8]
+ 8010e26:      428e            cmp     r6, r1
+ 8010e28:      d004            beq.n   8010e34 <_free_r+0x160>
+ 8010e2a:      684a            ldr     r2, [r1, #4]
+ 8010e2c:      f022 0203       bic.w   r2, r2, #3
+ 8010e30:      4282            cmp     r2, r0
+ 8010e32:      d8f7            bhi.n   8010e24 <_free_r+0x150>
+ 8010e34:      68ce            ldr     r6, [r1, #12]
+ 8010e36:      e7da            b.n     8010dee <_free_r+0x11a>
+ 8010e38:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+ 8010e3c:      20000440        .word   0x20000440
+ 8010e40:      2000084c        .word   0x2000084c
+ 8010e44:      20000af4        .word   0x20000af4
+ 8010e48:      20000448        .word   0x20000448
+
+08010e4c <_fwalk_reent>:
+ 8010e4c:      e92d 43f8       stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
+ 8010e50:      4680            mov     r8, r0
+ 8010e52:      4689            mov     r9, r1
+ 8010e54:      f500 7438       add.w   r4, r0, #736    ; 0x2e0
+ 8010e58:      2600            movs    r6, #0
+ 8010e5a:      b914            cbnz    r4, 8010e62 <_fwalk_reent+0x16>
+ 8010e5c:      4630            mov     r0, r6
+ 8010e5e:      e8bd 83f8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
+ 8010e62:      e9d4 7501       ldrd    r7, r5, [r4, #4]
+ 8010e66:      3f01            subs    r7, #1
+ 8010e68:      d501            bpl.n   8010e6e <_fwalk_reent+0x22>
+ 8010e6a:      6824            ldr     r4, [r4, #0]
+ 8010e6c:      e7f5            b.n     8010e5a <_fwalk_reent+0xe>
+ 8010e6e:      89ab            ldrh    r3, [r5, #12]
+ 8010e70:      2b01            cmp     r3, #1
+ 8010e72:      d907            bls.n   8010e84 <_fwalk_reent+0x38>
+ 8010e74:      f9b5 300e       ldrsh.w r3, [r5, #14]
+ 8010e78:      3301            adds    r3, #1
+ 8010e7a:      d003            beq.n   8010e84 <_fwalk_reent+0x38>
+ 8010e7c:      4629            mov     r1, r5
+ 8010e7e:      4640            mov     r0, r8
+ 8010e80:      47c8            blx     r9
+ 8010e82:      4306            orrs    r6, r0
+ 8010e84:      3568            adds    r5, #104        ; 0x68
+ 8010e86:      e7ee            b.n     8010e66 <_fwalk_reent+0x1a>
+
+08010e88 <_localeconv_r>:
+ 8010e88:      4b04            ldr     r3, [pc, #16]   ; (8010e9c <_localeconv_r+0x14>)
+ 8010e8a:      681b            ldr     r3, [r3, #0]
+ 8010e8c:      6b58            ldr     r0, [r3, #52]   ; 0x34
+ 8010e8e:      4b04            ldr     r3, [pc, #16]   ; (8010ea0 <_localeconv_r+0x18>)
+ 8010e90:      2800            cmp     r0, #0
+ 8010e92:      bf08            it      eq
+ 8010e94:      4618            moveq   r0, r3
+ 8010e96:      30f0            adds    r0, #240        ; 0xf0
+ 8010e98:      4770            bx      lr
+ 8010e9a:      bf00            nop
+ 8010e9c:      20000014        .word   0x20000014
+ 8010ea0:      20000854        .word   0x20000854
+
+08010ea4 <__swhatbuf_r>:
+ 8010ea4:      b570            push    {r4, r5, r6, lr}
+ 8010ea6:      460e            mov     r6, r1
+ 8010ea8:      f9b1 100e       ldrsh.w r1, [r1, #14]
+ 8010eac:      2900            cmp     r1, #0
+ 8010eae:      b096            sub     sp, #88 ; 0x58
+ 8010eb0:      4614            mov     r4, r2
+ 8010eb2:      461d            mov     r5, r3
+ 8010eb4:      da09            bge.n   8010eca <__swhatbuf_r+0x26>
+ 8010eb6:      89b3            ldrh    r3, [r6, #12]
+ 8010eb8:      2200            movs    r2, #0
+ 8010eba:      f013 0080       ands.w  r0, r3, #128    ; 0x80
+ 8010ebe:      602a            str     r2, [r5, #0]
+ 8010ec0:      d116            bne.n   8010ef0 <__swhatbuf_r+0x4c>
+ 8010ec2:      f44f 6380       mov.w   r3, #1024       ; 0x400
+ 8010ec6:      6023            str     r3, [r4, #0]
+ 8010ec8:      e015            b.n     8010ef6 <__swhatbuf_r+0x52>
+ 8010eca:      466a            mov     r2, sp
+ 8010ecc:      f000 fcfe       bl      80118cc <_fstat_r>
+ 8010ed0:      2800            cmp     r0, #0
+ 8010ed2:      dbf0            blt.n   8010eb6 <__swhatbuf_r+0x12>
+ 8010ed4:      9a01            ldr     r2, [sp, #4]
+ 8010ed6:      f402 4270       and.w   r2, r2, #61440  ; 0xf000
+ 8010eda:      f5a2 5300       sub.w   r3, r2, #8192   ; 0x2000
+ 8010ede:      425a            negs    r2, r3
+ 8010ee0:      415a            adcs    r2, r3
+ 8010ee2:      f44f 6380       mov.w   r3, #1024       ; 0x400
+ 8010ee6:      602a            str     r2, [r5, #0]
+ 8010ee8:      f44f 6000       mov.w   r0, #2048       ; 0x800
+ 8010eec:      6023            str     r3, [r4, #0]
+ 8010eee:      e002            b.n     8010ef6 <__swhatbuf_r+0x52>
+ 8010ef0:      2340            movs    r3, #64 ; 0x40
+ 8010ef2:      6023            str     r3, [r4, #0]
+ 8010ef4:      4610            mov     r0, r2
+ 8010ef6:      b016            add     sp, #88 ; 0x58
+ 8010ef8:      bd70            pop     {r4, r5, r6, pc}
+       ...
+
+08010efc <__smakebuf_r>:
+ 8010efc:      898b            ldrh    r3, [r1, #12]
+ 8010efe:      b573            push    {r0, r1, r4, r5, r6, lr}
+ 8010f00:      079d            lsls    r5, r3, #30
+ 8010f02:      4606            mov     r6, r0
+ 8010f04:      460c            mov     r4, r1
+ 8010f06:      d507            bpl.n   8010f18 <__smakebuf_r+0x1c>
+ 8010f08:      f104 0343       add.w   r3, r4, #67     ; 0x43
+ 8010f0c:      6023            str     r3, [r4, #0]
+ 8010f0e:      6123            str     r3, [r4, #16]
+ 8010f10:      2301            movs    r3, #1
+ 8010f12:      6163            str     r3, [r4, #20]
+ 8010f14:      b002            add     sp, #8
+ 8010f16:      bd70            pop     {r4, r5, r6, pc}
+ 8010f18:      ab01            add     r3, sp, #4
+ 8010f1a:      466a            mov     r2, sp
+ 8010f1c:      f7ff ffc2       bl      8010ea4 <__swhatbuf_r>
+ 8010f20:      9900            ldr     r1, [sp, #0]
+ 8010f22:      4605            mov     r5, r0
+ 8010f24:      4630            mov     r0, r6
+ 8010f26:      f7fc ffe1       bl      800deec <_malloc_r>
+ 8010f2a:      b948            cbnz    r0, 8010f40 <__smakebuf_r+0x44>
+ 8010f2c:      f9b4 300c       ldrsh.w r3, [r4, #12]
+ 8010f30:      059a            lsls    r2, r3, #22
+ 8010f32:      d4ef            bmi.n   8010f14 <__smakebuf_r+0x18>
+ 8010f34:      f023 0303       bic.w   r3, r3, #3
+ 8010f38:      f043 0302       orr.w   r3, r3, #2
+ 8010f3c:      81a3            strh    r3, [r4, #12]
+ 8010f3e:      e7e3            b.n     8010f08 <__smakebuf_r+0xc>
+ 8010f40:      4b0d            ldr     r3, [pc, #52]   ; (8010f78 <__smakebuf_r+0x7c>)
+ 8010f42:      63f3            str     r3, [r6, #60]   ; 0x3c
+ 8010f44:      89a3            ldrh    r3, [r4, #12]
+ 8010f46:      6020            str     r0, [r4, #0]
+ 8010f48:      f043 0380       orr.w   r3, r3, #128    ; 0x80
+ 8010f4c:      81a3            strh    r3, [r4, #12]
+ 8010f4e:      9b00            ldr     r3, [sp, #0]
+ 8010f50:      6163            str     r3, [r4, #20]
+ 8010f52:      9b01            ldr     r3, [sp, #4]
+ 8010f54:      6120            str     r0, [r4, #16]
+ 8010f56:      b15b            cbz     r3, 8010f70 <__smakebuf_r+0x74>
+ 8010f58:      f9b4 100e       ldrsh.w r1, [r4, #14]
+ 8010f5c:      4630            mov     r0, r6
+ 8010f5e:      f000 fcc7       bl      80118f0 <_isatty_r>
+ 8010f62:      b128            cbz     r0, 8010f70 <__smakebuf_r+0x74>
+ 8010f64:      89a3            ldrh    r3, [r4, #12]
+ 8010f66:      f023 0303       bic.w   r3, r3, #3
+ 8010f6a:      f043 0301       orr.w   r3, r3, #1
+ 8010f6e:      81a3            strh    r3, [r4, #12]
+ 8010f70:      89a3            ldrh    r3, [r4, #12]
+ 8010f72:      431d            orrs    r5, r3
+ 8010f74:      81a5            strh    r5, [r4, #12]
+ 8010f76:      e7cd            b.n     8010f14 <__smakebuf_r+0x18>
+ 8010f78:      08010b79        .word   0x08010b79
+
+08010f7c <_Balloc>:
+ 8010f7c:      6cc3            ldr     r3, [r0, #76]   ; 0x4c
+ 8010f7e:      b570            push    {r4, r5, r6, lr}
+ 8010f80:      4605            mov     r5, r0
+ 8010f82:      460c            mov     r4, r1
+ 8010f84:      b17b            cbz     r3, 8010fa6 <_Balloc+0x2a>
+ 8010f86:      6ceb            ldr     r3, [r5, #76]   ; 0x4c
+ 8010f88:      f853 0024       ldr.w   r0, [r3, r4, lsl #2]
+ 8010f8c:      b9a0            cbnz    r0, 8010fb8 <_Balloc+0x3c>
+ 8010f8e:      2101            movs    r1, #1
+ 8010f90:      fa01 f604       lsl.w   r6, r1, r4
+ 8010f94:      1d72            adds    r2, r6, #5
+ 8010f96:      0092            lsls    r2, r2, #2
+ 8010f98:      4628            mov     r0, r5
+ 8010f9a:      f000 fc01       bl      80117a0 <_calloc_r>
+ 8010f9e:      b148            cbz     r0, 8010fb4 <_Balloc+0x38>
+ 8010fa0:      e9c0 4601       strd    r4, r6, [r0, #4]
+ 8010fa4:      e00b            b.n     8010fbe <_Balloc+0x42>
+ 8010fa6:      2221            movs    r2, #33 ; 0x21
+ 8010fa8:      2104            movs    r1, #4
+ 8010faa:      f000 fbf9       bl      80117a0 <_calloc_r>
+ 8010fae:      64e8            str     r0, [r5, #76]   ; 0x4c
+ 8010fb0:      2800            cmp     r0, #0
+ 8010fb2:      d1e8            bne.n   8010f86 <_Balloc+0xa>
+ 8010fb4:      2000            movs    r0, #0
+ 8010fb6:      bd70            pop     {r4, r5, r6, pc}
+ 8010fb8:      6802            ldr     r2, [r0, #0]
+ 8010fba:      f843 2024       str.w   r2, [r3, r4, lsl #2]
+ 8010fbe:      2300            movs    r3, #0
+ 8010fc0:      e9c0 3303       strd    r3, r3, [r0, #12]
+ 8010fc4:      e7f7            b.n     8010fb6 <_Balloc+0x3a>
+
+08010fc6 <_Bfree>:
+ 8010fc6:      b131            cbz     r1, 8010fd6 <_Bfree+0x10>
+ 8010fc8:      6cc3            ldr     r3, [r0, #76]   ; 0x4c
+ 8010fca:      684a            ldr     r2, [r1, #4]
+ 8010fcc:      f853 0022       ldr.w   r0, [r3, r2, lsl #2]
+ 8010fd0:      6008            str     r0, [r1, #0]
+ 8010fd2:      f843 1022       str.w   r1, [r3, r2, lsl #2]
+ 8010fd6:      4770            bx      lr
+
+08010fd8 <__multadd>:
+ 8010fd8:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 8010fdc:      690d            ldr     r5, [r1, #16]
+ 8010fde:      461f            mov     r7, r3
+ 8010fe0:      4606            mov     r6, r0
+ 8010fe2:      460c            mov     r4, r1
+ 8010fe4:      f101 0c14       add.w   ip, r1, #20
+ 8010fe8:      2300            movs    r3, #0
+ 8010fea:      f8dc 0000       ldr.w   r0, [ip]
+ 8010fee:      b281            uxth    r1, r0
+ 8010ff0:      fb02 7101       mla     r1, r2, r1, r7
+ 8010ff4:      0c0f            lsrs    r7, r1, #16
+ 8010ff6:      0c00            lsrs    r0, r0, #16
+ 8010ff8:      fb02 7000       mla     r0, r2, r0, r7
+ 8010ffc:      b289            uxth    r1, r1
+ 8010ffe:      3301            adds    r3, #1
+ 8011000:      eb01 4100       add.w   r1, r1, r0, lsl #16
+ 8011004:      429d            cmp     r5, r3
+ 8011006:      ea4f 4710       mov.w   r7, r0, lsr #16
+ 801100a:      f84c 1b04       str.w   r1, [ip], #4
+ 801100e:      dcec            bgt.n   8010fea <__multadd+0x12>
+ 8011010:      b1d7            cbz     r7, 8011048 <__multadd+0x70>
+ 8011012:      68a3            ldr     r3, [r4, #8]
+ 8011014:      42ab            cmp     r3, r5
+ 8011016:      dc12            bgt.n   801103e <__multadd+0x66>
+ 8011018:      6861            ldr     r1, [r4, #4]
+ 801101a:      4630            mov     r0, r6
+ 801101c:      3101            adds    r1, #1
+ 801101e:      f7ff ffad       bl      8010f7c <_Balloc>
+ 8011022:      6922            ldr     r2, [r4, #16]
+ 8011024:      3202            adds    r2, #2
+ 8011026:      f104 010c       add.w   r1, r4, #12
+ 801102a:      4680            mov     r8, r0
+ 801102c:      0092            lsls    r2, r2, #2
+ 801102e:      300c            adds    r0, #12
+ 8011030:      f7fd f9a1       bl      800e376 <memcpy>
+ 8011034:      4621            mov     r1, r4
+ 8011036:      4630            mov     r0, r6
+ 8011038:      f7ff ffc5       bl      8010fc6 <_Bfree>
+ 801103c:      4644            mov     r4, r8
+ 801103e:      eb04 0385       add.w   r3, r4, r5, lsl #2
+ 8011042:      3501            adds    r5, #1
+ 8011044:      615f            str     r7, [r3, #20]
+ 8011046:      6125            str     r5, [r4, #16]
+ 8011048:      4620            mov     r0, r4
+ 801104a:      e8bd 81f0       ldmia.w sp!, {r4, r5, r6, r7, r8, pc}
+
+0801104e <__hi0bits>:
+ 801104e:      0c02            lsrs    r2, r0, #16
+ 8011050:      0412            lsls    r2, r2, #16
+ 8011052:      4603            mov     r3, r0
+ 8011054:      b9b2            cbnz    r2, 8011084 <__hi0bits+0x36>
+ 8011056:      0403            lsls    r3, r0, #16
+ 8011058:      2010            movs    r0, #16
+ 801105a:      f013 4f7f       tst.w   r3, #4278190080 ; 0xff000000
+ 801105e:      bf04            itt     eq
+ 8011060:      021b            lsleq   r3, r3, #8
+ 8011062:      3008            addeq   r0, #8
+ 8011064:      f013 4f70       tst.w   r3, #4026531840 ; 0xf0000000
+ 8011068:      bf04            itt     eq
+ 801106a:      011b            lsleq   r3, r3, #4
+ 801106c:      3004            addeq   r0, #4
+ 801106e:      f013 4f40       tst.w   r3, #3221225472 ; 0xc0000000
+ 8011072:      bf04            itt     eq
+ 8011074:      009b            lsleq   r3, r3, #2
+ 8011076:      3002            addeq   r0, #2
+ 8011078:      2b00            cmp     r3, #0
+ 801107a:      db06            blt.n   801108a <__hi0bits+0x3c>
+ 801107c:      005b            lsls    r3, r3, #1
+ 801107e:      d503            bpl.n   8011088 <__hi0bits+0x3a>
+ 8011080:      3001            adds    r0, #1
+ 8011082:      4770            bx      lr
+ 8011084:      2000            movs    r0, #0
+ 8011086:      e7e8            b.n     801105a <__hi0bits+0xc>
+ 8011088:      2020            movs    r0, #32
+ 801108a:      4770            bx      lr
+
+0801108c <__lo0bits>:
+ 801108c:      6803            ldr     r3, [r0, #0]
+ 801108e:      f013 0207       ands.w  r2, r3, #7
+ 8011092:      4601            mov     r1, r0
+ 8011094:      d00b            beq.n   80110ae <__lo0bits+0x22>
+ 8011096:      07da            lsls    r2, r3, #31
+ 8011098:      d423            bmi.n   80110e2 <__lo0bits+0x56>
+ 801109a:      0798            lsls    r0, r3, #30
+ 801109c:      bf49            itett   mi
+ 801109e:      085b            lsrmi   r3, r3, #1
+ 80110a0:      089b            lsrpl   r3, r3, #2
+ 80110a2:      2001            movmi   r0, #1
+ 80110a4:      600b            strmi   r3, [r1, #0]
+ 80110a6:      bf5c            itt     pl
+ 80110a8:      600b            strpl   r3, [r1, #0]
+ 80110aa:      2002            movpl   r0, #2
+ 80110ac:      4770            bx      lr
+ 80110ae:      b298            uxth    r0, r3
+ 80110b0:      b9a8            cbnz    r0, 80110de <__lo0bits+0x52>
+ 80110b2:      0c1b            lsrs    r3, r3, #16
+ 80110b4:      2010            movs    r0, #16
+ 80110b6:      f013 0fff       tst.w   r3, #255        ; 0xff
+ 80110ba:      bf04            itt     eq
+ 80110bc:      0a1b            lsreq   r3, r3, #8
+ 80110be:      3008            addeq   r0, #8
+ 80110c0:      071a            lsls    r2, r3, #28
+ 80110c2:      bf04            itt     eq
+ 80110c4:      091b            lsreq   r3, r3, #4
+ 80110c6:      3004            addeq   r0, #4
+ 80110c8:      079a            lsls    r2, r3, #30
+ 80110ca:      bf04            itt     eq
+ 80110cc:      089b            lsreq   r3, r3, #2
+ 80110ce:      3002            addeq   r0, #2
+ 80110d0:      07da            lsls    r2, r3, #31
+ 80110d2:      d402            bmi.n   80110da <__lo0bits+0x4e>
+ 80110d4:      085b            lsrs    r3, r3, #1
+ 80110d6:      d006            beq.n   80110e6 <__lo0bits+0x5a>
+ 80110d8:      3001            adds    r0, #1
+ 80110da:      600b            str     r3, [r1, #0]
+ 80110dc:      4770            bx      lr
+ 80110de:      4610            mov     r0, r2
+ 80110e0:      e7e9            b.n     80110b6 <__lo0bits+0x2a>
+ 80110e2:      2000            movs    r0, #0
+ 80110e4:      4770            bx      lr
+ 80110e6:      2020            movs    r0, #32
+ 80110e8:      4770            bx      lr
+
+080110ea <__i2b>:
+ 80110ea:      b510            push    {r4, lr}
+ 80110ec:      460c            mov     r4, r1
+ 80110ee:      2101            movs    r1, #1
+ 80110f0:      f7ff ff44       bl      8010f7c <_Balloc>
+ 80110f4:      2201            movs    r2, #1
+ 80110f6:      6144            str     r4, [r0, #20]
+ 80110f8:      6102            str     r2, [r0, #16]
+ 80110fa:      bd10            pop     {r4, pc}
+
+080110fc <__multiply>:
+ 80110fc:      e92d 4ff7       stmdb   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 8011100:      4614            mov     r4, r2
+ 8011102:      690a            ldr     r2, [r1, #16]
+ 8011104:      6923            ldr     r3, [r4, #16]
+ 8011106:      429a            cmp     r2, r3
+ 8011108:      bfb8            it      lt
+ 801110a:      460b            movlt   r3, r1
+ 801110c:      4688            mov     r8, r1
+ 801110e:      bfbc            itt     lt
+ 8011110:      46a0            movlt   r8, r4
+ 8011112:      461c            movlt   r4, r3
+ 8011114:      f8d8 7010       ldr.w   r7, [r8, #16]
+ 8011118:      f8d4 9010       ldr.w   r9, [r4, #16]
+ 801111c:      f8d8 3008       ldr.w   r3, [r8, #8]
+ 8011120:      f8d8 1004       ldr.w   r1, [r8, #4]
+ 8011124:      eb07 0609       add.w   r6, r7, r9
+ 8011128:      42b3            cmp     r3, r6
+ 801112a:      bfb8            it      lt
+ 801112c:      3101            addlt   r1, #1
+ 801112e:      f7ff ff25       bl      8010f7c <_Balloc>
+ 8011132:      f100 0514       add.w   r5, r0, #20
+ 8011136:      eb05 0e86       add.w   lr, r5, r6, lsl #2
+ 801113a:      462b            mov     r3, r5
+ 801113c:      2200            movs    r2, #0
+ 801113e:      4573            cmp     r3, lr
+ 8011140:      d316            bcc.n   8011170 <__multiply+0x74>
+ 8011142:      f104 0214       add.w   r2, r4, #20
+ 8011146:      f108 0114       add.w   r1, r8, #20
+ 801114a:      eb02 0389       add.w   r3, r2, r9, lsl #2
+ 801114e:      eb01 0787       add.w   r7, r1, r7, lsl #2
+ 8011152:      9300            str     r3, [sp, #0]
+ 8011154:      9b00            ldr     r3, [sp, #0]
+ 8011156:      9201            str     r2, [sp, #4]
+ 8011158:      4293            cmp     r3, r2
+ 801115a:      d80c            bhi.n   8011176 <__multiply+0x7a>
+ 801115c:      2e00            cmp     r6, #0
+ 801115e:      dd03            ble.n   8011168 <__multiply+0x6c>
+ 8011160:      f85e 3d04       ldr.w   r3, [lr, #-4]!
+ 8011164:      2b00            cmp     r3, #0
+ 8011166:      d05d            beq.n   8011224 <__multiply+0x128>
+ 8011168:      6106            str     r6, [r0, #16]
+ 801116a:      b003            add     sp, #12
+ 801116c:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 8011170:      f843 2b04       str.w   r2, [r3], #4
+ 8011174:      e7e3            b.n     801113e <__multiply+0x42>
+ 8011176:      f8b2 b000       ldrh.w  fp, [r2]
+ 801117a:      f1bb 0f00       cmp.w   fp, #0
+ 801117e:      d023            beq.n   80111c8 <__multiply+0xcc>
+ 8011180:      4689            mov     r9, r1
+ 8011182:      46ac            mov     ip, r5
+ 8011184:      f04f 0800       mov.w   r8, #0
+ 8011188:      f859 4b04       ldr.w   r4, [r9], #4
+ 801118c:      f8dc a000       ldr.w   sl, [ip]
+ 8011190:      b2a3            uxth    r3, r4
+ 8011192:      fa1f fa8a       uxth.w  sl, sl
+ 8011196:      fb0b a303       mla     r3, fp, r3, sl
+ 801119a:      ea4f 4a14       mov.w   sl, r4, lsr #16
+ 801119e:      f8dc 4000       ldr.w   r4, [ip]
+ 80111a2:      4443            add     r3, r8
+ 80111a4:      ea4f 4814       mov.w   r8, r4, lsr #16
+ 80111a8:      fb0b 840a       mla     r4, fp, sl, r8
+ 80111ac:      eb04 4413       add.w   r4, r4, r3, lsr #16
+ 80111b0:      46e2            mov     sl, ip
+ 80111b2:      b29b            uxth    r3, r3
+ 80111b4:      ea43 4304       orr.w   r3, r3, r4, lsl #16
+ 80111b8:      454f            cmp     r7, r9
+ 80111ba:      ea4f 4814       mov.w   r8, r4, lsr #16
+ 80111be:      f84a 3b04       str.w   r3, [sl], #4
+ 80111c2:      d82b            bhi.n   801121c <__multiply+0x120>
+ 80111c4:      f8cc 8004       str.w   r8, [ip, #4]
+ 80111c8:      9b01            ldr     r3, [sp, #4]
+ 80111ca:      f8b3 a002       ldrh.w  sl, [r3, #2]
+ 80111ce:      3204            adds    r2, #4
+ 80111d0:      f1ba 0f00       cmp.w   sl, #0
+ 80111d4:      d020            beq.n   8011218 <__multiply+0x11c>
+ 80111d6:      682b            ldr     r3, [r5, #0]
+ 80111d8:      4689            mov     r9, r1
+ 80111da:      46a8            mov     r8, r5
+ 80111dc:      f04f 0b00       mov.w   fp, #0
+ 80111e0:      f8b9 c000       ldrh.w  ip, [r9]
+ 80111e4:      f8b8 4002       ldrh.w  r4, [r8, #2]
+ 80111e8:      fb0a 440c       mla     r4, sl, ip, r4
+ 80111ec:      445c            add     r4, fp
+ 80111ee:      46c4            mov     ip, r8
+ 80111f0:      b29b            uxth    r3, r3
+ 80111f2:      ea43 4304       orr.w   r3, r3, r4, lsl #16
+ 80111f6:      f84c 3b04       str.w   r3, [ip], #4
+ 80111fa:      f859 3b04       ldr.w   r3, [r9], #4
+ 80111fe:      f8b8 b004       ldrh.w  fp, [r8, #4]
+ 8011202:      0c1b            lsrs    r3, r3, #16
+ 8011204:      fb0a b303       mla     r3, sl, r3, fp
+ 8011208:      eb03 4314       add.w   r3, r3, r4, lsr #16
+ 801120c:      454f            cmp     r7, r9
+ 801120e:      ea4f 4b13       mov.w   fp, r3, lsr #16
+ 8011212:      d805            bhi.n   8011220 <__multiply+0x124>
+ 8011214:      f8c8 3004       str.w   r3, [r8, #4]
+ 8011218:      3504            adds    r5, #4
+ 801121a:      e79b            b.n     8011154 <__multiply+0x58>
+ 801121c:      46d4            mov     ip, sl
+ 801121e:      e7b3            b.n     8011188 <__multiply+0x8c>
+ 8011220:      46e0            mov     r8, ip
+ 8011222:      e7dd            b.n     80111e0 <__multiply+0xe4>
+ 8011224:      3e01            subs    r6, #1
+ 8011226:      e799            b.n     801115c <__multiply+0x60>
+
+08011228 <__pow5mult>:
+ 8011228:      e92d 43f8       stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
+ 801122c:      4615            mov     r5, r2
+ 801122e:      f012 0203       ands.w  r2, r2, #3
+ 8011232:      4606            mov     r6, r0
+ 8011234:      460f            mov     r7, r1
+ 8011236:      d007            beq.n   8011248 <__pow5mult+0x20>
+ 8011238:      3a01            subs    r2, #1
+ 801123a:      4c1a            ldr     r4, [pc, #104]  ; (80112a4 <__pow5mult+0x7c>)
+ 801123c:      2300            movs    r3, #0
+ 801123e:      f854 2022       ldr.w   r2, [r4, r2, lsl #2]
+ 8011242:      f7ff fec9       bl      8010fd8 <__multadd>
+ 8011246:      4607            mov     r7, r0
+ 8011248:      10ad            asrs    r5, r5, #2
+ 801124a:      d027            beq.n   801129c <__pow5mult+0x74>
+ 801124c:      6cb4            ldr     r4, [r6, #72]   ; 0x48
+ 801124e:      b944            cbnz    r4, 8011262 <__pow5mult+0x3a>
+ 8011250:      f240 2171       movw    r1, #625        ; 0x271
+ 8011254:      4630            mov     r0, r6
+ 8011256:      f7ff ff48       bl      80110ea <__i2b>
+ 801125a:      2300            movs    r3, #0
+ 801125c:      64b0            str     r0, [r6, #72]   ; 0x48
+ 801125e:      4604            mov     r4, r0
+ 8011260:      6003            str     r3, [r0, #0]
+ 8011262:      f04f 0800       mov.w   r8, #0
+ 8011266:      07eb            lsls    r3, r5, #31
+ 8011268:      d50a            bpl.n   8011280 <__pow5mult+0x58>
+ 801126a:      4639            mov     r1, r7
+ 801126c:      4622            mov     r2, r4
+ 801126e:      4630            mov     r0, r6
+ 8011270:      f7ff ff44       bl      80110fc <__multiply>
+ 8011274:      4639            mov     r1, r7
+ 8011276:      4681            mov     r9, r0
+ 8011278:      4630            mov     r0, r6
+ 801127a:      f7ff fea4       bl      8010fc6 <_Bfree>
+ 801127e:      464f            mov     r7, r9
+ 8011280:      106d            asrs    r5, r5, #1
+ 8011282:      d00b            beq.n   801129c <__pow5mult+0x74>
+ 8011284:      6820            ldr     r0, [r4, #0]
+ 8011286:      b938            cbnz    r0, 8011298 <__pow5mult+0x70>
+ 8011288:      4622            mov     r2, r4
+ 801128a:      4621            mov     r1, r4
+ 801128c:      4630            mov     r0, r6
+ 801128e:      f7ff ff35       bl      80110fc <__multiply>
+ 8011292:      6020            str     r0, [r4, #0]
+ 8011294:      f8c0 8000       str.w   r8, [r0]
+ 8011298:      4604            mov     r4, r0
+ 801129a:      e7e4            b.n     8011266 <__pow5mult+0x3e>
+ 801129c:      4638            mov     r0, r7
+ 801129e:      e8bd 83f8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
+ 80112a2:      bf00            nop
+ 80112a4:      08012f88        .word   0x08012f88
+
+080112a8 <__lshift>:
+ 80112a8:      e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80112ac:      460c            mov     r4, r1
+ 80112ae:      ea4f 1a62       mov.w   sl, r2, asr #5
+ 80112b2:      6923            ldr     r3, [r4, #16]
+ 80112b4:      6849            ldr     r1, [r1, #4]
+ 80112b6:      eb0a 0903       add.w   r9, sl, r3
+ 80112ba:      68a3            ldr     r3, [r4, #8]
+ 80112bc:      4607            mov     r7, r0
+ 80112be:      4616            mov     r6, r2
+ 80112c0:      f109 0501       add.w   r5, r9, #1
+ 80112c4:      42ab            cmp     r3, r5
+ 80112c6:      db32            blt.n   801132e <__lshift+0x86>
+ 80112c8:      4638            mov     r0, r7
+ 80112ca:      f7ff fe57       bl      8010f7c <_Balloc>
+ 80112ce:      2300            movs    r3, #0
+ 80112d0:      4680            mov     r8, r0
+ 80112d2:      f100 0114       add.w   r1, r0, #20
+ 80112d6:      461a            mov     r2, r3
+ 80112d8:      4553            cmp     r3, sl
+ 80112da:      db2b            blt.n   8011334 <__lshift+0x8c>
+ 80112dc:      6920            ldr     r0, [r4, #16]
+ 80112de:      ea2a 7aea       bic.w   sl, sl, sl, asr #31
+ 80112e2:      f104 0314       add.w   r3, r4, #20
+ 80112e6:      f016 021f       ands.w  r2, r6, #31
+ 80112ea:      eb01 018a       add.w   r1, r1, sl, lsl #2
+ 80112ee:      eb03 0c80       add.w   ip, r3, r0, lsl #2
+ 80112f2:      d025            beq.n   8011340 <__lshift+0x98>
+ 80112f4:      f1c2 0e20       rsb     lr, r2, #32
+ 80112f8:      2000            movs    r0, #0
+ 80112fa:      681e            ldr     r6, [r3, #0]
+ 80112fc:      468a            mov     sl, r1
+ 80112fe:      4096            lsls    r6, r2
+ 8011300:      4330            orrs    r0, r6
+ 8011302:      f84a 0b04       str.w   r0, [sl], #4
+ 8011306:      f853 0b04       ldr.w   r0, [r3], #4
+ 801130a:      459c            cmp     ip, r3
+ 801130c:      fa20 f00e       lsr.w   r0, r0, lr
+ 8011310:      d814            bhi.n   801133c <__lshift+0x94>
+ 8011312:      6048            str     r0, [r1, #4]
+ 8011314:      b108            cbz     r0, 801131a <__lshift+0x72>
+ 8011316:      f109 0502       add.w   r5, r9, #2
+ 801131a:      3d01            subs    r5, #1
+ 801131c:      4638            mov     r0, r7
+ 801131e:      f8c8 5010       str.w   r5, [r8, #16]
+ 8011322:      4621            mov     r1, r4
+ 8011324:      f7ff fe4f       bl      8010fc6 <_Bfree>
+ 8011328:      4640            mov     r0, r8
+ 801132a:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 801132e:      3101            adds    r1, #1
+ 8011330:      005b            lsls    r3, r3, #1
+ 8011332:      e7c7            b.n     80112c4 <__lshift+0x1c>
+ 8011334:      f841 2023       str.w   r2, [r1, r3, lsl #2]
+ 8011338:      3301            adds    r3, #1
+ 801133a:      e7cd            b.n     80112d8 <__lshift+0x30>
+ 801133c:      4651            mov     r1, sl
+ 801133e:      e7dc            b.n     80112fa <__lshift+0x52>
+ 8011340:      3904            subs    r1, #4
+ 8011342:      f853 2b04       ldr.w   r2, [r3], #4
+ 8011346:      f841 2f04       str.w   r2, [r1, #4]!
+ 801134a:      459c            cmp     ip, r3
+ 801134c:      d8f9            bhi.n   8011342 <__lshift+0x9a>
+ 801134e:      e7e4            b.n     801131a <__lshift+0x72>
+
+08011350 <__mcmp>:
+ 8011350:      6903            ldr     r3, [r0, #16]
+ 8011352:      690a            ldr     r2, [r1, #16]
+ 8011354:      1a9b            subs    r3, r3, r2
+ 8011356:      b530            push    {r4, r5, lr}
+ 8011358:      d10c            bne.n   8011374 <__mcmp+0x24>
+ 801135a:      0092            lsls    r2, r2, #2
+ 801135c:      3014            adds    r0, #20
+ 801135e:      3114            adds    r1, #20
+ 8011360:      1884            adds    r4, r0, r2
+ 8011362:      4411            add     r1, r2
+ 8011364:      f854 5d04       ldr.w   r5, [r4, #-4]!
+ 8011368:      f851 2d04       ldr.w   r2, [r1, #-4]!
+ 801136c:      4295            cmp     r5, r2
+ 801136e:      d003            beq.n   8011378 <__mcmp+0x28>
+ 8011370:      d305            bcc.n   801137e <__mcmp+0x2e>
+ 8011372:      2301            movs    r3, #1
+ 8011374:      4618            mov     r0, r3
+ 8011376:      bd30            pop     {r4, r5, pc}
+ 8011378:      42a0            cmp     r0, r4
+ 801137a:      d3f3            bcc.n   8011364 <__mcmp+0x14>
+ 801137c:      e7fa            b.n     8011374 <__mcmp+0x24>
+ 801137e:      f04f 33ff       mov.w   r3, #4294967295 ; 0xffffffff
+ 8011382:      e7f7            b.n     8011374 <__mcmp+0x24>
+
+08011384 <__mdiff>:
+ 8011384:      e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8011388:      460d            mov     r5, r1
+ 801138a:      4607            mov     r7, r0
+ 801138c:      4611            mov     r1, r2
+ 801138e:      4628            mov     r0, r5
+ 8011390:      4614            mov     r4, r2
+ 8011392:      f7ff ffdd       bl      8011350 <__mcmp>
+ 8011396:      1e06            subs    r6, r0, #0
+ 8011398:      d108            bne.n   80113ac <__mdiff+0x28>
+ 801139a:      4631            mov     r1, r6
+ 801139c:      4638            mov     r0, r7
+ 801139e:      f7ff fded       bl      8010f7c <_Balloc>
+ 80113a2:      2301            movs    r3, #1
+ 80113a4:      e9c0 3604       strd    r3, r6, [r0, #16]
+ 80113a8:      e8bd 87f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 80113ac:      bfa4            itt     ge
+ 80113ae:      4623            movge   r3, r4
+ 80113b0:      462c            movge   r4, r5
+ 80113b2:      4638            mov     r0, r7
+ 80113b4:      6861            ldr     r1, [r4, #4]
+ 80113b6:      bfa6            itte    ge
+ 80113b8:      461d            movge   r5, r3
+ 80113ba:      2600            movge   r6, #0
+ 80113bc:      2601            movlt   r6, #1
+ 80113be:      f7ff fddd       bl      8010f7c <_Balloc>
+ 80113c2:      692b            ldr     r3, [r5, #16]
+ 80113c4:      60c6            str     r6, [r0, #12]
+ 80113c6:      6926            ldr     r6, [r4, #16]
+ 80113c8:      f105 0914       add.w   r9, r5, #20
+ 80113cc:      f104 0214       add.w   r2, r4, #20
+ 80113d0:      eb02 0786       add.w   r7, r2, r6, lsl #2
+ 80113d4:      eb09 0883       add.w   r8, r9, r3, lsl #2
+ 80113d8:      f100 0514       add.w   r5, r0, #20
+ 80113dc:      f04f 0e00       mov.w   lr, #0
+ 80113e0:      f852 ab04       ldr.w   sl, [r2], #4
+ 80113e4:      f859 4b04       ldr.w   r4, [r9], #4
+ 80113e8:      fa1e f18a       uxtah   r1, lr, sl
+ 80113ec:      b2a3            uxth    r3, r4
+ 80113ee:      1ac9            subs    r1, r1, r3
+ 80113f0:      0c23            lsrs    r3, r4, #16
+ 80113f2:      ebc3 431a       rsb     r3, r3, sl, lsr #16
+ 80113f6:      eb03 4321       add.w   r3, r3, r1, asr #16
+ 80113fa:      b289            uxth    r1, r1
+ 80113fc:      ea4f 4e23       mov.w   lr, r3, asr #16
+ 8011400:      45c8            cmp     r8, r9
+ 8011402:      ea41 4303       orr.w   r3, r1, r3, lsl #16
+ 8011406:      4694            mov     ip, r2
+ 8011408:      f845 3b04       str.w   r3, [r5], #4
+ 801140c:      d8e8            bhi.n   80113e0 <__mdiff+0x5c>
+ 801140e:      45bc            cmp     ip, r7
+ 8011410:      d304            bcc.n   801141c <__mdiff+0x98>
+ 8011412:      f855 3d04       ldr.w   r3, [r5, #-4]!
+ 8011416:      b183            cbz     r3, 801143a <__mdiff+0xb6>
+ 8011418:      6106            str     r6, [r0, #16]
+ 801141a:      e7c5            b.n     80113a8 <__mdiff+0x24>
+ 801141c:      f85c 1b04       ldr.w   r1, [ip], #4
+ 8011420:      fa1e f381       uxtah   r3, lr, r1
+ 8011424:      141a            asrs    r2, r3, #16
+ 8011426:      eb02 4211       add.w   r2, r2, r1, lsr #16
+ 801142a:      b29b            uxth    r3, r3
+ 801142c:      ea43 4302       orr.w   r3, r3, r2, lsl #16
+ 8011430:      ea4f 4e22       mov.w   lr, r2, asr #16
+ 8011434:      f845 3b04       str.w   r3, [r5], #4
+ 8011438:      e7e9            b.n     801140e <__mdiff+0x8a>
+ 801143a:      3e01            subs    r6, #1
+ 801143c:      e7e9            b.n     8011412 <__mdiff+0x8e>
+
+0801143e <__d2b>:
+ 801143e:      e92d 43f7       stmdb   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
+ 8011442:      460e            mov     r6, r1
+ 8011444:      2101            movs    r1, #1
+ 8011446:      ec59 8b10       vmov    r8, r9, d0
+ 801144a:      4615            mov     r5, r2
+ 801144c:      f7ff fd96       bl      8010f7c <_Balloc>
+ 8011450:      f3c9 540a       ubfx    r4, r9, #20, #11
+ 8011454:      4607            mov     r7, r0
+ 8011456:      f3c9 0313       ubfx    r3, r9, #0, #20
+ 801145a:      bb34            cbnz    r4, 80114aa <__d2b+0x6c>
+ 801145c:      9301            str     r3, [sp, #4]
+ 801145e:      f1b8 0300       subs.w  r3, r8, #0
+ 8011462:      d027            beq.n   80114b4 <__d2b+0x76>
+ 8011464:      a802            add     r0, sp, #8
+ 8011466:      f840 3d08       str.w   r3, [r0, #-8]!
+ 801146a:      f7ff fe0f       bl      801108c <__lo0bits>
+ 801146e:      9900            ldr     r1, [sp, #0]
+ 8011470:      b1f0            cbz     r0, 80114b0 <__d2b+0x72>
+ 8011472:      9a01            ldr     r2, [sp, #4]
+ 8011474:      f1c0 0320       rsb     r3, r0, #32
+ 8011478:      fa02 f303       lsl.w   r3, r2, r3
+ 801147c:      430b            orrs    r3, r1
+ 801147e:      40c2            lsrs    r2, r0
+ 8011480:      617b            str     r3, [r7, #20]
+ 8011482:      9201            str     r2, [sp, #4]
+ 8011484:      9b01            ldr     r3, [sp, #4]
+ 8011486:      61bb            str     r3, [r7, #24]
+ 8011488:      2b00            cmp     r3, #0
+ 801148a:      bf14            ite     ne
+ 801148c:      2102            movne   r1, #2
+ 801148e:      2101            moveq   r1, #1
+ 8011490:      6139            str     r1, [r7, #16]
+ 8011492:      b1c4            cbz     r4, 80114c6 <__d2b+0x88>
+ 8011494:      f2a4 4433       subw    r4, r4, #1075   ; 0x433
+ 8011498:      4404            add     r4, r0
+ 801149a:      6034            str     r4, [r6, #0]
+ 801149c:      f1c0 0035       rsb     r0, r0, #53     ; 0x35
+ 80114a0:      6028            str     r0, [r5, #0]
+ 80114a2:      4638            mov     r0, r7
+ 80114a4:      b003            add     sp, #12
+ 80114a6:      e8bd 83f0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}
+ 80114aa:      f443 1380       orr.w   r3, r3, #1048576        ; 0x100000
+ 80114ae:      e7d5            b.n     801145c <__d2b+0x1e>
+ 80114b0:      6179            str     r1, [r7, #20]
+ 80114b2:      e7e7            b.n     8011484 <__d2b+0x46>
+ 80114b4:      a801            add     r0, sp, #4
+ 80114b6:      f7ff fde9       bl      801108c <__lo0bits>
+ 80114ba:      9b01            ldr     r3, [sp, #4]
+ 80114bc:      617b            str     r3, [r7, #20]
+ 80114be:      2101            movs    r1, #1
+ 80114c0:      6139            str     r1, [r7, #16]
+ 80114c2:      3020            adds    r0, #32
+ 80114c4:      e7e5            b.n     8011492 <__d2b+0x54>
+ 80114c6:      eb07 0381       add.w   r3, r7, r1, lsl #2
+ 80114ca:      f2a0 4032       subw    r0, r0, #1074   ; 0x432
+ 80114ce:      6030            str     r0, [r6, #0]
+ 80114d0:      6918            ldr     r0, [r3, #16]
+ 80114d2:      f7ff fdbc       bl      801104e <__hi0bits>
+ 80114d6:      ebc0 1041       rsb     r0, r0, r1, lsl #5
+ 80114da:      e7e1            b.n     80114a0 <__d2b+0x62>
+ 80114dc:      0000            movs    r0, r0
+       ...
+
+080114e0 <frexp>:
+ 80114e0:      b082            sub     sp, #8
+ 80114e2:      ed8d 0b00       vstr    d0, [sp]
+ 80114e6:      2100            movs    r1, #0
+ 80114e8:      9a01            ldr     r2, [sp, #4]
+ 80114ea:      6001            str     r1, [r0, #0]
+ 80114ec:      4918            ldr     r1, [pc, #96]   ; (8011550 <frexp+0x70>)
+ 80114ee:      f022 4300       bic.w   r3, r2, #2147483648     ; 0x80000000
+ 80114f2:      428b            cmp     r3, r1
+ 80114f4:      dc23            bgt.n   801153e <frexp+0x5e>
+ 80114f6:      9900            ldr     r1, [sp, #0]
+ 80114f8:      4319            orrs    r1, r3
+ 80114fa:      d020            beq.n   801153e <frexp+0x5e>
+ 80114fc:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
+ 8011500:      da0b            bge.n   801151a <frexp+0x3a>
+ 8011502:      ed9f 7b11       vldr    d7, [pc, #68]   ; 8011548 <frexp+0x68>
+ 8011506:      ee20 7b07       vmul.f64        d7, d0, d7
+ 801150a:      ed8d 7b00       vstr    d7, [sp]
+ 801150e:      9a01            ldr     r2, [sp, #4]
+ 8011510:      f06f 0135       mvn.w   r1, #53 ; 0x35
+ 8011514:      f022 4300       bic.w   r3, r2, #2147483648     ; 0x80000000
+ 8011518:      6001            str     r1, [r0, #0]
+ 801151a:      6801            ldr     r1, [r0, #0]
+ 801151c:      151b            asrs    r3, r3, #20
+ 801151e:      f2a3 33fe       subw    r3, r3, #1022   ; 0x3fe
+ 8011522:      440b            add     r3, r1
+ 8011524:      f022 42ff       bic.w   r2, r2, #2139095040     ; 0x7f800000
+ 8011528:      6003            str     r3, [r0, #0]
+ 801152a:      f422 02e0       bic.w   r2, r2, #7340032        ; 0x700000
+ 801152e:      e9dd 0100       ldrd    r0, r1, [sp]
+ 8011532:      f042 517f       orr.w   r1, r2, #1069547520     ; 0x3fc00000
+ 8011536:      f441 1100       orr.w   r1, r1, #2097152        ; 0x200000
+ 801153a:      e9cd 0100       strd    r0, r1, [sp]
+ 801153e:      ed9d 0b00       vldr    d0, [sp]
+ 8011542:      b002            add     sp, #8
+ 8011544:      4770            bx      lr
+ 8011546:      bf00            nop
+ 8011548:      00000000        .word   0x00000000
+ 801154c:      43500000        .word   0x43500000
+ 8011550:      7fefffff        .word   0x7fefffff
+
+08011554 <__sread>:
+ 8011554:      b510            push    {r4, lr}
+ 8011556:      460c            mov     r4, r1
+ 8011558:      f9b1 100e       ldrsh.w r1, [r1, #14]
+ 801155c:      f000 f9fc       bl      8011958 <_read_r>
+ 8011560:      2800            cmp     r0, #0
+ 8011562:      bfab            itete   ge
+ 8011564:      6d23            ldrge   r3, [r4, #80]   ; 0x50
+ 8011566:      89a3            ldrhlt  r3, [r4, #12]
+ 8011568:      181b            addge   r3, r3, r0
+ 801156a:      f423 5380       biclt.w r3, r3, #4096   ; 0x1000
+ 801156e:      bfac            ite     ge
+ 8011570:      6523            strge   r3, [r4, #80]   ; 0x50
+ 8011572:      81a3            strhlt  r3, [r4, #12]
+ 8011574:      bd10            pop     {r4, pc}
+
+08011576 <__swrite>:
+ 8011576:      e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
+ 801157a:      461f            mov     r7, r3
+ 801157c:      898b            ldrh    r3, [r1, #12]
+ 801157e:      05db            lsls    r3, r3, #23
+ 8011580:      4605            mov     r5, r0
+ 8011582:      460c            mov     r4, r1
+ 8011584:      4616            mov     r6, r2
+ 8011586:      d505            bpl.n   8011594 <__swrite+0x1e>
+ 8011588:      2302            movs    r3, #2
+ 801158a:      2200            movs    r2, #0
+ 801158c:      f9b1 100e       ldrsh.w r1, [r1, #14]
+ 8011590:      f000 f9be       bl      8011910 <_lseek_r>
+ 8011594:      89a3            ldrh    r3, [r4, #12]
+ 8011596:      f9b4 100e       ldrsh.w r1, [r4, #14]
+ 801159a:      f423 5380       bic.w   r3, r3, #4096   ; 0x1000
+ 801159e:      81a3            strh    r3, [r4, #12]
+ 80115a0:      4632            mov     r2, r6
+ 80115a2:      463b            mov     r3, r7
+ 80115a4:      4628            mov     r0, r5
+ 80115a6:      e8bd 41f0       ldmia.w sp!, {r4, r5, r6, r7, r8, lr}
+ 80115aa:      f7fe bbcb       b.w     800fd44 <_write_r>
+
+080115ae <__sseek>:
+ 80115ae:      b510            push    {r4, lr}
+ 80115b0:      460c            mov     r4, r1
+ 80115b2:      f9b1 100e       ldrsh.w r1, [r1, #14]
+ 80115b6:      f000 f9ab       bl      8011910 <_lseek_r>
+ 80115ba:      1c43            adds    r3, r0, #1
+ 80115bc:      89a3            ldrh    r3, [r4, #12]
+ 80115be:      bf15            itete   ne
+ 80115c0:      6520            strne   r0, [r4, #80]   ; 0x50
+ 80115c2:      f423 5380       biceq.w r3, r3, #4096   ; 0x1000
+ 80115c6:      f443 5380       orrne.w r3, r3, #4096   ; 0x1000
+ 80115ca:      81a3            strheq  r3, [r4, #12]
+ 80115cc:      bf18            it      ne
+ 80115ce:      81a3            strhne  r3, [r4, #12]
+ 80115d0:      bd10            pop     {r4, pc}
+
+080115d2 <__sclose>:
+ 80115d2:      f9b1 100e       ldrsh.w r1, [r1, #14]
+ 80115d6:      f000 b911       b.w     80117fc <_close_r>
+
+080115da <strncpy>:
+ 80115da:      b570            push    {r4, r5, r6, lr}
+ 80115dc:      3901            subs    r1, #1
+ 80115de:      4604            mov     r4, r0
+ 80115e0:      b902            cbnz    r2, 80115e4 <strncpy+0xa>
+ 80115e2:      bd70            pop     {r4, r5, r6, pc}
+ 80115e4:      4623            mov     r3, r4
+ 80115e6:      f811 5f01       ldrb.w  r5, [r1, #1]!
+ 80115ea:      f803 5b01       strb.w  r5, [r3], #1
+ 80115ee:      1e56            subs    r6, r2, #1
+ 80115f0:      b92d            cbnz    r5, 80115fe <strncpy+0x24>
+ 80115f2:      4414            add     r4, r2
+ 80115f4:      42a3            cmp     r3, r4
+ 80115f6:      d0f4            beq.n   80115e2 <strncpy+0x8>
+ 80115f8:      f803 5b01       strb.w  r5, [r3], #1
+ 80115fc:      e7fa            b.n     80115f4 <strncpy+0x1a>
+ 80115fe:      461c            mov     r4, r3
+ 8011600:      4632            mov     r2, r6
+ 8011602:      e7ed            b.n     80115e0 <strncpy+0x6>
+
+08011604 <__ssprint_r>:
+ 8011604:      6893            ldr     r3, [r2, #8]
+ 8011606:      e92d 4ff7       stmdb   sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 801160a:      4681            mov     r9, r0
+ 801160c:      460c            mov     r4, r1
+ 801160e:      4616            mov     r6, r2
+ 8011610:      2b00            cmp     r3, #0
+ 8011612:      d05e            beq.n   80116d2 <__ssprint_r+0xce>
+ 8011614:      f04f 0b00       mov.w   fp, #0
+ 8011618:      f8d2 a000       ldr.w   sl, [r2]
+ 801161c:      465f            mov     r7, fp
+ 801161e:      b357            cbz     r7, 8011676 <__ssprint_r+0x72>
+ 8011620:      68a3            ldr     r3, [r4, #8]
+ 8011622:      429f            cmp     r7, r3
+ 8011624:      d340            bcc.n   80116a8 <__ssprint_r+0xa4>
+ 8011626:      89a2            ldrh    r2, [r4, #12]
+ 8011628:      f412 6f90       tst.w   r2, #1152       ; 0x480
+ 801162c:      d03c            beq.n   80116a8 <__ssprint_r+0xa4>
+ 801162e:      6825            ldr     r5, [r4, #0]
+ 8011630:      6921            ldr     r1, [r4, #16]
+ 8011632:      eba5 0801       sub.w   r8, r5, r1
+ 8011636:      6965            ldr     r5, [r4, #20]
+ 8011638:      2302            movs    r3, #2
+ 801163a:      eb05 0545       add.w   r5, r5, r5, lsl #1
+ 801163e:      fb95 f5f3       sdiv    r5, r5, r3
+ 8011642:      f108 0301       add.w   r3, r8, #1
+ 8011646:      443b            add     r3, r7
+ 8011648:      429d            cmp     r5, r3
+ 801164a:      bf38            it      cc
+ 801164c:      461d            movcc   r5, r3
+ 801164e:      0553            lsls    r3, r2, #21
+ 8011650:      d544            bpl.n   80116dc <__ssprint_r+0xd8>
+ 8011652:      4629            mov     r1, r5
+ 8011654:      4648            mov     r0, r9
+ 8011656:      f7fc fc49       bl      800deec <_malloc_r>
+ 801165a:      b988            cbnz    r0, 8011680 <__ssprint_r+0x7c>
+ 801165c:      230c            movs    r3, #12
+ 801165e:      f8c9 3000       str.w   r3, [r9]
+ 8011662:      89a3            ldrh    r3, [r4, #12]
+ 8011664:      f043 0340       orr.w   r3, r3, #64     ; 0x40
+ 8011668:      81a3            strh    r3, [r4, #12]
+ 801166a:      2300            movs    r3, #0
+ 801166c:      e9c6 3301       strd    r3, r3, [r6, #4]
+ 8011670:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 8011674:      e02f            b.n     80116d6 <__ssprint_r+0xd2>
+ 8011676:      e9da b700       ldrd    fp, r7, [sl]
+ 801167a:      f10a 0a08       add.w   sl, sl, #8
+ 801167e:      e7ce            b.n     801161e <__ssprint_r+0x1a>
+ 8011680:      4642            mov     r2, r8
+ 8011682:      6921            ldr     r1, [r4, #16]
+ 8011684:      9001            str     r0, [sp, #4]
+ 8011686:      f7fc fe76       bl      800e376 <memcpy>
+ 801168a:      89a2            ldrh    r2, [r4, #12]
+ 801168c:      9b01            ldr     r3, [sp, #4]
+ 801168e:      f422 6290       bic.w   r2, r2, #1152   ; 0x480
+ 8011692:      f042 0280       orr.w   r2, r2, #128    ; 0x80
+ 8011696:      81a2            strh    r2, [r4, #12]
+ 8011698:      6123            str     r3, [r4, #16]
+ 801169a:      6165            str     r5, [r4, #20]
+ 801169c:      4443            add     r3, r8
+ 801169e:      eba5 0508       sub.w   r5, r5, r8
+ 80116a2:      6023            str     r3, [r4, #0]
+ 80116a4:      60a5            str     r5, [r4, #8]
+ 80116a6:      463b            mov     r3, r7
+ 80116a8:      42bb            cmp     r3, r7
+ 80116aa:      bf28            it      cs
+ 80116ac:      463b            movcs   r3, r7
+ 80116ae:      461a            mov     r2, r3
+ 80116b0:      4659            mov     r1, fp
+ 80116b2:      6820            ldr     r0, [r4, #0]
+ 80116b4:      9301            str     r3, [sp, #4]
+ 80116b6:      f7fc fe69       bl      800e38c <memmove>
+ 80116ba:      68a2            ldr     r2, [r4, #8]
+ 80116bc:      9b01            ldr     r3, [sp, #4]
+ 80116be:      1ad2            subs    r2, r2, r3
+ 80116c0:      60a2            str     r2, [r4, #8]
+ 80116c2:      6822            ldr     r2, [r4, #0]
+ 80116c4:      4413            add     r3, r2
+ 80116c6:      6023            str     r3, [r4, #0]
+ 80116c8:      68b3            ldr     r3, [r6, #8]
+ 80116ca:      1bdf            subs    r7, r3, r7
+ 80116cc:      60b7            str     r7, [r6, #8]
+ 80116ce:      2f00            cmp     r7, #0
+ 80116d0:      d1d1            bne.n   8011676 <__ssprint_r+0x72>
+ 80116d2:      2000            movs    r0, #0
+ 80116d4:      6070            str     r0, [r6, #4]
+ 80116d6:      b003            add     sp, #12
+ 80116d8:      e8bd 8ff0       ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ 80116dc:      462a            mov     r2, r5
+ 80116de:      4648            mov     r0, r9
+ 80116e0:      f7fc febe       bl      800e460 <_realloc_r>
+ 80116e4:      4603            mov     r3, r0
+ 80116e6:      2800            cmp     r0, #0
+ 80116e8:      d1d6            bne.n   8011698 <__ssprint_r+0x94>
+ 80116ea:      6921            ldr     r1, [r4, #16]
+ 80116ec:      4648            mov     r0, r9
+ 80116ee:      f7ff faf1       bl      8010cd4 <_free_r>
+ 80116f2:      e7b3            b.n     801165c <__ssprint_r+0x58>
+
+080116f4 <__register_exitproc>:
+ 80116f4:      e92d 43f8       stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
+ 80116f8:      4c26            ldr     r4, [pc, #152]  ; (8011794 <__register_exitproc+0xa0>)
+ 80116fa:      4606            mov     r6, r0
+ 80116fc:      6820            ldr     r0, [r4, #0]
+ 80116fe:      4698            mov     r8, r3
+ 8011700:      460f            mov     r7, r1
+ 8011702:      4691            mov     r9, r2
+ 8011704:      f7fc fbe0       bl      800dec8 <__retarget_lock_acquire_recursive>
+ 8011708:      4b23            ldr     r3, [pc, #140]  ; (8011798 <__register_exitproc+0xa4>)
+ 801170a:      681d            ldr     r5, [r3, #0]
+ 801170c:      f8d5 0148       ldr.w   r0, [r5, #328]  ; 0x148
+ 8011710:      b918            cbnz    r0, 801171a <__register_exitproc+0x26>
+ 8011712:      f505 70a6       add.w   r0, r5, #332    ; 0x14c
+ 8011716:      f8c5 0148       str.w   r0, [r5, #328]  ; 0x148
+ 801171a:      6843            ldr     r3, [r0, #4]
+ 801171c:      2b1f            cmp     r3, #31
+ 801171e:      dd19            ble.n   8011754 <__register_exitproc+0x60>
+ 8011720:      4b1e            ldr     r3, [pc, #120]  ; (801179c <__register_exitproc+0xa8>)
+ 8011722:      b933            cbnz    r3, 8011732 <__register_exitproc+0x3e>
+ 8011724:      6820            ldr     r0, [r4, #0]
+ 8011726:      f7fc fbd0       bl      800deca <__retarget_lock_release_recursive>
+ 801172a:      f04f 30ff       mov.w   r0, #4294967295 ; 0xffffffff
+ 801172e:      e8bd 83f8       ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
+ 8011732:      f44f 70c8       mov.w   r0, #400        ; 0x190
+ 8011736:      f7fc fbc9       bl      800decc <malloc>
+ 801173a:      2800            cmp     r0, #0
+ 801173c:      d0f2            beq.n   8011724 <__register_exitproc+0x30>
+ 801173e:      f8d5 3148       ldr.w   r3, [r5, #328]  ; 0x148
+ 8011742:      6003            str     r3, [r0, #0]
+ 8011744:      2200            movs    r2, #0
+ 8011746:      6042            str     r2, [r0, #4]
+ 8011748:      f8c5 0148       str.w   r0, [r5, #328]  ; 0x148
+ 801174c:      f8c0 2188       str.w   r2, [r0, #392]  ; 0x188
+ 8011750:      f8c0 218c       str.w   r2, [r0, #396]  ; 0x18c
+ 8011754:      6843            ldr     r3, [r0, #4]
+ 8011756:      b19e            cbz     r6, 8011780 <__register_exitproc+0x8c>
+ 8011758:      eb00 0583       add.w   r5, r0, r3, lsl #2
+ 801175c:      2201            movs    r2, #1
+ 801175e:      f8c5 9088       str.w   r9, [r5, #136]  ; 0x88
+ 8011762:      f8d0 1188       ldr.w   r1, [r0, #392]  ; 0x188
+ 8011766:      409a            lsls    r2, r3
+ 8011768:      4311            orrs    r1, r2
+ 801176a:      2e02            cmp     r6, #2
+ 801176c:      f8c0 1188       str.w   r1, [r0, #392]  ; 0x188
+ 8011770:      f8c5 8108       str.w   r8, [r5, #264]  ; 0x108
+ 8011774:      bf02            ittt    eq
+ 8011776:      f8d0 118c       ldreq.w r1, [r0, #396]  ; 0x18c
+ 801177a:      430a            orreq   r2, r1
+ 801177c:      f8c0 218c       streq.w r2, [r0, #396]  ; 0x18c
+ 8011780:      1c5a            adds    r2, r3, #1
+ 8011782:      3302            adds    r3, #2
+ 8011784:      6042            str     r2, [r0, #4]
+ 8011786:      f840 7023       str.w   r7, [r0, r3, lsl #2]
+ 801178a:      6820            ldr     r0, [r4, #0]
+ 801178c:      f7fc fb9d       bl      800deca <__retarget_lock_release_recursive>
+ 8011790:      2000            movs    r0, #0
+ 8011792:      e7cc            b.n     801172e <__register_exitproc+0x3a>
+ 8011794:      20000850        .word   0x20000850
+ 8011798:      08012e2c        .word   0x08012e2c
+ 801179c:      0800decd        .word   0x0800decd
+
+080117a0 <_calloc_r>:
+ 80117a0:      b510            push    {r4, lr}
+ 80117a2:      4351            muls    r1, r2
+ 80117a4:      f7fc fba2       bl      800deec <_malloc_r>
+ 80117a8:      4604            mov     r4, r0
+ 80117aa:      b198            cbz     r0, 80117d4 <_calloc_r+0x34>
+ 80117ac:      f850 2c04       ldr.w   r2, [r0, #-4]
+ 80117b0:      f022 0203       bic.w   r2, r2, #3
+ 80117b4:      3a04            subs    r2, #4
+ 80117b6:      2a24            cmp     r2, #36 ; 0x24
+ 80117b8:      d81b            bhi.n   80117f2 <_calloc_r+0x52>
+ 80117ba:      2a13            cmp     r2, #19
+ 80117bc:      d917            bls.n   80117ee <_calloc_r+0x4e>
+ 80117be:      2100            movs    r1, #0
+ 80117c0:      2a1b            cmp     r2, #27
+ 80117c2:      e9c0 1100       strd    r1, r1, [r0]
+ 80117c6:      d807            bhi.n   80117d8 <_calloc_r+0x38>
+ 80117c8:      f100 0308       add.w   r3, r0, #8
+ 80117cc:      2200            movs    r2, #0
+ 80117ce:      e9c3 2200       strd    r2, r2, [r3]
+ 80117d2:      609a            str     r2, [r3, #8]
+ 80117d4:      4620            mov     r0, r4
+ 80117d6:      bd10            pop     {r4, pc}
+ 80117d8:      2a24            cmp     r2, #36 ; 0x24
+ 80117da:      e9c0 1102       strd    r1, r1, [r0, #8]
+ 80117de:      bf11            iteee   ne
+ 80117e0:      f100 0310       addne.w r3, r0, #16
+ 80117e4:      6101            streq   r1, [r0, #16]
+ 80117e6:      f100 0318       addeq.w r3, r0, #24
+ 80117ea:      6141            streq   r1, [r0, #20]
+ 80117ec:      e7ee            b.n     80117cc <_calloc_r+0x2c>
+ 80117ee:      4603            mov     r3, r0
+ 80117f0:      e7ec            b.n     80117cc <_calloc_r+0x2c>
+ 80117f2:      2100            movs    r1, #0
+ 80117f4:      f7fc fde3       bl      800e3be <memset>
+ 80117f8:      e7ec            b.n     80117d4 <_calloc_r+0x34>
+       ...
+
+080117fc <_close_r>:
+ 80117fc:      b538            push    {r3, r4, r5, lr}
+ 80117fe:      4c06            ldr     r4, [pc, #24]   ; (8011818 <_close_r+0x1c>)
+ 8011800:      2300            movs    r3, #0
+ 8011802:      4605            mov     r5, r0
+ 8011804:      4608            mov     r0, r1
+ 8011806:      6023            str     r3, [r4, #0]
+ 8011808:      f7fa ffc3       bl      800c792 <_close>
+ 801180c:      1c43            adds    r3, r0, #1
+ 801180e:      d102            bne.n   8011816 <_close_r+0x1a>
+ 8011810:      6823            ldr     r3, [r4, #0]
+ 8011812:      b103            cbz     r3, 8011816 <_close_r+0x1a>
+ 8011814:      602b            str     r3, [r5, #0]
+ 8011816:      bd38            pop     {r3, r4, r5, pc}
+ 8011818:      20000b08        .word   0x20000b08
+
+0801181c <_fclose_r>:
+ 801181c:      b570            push    {r4, r5, r6, lr}
+ 801181e:      4606            mov     r6, r0
+ 8011820:      460c            mov     r4, r1
+ 8011822:      b911            cbnz    r1, 801182a <_fclose_r+0xe>
+ 8011824:      2500            movs    r5, #0
+ 8011826:      4628            mov     r0, r5
+ 8011828:      bd70            pop     {r4, r5, r6, pc}
+ 801182a:      b118            cbz     r0, 8011834 <_fclose_r+0x18>
+ 801182c:      6b83            ldr     r3, [r0, #56]   ; 0x38
+ 801182e:      b90b            cbnz    r3, 8011834 <_fclose_r+0x18>
+ 8011830:      f7ff f9c0       bl      8010bb4 <__sinit>
+ 8011834:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 8011836:      07d8            lsls    r0, r3, #31
+ 8011838:      d405            bmi.n   8011846 <_fclose_r+0x2a>
+ 801183a:      89a3            ldrh    r3, [r4, #12]
+ 801183c:      0599            lsls    r1, r3, #22
+ 801183e:      d402            bmi.n   8011846 <_fclose_r+0x2a>
+ 8011840:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 8011842:      f7fc fb41       bl      800dec8 <__retarget_lock_acquire_recursive>
+ 8011846:      f9b4 300c       ldrsh.w r3, [r4, #12]
+ 801184a:      b93b            cbnz    r3, 801185c <_fclose_r+0x40>
+ 801184c:      6e65            ldr     r5, [r4, #100]  ; 0x64
+ 801184e:      f015 0501       ands.w  r5, r5, #1
+ 8011852:      d1e7            bne.n   8011824 <_fclose_r+0x8>
+ 8011854:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 8011856:      f7fc fb38       bl      800deca <__retarget_lock_release_recursive>
+ 801185a:      e7e4            b.n     8011826 <_fclose_r+0xa>
+ 801185c:      4621            mov     r1, r4
+ 801185e:      4630            mov     r0, r6
+ 8011860:      f7ff f8ae       bl      80109c0 <__sflush_r>
+ 8011864:      6ae3            ldr     r3, [r4, #44]   ; 0x2c
+ 8011866:      4605            mov     r5, r0
+ 8011868:      b133            cbz     r3, 8011878 <_fclose_r+0x5c>
+ 801186a:      69e1            ldr     r1, [r4, #28]
+ 801186c:      4630            mov     r0, r6
+ 801186e:      4798            blx     r3
+ 8011870:      2800            cmp     r0, #0
+ 8011872:      bfb8            it      lt
+ 8011874:      f04f 35ff       movlt.w r5, #4294967295 ; 0xffffffff
+ 8011878:      89a3            ldrh    r3, [r4, #12]
+ 801187a:      061a            lsls    r2, r3, #24
+ 801187c:      d503            bpl.n   8011886 <_fclose_r+0x6a>
+ 801187e:      6921            ldr     r1, [r4, #16]
+ 8011880:      4630            mov     r0, r6
+ 8011882:      f7ff fa27       bl      8010cd4 <_free_r>
+ 8011886:      6b21            ldr     r1, [r4, #48]   ; 0x30
+ 8011888:      b141            cbz     r1, 801189c <_fclose_r+0x80>
+ 801188a:      f104 0340       add.w   r3, r4, #64     ; 0x40
+ 801188e:      4299            cmp     r1, r3
+ 8011890:      d002            beq.n   8011898 <_fclose_r+0x7c>
+ 8011892:      4630            mov     r0, r6
+ 8011894:      f7ff fa1e       bl      8010cd4 <_free_r>
+ 8011898:      2300            movs    r3, #0
+ 801189a:      6323            str     r3, [r4, #48]   ; 0x30
+ 801189c:      6c61            ldr     r1, [r4, #68]   ; 0x44
+ 801189e:      b121            cbz     r1, 80118aa <_fclose_r+0x8e>
+ 80118a0:      4630            mov     r0, r6
+ 80118a2:      f7ff fa17       bl      8010cd4 <_free_r>
+ 80118a6:      2300            movs    r3, #0
+ 80118a8:      6463            str     r3, [r4, #68]   ; 0x44
+ 80118aa:      f7ff f96b       bl      8010b84 <__sfp_lock_acquire>
+ 80118ae:      2300            movs    r3, #0
+ 80118b0:      81a3            strh    r3, [r4, #12]
+ 80118b2:      6e63            ldr     r3, [r4, #100]  ; 0x64
+ 80118b4:      07db            lsls    r3, r3, #31
+ 80118b6:      d402            bmi.n   80118be <_fclose_r+0xa2>
+ 80118b8:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 80118ba:      f7fc fb06       bl      800deca <__retarget_lock_release_recursive>
+ 80118be:      6da0            ldr     r0, [r4, #88]   ; 0x58
+ 80118c0:      f7fc fb01       bl      800dec6 <__retarget_lock_close_recursive>
+ 80118c4:      f7ff f964       bl      8010b90 <__sfp_lock_release>
+ 80118c8:      e7ad            b.n     8011826 <_fclose_r+0xa>
+       ...
+
+080118cc <_fstat_r>:
+ 80118cc:      b538            push    {r3, r4, r5, lr}
+ 80118ce:      4c07            ldr     r4, [pc, #28]   ; (80118ec <_fstat_r+0x20>)
+ 80118d0:      2300            movs    r3, #0
+ 80118d2:      4605            mov     r5, r0
+ 80118d4:      4608            mov     r0, r1
+ 80118d6:      4611            mov     r1, r2
+ 80118d8:      6023            str     r3, [r4, #0]
+ 80118da:      f7fa ff66       bl      800c7aa <_fstat>
+ 80118de:      1c43            adds    r3, r0, #1
+ 80118e0:      d102            bne.n   80118e8 <_fstat_r+0x1c>
+ 80118e2:      6823            ldr     r3, [r4, #0]
+ 80118e4:      b103            cbz     r3, 80118e8 <_fstat_r+0x1c>
+ 80118e6:      602b            str     r3, [r5, #0]
+ 80118e8:      bd38            pop     {r3, r4, r5, pc}
+ 80118ea:      bf00            nop
+ 80118ec:      20000b08        .word   0x20000b08
+
+080118f0 <_isatty_r>:
+ 80118f0:      b538            push    {r3, r4, r5, lr}
+ 80118f2:      4c06            ldr     r4, [pc, #24]   ; (801190c <_isatty_r+0x1c>)
+ 80118f4:      2300            movs    r3, #0
+ 80118f6:      4605            mov     r5, r0
+ 80118f8:      4608            mov     r0, r1
+ 80118fa:      6023            str     r3, [r4, #0]
+ 80118fc:      f7fa ff65       bl      800c7ca <_isatty>
+ 8011900:      1c43            adds    r3, r0, #1
+ 8011902:      d102            bne.n   801190a <_isatty_r+0x1a>
+ 8011904:      6823            ldr     r3, [r4, #0]
+ 8011906:      b103            cbz     r3, 801190a <_isatty_r+0x1a>
+ 8011908:      602b            str     r3, [r5, #0]
+ 801190a:      bd38            pop     {r3, r4, r5, pc}
+ 801190c:      20000b08        .word   0x20000b08
+
+08011910 <_lseek_r>:
+ 8011910:      b538            push    {r3, r4, r5, lr}
+ 8011912:      4c07            ldr     r4, [pc, #28]   ; (8011930 <_lseek_r+0x20>)
+ 8011914:      4605            mov     r5, r0
+ 8011916:      4608            mov     r0, r1
+ 8011918:      4611            mov     r1, r2
+ 801191a:      2200            movs    r2, #0
+ 801191c:      6022            str     r2, [r4, #0]
+ 801191e:      461a            mov     r2, r3
+ 8011920:      f7fa ff5e       bl      800c7e0 <_lseek>
+ 8011924:      1c43            adds    r3, r0, #1
+ 8011926:      d102            bne.n   801192e <_lseek_r+0x1e>
+ 8011928:      6823            ldr     r3, [r4, #0]
+ 801192a:      b103            cbz     r3, 801192e <_lseek_r+0x1e>
+ 801192c:      602b            str     r3, [r5, #0]
+ 801192e:      bd38            pop     {r3, r4, r5, pc}
+ 8011930:      20000b08        .word   0x20000b08
+
+08011934 <__ascii_mbtowc>:
+ 8011934:      b082            sub     sp, #8
+ 8011936:      b901            cbnz    r1, 801193a <__ascii_mbtowc+0x6>
+ 8011938:      a901            add     r1, sp, #4
+ 801193a:      b142            cbz     r2, 801194e <__ascii_mbtowc+0x1a>
+ 801193c:      b14b            cbz     r3, 8011952 <__ascii_mbtowc+0x1e>
+ 801193e:      7813            ldrb    r3, [r2, #0]
+ 8011940:      600b            str     r3, [r1, #0]
+ 8011942:      7812            ldrb    r2, [r2, #0]
+ 8011944:      1c10            adds    r0, r2, #0
+ 8011946:      bf18            it      ne
+ 8011948:      2001            movne   r0, #1
+ 801194a:      b002            add     sp, #8
+ 801194c:      4770            bx      lr
+ 801194e:      4610            mov     r0, r2
+ 8011950:      e7fb            b.n     801194a <__ascii_mbtowc+0x16>
+ 8011952:      f06f 0001       mvn.w   r0, #1
+ 8011956:      e7f8            b.n     801194a <__ascii_mbtowc+0x16>
+
+08011958 <_read_r>:
+ 8011958:      b538            push    {r3, r4, r5, lr}
+ 801195a:      4c07            ldr     r4, [pc, #28]   ; (8011978 <_read_r+0x20>)
+ 801195c:      4605            mov     r5, r0
+ 801195e:      4608            mov     r0, r1
+ 8011960:      4611            mov     r1, r2
+ 8011962:      2200            movs    r2, #0
+ 8011964:      6022            str     r2, [r4, #0]
+ 8011966:      461a            mov     r2, r3
+ 8011968:      f7fa feda       bl      800c720 <_read>
+ 801196c:      1c43            adds    r3, r0, #1
+ 801196e:      d102            bne.n   8011976 <_read_r+0x1e>
+ 8011970:      6823            ldr     r3, [r4, #0]
+ 8011972:      b103            cbz     r3, 8011976 <_read_r+0x1e>
+ 8011974:      602b            str     r3, [r5, #0]
+ 8011976:      bd38            pop     {r3, r4, r5, pc}
+ 8011978:      20000b08        .word   0x20000b08
+
+0801197c <__ascii_wctomb>:
+ 801197c:      b149            cbz     r1, 8011992 <__ascii_wctomb+0x16>
+ 801197e:      2aff            cmp     r2, #255        ; 0xff
+ 8011980:      bf85            ittet   hi
+ 8011982:      238a            movhi   r3, #138        ; 0x8a
+ 8011984:      6003            strhi   r3, [r0, #0]
+ 8011986:      700a            strbls  r2, [r1, #0]
+ 8011988:      f04f 30ff       movhi.w r0, #4294967295 ; 0xffffffff
+ 801198c:      bf98            it      ls
+ 801198e:      2001            movls   r0, #1
+ 8011990:      4770            bx      lr
+ 8011992:      4608            mov     r0, r1
+ 8011994:      4770            bx      lr
        ...
 
-08002808 <__libc_init_array>:
- 8002808:      b570            push    {r4, r5, r6, lr}
- 800280a:      4e0d            ldr     r6, [pc, #52]   ; (8002840 <__libc_init_array+0x38>)
- 800280c:      4c0d            ldr     r4, [pc, #52]   ; (8002844 <__libc_init_array+0x3c>)
- 800280e:      1ba4            subs    r4, r4, r6
- 8002810:      10a4            asrs    r4, r4, #2
- 8002812:      2500            movs    r5, #0
- 8002814:      42a5            cmp     r5, r4
- 8002816:      d109            bne.n   800282c <__libc_init_array+0x24>
- 8002818:      4e0b            ldr     r6, [pc, #44]   ; (8002848 <__libc_init_array+0x40>)
- 800281a:      4c0c            ldr     r4, [pc, #48]   ; (800284c <__libc_init_array+0x44>)
- 800281c:      f000 f820       bl      8002860 <_init>
- 8002820:      1ba4            subs    r4, r4, r6
- 8002822:      10a4            asrs    r4, r4, #2
- 8002824:      2500            movs    r5, #0
- 8002826:      42a5            cmp     r5, r4
- 8002828:      d105            bne.n   8002836 <__libc_init_array+0x2e>
- 800282a:      bd70            pop     {r4, r5, r6, pc}
- 800282c:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
- 8002830:      4798            blx     r3
- 8002832:      3501            adds    r5, #1
- 8002834:      e7ee            b.n     8002814 <__libc_init_array+0xc>
- 8002836:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
- 800283a:      4798            blx     r3
- 800283c:      3501            adds    r5, #1
- 800283e:      e7f2            b.n     8002826 <__libc_init_array+0x1e>
- 8002840:      08002898        .word   0x08002898
- 8002844:      08002898        .word   0x08002898
- 8002848:      08002898        .word   0x08002898
- 800284c:      0800289c        .word   0x0800289c
-
-08002850 <memset>:
- 8002850:      4402            add     r2, r0
- 8002852:      4603            mov     r3, r0
- 8002854:      4293            cmp     r3, r2
- 8002856:      d100            bne.n   800285a <memset+0xa>
- 8002858:      4770            bx      lr
- 800285a:      f803 1b01       strb.w  r1, [r3], #1
- 800285e:      e7f9            b.n     8002854 <memset+0x4>
-
-08002860 <_init>:
- 8002860:      b5f8            push    {r3, r4, r5, r6, r7, lr}
- 8002862:      bf00            nop
- 8002864:      bcf8            pop     {r3, r4, r5, r6, r7}
- 8002866:      bc08            pop     {r3}
- 8002868:      469e            mov     lr, r3
- 800286a:      4770            bx      lr
-
-0800286c <_fini>:
- 800286c:      b5f8            push    {r3, r4, r5, r6, r7, lr}
- 800286e:      bf00            nop
- 8002870:      bcf8            pop     {r3, r4, r5, r6, r7}
- 8002872:      bc08            pop     {r3}
- 8002874:      469e            mov     lr, r3
- 8002876:      4770            bx      lr
+08011998 <_init>:
+ 8011998:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 801199a:      bf00            nop
+ 801199c:      bcf8            pop     {r3, r4, r5, r6, r7}
+ 801199e:      bc08            pop     {r3}
+ 80119a0:      469e            mov     lr, r3
+ 80119a2:      4770            bx      lr
+
+080119a4 <_fini>:
+ 80119a4:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 80119a6:      bf00            nop
+ 80119a8:      bcf8            pop     {r3, r4, r5, r6, r7}
+ 80119aa:      bc08            pop     {r3}
+ 80119ac:      469e            mov     lr, r3
+ 80119ae:      4770            bx      lr
diff --git a/rosserial_test/Inc/STM32Hardware.h b/rosserial_test/Inc/STM32Hardware.h
new file mode 100644 (file)
index 0000000..6cd1c09
--- /dev/null
@@ -0,0 +1,128 @@
+/* 
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2018, Kenta Yonekura (a.k.a. yoneken)
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_STM32_HARDWARE_H_
+#define ROS_STM32_HARDWARE_H_
+
+#include "stm32f7xx_hal.h"
+#include "stm32f7xx_hal_uart.h"
+#include "stm32f7xx_hal_tim.h"
+
+extern TIM_HandleTypeDef htim2;
+extern UART_HandleTypeDef huart3;
+
+class STM32Hardware {
+  protected:
+    TIM_HandleTypeDef *htim;
+    UART_HandleTypeDef *huart;
+
+    const static uint16_t rbuflen = 128;
+    uint8_t rbuf[rbuflen];
+    uint32_t rind;
+    inline uint32_t getRdmaInd(void){ return (rbuflen - huart->hdmarx->Instance->NDTR) & (rbuflen - 1); }
+
+    const static uint16_t tbuflen = 256;
+    uint8_t tbuf[tbuflen];
+    uint32_t twind, tfind;
+
+  public:
+    STM32Hardware():
+      htim(&htim2), huart(&huart3), rind(0), twind(0), tfind(0){
+    }
+
+    STM32Hardware(TIM_HandleTypeDef *htim_, UART_HandleTypeDef *huart_):
+      htim(htim_), huart(huart_), rind(0), twind(0), tfind(0){
+    }
+  
+    void init(){
+      reset_rbuf();
+
+      HAL_TIM_Base_Start(htim);
+    }
+
+    void reset_rbuf(void){
+      HAL_UART_Receive_DMA(huart, rbuf, rbuflen);
+    }
+
+    int read(){
+      int c = -1;
+      if(rind != getRdmaInd()){
+        c = rbuf[rind++];
+        rind &= rbuflen - 1;
+      }
+      return c;
+    }
+
+    void flush(void){
+      static bool mutex = false;
+
+      if((huart->gState == HAL_UART_STATE_READY) && !mutex){
+        mutex = true;
+
+        if(twind != tfind){
+          uint16_t len = tfind < twind ? twind - tfind : tbuflen - tfind;
+          HAL_UART_Transmit_DMA(huart, &(tbuf[tfind]), len);
+          tfind = (tfind + len) & (tbuflen - 1);
+        }
+        mutex = false;
+      }
+    }
+
+    void write(uint8_t* data, int length){
+
+
+      int n = length;
+      n = n <= tbuflen ? n : tbuflen;
+
+      int n_tail = n <= tbuflen - twind ? n : tbuflen - twind;
+      memcpy(&(tbuf[twind]), data, n_tail);
+      twind = (twind + n) & (tbuflen - 1);
+
+      if(n != n_tail){
+        memcpy(tbuf, &(data[n_tail]), n - n_tail);
+      }
+
+      flush();
+
+
+      //HAL_UART_Transmit(&huart3, data, length, 100);
+    }
+
+    unsigned long time(){ return __HAL_TIM_GET_COUNTER(htim); }
+
+  protected:
+};
+
+#endif
+
diff --git a/rosserial_test/Inc/actionlib/TestAction.h b/rosserial_test/Inc/actionlib/TestAction.h
new file mode 100644 (file)
index 0000000..ef50b96
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestAction_h
+#define _ROS_actionlib_TestAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib/TestActionGoal.h"
+#include "actionlib/TestActionResult.h"
+#include "actionlib/TestActionFeedback.h"
+
+namespace actionlib
+{
+
+  class TestAction : public ros::Msg
+  {
+    public:
+      typedef actionlib::TestActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib::TestActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib::TestActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    TestAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestAction"; };
+    const char * getMD5(){ return "991e87a72802262dfbe5d1b3cf6efc9a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestActionFeedback.h b/rosserial_test/Inc/actionlib/TestActionFeedback.h
new file mode 100644 (file)
index 0000000..3fd85bf
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestActionFeedback_h
+#define _ROS_actionlib_TestActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestFeedback.h"
+
+namespace actionlib
+{
+
+  class TestActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestFeedback _feedback_type;
+      _feedback_type feedback;
+
+    TestActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestActionFeedback"; };
+    const char * getMD5(){ return "6d3d0bf7fb3dda24779c010a9f3eb7cb"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestActionGoal.h b/rosserial_test/Inc/actionlib/TestActionGoal.h
new file mode 100644 (file)
index 0000000..5c2cb95
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestActionGoal_h
+#define _ROS_actionlib_TestActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib/TestGoal.h"
+
+namespace actionlib
+{
+
+  class TestActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib::TestGoal _goal_type;
+      _goal_type goal;
+
+    TestActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestActionGoal"; };
+    const char * getMD5(){ return "348369c5b403676156094e8c159720bf"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestActionResult.h b/rosserial_test/Inc/actionlib/TestActionResult.h
new file mode 100644 (file)
index 0000000..e6f92ec
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestActionResult_h
+#define _ROS_actionlib_TestActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestResult.h"
+
+namespace actionlib
+{
+
+  class TestActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestResult _result_type;
+      _result_type result;
+
+    TestActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestActionResult"; };
+    const char * getMD5(){ return "3d669e3a63aa986c667ea7b0f46ce85e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestFeedback.h b/rosserial_test/Inc/actionlib/TestFeedback.h
new file mode 100644 (file)
index 0000000..a059f79
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_TestFeedback_h
+#define _ROS_actionlib_TestFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestFeedback : public ros::Msg
+  {
+    public:
+      typedef int32_t _feedback_type;
+      _feedback_type feedback;
+
+    TestFeedback():
+      feedback(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_feedback;
+      u_feedback.real = this->feedback;
+      *(outbuffer + offset + 0) = (u_feedback.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_feedback.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_feedback.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_feedback.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->feedback);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_feedback;
+      u_feedback.base = 0;
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->feedback = u_feedback.real;
+      offset += sizeof(this->feedback);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestFeedback"; };
+    const char * getMD5(){ return "49ceb5b32ea3af22073ede4a0328249e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestGoal.h b/rosserial_test/Inc/actionlib/TestGoal.h
new file mode 100644 (file)
index 0000000..018b66f
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_TestGoal_h
+#define _ROS_actionlib_TestGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _goal_type;
+      _goal_type goal;
+
+    TestGoal():
+      goal(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_goal;
+      u_goal.real = this->goal;
+      *(outbuffer + offset + 0) = (u_goal.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_goal.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_goal.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_goal.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_goal;
+      u_goal.base = 0;
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->goal = u_goal.real;
+      offset += sizeof(this->goal);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestGoal"; };
+    const char * getMD5(){ return "18df0149936b7aa95588e3862476ebde"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestRequestAction.h b/rosserial_test/Inc/actionlib/TestRequestAction.h
new file mode 100644 (file)
index 0000000..8bf3ea2
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestAction_h
+#define _ROS_actionlib_TestRequestAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib/TestRequestActionGoal.h"
+#include "actionlib/TestRequestActionResult.h"
+#include "actionlib/TestRequestActionFeedback.h"
+
+namespace actionlib
+{
+
+  class TestRequestAction : public ros::Msg
+  {
+    public:
+      typedef actionlib::TestRequestActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib::TestRequestActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib::TestRequestActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    TestRequestAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestAction"; };
+    const char * getMD5(){ return "dc44b1f4045dbf0d1db54423b3b86b30"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestRequestActionFeedback.h b/rosserial_test/Inc/actionlib/TestRequestActionFeedback.h
new file mode 100644 (file)
index 0000000..95e3dd3
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestActionFeedback_h
+#define _ROS_actionlib_TestRequestActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestRequestFeedback.h"
+
+namespace actionlib
+{
+
+  class TestRequestActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestRequestFeedback _feedback_type;
+      _feedback_type feedback;
+
+    TestRequestActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestRequestActionGoal.h b/rosserial_test/Inc/actionlib/TestRequestActionGoal.h
new file mode 100644 (file)
index 0000000..8ccf742
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestActionGoal_h
+#define _ROS_actionlib_TestRequestActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib/TestRequestGoal.h"
+
+namespace actionlib
+{
+
+  class TestRequestActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib::TestRequestGoal _goal_type;
+      _goal_type goal;
+
+    TestRequestActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestActionGoal"; };
+    const char * getMD5(){ return "1889556d3fef88f821c7cb004e4251f3"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestRequestActionResult.h b/rosserial_test/Inc/actionlib/TestRequestActionResult.h
new file mode 100644 (file)
index 0000000..63038f6
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestActionResult_h
+#define _ROS_actionlib_TestRequestActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestRequestResult.h"
+
+namespace actionlib
+{
+
+  class TestRequestActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestRequestResult _result_type;
+      _result_type result;
+
+    TestRequestActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestActionResult"; };
+    const char * getMD5(){ return "0476d1fdf437a3a6e7d6d0e9f5561298"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestRequestFeedback.h b/rosserial_test/Inc/actionlib/TestRequestFeedback.h
new file mode 100644 (file)
index 0000000..4a104be
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_actionlib_TestRequestFeedback_h
+#define _ROS_actionlib_TestRequestFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestRequestFeedback : public ros::Msg
+  {
+    public:
+
+    TestRequestFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestRequestGoal.h b/rosserial_test/Inc/actionlib/TestRequestGoal.h
new file mode 100644 (file)
index 0000000..ea49774
--- /dev/null
@@ -0,0 +1,215 @@
+#ifndef _ROS_actionlib_TestRequestGoal_h
+#define _ROS_actionlib_TestRequestGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace actionlib
+{
+
+  class TestRequestGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _terminate_status_type;
+      _terminate_status_type terminate_status;
+      typedef bool _ignore_cancel_type;
+      _ignore_cancel_type ignore_cancel;
+      typedef const char* _result_text_type;
+      _result_text_type result_text;
+      typedef int32_t _the_result_type;
+      _the_result_type the_result;
+      typedef bool _is_simple_client_type;
+      _is_simple_client_type is_simple_client;
+      typedef ros::Duration _delay_accept_type;
+      _delay_accept_type delay_accept;
+      typedef ros::Duration _delay_terminate_type;
+      _delay_terminate_type delay_terminate;
+      typedef ros::Duration _pause_status_type;
+      _pause_status_type pause_status;
+      enum { TERMINATE_SUCCESS =  0 };
+      enum { TERMINATE_ABORTED =  1 };
+      enum { TERMINATE_REJECTED =  2 };
+      enum { TERMINATE_LOSE =  3 };
+      enum { TERMINATE_DROP =  4 };
+      enum { TERMINATE_EXCEPTION =  5 };
+
+    TestRequestGoal():
+      terminate_status(0),
+      ignore_cancel(0),
+      result_text(""),
+      the_result(0),
+      is_simple_client(0),
+      delay_accept(),
+      delay_terminate(),
+      pause_status()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_terminate_status;
+      u_terminate_status.real = this->terminate_status;
+      *(outbuffer + offset + 0) = (u_terminate_status.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_terminate_status.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_terminate_status.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_terminate_status.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->terminate_status);
+      union {
+        bool real;
+        uint8_t base;
+      } u_ignore_cancel;
+      u_ignore_cancel.real = this->ignore_cancel;
+      *(outbuffer + offset + 0) = (u_ignore_cancel.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ignore_cancel);
+      uint32_t length_result_text = strlen(this->result_text);
+      varToArr(outbuffer + offset, length_result_text);
+      offset += 4;
+      memcpy(outbuffer + offset, this->result_text, length_result_text);
+      offset += length_result_text;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.real = this->the_result;
+      *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_client;
+      u_is_simple_client.real = this->is_simple_client;
+      *(outbuffer + offset + 0) = (u_is_simple_client.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_simple_client);
+      *(outbuffer + offset + 0) = (this->delay_accept.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_accept.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_accept.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_accept.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_accept.sec);
+      *(outbuffer + offset + 0) = (this->delay_accept.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_accept.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_accept.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_accept.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_accept.nsec);
+      *(outbuffer + offset + 0) = (this->delay_terminate.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_terminate.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_terminate.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_terminate.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_terminate.sec);
+      *(outbuffer + offset + 0) = (this->delay_terminate.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_terminate.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_terminate.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_terminate.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_terminate.nsec);
+      *(outbuffer + offset + 0) = (this->pause_status.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pause_status.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pause_status.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pause_status.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pause_status.sec);
+      *(outbuffer + offset + 0) = (this->pause_status.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pause_status.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pause_status.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pause_status.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pause_status.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_terminate_status;
+      u_terminate_status.base = 0;
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->terminate_status = u_terminate_status.real;
+      offset += sizeof(this->terminate_status);
+      union {
+        bool real;
+        uint8_t base;
+      } u_ignore_cancel;
+      u_ignore_cancel.base = 0;
+      u_ignore_cancel.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ignore_cancel = u_ignore_cancel.real;
+      offset += sizeof(this->ignore_cancel);
+      uint32_t length_result_text;
+      arrToVar(length_result_text, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_result_text; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_result_text-1]=0;
+      this->result_text = (char *)(inbuffer + offset-1);
+      offset += length_result_text;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.base = 0;
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->the_result = u_the_result.real;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_client;
+      u_is_simple_client.base = 0;
+      u_is_simple_client.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_simple_client = u_is_simple_client.real;
+      offset += sizeof(this->is_simple_client);
+      this->delay_accept.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_accept.sec);
+      this->delay_accept.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_accept.nsec);
+      this->delay_terminate.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_terminate.sec);
+      this->delay_terminate.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_terminate.nsec);
+      this->pause_status.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->pause_status.sec);
+      this->pause_status.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->pause_status.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestGoal"; };
+    const char * getMD5(){ return "db5d00ba98302d6c6dd3737e9a03ceea"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestRequestResult.h b/rosserial_test/Inc/actionlib/TestRequestResult.h
new file mode 100644 (file)
index 0000000..b2814ec
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef _ROS_actionlib_TestRequestResult_h
+#define _ROS_actionlib_TestRequestResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestRequestResult : public ros::Msg
+  {
+    public:
+      typedef int32_t _the_result_type;
+      _the_result_type the_result;
+      typedef bool _is_simple_server_type;
+      _is_simple_server_type is_simple_server;
+
+    TestRequestResult():
+      the_result(0),
+      is_simple_server(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.real = this->the_result;
+      *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_server;
+      u_is_simple_server.real = this->is_simple_server;
+      *(outbuffer + offset + 0) = (u_is_simple_server.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_simple_server);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.base = 0;
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->the_result = u_the_result.real;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_server;
+      u_is_simple_server.base = 0;
+      u_is_simple_server.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_simple_server = u_is_simple_server.real;
+      offset += sizeof(this->is_simple_server);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestResult"; };
+    const char * getMD5(){ return "61c2364524499c7c5017e2f3fce7ba06"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TestResult.h b/rosserial_test/Inc/actionlib/TestResult.h
new file mode 100644 (file)
index 0000000..10e6bc5
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_TestResult_h
+#define _ROS_actionlib_TestResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestResult : public ros::Msg
+  {
+    public:
+      typedef int32_t _result_type;
+      _result_type result;
+
+    TestResult():
+      result(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_result;
+      u_result.real = this->result;
+      *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_result.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_result.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_result.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->result);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_result;
+      u_result.base = 0;
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->result = u_result.real;
+      offset += sizeof(this->result);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestResult"; };
+    const char * getMD5(){ return "034a8e20d6a306665e3a5b340fab3f09"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TwoIntsAction.h b/rosserial_test/Inc/actionlib/TwoIntsAction.h
new file mode 100644 (file)
index 0000000..573ffcd
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsAction_h
+#define _ROS_actionlib_TwoIntsAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib/TwoIntsActionGoal.h"
+#include "actionlib/TwoIntsActionResult.h"
+#include "actionlib/TwoIntsActionFeedback.h"
+
+namespace actionlib
+{
+
+  class TwoIntsAction : public ros::Msg
+  {
+    public:
+      typedef actionlib::TwoIntsActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib::TwoIntsActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib::TwoIntsActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    TwoIntsAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsAction"; };
+    const char * getMD5(){ return "6d1aa538c4bd6183a2dfb7fcac41ee50"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TwoIntsActionFeedback.h b/rosserial_test/Inc/actionlib/TwoIntsActionFeedback.h
new file mode 100644 (file)
index 0000000..cad817d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsActionFeedback_h
+#define _ROS_actionlib_TwoIntsActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TwoIntsFeedback.h"
+
+namespace actionlib
+{
+
+  class TwoIntsActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TwoIntsFeedback _feedback_type;
+      _feedback_type feedback;
+
+    TwoIntsActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TwoIntsActionGoal.h b/rosserial_test/Inc/actionlib/TwoIntsActionGoal.h
new file mode 100644 (file)
index 0000000..6b99941
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsActionGoal_h
+#define _ROS_actionlib_TwoIntsActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib/TwoIntsGoal.h"
+
+namespace actionlib
+{
+
+  class TwoIntsActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib::TwoIntsGoal _goal_type;
+      _goal_type goal;
+
+    TwoIntsActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsActionGoal"; };
+    const char * getMD5(){ return "684a2db55d6ffb8046fb9d6764ce0860"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TwoIntsActionResult.h b/rosserial_test/Inc/actionlib/TwoIntsActionResult.h
new file mode 100644 (file)
index 0000000..e3943fd
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsActionResult_h
+#define _ROS_actionlib_TwoIntsActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TwoIntsResult.h"
+
+namespace actionlib
+{
+
+  class TwoIntsActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TwoIntsResult _result_type;
+      _result_type result;
+
+    TwoIntsActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsActionResult"; };
+    const char * getMD5(){ return "3ba7dea8b8cddcae4528ade4ef74b6e7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TwoIntsFeedback.h b/rosserial_test/Inc/actionlib/TwoIntsFeedback.h
new file mode 100644 (file)
index 0000000..2cd4f60
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_actionlib_TwoIntsFeedback_h
+#define _ROS_actionlib_TwoIntsFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TwoIntsFeedback : public ros::Msg
+  {
+    public:
+
+    TwoIntsFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TwoIntsGoal.h b/rosserial_test/Inc/actionlib/TwoIntsGoal.h
new file mode 100644 (file)
index 0000000..2e3fb5c
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef _ROS_actionlib_TwoIntsGoal_h
+#define _ROS_actionlib_TwoIntsGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TwoIntsGoal : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int64_t _b_type;
+      _b_type b;
+
+    TwoIntsGoal():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsGoal"; };
+    const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib/TwoIntsResult.h b/rosserial_test/Inc/actionlib/TwoIntsResult.h
new file mode 100644 (file)
index 0000000..afae9b0
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_actionlib_TwoIntsResult_h
+#define _ROS_actionlib_TwoIntsResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TwoIntsResult : public ros::Msg
+  {
+    public:
+      typedef int64_t _sum_type;
+      _sum_type sum;
+
+    TwoIntsResult():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsResult"; };
+    const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_msgs/GoalID.h b/rosserial_test/Inc/actionlib_msgs/GoalID.h
new file mode 100644 (file)
index 0000000..160ca8a
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_actionlib_msgs_GoalID_h
+#define _ROS_actionlib_msgs_GoalID_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace actionlib_msgs
+{
+
+  class GoalID : public ros::Msg
+  {
+    public:
+      typedef ros::Time _stamp_type;
+      _stamp_type stamp;
+      typedef const char* _id_type;
+      _id_type id;
+
+    GoalID():
+      stamp(),
+      id("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.sec);
+      *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_id = strlen(this->id);
+      varToArr(outbuffer + offset, length_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->id, length_id);
+      offset += length_id;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->stamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.sec);
+      this->stamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_id;
+      arrToVar(length_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_id-1]=0;
+      this->id = (char *)(inbuffer + offset-1);
+      offset += length_id;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_msgs/GoalID"; };
+    const char * getMD5(){ return "302881f31927c1df708a2dbab0e80ee8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_msgs/GoalStatus.h b/rosserial_test/Inc/actionlib_msgs/GoalStatus.h
new file mode 100644 (file)
index 0000000..52e58af
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef _ROS_actionlib_msgs_GoalStatus_h
+#define _ROS_actionlib_msgs_GoalStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib_msgs/GoalID.h"
+
+namespace actionlib_msgs
+{
+
+  class GoalStatus : public ros::Msg
+  {
+    public:
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef uint8_t _status_type;
+      _status_type status;
+      typedef const char* _text_type;
+      _text_type text;
+      enum { PENDING =  0    };
+      enum { ACTIVE =  1    };
+      enum { PREEMPTED =  2    };
+      enum { SUCCEEDED =  3    };
+      enum { ABORTED =  4    };
+      enum { REJECTED =  5    };
+      enum { PREEMPTING =  6    };
+      enum { RECALLING =  7    };
+      enum { RECALLED =  8    };
+      enum { LOST =  9    };
+
+    GoalStatus():
+      goal_id(),
+      status(0),
+      text("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->goal_id.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->status);
+      uint32_t length_text = strlen(this->text);
+      varToArr(outbuffer + offset, length_text);
+      offset += 4;
+      memcpy(outbuffer + offset, this->text, length_text);
+      offset += length_text;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      this->status =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->status);
+      uint32_t length_text;
+      arrToVar(length_text, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_text; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_text-1]=0;
+      this->text = (char *)(inbuffer + offset-1);
+      offset += length_text;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_msgs/GoalStatus"; };
+    const char * getMD5(){ return "d388f9b87b3c471f784434d671988d4a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_msgs/GoalStatusArray.h b/rosserial_test/Inc/actionlib_msgs/GoalStatusArray.h
new file mode 100644 (file)
index 0000000..e658c50
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_actionlib_msgs_GoalStatusArray_h
+#define _ROS_actionlib_msgs_GoalStatusArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+
+namespace actionlib_msgs
+{
+
+  class GoalStatusArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t status_list_length;
+      typedef actionlib_msgs::GoalStatus _status_list_type;
+      _status_list_type st_status_list;
+      _status_list_type * status_list;
+
+    GoalStatusArray():
+      header(),
+      status_list_length(0), status_list(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->status_list_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->status_list_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->status_list_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->status_list_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->status_list_length);
+      for( uint32_t i = 0; i < status_list_length; i++){
+      offset += this->status_list[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t status_list_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->status_list_length);
+      if(status_list_lengthT > status_list_length)
+        this->status_list = (actionlib_msgs::GoalStatus*)realloc(this->status_list, status_list_lengthT * sizeof(actionlib_msgs::GoalStatus));
+      status_list_length = status_list_lengthT;
+      for( uint32_t i = 0; i < status_list_length; i++){
+      offset += this->st_status_list.deserialize(inbuffer + offset);
+        memcpy( &(this->status_list[i]), &(this->st_status_list), sizeof(actionlib_msgs::GoalStatus));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_msgs/GoalStatusArray"; };
+    const char * getMD5(){ return "8b2b82f13216d0a8ea88bd3af735e619"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/AveragingAction.h b/rosserial_test/Inc/actionlib_tutorials/AveragingAction.h
new file mode 100644 (file)
index 0000000..660ec28
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingAction_h
+#define _ROS_actionlib_tutorials_AveragingAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib_tutorials/AveragingActionGoal.h"
+#include "actionlib_tutorials/AveragingActionResult.h"
+#include "actionlib_tutorials/AveragingActionFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingAction : public ros::Msg
+  {
+    public:
+      typedef actionlib_tutorials::AveragingActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib_tutorials::AveragingActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib_tutorials::AveragingActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    AveragingAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingAction"; };
+    const char * getMD5(){ return "628678f2b4fa6a5951746a4a2d39e716"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/AveragingActionFeedback.h b/rosserial_test/Inc/actionlib_tutorials/AveragingActionFeedback.h
new file mode 100644 (file)
index 0000000..36f66d2
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingActionFeedback_h
+#define _ROS_actionlib_tutorials_AveragingActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/AveragingFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::AveragingFeedback _feedback_type;
+      _feedback_type feedback;
+
+    AveragingActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingActionFeedback"; };
+    const char * getMD5(){ return "78a4a09241b1791069223ae7ebd5b16b"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/AveragingActionGoal.h b/rosserial_test/Inc/actionlib_tutorials/AveragingActionGoal.h
new file mode 100644 (file)
index 0000000..9d98d45
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingActionGoal_h
+#define _ROS_actionlib_tutorials_AveragingActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib_tutorials/AveragingGoal.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib_tutorials::AveragingGoal _goal_type;
+      _goal_type goal;
+
+    AveragingActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingActionGoal"; };
+    const char * getMD5(){ return "1561825b734ebd6039851c501e3fb570"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/AveragingActionResult.h b/rosserial_test/Inc/actionlib_tutorials/AveragingActionResult.h
new file mode 100644 (file)
index 0000000..2d3c5fa
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingActionResult_h
+#define _ROS_actionlib_tutorials_AveragingActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/AveragingResult.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::AveragingResult _result_type;
+      _result_type result;
+
+    AveragingActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingActionResult"; };
+    const char * getMD5(){ return "8672cb489d347580acdcd05c5d497497"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/AveragingFeedback.h b/rosserial_test/Inc/actionlib_tutorials/AveragingFeedback.h
new file mode 100644 (file)
index 0000000..77ce8a1
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_actionlib_tutorials_AveragingFeedback_h
+#define _ROS_actionlib_tutorials_AveragingFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingFeedback : public ros::Msg
+  {
+    public:
+      typedef int32_t _sample_type;
+      _sample_type sample;
+      typedef float _data_type;
+      _data_type data;
+      typedef float _mean_type;
+      _mean_type mean;
+      typedef float _std_dev_type;
+      _std_dev_type std_dev;
+
+    AveragingFeedback():
+      sample(0),
+      data(0),
+      mean(0),
+      std_dev(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sample;
+      u_sample.real = this->sample;
+      *(outbuffer + offset + 0) = (u_sample.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sample.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sample.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sample.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sample);
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.real = this->mean;
+      *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.real = this->std_dev;
+      *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->std_dev);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sample;
+      u_sample.base = 0;
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->sample = u_sample.real;
+      offset += sizeof(this->sample);
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.base = 0;
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->mean = u_mean.real;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.base = 0;
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->std_dev = u_std_dev.real;
+      offset += sizeof(this->std_dev);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingFeedback"; };
+    const char * getMD5(){ return "9e8dfc53c2f2a032ca33fa80ec46fd4f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/AveragingGoal.h b/rosserial_test/Inc/actionlib_tutorials/AveragingGoal.h
new file mode 100644 (file)
index 0000000..b515f38
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_tutorials_AveragingGoal_h
+#define _ROS_actionlib_tutorials_AveragingGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _samples_type;
+      _samples_type samples;
+
+    AveragingGoal():
+      samples(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_samples;
+      u_samples.real = this->samples;
+      *(outbuffer + offset + 0) = (u_samples.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_samples.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_samples.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_samples.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->samples);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_samples;
+      u_samples.base = 0;
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->samples = u_samples.real;
+      offset += sizeof(this->samples);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingGoal"; };
+    const char * getMD5(){ return "32c9b10ef9b253faa93b93f564762c8f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/AveragingResult.h b/rosserial_test/Inc/actionlib_tutorials/AveragingResult.h
new file mode 100644 (file)
index 0000000..484e35b
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_actionlib_tutorials_AveragingResult_h
+#define _ROS_actionlib_tutorials_AveragingResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingResult : public ros::Msg
+  {
+    public:
+      typedef float _mean_type;
+      _mean_type mean;
+      typedef float _std_dev_type;
+      _std_dev_type std_dev;
+
+    AveragingResult():
+      mean(0),
+      std_dev(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.real = this->mean;
+      *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.real = this->std_dev;
+      *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->std_dev);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.base = 0;
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->mean = u_mean.real;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.base = 0;
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->std_dev = u_std_dev.real;
+      offset += sizeof(this->std_dev);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingResult"; };
+    const char * getMD5(){ return "d5c7decf6df75ffb4367a05c1bcc7612"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/FibonacciAction.h b/rosserial_test/Inc/actionlib_tutorials/FibonacciAction.h
new file mode 100644 (file)
index 0000000..369edc1
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciAction_h
+#define _ROS_actionlib_tutorials_FibonacciAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib_tutorials/FibonacciActionGoal.h"
+#include "actionlib_tutorials/FibonacciActionResult.h"
+#include "actionlib_tutorials/FibonacciActionFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciAction : public ros::Msg
+  {
+    public:
+      typedef actionlib_tutorials::FibonacciActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib_tutorials::FibonacciActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib_tutorials::FibonacciActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    FibonacciAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciAction"; };
+    const char * getMD5(){ return "f59df5767bf7634684781c92598b2406"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/FibonacciActionFeedback.h b/rosserial_test/Inc/actionlib_tutorials/FibonacciActionFeedback.h
new file mode 100644 (file)
index 0000000..313b9ee
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciActionFeedback_h
+#define _ROS_actionlib_tutorials_FibonacciActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/FibonacciFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::FibonacciFeedback _feedback_type;
+      _feedback_type feedback;
+
+    FibonacciActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciActionFeedback"; };
+    const char * getMD5(){ return "73b8497a9f629a31c0020900e4148f07"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/FibonacciActionGoal.h b/rosserial_test/Inc/actionlib_tutorials/FibonacciActionGoal.h
new file mode 100644 (file)
index 0000000..61a38d0
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciActionGoal_h
+#define _ROS_actionlib_tutorials_FibonacciActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib_tutorials/FibonacciGoal.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib_tutorials::FibonacciGoal _goal_type;
+      _goal_type goal;
+
+    FibonacciActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciActionGoal"; };
+    const char * getMD5(){ return "006871c7fa1d0e3d5fe2226bf17b2a94"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/FibonacciActionResult.h b/rosserial_test/Inc/actionlib_tutorials/FibonacciActionResult.h
new file mode 100644 (file)
index 0000000..adf0e5d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciActionResult_h
+#define _ROS_actionlib_tutorials_FibonacciActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/FibonacciResult.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::FibonacciResult _result_type;
+      _result_type result;
+
+    FibonacciActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciActionResult"; };
+    const char * getMD5(){ return "bee73a9fe29ae25e966e105f5553dd03"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/FibonacciFeedback.h b/rosserial_test/Inc/actionlib_tutorials/FibonacciFeedback.h
new file mode 100644 (file)
index 0000000..4231ed1
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciFeedback_h
+#define _ROS_actionlib_tutorials_FibonacciFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciFeedback : public ros::Msg
+  {
+    public:
+      uint32_t sequence_length;
+      typedef int32_t _sequence_type;
+      _sequence_type st_sequence;
+      _sequence_type * sequence;
+
+    FibonacciFeedback():
+      sequence_length(0), sequence(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence_length);
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sequencei;
+      u_sequencei.real = this->sequence[i];
+      *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->sequence_length);
+      if(sequence_lengthT > sequence_length)
+        this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t));
+      sequence_length = sequence_lengthT;
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_sequence;
+      u_st_sequence.base = 0;
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_sequence = u_st_sequence.real;
+      offset += sizeof(this->st_sequence);
+        memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciFeedback"; };
+    const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/FibonacciGoal.h b/rosserial_test/Inc/actionlib_tutorials/FibonacciGoal.h
new file mode 100644 (file)
index 0000000..a4b05cc
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciGoal_h
+#define _ROS_actionlib_tutorials_FibonacciGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _order_type;
+      _order_type order;
+
+    FibonacciGoal():
+      order(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_order;
+      u_order.real = this->order;
+      *(outbuffer + offset + 0) = (u_order.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_order.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_order.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_order.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->order);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_order;
+      u_order.base = 0;
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->order = u_order.real;
+      offset += sizeof(this->order);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciGoal"; };
+    const char * getMD5(){ return "6889063349a00b249bd1661df429d822"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/actionlib_tutorials/FibonacciResult.h b/rosserial_test/Inc/actionlib_tutorials/FibonacciResult.h
new file mode 100644 (file)
index 0000000..af8f045
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciResult_h
+#define _ROS_actionlib_tutorials_FibonacciResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciResult : public ros::Msg
+  {
+    public:
+      uint32_t sequence_length;
+      typedef int32_t _sequence_type;
+      _sequence_type st_sequence;
+      _sequence_type * sequence;
+
+    FibonacciResult():
+      sequence_length(0), sequence(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence_length);
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sequencei;
+      u_sequencei.real = this->sequence[i];
+      *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->sequence_length);
+      if(sequence_lengthT > sequence_length)
+        this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t));
+      sequence_length = sequence_lengthT;
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_sequence;
+      u_st_sequence.base = 0;
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_sequence = u_st_sequence.real;
+      offset += sizeof(this->st_sequence);
+        memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciResult"; };
+    const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/bond/Constants.h b/rosserial_test/Inc/bond/Constants.h
new file mode 100644 (file)
index 0000000..f9e8422
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_bond_Constants_h
+#define _ROS_bond_Constants_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace bond
+{
+
+  class Constants : public ros::Msg
+  {
+    public:
+      enum { DEAD_PUBLISH_PERIOD =  0.05 };
+      enum { DEFAULT_CONNECT_TIMEOUT =  10.0 };
+      enum { DEFAULT_HEARTBEAT_TIMEOUT =  4.0 };
+      enum { DEFAULT_DISCONNECT_TIMEOUT =  2.0 };
+      enum { DEFAULT_HEARTBEAT_PERIOD =  1.0 };
+      enum { DISABLE_HEARTBEAT_TIMEOUT_PARAM = /bond_disable_heartbeat_timeout };
+
+    Constants()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "bond/Constants"; };
+    const char * getMD5(){ return "6fc594dc1d7bd7919077042712f8c8b0"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/bond/Status.h b/rosserial_test/Inc/bond/Status.h
new file mode 100644 (file)
index 0000000..05be601
--- /dev/null
@@ -0,0 +1,144 @@
+#ifndef _ROS_bond_Status_h
+#define _ROS_bond_Status_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace bond
+{
+
+  class Status : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _id_type;
+      _id_type id;
+      typedef const char* _instance_id_type;
+      _instance_id_type instance_id;
+      typedef bool _active_type;
+      _active_type active;
+      typedef float _heartbeat_timeout_type;
+      _heartbeat_timeout_type heartbeat_timeout;
+      typedef float _heartbeat_period_type;
+      _heartbeat_period_type heartbeat_period;
+
+    Status():
+      header(),
+      id(""),
+      instance_id(""),
+      active(0),
+      heartbeat_timeout(0),
+      heartbeat_period(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_id = strlen(this->id);
+      varToArr(outbuffer + offset, length_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->id, length_id);
+      offset += length_id;
+      uint32_t length_instance_id = strlen(this->instance_id);
+      varToArr(outbuffer + offset, length_instance_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->instance_id, length_instance_id);
+      offset += length_instance_id;
+      union {
+        bool real;
+        uint8_t base;
+      } u_active;
+      u_active.real = this->active;
+      *(outbuffer + offset + 0) = (u_active.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->active);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_timeout;
+      u_heartbeat_timeout.real = this->heartbeat_timeout;
+      *(outbuffer + offset + 0) = (u_heartbeat_timeout.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_heartbeat_timeout.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_heartbeat_timeout.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_heartbeat_timeout.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->heartbeat_timeout);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_period;
+      u_heartbeat_period.real = this->heartbeat_period;
+      *(outbuffer + offset + 0) = (u_heartbeat_period.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_heartbeat_period.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_heartbeat_period.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_heartbeat_period.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->heartbeat_period);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_id;
+      arrToVar(length_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_id-1]=0;
+      this->id = (char *)(inbuffer + offset-1);
+      offset += length_id;
+      uint32_t length_instance_id;
+      arrToVar(length_instance_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_instance_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_instance_id-1]=0;
+      this->instance_id = (char *)(inbuffer + offset-1);
+      offset += length_instance_id;
+      union {
+        bool real;
+        uint8_t base;
+      } u_active;
+      u_active.base = 0;
+      u_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->active = u_active.real;
+      offset += sizeof(this->active);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_timeout;
+      u_heartbeat_timeout.base = 0;
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->heartbeat_timeout = u_heartbeat_timeout.real;
+      offset += sizeof(this->heartbeat_timeout);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_period;
+      u_heartbeat_period.base = 0;
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->heartbeat_period = u_heartbeat_period.real;
+      offset += sizeof(this->heartbeat_period);
+     return offset;
+    }
+
+    const char * getType(){ return "bond/Status"; };
+    const char * getMD5(){ return "eacc84bf5d65b6777d4c50f463dfb9c8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/FollowJointTrajectoryAction.h b/rosserial_test/Inc/control_msgs/FollowJointTrajectoryAction.h
new file mode 100644 (file)
index 0000000..03925a8
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryAction_h
+#define _ROS_control_msgs_FollowJointTrajectoryAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/FollowJointTrajectoryActionGoal.h"
+#include "control_msgs/FollowJointTrajectoryActionResult.h"
+#include "control_msgs/FollowJointTrajectoryActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::FollowJointTrajectoryActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::FollowJointTrajectoryActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::FollowJointTrajectoryActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    FollowJointTrajectoryAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryAction"; };
+    const char * getMD5(){ return "bc4f9b743838566551c0390c65f1a248"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionFeedback.h b/rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionFeedback.h
new file mode 100644 (file)
index 0000000..998b0ee
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h
+#define _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/FollowJointTrajectoryFeedback.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::FollowJointTrajectoryFeedback _feedback_type;
+      _feedback_type feedback;
+
+    FollowJointTrajectoryActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryActionFeedback"; };
+    const char * getMD5(){ return "d8920dc4eae9fc107e00999cce4be641"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionGoal.h b/rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionGoal.h
new file mode 100644 (file)
index 0000000..20cc24b
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryActionGoal_h
+#define _ROS_control_msgs_FollowJointTrajectoryActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/FollowJointTrajectoryGoal.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::FollowJointTrajectoryGoal _goal_type;
+      _goal_type goal;
+
+    FollowJointTrajectoryActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryActionGoal"; };
+    const char * getMD5(){ return "cff5c1d533bf2f82dd0138d57f4304bb"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionResult.h b/rosserial_test/Inc/control_msgs/FollowJointTrajectoryActionResult.h
new file mode 100644 (file)
index 0000000..ba51328
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryActionResult_h
+#define _ROS_control_msgs_FollowJointTrajectoryActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/FollowJointTrajectoryResult.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::FollowJointTrajectoryResult _result_type;
+      _result_type result;
+
+    FollowJointTrajectoryActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryActionResult"; };
+    const char * getMD5(){ return "c4fb3b000dc9da4fd99699380efcc5d9"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/FollowJointTrajectoryFeedback.h b/rosserial_test/Inc/control_msgs/FollowJointTrajectoryFeedback.h
new file mode 100644 (file)
index 0000000..0e9208f
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryFeedback_h
+#define _ROS_control_msgs_FollowJointTrajectoryFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/JointTrajectoryPoint.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      typedef trajectory_msgs::JointTrajectoryPoint _desired_type;
+      _desired_type desired;
+      typedef trajectory_msgs::JointTrajectoryPoint _actual_type;
+      _actual_type actual;
+      typedef trajectory_msgs::JointTrajectoryPoint _error_type;
+      _error_type error;
+
+    FollowJointTrajectoryFeedback():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      desired(),
+      actual(),
+      error()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      offset += this->desired.serialize(outbuffer + offset);
+      offset += this->actual.serialize(outbuffer + offset);
+      offset += this->error.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      offset += this->desired.deserialize(inbuffer + offset);
+      offset += this->actual.deserialize(inbuffer + offset);
+      offset += this->error.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryFeedback"; };
+    const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/FollowJointTrajectoryGoal.h b/rosserial_test/Inc/control_msgs/FollowJointTrajectoryGoal.h
new file mode 100644 (file)
index 0000000..02294ab
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryGoal_h
+#define _ROS_control_msgs_FollowJointTrajectoryGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "trajectory_msgs/JointTrajectory.h"
+#include "control_msgs/JointTolerance.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryGoal : public ros::Msg
+  {
+    public:
+      typedef trajectory_msgs::JointTrajectory _trajectory_type;
+      _trajectory_type trajectory;
+      uint32_t path_tolerance_length;
+      typedef control_msgs::JointTolerance _path_tolerance_type;
+      _path_tolerance_type st_path_tolerance;
+      _path_tolerance_type * path_tolerance;
+      uint32_t goal_tolerance_length;
+      typedef control_msgs::JointTolerance _goal_tolerance_type;
+      _goal_tolerance_type st_goal_tolerance;
+      _goal_tolerance_type * goal_tolerance;
+      typedef ros::Duration _goal_time_tolerance_type;
+      _goal_time_tolerance_type goal_time_tolerance;
+
+    FollowJointTrajectoryGoal():
+      trajectory(),
+      path_tolerance_length(0), path_tolerance(NULL),
+      goal_tolerance_length(0), goal_tolerance(NULL),
+      goal_time_tolerance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->trajectory.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->path_tolerance_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->path_tolerance_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->path_tolerance_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->path_tolerance_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->path_tolerance_length);
+      for( uint32_t i = 0; i < path_tolerance_length; i++){
+      offset += this->path_tolerance[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->goal_tolerance_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->goal_tolerance_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->goal_tolerance_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->goal_tolerance_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal_tolerance_length);
+      for( uint32_t i = 0; i < goal_tolerance_length; i++){
+      offset += this->goal_tolerance[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->goal_time_tolerance.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->goal_time_tolerance.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->goal_time_tolerance.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->goal_time_tolerance.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal_time_tolerance.sec);
+      *(outbuffer + offset + 0) = (this->goal_time_tolerance.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->goal_time_tolerance.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->goal_time_tolerance.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->goal_time_tolerance.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal_time_tolerance.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->trajectory.deserialize(inbuffer + offset);
+      uint32_t path_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->path_tolerance_length);
+      if(path_tolerance_lengthT > path_tolerance_length)
+        this->path_tolerance = (control_msgs::JointTolerance*)realloc(this->path_tolerance, path_tolerance_lengthT * sizeof(control_msgs::JointTolerance));
+      path_tolerance_length = path_tolerance_lengthT;
+      for( uint32_t i = 0; i < path_tolerance_length; i++){
+      offset += this->st_path_tolerance.deserialize(inbuffer + offset);
+        memcpy( &(this->path_tolerance[i]), &(this->st_path_tolerance), sizeof(control_msgs::JointTolerance));
+      }
+      uint32_t goal_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->goal_tolerance_length);
+      if(goal_tolerance_lengthT > goal_tolerance_length)
+        this->goal_tolerance = (control_msgs::JointTolerance*)realloc(this->goal_tolerance, goal_tolerance_lengthT * sizeof(control_msgs::JointTolerance));
+      goal_tolerance_length = goal_tolerance_lengthT;
+      for( uint32_t i = 0; i < goal_tolerance_length; i++){
+      offset += this->st_goal_tolerance.deserialize(inbuffer + offset);
+        memcpy( &(this->goal_tolerance[i]), &(this->st_goal_tolerance), sizeof(control_msgs::JointTolerance));
+      }
+      this->goal_time_tolerance.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->goal_time_tolerance.sec);
+      this->goal_time_tolerance.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->goal_time_tolerance.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryGoal"; };
+    const char * getMD5(){ return "69636787b6ecbde4d61d711979bc7ecb"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/FollowJointTrajectoryResult.h b/rosserial_test/Inc/control_msgs/FollowJointTrajectoryResult.h
new file mode 100644 (file)
index 0000000..43082d0
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryResult_h
+#define _ROS_control_msgs_FollowJointTrajectoryResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryResult : public ros::Msg
+  {
+    public:
+      typedef int32_t _error_code_type;
+      _error_code_type error_code;
+      typedef const char* _error_string_type;
+      _error_string_type error_string;
+      enum { SUCCESSFUL =  0 };
+      enum { INVALID_GOAL =  -1 };
+      enum { INVALID_JOINTS =  -2 };
+      enum { OLD_HEADER_TIMESTAMP =  -3 };
+      enum { PATH_TOLERANCE_VIOLATED =  -4 };
+      enum { GOAL_TOLERANCE_VIOLATED =  -5 };
+
+    FollowJointTrajectoryResult():
+      error_code(0),
+      error_string("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_error_code;
+      u_error_code.real = this->error_code;
+      *(outbuffer + offset + 0) = (u_error_code.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_error_code.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_error_code.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_error_code.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->error_code);
+      uint32_t length_error_string = strlen(this->error_string);
+      varToArr(outbuffer + offset, length_error_string);
+      offset += 4;
+      memcpy(outbuffer + offset, this->error_string, length_error_string);
+      offset += length_error_string;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_error_code;
+      u_error_code.base = 0;
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->error_code = u_error_code.real;
+      offset += sizeof(this->error_code);
+      uint32_t length_error_string;
+      arrToVar(length_error_string, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_error_string; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_error_string-1]=0;
+      this->error_string = (char *)(inbuffer + offset-1);
+      offset += length_error_string;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryResult"; };
+    const char * getMD5(){ return "493383b18409bfb604b4e26c676401d2"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommand.h b/rosserial_test/Inc/control_msgs/GripperCommand.h
new file mode 100644 (file)
index 0000000..19462fa
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef _ROS_control_msgs_GripperCommand_h
+#define _ROS_control_msgs_GripperCommand_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class GripperCommand : public ros::Msg
+  {
+    public:
+      typedef double _position_type;
+      _position_type position;
+      typedef double _max_effort_type;
+      _max_effort_type max_effort;
+
+    GripperCommand():
+      position(0),
+      max_effort(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.real = this->position;
+      *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_effort;
+      u_max_effort.real = this->max_effort;
+      *(outbuffer + offset + 0) = (u_max_effort.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_effort.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_effort.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_effort.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_max_effort.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_max_effort.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_max_effort.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_max_effort.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->max_effort);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.base = 0;
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->position = u_position.real;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_effort;
+      u_max_effort.base = 0;
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->max_effort = u_max_effort.real;
+      offset += sizeof(this->max_effort);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommand"; };
+    const char * getMD5(){ return "680acaff79486f017132a7f198d40f08"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommandAction.h b/rosserial_test/Inc/control_msgs/GripperCommandAction.h
new file mode 100644 (file)
index 0000000..2dcc229
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandAction_h
+#define _ROS_control_msgs_GripperCommandAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/GripperCommandActionGoal.h"
+#include "control_msgs/GripperCommandActionResult.h"
+#include "control_msgs/GripperCommandActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::GripperCommandActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::GripperCommandActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::GripperCommandActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    GripperCommandAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandAction"; };
+    const char * getMD5(){ return "950b2a6ebe831f5d4f4ceaba3d8be01e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommandActionFeedback.h b/rosserial_test/Inc/control_msgs/GripperCommandActionFeedback.h
new file mode 100644 (file)
index 0000000..6053c37
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandActionFeedback_h
+#define _ROS_control_msgs_GripperCommandActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/GripperCommandFeedback.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::GripperCommandFeedback _feedback_type;
+      _feedback_type feedback;
+
+    GripperCommandActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandActionFeedback"; };
+    const char * getMD5(){ return "653dff30c045f5e6ff3feb3409f4558d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommandActionGoal.h b/rosserial_test/Inc/control_msgs/GripperCommandActionGoal.h
new file mode 100644 (file)
index 0000000..6c91889
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandActionGoal_h
+#define _ROS_control_msgs_GripperCommandActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/GripperCommandGoal.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::GripperCommandGoal _goal_type;
+      _goal_type goal;
+
+    GripperCommandActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandActionGoal"; };
+    const char * getMD5(){ return "aa581f648a35ed681db2ec0bf7a82bea"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommandActionResult.h b/rosserial_test/Inc/control_msgs/GripperCommandActionResult.h
new file mode 100644 (file)
index 0000000..780c8e4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandActionResult_h
+#define _ROS_control_msgs_GripperCommandActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/GripperCommandResult.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::GripperCommandResult _result_type;
+      _result_type result;
+
+    GripperCommandActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandActionResult"; };
+    const char * getMD5(){ return "143702cb2df0f163c5283cedc5efc6b6"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommandFeedback.h b/rosserial_test/Inc/control_msgs/GripperCommandFeedback.h
new file mode 100644 (file)
index 0000000..4ffcc36
--- /dev/null
@@ -0,0 +1,138 @@
+#ifndef _ROS_control_msgs_GripperCommandFeedback_h
+#define _ROS_control_msgs_GripperCommandFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandFeedback : public ros::Msg
+  {
+    public:
+      typedef double _position_type;
+      _position_type position;
+      typedef double _effort_type;
+      _effort_type effort;
+      typedef bool _stalled_type;
+      _stalled_type stalled;
+      typedef bool _reached_goal_type;
+      _reached_goal_type reached_goal;
+
+    GripperCommandFeedback():
+      position(0),
+      effort(0),
+      stalled(0),
+      reached_goal(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.real = this->position;
+      *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_effort;
+      u_effort.real = this->effort;
+      *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->effort);
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.real = this->stalled;
+      *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.real = this->reached_goal;
+      *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->reached_goal);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.base = 0;
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->position = u_position.real;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_effort;
+      u_effort.base = 0;
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->effort = u_effort.real;
+      offset += sizeof(this->effort);
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.base = 0;
+      u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->stalled = u_stalled.real;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.base = 0;
+      u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->reached_goal = u_reached_goal.real;
+      offset += sizeof(this->reached_goal);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandFeedback"; };
+    const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommandGoal.h b/rosserial_test/Inc/control_msgs/GripperCommandGoal.h
new file mode 100644 (file)
index 0000000..8703b96
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_control_msgs_GripperCommandGoal_h
+#define _ROS_control_msgs_GripperCommandGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/GripperCommand.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandGoal : public ros::Msg
+  {
+    public:
+      typedef control_msgs::GripperCommand _command_type;
+      _command_type command;
+
+    GripperCommandGoal():
+      command()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->command.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->command.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandGoal"; };
+    const char * getMD5(){ return "86fd82f4ddc48a4cb6856cfa69217e43"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/GripperCommandResult.h b/rosserial_test/Inc/control_msgs/GripperCommandResult.h
new file mode 100644 (file)
index 0000000..0d8c363
--- /dev/null
@@ -0,0 +1,138 @@
+#ifndef _ROS_control_msgs_GripperCommandResult_h
+#define _ROS_control_msgs_GripperCommandResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandResult : public ros::Msg
+  {
+    public:
+      typedef double _position_type;
+      _position_type position;
+      typedef double _effort_type;
+      _effort_type effort;
+      typedef bool _stalled_type;
+      _stalled_type stalled;
+      typedef bool _reached_goal_type;
+      _reached_goal_type reached_goal;
+
+    GripperCommandResult():
+      position(0),
+      effort(0),
+      stalled(0),
+      reached_goal(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.real = this->position;
+      *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_effort;
+      u_effort.real = this->effort;
+      *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->effort);
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.real = this->stalled;
+      *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.real = this->reached_goal;
+      *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->reached_goal);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.base = 0;
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->position = u_position.real;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_effort;
+      u_effort.base = 0;
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->effort = u_effort.real;
+      offset += sizeof(this->effort);
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.base = 0;
+      u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->stalled = u_stalled.real;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.base = 0;
+      u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->reached_goal = u_reached_goal.real;
+      offset += sizeof(this->reached_goal);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandResult"; };
+    const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointControllerState.h b/rosserial_test/Inc/control_msgs/JointControllerState.h
new file mode 100644 (file)
index 0000000..0cb6c1e
--- /dev/null
@@ -0,0 +1,382 @@
+#ifndef _ROS_control_msgs_JointControllerState_h
+#define _ROS_control_msgs_JointControllerState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace control_msgs
+{
+
+  class JointControllerState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef double _set_point_type;
+      _set_point_type set_point;
+      typedef double _process_value_type;
+      _process_value_type process_value;
+      typedef double _process_value_dot_type;
+      _process_value_dot_type process_value_dot;
+      typedef double _error_type;
+      _error_type error;
+      typedef double _time_step_type;
+      _time_step_type time_step;
+      typedef double _command_type;
+      _command_type command;
+      typedef double _p_type;
+      _p_type p;
+      typedef double _i_type;
+      _i_type i;
+      typedef double _d_type;
+      _d_type d;
+      typedef double _i_clamp_type;
+      _i_clamp_type i_clamp;
+      typedef bool _antiwindup_type;
+      _antiwindup_type antiwindup;
+
+    JointControllerState():
+      header(),
+      set_point(0),
+      process_value(0),
+      process_value_dot(0),
+      error(0),
+      time_step(0),
+      command(0),
+      p(0),
+      i(0),
+      d(0),
+      i_clamp(0),
+      antiwindup(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_set_point;
+      u_set_point.real = this->set_point;
+      *(outbuffer + offset + 0) = (u_set_point.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_set_point.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_set_point.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_set_point.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_set_point.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_set_point.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_set_point.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_set_point.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->set_point);
+      union {
+        double real;
+        uint64_t base;
+      } u_process_value;
+      u_process_value.real = this->process_value;
+      *(outbuffer + offset + 0) = (u_process_value.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_process_value.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_process_value.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_process_value.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_process_value.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_process_value.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_process_value.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_process_value.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->process_value);
+      union {
+        double real;
+        uint64_t base;
+      } u_process_value_dot;
+      u_process_value_dot.real = this->process_value_dot;
+      *(outbuffer + offset + 0) = (u_process_value_dot.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_process_value_dot.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_process_value_dot.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_process_value_dot.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_process_value_dot.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_process_value_dot.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_process_value_dot.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_process_value_dot.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->process_value_dot);
+      union {
+        double real;
+        uint64_t base;
+      } u_error;
+      u_error.real = this->error;
+      *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->error);
+      union {
+        double real;
+        uint64_t base;
+      } u_time_step;
+      u_time_step.real = this->time_step;
+      *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->time_step);
+      union {
+        double real;
+        uint64_t base;
+      } u_command;
+      u_command.real = this->command;
+      *(outbuffer + offset + 0) = (u_command.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_command.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_command.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_command.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_command.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_command.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_command.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_command.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->command);
+      union {
+        double real;
+        uint64_t base;
+      } u_p;
+      u_p.real = this->p;
+      *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->p);
+      union {
+        double real;
+        uint64_t base;
+      } u_i;
+      u_i.real = this->i;
+      *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i);
+      union {
+        double real;
+        uint64_t base;
+      } u_d;
+      u_d.real = this->d;
+      *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->d);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_clamp;
+      u_i_clamp.real = this->i_clamp;
+      *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i_clamp);
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.real = this->antiwindup;
+      *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->antiwindup);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_set_point;
+      u_set_point.base = 0;
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->set_point = u_set_point.real;
+      offset += sizeof(this->set_point);
+      union {
+        double real;
+        uint64_t base;
+      } u_process_value;
+      u_process_value.base = 0;
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->process_value = u_process_value.real;
+      offset += sizeof(this->process_value);
+      union {
+        double real;
+        uint64_t base;
+      } u_process_value_dot;
+      u_process_value_dot.base = 0;
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->process_value_dot = u_process_value_dot.real;
+      offset += sizeof(this->process_value_dot);
+      union {
+        double real;
+        uint64_t base;
+      } u_error;
+      u_error.base = 0;
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->error = u_error.real;
+      offset += sizeof(this->error);
+      union {
+        double real;
+        uint64_t base;
+      } u_time_step;
+      u_time_step.base = 0;
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->time_step = u_time_step.real;
+      offset += sizeof(this->time_step);
+      union {
+        double real;
+        uint64_t base;
+      } u_command;
+      u_command.base = 0;
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_command.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->command = u_command.real;
+      offset += sizeof(this->command);
+      union {
+        double real;
+        uint64_t base;
+      } u_p;
+      u_p.base = 0;
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->p = u_p.real;
+      offset += sizeof(this->p);
+      union {
+        double real;
+        uint64_t base;
+      } u_i;
+      u_i.base = 0;
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i = u_i.real;
+      offset += sizeof(this->i);
+      union {
+        double real;
+        uint64_t base;
+      } u_d;
+      u_d.base = 0;
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->d = u_d.real;
+      offset += sizeof(this->d);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_clamp;
+      u_i_clamp.base = 0;
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i_clamp = u_i_clamp.real;
+      offset += sizeof(this->i_clamp);
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.base = 0;
+      u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->antiwindup = u_antiwindup.real;
+      offset += sizeof(this->antiwindup);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointControllerState"; };
+    const char * getMD5(){ return "987ad85e4756f3aef7f1e5e7fe0595d1"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointJog.h b/rosserial_test/Inc/control_msgs/JointJog.h
new file mode 100644 (file)
index 0000000..191210e
--- /dev/null
@@ -0,0 +1,217 @@
+#ifndef _ROS_control_msgs_JointJog_h
+#define _ROS_control_msgs_JointJog_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace control_msgs
+{
+
+  class JointJog : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t displacements_length;
+      typedef double _displacements_type;
+      _displacements_type st_displacements;
+      _displacements_type * displacements;
+      uint32_t velocities_length;
+      typedef double _velocities_type;
+      _velocities_type st_velocities;
+      _velocities_type * velocities;
+      typedef double _duration_type;
+      _duration_type duration;
+
+    JointJog():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      displacements_length(0), displacements(NULL),
+      velocities_length(0), velocities(NULL),
+      duration(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->displacements_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->displacements_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->displacements_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->displacements_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->displacements_length);
+      for( uint32_t i = 0; i < displacements_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_displacementsi;
+      u_displacementsi.real = this->displacements[i];
+      *(outbuffer + offset + 0) = (u_displacementsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_displacementsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_displacementsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_displacementsi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_displacementsi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_displacementsi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_displacementsi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_displacementsi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->displacements[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocities_length);
+      for( uint32_t i = 0; i < velocities_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_velocitiesi;
+      u_velocitiesi.real = this->velocities[i];
+      *(outbuffer + offset + 0) = (u_velocitiesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_velocitiesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_velocitiesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_velocitiesi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_velocitiesi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_velocitiesi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_velocitiesi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_velocitiesi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->velocities[i]);
+      }
+      union {
+        double real;
+        uint64_t base;
+      } u_duration;
+      u_duration.real = this->duration;
+      *(outbuffer + offset + 0) = (u_duration.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_duration.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_duration.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_duration.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_duration.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_duration.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_duration.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_duration.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->duration);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t displacements_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      displacements_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      displacements_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      displacements_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->displacements_length);
+      if(displacements_lengthT > displacements_length)
+        this->displacements = (double*)realloc(this->displacements, displacements_lengthT * sizeof(double));
+      displacements_length = displacements_lengthT;
+      for( uint32_t i = 0; i < displacements_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_displacements;
+      u_st_displacements.base = 0;
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_displacements.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_displacements = u_st_displacements.real;
+      offset += sizeof(this->st_displacements);
+        memcpy( &(this->displacements[i]), &(this->st_displacements), sizeof(double));
+      }
+      uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocities_length);
+      if(velocities_lengthT > velocities_length)
+        this->velocities = (double*)realloc(this->velocities, velocities_lengthT * sizeof(double));
+      velocities_length = velocities_lengthT;
+      for( uint32_t i = 0; i < velocities_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_velocities;
+      u_st_velocities.base = 0;
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_velocities = u_st_velocities.real;
+      offset += sizeof(this->st_velocities);
+        memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(double));
+      }
+      union {
+        double real;
+        uint64_t base;
+      } u_duration;
+      u_duration.base = 0;
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_duration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->duration = u_duration.real;
+      offset += sizeof(this->duration);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointJog"; };
+    const char * getMD5(){ return "1685da700c8c2e1254afc92a5fb89c96"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTolerance.h b/rosserial_test/Inc/control_msgs/JointTolerance.h
new file mode 100644 (file)
index 0000000..5c388f2
--- /dev/null
@@ -0,0 +1,151 @@
+#ifndef _ROS_control_msgs_JointTolerance_h
+#define _ROS_control_msgs_JointTolerance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class JointTolerance : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef double _position_type;
+      _position_type position;
+      typedef double _velocity_type;
+      _velocity_type velocity;
+      typedef double _acceleration_type;
+      _acceleration_type acceleration;
+
+    JointTolerance():
+      name(""),
+      position(0),
+      velocity(0),
+      acceleration(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.real = this->position;
+      *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_velocity;
+      u_velocity.real = this->velocity;
+      *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->velocity);
+      union {
+        double real;
+        uint64_t base;
+      } u_acceleration;
+      u_acceleration.real = this->acceleration;
+      *(outbuffer + offset + 0) = (u_acceleration.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_acceleration.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_acceleration.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_acceleration.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_acceleration.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_acceleration.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_acceleration.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_acceleration.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->acceleration);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.base = 0;
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->position = u_position.real;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_velocity;
+      u_velocity.base = 0;
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->velocity = u_velocity.real;
+      offset += sizeof(this->velocity);
+      union {
+        double real;
+        uint64_t base;
+      } u_acceleration;
+      u_acceleration.base = 0;
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->acceleration = u_acceleration.real;
+      offset += sizeof(this->acceleration);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTolerance"; };
+    const char * getMD5(){ return "f544fe9c16cf04547e135dd6063ff5be"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryAction.h b/rosserial_test/Inc/control_msgs/JointTrajectoryAction.h
new file mode 100644 (file)
index 0000000..0a71a64
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryAction_h
+#define _ROS_control_msgs_JointTrajectoryAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/JointTrajectoryActionGoal.h"
+#include "control_msgs/JointTrajectoryActionResult.h"
+#include "control_msgs/JointTrajectoryActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::JointTrajectoryActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::JointTrajectoryActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::JointTrajectoryActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    JointTrajectoryAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryAction"; };
+    const char * getMD5(){ return "a04ba3ee8f6a2d0985a6aeaf23d9d7ad"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryActionFeedback.h b/rosserial_test/Inc/control_msgs/JointTrajectoryActionFeedback.h
new file mode 100644 (file)
index 0000000..e8f5be4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryActionFeedback_h
+#define _ROS_control_msgs_JointTrajectoryActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/JointTrajectoryFeedback.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::JointTrajectoryFeedback _feedback_type;
+      _feedback_type feedback;
+
+    JointTrajectoryActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryActionGoal.h b/rosserial_test/Inc/control_msgs/JointTrajectoryActionGoal.h
new file mode 100644 (file)
index 0000000..268d21d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryActionGoal_h
+#define _ROS_control_msgs_JointTrajectoryActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/JointTrajectoryGoal.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::JointTrajectoryGoal _goal_type;
+      _goal_type goal;
+
+    JointTrajectoryActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryActionGoal"; };
+    const char * getMD5(){ return "a99e83ef6185f9fdd7693efe99623a86"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryActionResult.h b/rosserial_test/Inc/control_msgs/JointTrajectoryActionResult.h
new file mode 100644 (file)
index 0000000..41cb6b4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryActionResult_h
+#define _ROS_control_msgs_JointTrajectoryActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/JointTrajectoryResult.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::JointTrajectoryResult _result_type;
+      _result_type result;
+
+    JointTrajectoryActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryActionResult"; };
+    const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryControllerState.h b/rosserial_test/Inc/control_msgs/JointTrajectoryControllerState.h
new file mode 100644 (file)
index 0000000..cdb3128
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef _ROS_control_msgs_JointTrajectoryControllerState_h
+#define _ROS_control_msgs_JointTrajectoryControllerState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/JointTrajectoryPoint.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryControllerState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      typedef trajectory_msgs::JointTrajectoryPoint _desired_type;
+      _desired_type desired;
+      typedef trajectory_msgs::JointTrajectoryPoint _actual_type;
+      _actual_type actual;
+      typedef trajectory_msgs::JointTrajectoryPoint _error_type;
+      _error_type error;
+
+    JointTrajectoryControllerState():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      desired(),
+      actual(),
+      error()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      offset += this->desired.serialize(outbuffer + offset);
+      offset += this->actual.serialize(outbuffer + offset);
+      offset += this->error.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      offset += this->desired.deserialize(inbuffer + offset);
+      offset += this->actual.deserialize(inbuffer + offset);
+      offset += this->error.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryControllerState"; };
+    const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryFeedback.h b/rosserial_test/Inc/control_msgs/JointTrajectoryFeedback.h
new file mode 100644 (file)
index 0000000..0f84732
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_JointTrajectoryFeedback_h
+#define _ROS_control_msgs_JointTrajectoryFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryFeedback : public ros::Msg
+  {
+    public:
+
+    JointTrajectoryFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryGoal.h b/rosserial_test/Inc/control_msgs/JointTrajectoryGoal.h
new file mode 100644 (file)
index 0000000..8e82c62
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_control_msgs_JointTrajectoryGoal_h
+#define _ROS_control_msgs_JointTrajectoryGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "trajectory_msgs/JointTrajectory.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryGoal : public ros::Msg
+  {
+    public:
+      typedef trajectory_msgs::JointTrajectory _trajectory_type;
+      _trajectory_type trajectory;
+
+    JointTrajectoryGoal():
+      trajectory()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->trajectory.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->trajectory.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryGoal"; };
+    const char * getMD5(){ return "2a0eff76c870e8595636c2a562ca298e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/JointTrajectoryResult.h b/rosserial_test/Inc/control_msgs/JointTrajectoryResult.h
new file mode 100644 (file)
index 0000000..c1bde7f
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_JointTrajectoryResult_h
+#define _ROS_control_msgs_JointTrajectoryResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryResult : public ros::Msg
+  {
+    public:
+
+    JointTrajectoryResult()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryResult"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PidState.h b/rosserial_test/Inc/control_msgs/PidState.h
new file mode 100644 (file)
index 0000000..77cd5ee
--- /dev/null
@@ -0,0 +1,420 @@
+#ifndef _ROS_control_msgs_PidState_h
+#define _ROS_control_msgs_PidState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class PidState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef ros::Duration _timestep_type;
+      _timestep_type timestep;
+      typedef double _error_type;
+      _error_type error;
+      typedef double _error_dot_type;
+      _error_dot_type error_dot;
+      typedef double _p_error_type;
+      _p_error_type p_error;
+      typedef double _i_error_type;
+      _i_error_type i_error;
+      typedef double _d_error_type;
+      _d_error_type d_error;
+      typedef double _p_term_type;
+      _p_term_type p_term;
+      typedef double _i_term_type;
+      _i_term_type i_term;
+      typedef double _d_term_type;
+      _d_term_type d_term;
+      typedef double _i_max_type;
+      _i_max_type i_max;
+      typedef double _i_min_type;
+      _i_min_type i_min;
+      typedef double _output_type;
+      _output_type output;
+
+    PidState():
+      header(),
+      timestep(),
+      error(0),
+      error_dot(0),
+      p_error(0),
+      i_error(0),
+      d_error(0),
+      p_term(0),
+      i_term(0),
+      d_term(0),
+      i_max(0),
+      i_min(0),
+      output(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->timestep.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestep.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestep.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestep.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestep.sec);
+      *(outbuffer + offset + 0) = (this->timestep.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestep.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestep.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestep.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestep.nsec);
+      union {
+        double real;
+        uint64_t base;
+      } u_error;
+      u_error.real = this->error;
+      *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->error);
+      union {
+        double real;
+        uint64_t base;
+      } u_error_dot;
+      u_error_dot.real = this->error_dot;
+      *(outbuffer + offset + 0) = (u_error_dot.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_error_dot.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_error_dot.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_error_dot.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_error_dot.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_error_dot.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_error_dot.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_error_dot.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->error_dot);
+      union {
+        double real;
+        uint64_t base;
+      } u_p_error;
+      u_p_error.real = this->p_error;
+      *(outbuffer + offset + 0) = (u_p_error.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_p_error.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_p_error.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_p_error.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_p_error.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_p_error.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_p_error.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_p_error.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->p_error);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_error;
+      u_i_error.real = this->i_error;
+      *(outbuffer + offset + 0) = (u_i_error.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i_error.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i_error.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i_error.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i_error.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i_error.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i_error.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i_error.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i_error);
+      union {
+        double real;
+        uint64_t base;
+      } u_d_error;
+      u_d_error.real = this->d_error;
+      *(outbuffer + offset + 0) = (u_d_error.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_d_error.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_d_error.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_d_error.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_d_error.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_d_error.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_d_error.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_d_error.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->d_error);
+      union {
+        double real;
+        uint64_t base;
+      } u_p_term;
+      u_p_term.real = this->p_term;
+      *(outbuffer + offset + 0) = (u_p_term.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_p_term.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_p_term.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_p_term.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_p_term.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_p_term.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_p_term.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_p_term.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->p_term);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_term;
+      u_i_term.real = this->i_term;
+      *(outbuffer + offset + 0) = (u_i_term.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i_term.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i_term.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i_term.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i_term.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i_term.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i_term.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i_term.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i_term);
+      union {
+        double real;
+        uint64_t base;
+      } u_d_term;
+      u_d_term.real = this->d_term;
+      *(outbuffer + offset + 0) = (u_d_term.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_d_term.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_d_term.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_d_term.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_d_term.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_d_term.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_d_term.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_d_term.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->d_term);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_max;
+      u_i_max.real = this->i_max;
+      *(outbuffer + offset + 0) = (u_i_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i_max.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i_max.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i_max.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i_max.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i_max.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i_max);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_min;
+      u_i_min.real = this->i_min;
+      *(outbuffer + offset + 0) = (u_i_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i_min.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i_min.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i_min.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i_min.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i_min.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i_min);
+      union {
+        double real;
+        uint64_t base;
+      } u_output;
+      u_output.real = this->output;
+      *(outbuffer + offset + 0) = (u_output.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_output.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_output.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_output.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_output.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_output.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_output.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_output.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->output);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->timestep.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestep.sec);
+      this->timestep.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestep.nsec);
+      union {
+        double real;
+        uint64_t base;
+      } u_error;
+      u_error.base = 0;
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->error = u_error.real;
+      offset += sizeof(this->error);
+      union {
+        double real;
+        uint64_t base;
+      } u_error_dot;
+      u_error_dot.base = 0;
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->error_dot = u_error_dot.real;
+      offset += sizeof(this->error_dot);
+      union {
+        double real;
+        uint64_t base;
+      } u_p_error;
+      u_p_error.base = 0;
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->p_error = u_p_error.real;
+      offset += sizeof(this->p_error);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_error;
+      u_i_error.base = 0;
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i_error = u_i_error.real;
+      offset += sizeof(this->i_error);
+      union {
+        double real;
+        uint64_t base;
+      } u_d_error;
+      u_d_error.base = 0;
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->d_error = u_d_error.real;
+      offset += sizeof(this->d_error);
+      union {
+        double real;
+        uint64_t base;
+      } u_p_term;
+      u_p_term.base = 0;
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->p_term = u_p_term.real;
+      offset += sizeof(this->p_term);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_term;
+      u_i_term.base = 0;
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i_term = u_i_term.real;
+      offset += sizeof(this->i_term);
+      union {
+        double real;
+        uint64_t base;
+      } u_d_term;
+      u_d_term.base = 0;
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->d_term = u_d_term.real;
+      offset += sizeof(this->d_term);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_max;
+      u_i_max.base = 0;
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i_max = u_i_max.real;
+      offset += sizeof(this->i_max);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_min;
+      u_i_min.base = 0;
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i_min = u_i_min.real;
+      offset += sizeof(this->i_min);
+      union {
+        double real;
+        uint64_t base;
+      } u_output;
+      u_output.base = 0;
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_output.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->output = u_output.real;
+      offset += sizeof(this->output);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PidState"; };
+    const char * getMD5(){ return "b138ec00e886c10e73f27e8712252ea6"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PointHeadAction.h b/rosserial_test/Inc/control_msgs/PointHeadAction.h
new file mode 100644 (file)
index 0000000..5ab7b21
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadAction_h
+#define _ROS_control_msgs_PointHeadAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/PointHeadActionGoal.h"
+#include "control_msgs/PointHeadActionResult.h"
+#include "control_msgs/PointHeadActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class PointHeadAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::PointHeadActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::PointHeadActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::PointHeadActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    PointHeadAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadAction"; };
+    const char * getMD5(){ return "7252920f1243de1b741f14f214125371"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PointHeadActionFeedback.h b/rosserial_test/Inc/control_msgs/PointHeadActionFeedback.h
new file mode 100644 (file)
index 0000000..c9f1cdf
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadActionFeedback_h
+#define _ROS_control_msgs_PointHeadActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/PointHeadFeedback.h"
+
+namespace control_msgs
+{
+
+  class PointHeadActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::PointHeadFeedback _feedback_type;
+      _feedback_type feedback;
+
+    PointHeadActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadActionFeedback"; };
+    const char * getMD5(){ return "33c9244957176bbba97dd641119e8460"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PointHeadActionGoal.h b/rosserial_test/Inc/control_msgs/PointHeadActionGoal.h
new file mode 100644 (file)
index 0000000..95b5f4a
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadActionGoal_h
+#define _ROS_control_msgs_PointHeadActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/PointHeadGoal.h"
+
+namespace control_msgs
+{
+
+  class PointHeadActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::PointHeadGoal _goal_type;
+      _goal_type goal;
+
+    PointHeadActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadActionGoal"; };
+    const char * getMD5(){ return "b53a8323d0ba7b310ba17a2d3a82a6b8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PointHeadActionResult.h b/rosserial_test/Inc/control_msgs/PointHeadActionResult.h
new file mode 100644 (file)
index 0000000..15f6e6b
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadActionResult_h
+#define _ROS_control_msgs_PointHeadActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/PointHeadResult.h"
+
+namespace control_msgs
+{
+
+  class PointHeadActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::PointHeadResult _result_type;
+      _result_type result;
+
+    PointHeadActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadActionResult"; };
+    const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PointHeadFeedback.h b/rosserial_test/Inc/control_msgs/PointHeadFeedback.h
new file mode 100644 (file)
index 0000000..9a53ea9
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_control_msgs_PointHeadFeedback_h
+#define _ROS_control_msgs_PointHeadFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class PointHeadFeedback : public ros::Msg
+  {
+    public:
+      typedef double _pointing_angle_error_type;
+      _pointing_angle_error_type pointing_angle_error;
+
+    PointHeadFeedback():
+      pointing_angle_error(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_pointing_angle_error;
+      u_pointing_angle_error.real = this->pointing_angle_error;
+      *(outbuffer + offset + 0) = (u_pointing_angle_error.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_pointing_angle_error.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_pointing_angle_error.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_pointing_angle_error.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_pointing_angle_error.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_pointing_angle_error.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_pointing_angle_error.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_pointing_angle_error.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->pointing_angle_error);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_pointing_angle_error;
+      u_pointing_angle_error.base = 0;
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->pointing_angle_error = u_pointing_angle_error.real;
+      offset += sizeof(this->pointing_angle_error);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadFeedback"; };
+    const char * getMD5(){ return "cce80d27fd763682da8805a73316cab4"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PointHeadGoal.h b/rosserial_test/Inc/control_msgs/PointHeadGoal.h
new file mode 100644 (file)
index 0000000..57669f6
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_control_msgs_PointHeadGoal_h
+#define _ROS_control_msgs_PointHeadGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/PointStamped.h"
+#include "geometry_msgs/Vector3.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class PointHeadGoal : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::PointStamped _target_type;
+      _target_type target;
+      typedef geometry_msgs::Vector3 _pointing_axis_type;
+      _pointing_axis_type pointing_axis;
+      typedef const char* _pointing_frame_type;
+      _pointing_frame_type pointing_frame;
+      typedef ros::Duration _min_duration_type;
+      _min_duration_type min_duration;
+      typedef double _max_velocity_type;
+      _max_velocity_type max_velocity;
+
+    PointHeadGoal():
+      target(),
+      pointing_axis(),
+      pointing_frame(""),
+      min_duration(),
+      max_velocity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->target.serialize(outbuffer + offset);
+      offset += this->pointing_axis.serialize(outbuffer + offset);
+      uint32_t length_pointing_frame = strlen(this->pointing_frame);
+      varToArr(outbuffer + offset, length_pointing_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->pointing_frame, length_pointing_frame);
+      offset += length_pointing_frame;
+      *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.sec);
+      *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.nsec);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_velocity;
+      u_max_velocity.real = this->max_velocity;
+      *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->max_velocity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->target.deserialize(inbuffer + offset);
+      offset += this->pointing_axis.deserialize(inbuffer + offset);
+      uint32_t length_pointing_frame;
+      arrToVar(length_pointing_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_pointing_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_pointing_frame-1]=0;
+      this->pointing_frame = (char *)(inbuffer + offset-1);
+      offset += length_pointing_frame;
+      this->min_duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.sec);
+      this->min_duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.nsec);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_velocity;
+      u_max_velocity.base = 0;
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->max_velocity = u_max_velocity.real;
+      offset += sizeof(this->max_velocity);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadGoal"; };
+    const char * getMD5(){ return "8b92b1cd5e06c8a94c917dc3209a4c1d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/PointHeadResult.h b/rosserial_test/Inc/control_msgs/PointHeadResult.h
new file mode 100644 (file)
index 0000000..9aa28f5
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_PointHeadResult_h
+#define _ROS_control_msgs_PointHeadResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class PointHeadResult : public ros::Msg
+  {
+    public:
+
+    PointHeadResult()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadResult"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/QueryCalibrationState.h b/rosserial_test/Inc/control_msgs/QueryCalibrationState.h
new file mode 100644 (file)
index 0000000..0fd1a66
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_SERVICE_QueryCalibrationState_h
+#define _ROS_SERVICE_QueryCalibrationState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+static const char QUERYCALIBRATIONSTATE[] = "control_msgs/QueryCalibrationState";
+
+  class QueryCalibrationStateRequest : public ros::Msg
+  {
+    public:
+
+    QueryCalibrationStateRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return QUERYCALIBRATIONSTATE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class QueryCalibrationStateResponse : public ros::Msg
+  {
+    public:
+      typedef bool _is_calibrated_type;
+      _is_calibrated_type is_calibrated;
+
+    QueryCalibrationStateResponse():
+      is_calibrated(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_calibrated;
+      u_is_calibrated.real = this->is_calibrated;
+      *(outbuffer + offset + 0) = (u_is_calibrated.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_calibrated);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_calibrated;
+      u_is_calibrated.base = 0;
+      u_is_calibrated.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_calibrated = u_is_calibrated.real;
+      offset += sizeof(this->is_calibrated);
+     return offset;
+    }
+
+    const char * getType(){ return QUERYCALIBRATIONSTATE; };
+    const char * getMD5(){ return "28af3beedcb84986b8e470dc5470507d"; };
+
+  };
+
+  class QueryCalibrationState {
+    public:
+    typedef QueryCalibrationStateRequest Request;
+    typedef QueryCalibrationStateResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/QueryTrajectoryState.h b/rosserial_test/Inc/control_msgs/QueryTrajectoryState.h
new file mode 100644 (file)
index 0000000..aef19a8
--- /dev/null
@@ -0,0 +1,287 @@
+#ifndef _ROS_SERVICE_QueryTrajectoryState_h
+#define _ROS_SERVICE_QueryTrajectoryState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace control_msgs
+{
+
+static const char QUERYTRAJECTORYSTATE[] = "control_msgs/QueryTrajectoryState";
+
+  class QueryTrajectoryStateRequest : public ros::Msg
+  {
+    public:
+      typedef ros::Time _time_type;
+      _time_type time;
+
+    QueryTrajectoryStateRequest():
+      time()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time.sec);
+      *(outbuffer + offset + 0) = (this->time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time.sec);
+      this->time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return QUERYTRAJECTORYSTATE; };
+    const char * getMD5(){ return "556a4fb76023a469987922359d08a844"; };
+
+  };
+
+  class QueryTrajectoryStateResponse : public ros::Msg
+  {
+    public:
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t position_length;
+      typedef double _position_type;
+      _position_type st_position;
+      _position_type * position;
+      uint32_t velocity_length;
+      typedef double _velocity_type;
+      _velocity_type st_velocity;
+      _velocity_type * velocity;
+      uint32_t acceleration_length;
+      typedef double _acceleration_type;
+      _acceleration_type st_acceleration;
+      _acceleration_type * acceleration;
+
+    QueryTrajectoryStateResponse():
+      name_length(0), name(NULL),
+      position_length(0), position(NULL),
+      velocity_length(0), velocity(NULL),
+      acceleration_length(0), acceleration(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->position_length);
+      for( uint32_t i = 0; i < position_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_positioni;
+      u_positioni.real = this->position[i];
+      *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocity_length);
+      for( uint32_t i = 0; i < velocity_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_velocityi;
+      u_velocityi.real = this->velocity[i];
+      *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->velocity[i]);
+      }
+      *(outbuffer + offset + 0) = (this->acceleration_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->acceleration_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->acceleration_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->acceleration_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->acceleration_length);
+      for( uint32_t i = 0; i < acceleration_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_accelerationi;
+      u_accelerationi.real = this->acceleration[i];
+      *(outbuffer + offset + 0) = (u_accelerationi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_accelerationi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_accelerationi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_accelerationi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_accelerationi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_accelerationi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_accelerationi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_accelerationi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->acceleration[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->position_length);
+      if(position_lengthT > position_length)
+        this->position = (double*)realloc(this->position, position_lengthT * sizeof(double));
+      position_length = position_lengthT;
+      for( uint32_t i = 0; i < position_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_position;
+      u_st_position.base = 0;
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_position = u_st_position.real;
+      offset += sizeof(this->st_position);
+        memcpy( &(this->position[i]), &(this->st_position), sizeof(double));
+      }
+      uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocity_length);
+      if(velocity_lengthT > velocity_length)
+        this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double));
+      velocity_length = velocity_lengthT;
+      for( uint32_t i = 0; i < velocity_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_velocity;
+      u_st_velocity.base = 0;
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_velocity = u_st_velocity.real;
+      offset += sizeof(this->st_velocity);
+        memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double));
+      }
+      uint32_t acceleration_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->acceleration_length);
+      if(acceleration_lengthT > acceleration_length)
+        this->acceleration = (double*)realloc(this->acceleration, acceleration_lengthT * sizeof(double));
+      acceleration_length = acceleration_lengthT;
+      for( uint32_t i = 0; i < acceleration_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_acceleration;
+      u_st_acceleration.base = 0;
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_acceleration = u_st_acceleration.real;
+      offset += sizeof(this->st_acceleration);
+        memcpy( &(this->acceleration[i]), &(this->st_acceleration), sizeof(double));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return QUERYTRAJECTORYSTATE; };
+    const char * getMD5(){ return "1f1a6554ad060f44d013e71868403c1a"; };
+
+  };
+
+  class QueryTrajectoryState {
+    public:
+    typedef QueryTrajectoryStateRequest Request;
+    typedef QueryTrajectoryStateResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/SingleJointPositionAction.h b/rosserial_test/Inc/control_msgs/SingleJointPositionAction.h
new file mode 100644 (file)
index 0000000..8858a51
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionAction_h
+#define _ROS_control_msgs_SingleJointPositionAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/SingleJointPositionActionGoal.h"
+#include "control_msgs/SingleJointPositionActionResult.h"
+#include "control_msgs/SingleJointPositionActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::SingleJointPositionActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::SingleJointPositionActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::SingleJointPositionActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    SingleJointPositionAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionAction"; };
+    const char * getMD5(){ return "c4a786b7d53e5d0983decf967a5a779e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/SingleJointPositionActionFeedback.h b/rosserial_test/Inc/control_msgs/SingleJointPositionActionFeedback.h
new file mode 100644 (file)
index 0000000..8bb14c1
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionActionFeedback_h
+#define _ROS_control_msgs_SingleJointPositionActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/SingleJointPositionFeedback.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::SingleJointPositionFeedback _feedback_type;
+      _feedback_type feedback;
+
+    SingleJointPositionActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionActionFeedback"; };
+    const char * getMD5(){ return "3503b7cf8972f90d245850a5d8796cfa"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/SingleJointPositionActionGoal.h b/rosserial_test/Inc/control_msgs/SingleJointPositionActionGoal.h
new file mode 100644 (file)
index 0000000..a5d9eb4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionActionGoal_h
+#define _ROS_control_msgs_SingleJointPositionActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/SingleJointPositionGoal.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::SingleJointPositionGoal _goal_type;
+      _goal_type goal;
+
+    SingleJointPositionActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionActionGoal"; };
+    const char * getMD5(){ return "4b0d3d091471663e17749c1d0db90f61"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/SingleJointPositionActionResult.h b/rosserial_test/Inc/control_msgs/SingleJointPositionActionResult.h
new file mode 100644 (file)
index 0000000..aa98021
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionActionResult_h
+#define _ROS_control_msgs_SingleJointPositionActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/SingleJointPositionResult.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::SingleJointPositionResult _result_type;
+      _result_type result;
+
+    SingleJointPositionActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionActionResult"; };
+    const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/SingleJointPositionFeedback.h b/rosserial_test/Inc/control_msgs/SingleJointPositionFeedback.h
new file mode 100644 (file)
index 0000000..37b496f
--- /dev/null
@@ -0,0 +1,140 @@
+#ifndef _ROS_control_msgs_SingleJointPositionFeedback_h
+#define _ROS_control_msgs_SingleJointPositionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef double _position_type;
+      _position_type position;
+      typedef double _velocity_type;
+      _velocity_type velocity;
+      typedef double _error_type;
+      _error_type error;
+
+    SingleJointPositionFeedback():
+      header(),
+      position(0),
+      velocity(0),
+      error(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.real = this->position;
+      *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_velocity;
+      u_velocity.real = this->velocity;
+      *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->velocity);
+      union {
+        double real;
+        uint64_t base;
+      } u_error;
+      u_error.real = this->error;
+      *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->error);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.base = 0;
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->position = u_position.real;
+      offset += sizeof(this->position);
+      union {
+        double real;
+        uint64_t base;
+      } u_velocity;
+      u_velocity.base = 0;
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->velocity = u_velocity.real;
+      offset += sizeof(this->velocity);
+      union {
+        double real;
+        uint64_t base;
+      } u_error;
+      u_error.base = 0;
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->error = u_error.real;
+      offset += sizeof(this->error);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionFeedback"; };
+    const char * getMD5(){ return "8cee65610a3d08e0a1bded82f146f1fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/SingleJointPositionGoal.h b/rosserial_test/Inc/control_msgs/SingleJointPositionGoal.h
new file mode 100644 (file)
index 0000000..12c2259
--- /dev/null
@@ -0,0 +1,126 @@
+#ifndef _ROS_control_msgs_SingleJointPositionGoal_h
+#define _ROS_control_msgs_SingleJointPositionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionGoal : public ros::Msg
+  {
+    public:
+      typedef double _position_type;
+      _position_type position;
+      typedef ros::Duration _min_duration_type;
+      _min_duration_type min_duration;
+      typedef double _max_velocity_type;
+      _max_velocity_type max_velocity;
+
+    SingleJointPositionGoal():
+      position(0),
+      min_duration(),
+      max_velocity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.real = this->position;
+      *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position);
+      *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.sec);
+      *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.nsec);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_velocity;
+      u_max_velocity.real = this->max_velocity;
+      *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->max_velocity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_position;
+      u_position.base = 0;
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->position = u_position.real;
+      offset += sizeof(this->position);
+      this->min_duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.sec);
+      this->min_duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.nsec);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_velocity;
+      u_max_velocity.base = 0;
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->max_velocity = u_max_velocity.real;
+      offset += sizeof(this->max_velocity);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionGoal"; };
+    const char * getMD5(){ return "fbaaa562a23a013fd5053e5f72cbb35c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_msgs/SingleJointPositionResult.h b/rosserial_test/Inc/control_msgs/SingleJointPositionResult.h
new file mode 100644 (file)
index 0000000..74f2952
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_SingleJointPositionResult_h
+#define _ROS_control_msgs_SingleJointPositionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionResult : public ros::Msg
+  {
+    public:
+
+    SingleJointPositionResult()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionResult"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/control_toolbox/SetPidGains.h b/rosserial_test/Inc/control_toolbox/SetPidGains.h
new file mode 100644 (file)
index 0000000..709d825
--- /dev/null
@@ -0,0 +1,216 @@
+#ifndef _ROS_SERVICE_SetPidGains_h
+#define _ROS_SERVICE_SetPidGains_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_toolbox
+{
+
+static const char SETPIDGAINS[] = "control_toolbox/SetPidGains";
+
+  class SetPidGainsRequest : public ros::Msg
+  {
+    public:
+      typedef double _p_type;
+      _p_type p;
+      typedef double _i_type;
+      _i_type i;
+      typedef double _d_type;
+      _d_type d;
+      typedef double _i_clamp_type;
+      _i_clamp_type i_clamp;
+      typedef bool _antiwindup_type;
+      _antiwindup_type antiwindup;
+
+    SetPidGainsRequest():
+      p(0),
+      i(0),
+      d(0),
+      i_clamp(0),
+      antiwindup(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_p;
+      u_p.real = this->p;
+      *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->p);
+      union {
+        double real;
+        uint64_t base;
+      } u_i;
+      u_i.real = this->i;
+      *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i);
+      union {
+        double real;
+        uint64_t base;
+      } u_d;
+      u_d.real = this->d;
+      *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->d);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_clamp;
+      u_i_clamp.real = this->i_clamp;
+      *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->i_clamp);
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.real = this->antiwindup;
+      *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->antiwindup);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_p;
+      u_p.base = 0;
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->p = u_p.real;
+      offset += sizeof(this->p);
+      union {
+        double real;
+        uint64_t base;
+      } u_i;
+      u_i.base = 0;
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i = u_i.real;
+      offset += sizeof(this->i);
+      union {
+        double real;
+        uint64_t base;
+      } u_d;
+      u_d.base = 0;
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->d = u_d.real;
+      offset += sizeof(this->d);
+      union {
+        double real;
+        uint64_t base;
+      } u_i_clamp;
+      u_i_clamp.base = 0;
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->i_clamp = u_i_clamp.real;
+      offset += sizeof(this->i_clamp);
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.base = 0;
+      u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->antiwindup = u_antiwindup.real;
+      offset += sizeof(this->antiwindup);
+     return offset;
+    }
+
+    const char * getType(){ return SETPIDGAINS; };
+    const char * getMD5(){ return "4a43159879643e60937bf2893b633607"; };
+
+  };
+
+  class SetPidGainsResponse : public ros::Msg
+  {
+    public:
+
+    SetPidGainsResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETPIDGAINS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetPidGains {
+    public:
+    typedef SetPidGainsRequest Request;
+    typedef SetPidGainsResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/ControllerState.h b/rosserial_test/Inc/controller_manager_msgs/ControllerState.h
new file mode 100644 (file)
index 0000000..d2cedba
--- /dev/null
@@ -0,0 +1,115 @@
+#ifndef _ROS_controller_manager_msgs_ControllerState_h
+#define _ROS_controller_manager_msgs_ControllerState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "controller_manager_msgs/HardwareInterfaceResources.h"
+
+namespace controller_manager_msgs
+{
+
+  class ControllerState : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _state_type;
+      _state_type state;
+      typedef const char* _type_type;
+      _type_type type;
+      uint32_t claimed_resources_length;
+      typedef controller_manager_msgs::HardwareInterfaceResources _claimed_resources_type;
+      _claimed_resources_type st_claimed_resources;
+      _claimed_resources_type * claimed_resources;
+
+    ControllerState():
+      name(""),
+      state(""),
+      type(""),
+      claimed_resources_length(0), claimed_resources(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_state = strlen(this->state);
+      varToArr(outbuffer + offset, length_state);
+      offset += 4;
+      memcpy(outbuffer + offset, this->state, length_state);
+      offset += length_state;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->claimed_resources_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->claimed_resources_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->claimed_resources_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->claimed_resources_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->claimed_resources_length);
+      for( uint32_t i = 0; i < claimed_resources_length; i++){
+      offset += this->claimed_resources[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_state;
+      arrToVar(length_state, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_state; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_state-1]=0;
+      this->state = (char *)(inbuffer + offset-1);
+      offset += length_state;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      uint32_t claimed_resources_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->claimed_resources_length);
+      if(claimed_resources_lengthT > claimed_resources_length)
+        this->claimed_resources = (controller_manager_msgs::HardwareInterfaceResources*)realloc(this->claimed_resources, claimed_resources_lengthT * sizeof(controller_manager_msgs::HardwareInterfaceResources));
+      claimed_resources_length = claimed_resources_lengthT;
+      for( uint32_t i = 0; i < claimed_resources_length; i++){
+      offset += this->st_claimed_resources.deserialize(inbuffer + offset);
+        memcpy( &(this->claimed_resources[i]), &(this->st_claimed_resources), sizeof(controller_manager_msgs::HardwareInterfaceResources));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/ControllerState"; };
+    const char * getMD5(){ return "aeb6b261d97793ab74099a3740245272"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/ControllerStatistics.h b/rosserial_test/Inc/controller_manager_msgs/ControllerStatistics.h
new file mode 100644 (file)
index 0000000..c43b79a
--- /dev/null
@@ -0,0 +1,231 @@
+#ifndef _ROS_controller_manager_msgs_ControllerStatistics_h
+#define _ROS_controller_manager_msgs_ControllerStatistics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "ros/duration.h"
+
+namespace controller_manager_msgs
+{
+
+  class ControllerStatistics : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      typedef ros::Time _timestamp_type;
+      _timestamp_type timestamp;
+      typedef bool _running_type;
+      _running_type running;
+      typedef ros::Duration _max_time_type;
+      _max_time_type max_time;
+      typedef ros::Duration _mean_time_type;
+      _mean_time_type mean_time;
+      typedef ros::Duration _variance_time_type;
+      _variance_time_type variance_time;
+      typedef int32_t _num_control_loop_overruns_type;
+      _num_control_loop_overruns_type num_control_loop_overruns;
+      typedef ros::Time _time_last_control_loop_overrun_type;
+      _time_last_control_loop_overrun_type time_last_control_loop_overrun;
+
+    ControllerStatistics():
+      name(""),
+      type(""),
+      timestamp(),
+      running(0),
+      max_time(),
+      mean_time(),
+      variance_time(),
+      num_control_loop_overruns(0),
+      time_last_control_loop_overrun()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->timestamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestamp.sec);
+      *(outbuffer + offset + 0) = (this->timestamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestamp.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_running;
+      u_running.real = this->running;
+      *(outbuffer + offset + 0) = (u_running.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->running);
+      *(outbuffer + offset + 0) = (this->max_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->max_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->max_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->max_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_time.sec);
+      *(outbuffer + offset + 0) = (this->max_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->max_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->max_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->max_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_time.nsec);
+      *(outbuffer + offset + 0) = (this->mean_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->mean_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->mean_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->mean_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean_time.sec);
+      *(outbuffer + offset + 0) = (this->mean_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->mean_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->mean_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->mean_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean_time.nsec);
+      *(outbuffer + offset + 0) = (this->variance_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->variance_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->variance_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->variance_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->variance_time.sec);
+      *(outbuffer + offset + 0) = (this->variance_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->variance_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->variance_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->variance_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->variance_time.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_num_control_loop_overruns;
+      u_num_control_loop_overruns.real = this->num_control_loop_overruns;
+      *(outbuffer + offset + 0) = (u_num_control_loop_overruns.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_num_control_loop_overruns.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_num_control_loop_overruns.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_num_control_loop_overruns.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->num_control_loop_overruns);
+      *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_last_control_loop_overrun.sec);
+      *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_last_control_loop_overrun.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      this->timestamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestamp.sec);
+      this->timestamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestamp.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_running;
+      u_running.base = 0;
+      u_running.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->running = u_running.real;
+      offset += sizeof(this->running);
+      this->max_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->max_time.sec);
+      this->max_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->max_time.nsec);
+      this->mean_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->mean_time.sec);
+      this->mean_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->mean_time.nsec);
+      this->variance_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->variance_time.sec);
+      this->variance_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->variance_time.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_num_control_loop_overruns;
+      u_num_control_loop_overruns.base = 0;
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->num_control_loop_overruns = u_num_control_loop_overruns.real;
+      offset += sizeof(this->num_control_loop_overruns);
+      this->time_last_control_loop_overrun.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_last_control_loop_overrun.sec);
+      this->time_last_control_loop_overrun.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_last_control_loop_overrun.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/ControllerStatistics"; };
+    const char * getMD5(){ return "697780c372c8d8597a1436d0e2ad3ba8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/ControllersStatistics.h b/rosserial_test/Inc/controller_manager_msgs/ControllersStatistics.h
new file mode 100644 (file)
index 0000000..a01097c
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_controller_manager_msgs_ControllersStatistics_h
+#define _ROS_controller_manager_msgs_ControllersStatistics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "controller_manager_msgs/ControllerStatistics.h"
+
+namespace controller_manager_msgs
+{
+
+  class ControllersStatistics : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t controller_length;
+      typedef controller_manager_msgs::ControllerStatistics _controller_type;
+      _controller_type st_controller;
+      _controller_type * controller;
+
+    ControllersStatistics():
+      header(),
+      controller_length(0), controller(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->controller_length);
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->controller[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->controller_length);
+      if(controller_lengthT > controller_length)
+        this->controller = (controller_manager_msgs::ControllerStatistics*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerStatistics));
+      controller_length = controller_lengthT;
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->st_controller.deserialize(inbuffer + offset);
+        memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerStatistics));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/ControllersStatistics"; };
+    const char * getMD5(){ return "a154c347736773e3700d1719105df29d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/HardwareInterfaceResources.h b/rosserial_test/Inc/controller_manager_msgs/HardwareInterfaceResources.h
new file mode 100644 (file)
index 0000000..84eb396
--- /dev/null
@@ -0,0 +1,92 @@
+#ifndef _ROS_controller_manager_msgs_HardwareInterfaceResources_h
+#define _ROS_controller_manager_msgs_HardwareInterfaceResources_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+  class HardwareInterfaceResources : public ros::Msg
+  {
+    public:
+      typedef const char* _hardware_interface_type;
+      _hardware_interface_type hardware_interface;
+      uint32_t resources_length;
+      typedef char* _resources_type;
+      _resources_type st_resources;
+      _resources_type * resources;
+
+    HardwareInterfaceResources():
+      hardware_interface(""),
+      resources_length(0), resources(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_hardware_interface = strlen(this->hardware_interface);
+      varToArr(outbuffer + offset, length_hardware_interface);
+      offset += 4;
+      memcpy(outbuffer + offset, this->hardware_interface, length_hardware_interface);
+      offset += length_hardware_interface;
+      *(outbuffer + offset + 0) = (this->resources_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->resources_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->resources_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->resources_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->resources_length);
+      for( uint32_t i = 0; i < resources_length; i++){
+      uint32_t length_resourcesi = strlen(this->resources[i]);
+      varToArr(outbuffer + offset, length_resourcesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->resources[i], length_resourcesi);
+      offset += length_resourcesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_hardware_interface;
+      arrToVar(length_hardware_interface, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_hardware_interface; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_hardware_interface-1]=0;
+      this->hardware_interface = (char *)(inbuffer + offset-1);
+      offset += length_hardware_interface;
+      uint32_t resources_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->resources_length);
+      if(resources_lengthT > resources_length)
+        this->resources = (char**)realloc(this->resources, resources_lengthT * sizeof(char*));
+      resources_length = resources_lengthT;
+      for( uint32_t i = 0; i < resources_length; i++){
+      uint32_t length_st_resources;
+      arrToVar(length_st_resources, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_resources; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_resources-1]=0;
+      this->st_resources = (char *)(inbuffer + offset-1);
+      offset += length_st_resources;
+        memcpy( &(this->resources[i]), &(this->st_resources), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/HardwareInterfaceResources"; };
+    const char * getMD5(){ return "f25b55cbf1d1f76e82e5ec9e83f76258"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/ListControllerTypes.h b/rosserial_test/Inc/controller_manager_msgs/ListControllerTypes.h
new file mode 100644 (file)
index 0000000..45097f8
--- /dev/null
@@ -0,0 +1,144 @@
+#ifndef _ROS_SERVICE_ListControllerTypes_h
+#define _ROS_SERVICE_ListControllerTypes_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char LISTCONTROLLERTYPES[] = "controller_manager_msgs/ListControllerTypes";
+
+  class ListControllerTypesRequest : public ros::Msg
+  {
+    public:
+
+    ListControllerTypesRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERTYPES; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class ListControllerTypesResponse : public ros::Msg
+  {
+    public:
+      uint32_t types_length;
+      typedef char* _types_type;
+      _types_type st_types;
+      _types_type * types;
+      uint32_t base_classes_length;
+      typedef char* _base_classes_type;
+      _base_classes_type st_base_classes;
+      _base_classes_type * base_classes;
+
+    ListControllerTypesResponse():
+      types_length(0), types(NULL),
+      base_classes_length(0), base_classes(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->types_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->types_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->types_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->types_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->types_length);
+      for( uint32_t i = 0; i < types_length; i++){
+      uint32_t length_typesi = strlen(this->types[i]);
+      varToArr(outbuffer + offset, length_typesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->types[i], length_typesi);
+      offset += length_typesi;
+      }
+      *(outbuffer + offset + 0) = (this->base_classes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->base_classes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->base_classes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->base_classes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->base_classes_length);
+      for( uint32_t i = 0; i < base_classes_length; i++){
+      uint32_t length_base_classesi = strlen(this->base_classes[i]);
+      varToArr(outbuffer + offset, length_base_classesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->base_classes[i], length_base_classesi);
+      offset += length_base_classesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t types_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      types_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      types_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      types_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->types_length);
+      if(types_lengthT > types_length)
+        this->types = (char**)realloc(this->types, types_lengthT * sizeof(char*));
+      types_length = types_lengthT;
+      for( uint32_t i = 0; i < types_length; i++){
+      uint32_t length_st_types;
+      arrToVar(length_st_types, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_types; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_types-1]=0;
+      this->st_types = (char *)(inbuffer + offset-1);
+      offset += length_st_types;
+        memcpy( &(this->types[i]), &(this->st_types), sizeof(char*));
+      }
+      uint32_t base_classes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->base_classes_length);
+      if(base_classes_lengthT > base_classes_length)
+        this->base_classes = (char**)realloc(this->base_classes, base_classes_lengthT * sizeof(char*));
+      base_classes_length = base_classes_lengthT;
+      for( uint32_t i = 0; i < base_classes_length; i++){
+      uint32_t length_st_base_classes;
+      arrToVar(length_st_base_classes, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_base_classes; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_base_classes-1]=0;
+      this->st_base_classes = (char *)(inbuffer + offset-1);
+      offset += length_st_base_classes;
+        memcpy( &(this->base_classes[i]), &(this->st_base_classes), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERTYPES; };
+    const char * getMD5(){ return "c1d4cd11aefa9f97ba4aeb5b33987f4e"; };
+
+  };
+
+  class ListControllerTypes {
+    public:
+    typedef ListControllerTypesRequest Request;
+    typedef ListControllerTypesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/ListControllers.h b/rosserial_test/Inc/controller_manager_msgs/ListControllers.h
new file mode 100644 (file)
index 0000000..f0d2a5e
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_ListControllers_h
+#define _ROS_SERVICE_ListControllers_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "controller_manager_msgs/ControllerState.h"
+
+namespace controller_manager_msgs
+{
+
+static const char LISTCONTROLLERS[] = "controller_manager_msgs/ListControllers";
+
+  class ListControllersRequest : public ros::Msg
+  {
+    public:
+
+    ListControllersRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class ListControllersResponse : public ros::Msg
+  {
+    public:
+      uint32_t controller_length;
+      typedef controller_manager_msgs::ControllerState _controller_type;
+      _controller_type st_controller;
+      _controller_type * controller;
+
+    ListControllersResponse():
+      controller_length(0), controller(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->controller_length);
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->controller[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->controller_length);
+      if(controller_lengthT > controller_length)
+        this->controller = (controller_manager_msgs::ControllerState*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerState));
+      controller_length = controller_lengthT;
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->st_controller.deserialize(inbuffer + offset);
+        memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerState));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERS; };
+    const char * getMD5(){ return "1341feb2e63fa791f855565d0da950d8"; };
+
+  };
+
+  class ListControllers {
+    public:
+    typedef ListControllersRequest Request;
+    typedef ListControllersResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/LoadController.h b/rosserial_test/Inc/controller_manager_msgs/LoadController.h
new file mode 100644 (file)
index 0000000..98d018f
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_LoadController_h
+#define _ROS_SERVICE_LoadController_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char LOADCONTROLLER[] = "controller_manager_msgs/LoadController";
+
+  class LoadControllerRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    LoadControllerRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return LOADCONTROLLER; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class LoadControllerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    LoadControllerResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return LOADCONTROLLER; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class LoadController {
+    public:
+    typedef LoadControllerRequest Request;
+    typedef LoadControllerResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/ReloadControllerLibraries.h b/rosserial_test/Inc/controller_manager_msgs/ReloadControllerLibraries.h
new file mode 100644 (file)
index 0000000..279de97
--- /dev/null
@@ -0,0 +1,106 @@
+#ifndef _ROS_SERVICE_ReloadControllerLibraries_h
+#define _ROS_SERVICE_ReloadControllerLibraries_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char RELOADCONTROLLERLIBRARIES[] = "controller_manager_msgs/ReloadControllerLibraries";
+
+  class ReloadControllerLibrariesRequest : public ros::Msg
+  {
+    public:
+      typedef bool _force_kill_type;
+      _force_kill_type force_kill;
+
+    ReloadControllerLibrariesRequest():
+      force_kill(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_force_kill;
+      u_force_kill.real = this->force_kill;
+      *(outbuffer + offset + 0) = (u_force_kill.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->force_kill);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_force_kill;
+      u_force_kill.base = 0;
+      u_force_kill.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->force_kill = u_force_kill.real;
+      offset += sizeof(this->force_kill);
+     return offset;
+    }
+
+    const char * getType(){ return RELOADCONTROLLERLIBRARIES; };
+    const char * getMD5(){ return "18442b59be9479097f11c543bddbac62"; };
+
+  };
+
+  class ReloadControllerLibrariesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    ReloadControllerLibrariesResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return RELOADCONTROLLERLIBRARIES; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class ReloadControllerLibraries {
+    public:
+    typedef ReloadControllerLibrariesRequest Request;
+    typedef ReloadControllerLibrariesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/SwitchController.h b/rosserial_test/Inc/controller_manager_msgs/SwitchController.h
new file mode 100644 (file)
index 0000000..9b76c73
--- /dev/null
@@ -0,0 +1,188 @@
+#ifndef _ROS_SERVICE_SwitchController_h
+#define _ROS_SERVICE_SwitchController_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char SWITCHCONTROLLER[] = "controller_manager_msgs/SwitchController";
+
+  class SwitchControllerRequest : public ros::Msg
+  {
+    public:
+      uint32_t start_controllers_length;
+      typedef char* _start_controllers_type;
+      _start_controllers_type st_start_controllers;
+      _start_controllers_type * start_controllers;
+      uint32_t stop_controllers_length;
+      typedef char* _stop_controllers_type;
+      _stop_controllers_type st_stop_controllers;
+      _stop_controllers_type * stop_controllers;
+      typedef int32_t _strictness_type;
+      _strictness_type strictness;
+      enum { BEST_EFFORT = 1 };
+      enum { STRICT = 2 };
+
+    SwitchControllerRequest():
+      start_controllers_length(0), start_controllers(NULL),
+      stop_controllers_length(0), stop_controllers(NULL),
+      strictness(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->start_controllers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_controllers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_controllers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_controllers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_controllers_length);
+      for( uint32_t i = 0; i < start_controllers_length; i++){
+      uint32_t length_start_controllersi = strlen(this->start_controllers[i]);
+      varToArr(outbuffer + offset, length_start_controllersi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->start_controllers[i], length_start_controllersi);
+      offset += length_start_controllersi;
+      }
+      *(outbuffer + offset + 0) = (this->stop_controllers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stop_controllers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stop_controllers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stop_controllers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stop_controllers_length);
+      for( uint32_t i = 0; i < stop_controllers_length; i++){
+      uint32_t length_stop_controllersi = strlen(this->stop_controllers[i]);
+      varToArr(outbuffer + offset, length_stop_controllersi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->stop_controllers[i], length_stop_controllersi);
+      offset += length_stop_controllersi;
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_strictness;
+      u_strictness.real = this->strictness;
+      *(outbuffer + offset + 0) = (u_strictness.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_strictness.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_strictness.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_strictness.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->strictness);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t start_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->start_controllers_length);
+      if(start_controllers_lengthT > start_controllers_length)
+        this->start_controllers = (char**)realloc(this->start_controllers, start_controllers_lengthT * sizeof(char*));
+      start_controllers_length = start_controllers_lengthT;
+      for( uint32_t i = 0; i < start_controllers_length; i++){
+      uint32_t length_st_start_controllers;
+      arrToVar(length_st_start_controllers, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_start_controllers; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_start_controllers-1]=0;
+      this->st_start_controllers = (char *)(inbuffer + offset-1);
+      offset += length_st_start_controllers;
+        memcpy( &(this->start_controllers[i]), &(this->st_start_controllers), sizeof(char*));
+      }
+      uint32_t stop_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->stop_controllers_length);
+      if(stop_controllers_lengthT > stop_controllers_length)
+        this->stop_controllers = (char**)realloc(this->stop_controllers, stop_controllers_lengthT * sizeof(char*));
+      stop_controllers_length = stop_controllers_lengthT;
+      for( uint32_t i = 0; i < stop_controllers_length; i++){
+      uint32_t length_st_stop_controllers;
+      arrToVar(length_st_stop_controllers, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_stop_controllers; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_stop_controllers-1]=0;
+      this->st_stop_controllers = (char *)(inbuffer + offset-1);
+      offset += length_st_stop_controllers;
+        memcpy( &(this->stop_controllers[i]), &(this->st_stop_controllers), sizeof(char*));
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_strictness;
+      u_strictness.base = 0;
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->strictness = u_strictness.real;
+      offset += sizeof(this->strictness);
+     return offset;
+    }
+
+    const char * getType(){ return SWITCHCONTROLLER; };
+    const char * getMD5(){ return "434da54adc434a5af5743ed711fd6ba1"; };
+
+  };
+
+  class SwitchControllerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    SwitchControllerResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return SWITCHCONTROLLER; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class SwitchController {
+    public:
+    typedef SwitchControllerRequest Request;
+    typedef SwitchControllerResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/controller_manager_msgs/UnloadController.h b/rosserial_test/Inc/controller_manager_msgs/UnloadController.h
new file mode 100644 (file)
index 0000000..b8bba74
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_UnloadController_h
+#define _ROS_SERVICE_UnloadController_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char UNLOADCONTROLLER[] = "controller_manager_msgs/UnloadController";
+
+  class UnloadControllerRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    UnloadControllerRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return UNLOADCONTROLLER; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class UnloadControllerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    UnloadControllerResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return UNLOADCONTROLLER; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class UnloadController {
+    public:
+    typedef UnloadControllerRequest Request;
+    typedef UnloadControllerResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/diagnostic_msgs/AddDiagnostics.h b/rosserial_test/Inc/diagnostic_msgs/AddDiagnostics.h
new file mode 100644 (file)
index 0000000..4180098
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef _ROS_SERVICE_AddDiagnostics_h
+#define _ROS_SERVICE_AddDiagnostics_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace diagnostic_msgs
+{
+
+static const char ADDDIAGNOSTICS[] = "diagnostic_msgs/AddDiagnostics";
+
+  class AddDiagnosticsRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _load_namespace_type;
+      _load_namespace_type load_namespace;
+
+    AddDiagnosticsRequest():
+      load_namespace("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_load_namespace = strlen(this->load_namespace);
+      varToArr(outbuffer + offset, length_load_namespace);
+      offset += 4;
+      memcpy(outbuffer + offset, this->load_namespace, length_load_namespace);
+      offset += length_load_namespace;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_load_namespace;
+      arrToVar(length_load_namespace, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_load_namespace; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_load_namespace-1]=0;
+      this->load_namespace = (char *)(inbuffer + offset-1);
+      offset += length_load_namespace;
+     return offset;
+    }
+
+    const char * getType(){ return ADDDIAGNOSTICS; };
+    const char * getMD5(){ return "c26cf6e164288fbc6050d74f838bcdf0"; };
+
+  };
+
+  class AddDiagnosticsResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _message_type;
+      _message_type message;
+
+    AddDiagnosticsResponse():
+      success(0),
+      message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+     return offset;
+    }
+
+    const char * getType(){ return ADDDIAGNOSTICS; };
+    const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; };
+
+  };
+
+  class AddDiagnostics {
+    public:
+    typedef AddDiagnosticsRequest Request;
+    typedef AddDiagnosticsResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/diagnostic_msgs/DiagnosticArray.h b/rosserial_test/Inc/diagnostic_msgs/DiagnosticArray.h
new file mode 100644 (file)
index 0000000..7385337
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_diagnostic_msgs_DiagnosticArray_h
+#define _ROS_diagnostic_msgs_DiagnosticArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "diagnostic_msgs/DiagnosticStatus.h"
+
+namespace diagnostic_msgs
+{
+
+  class DiagnosticArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t status_length;
+      typedef diagnostic_msgs::DiagnosticStatus _status_type;
+      _status_type st_status;
+      _status_type * status;
+
+    DiagnosticArray():
+      header(),
+      status_length(0), status(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->status_length);
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->status[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->status_length);
+      if(status_lengthT > status_length)
+        this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus));
+      status_length = status_lengthT;
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->st_status.deserialize(inbuffer + offset);
+        memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "diagnostic_msgs/DiagnosticArray"; };
+    const char * getMD5(){ return "60810da900de1dd6ddd437c3503511da"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/diagnostic_msgs/DiagnosticStatus.h b/rosserial_test/Inc/diagnostic_msgs/DiagnosticStatus.h
new file mode 100644 (file)
index 0000000..8f7ab02
--- /dev/null
@@ -0,0 +1,137 @@
+#ifndef _ROS_diagnostic_msgs_DiagnosticStatus_h
+#define _ROS_diagnostic_msgs_DiagnosticStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "diagnostic_msgs/KeyValue.h"
+
+namespace diagnostic_msgs
+{
+
+  class DiagnosticStatus : public ros::Msg
+  {
+    public:
+      typedef int8_t _level_type;
+      _level_type level;
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _message_type;
+      _message_type message;
+      typedef const char* _hardware_id_type;
+      _hardware_id_type hardware_id;
+      uint32_t values_length;
+      typedef diagnostic_msgs::KeyValue _values_type;
+      _values_type st_values;
+      _values_type * values;
+      enum { OK = 0 };
+      enum { WARN = 1 };
+      enum { ERROR = 2 };
+      enum { STALE = 3 };
+
+    DiagnosticStatus():
+      level(0),
+      name(""),
+      message(""),
+      hardware_id(""),
+      values_length(0), values(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.real = this->level;
+      *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      uint32_t length_hardware_id = strlen(this->hardware_id);
+      varToArr(outbuffer + offset, length_hardware_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->hardware_id, length_hardware_id);
+      offset += length_hardware_id;
+      *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values_length);
+      for( uint32_t i = 0; i < values_length; i++){
+      offset += this->values[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.base = 0;
+      u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->level = u_level.real;
+      offset += sizeof(this->level);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+      uint32_t length_hardware_id;
+      arrToVar(length_hardware_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_hardware_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_hardware_id-1]=0;
+      this->hardware_id = (char *)(inbuffer + offset-1);
+      offset += length_hardware_id;
+      uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->values_length);
+      if(values_lengthT > values_length)
+        this->values = (diagnostic_msgs::KeyValue*)realloc(this->values, values_lengthT * sizeof(diagnostic_msgs::KeyValue));
+      values_length = values_lengthT;
+      for( uint32_t i = 0; i < values_length; i++){
+      offset += this->st_values.deserialize(inbuffer + offset);
+        memcpy( &(this->values[i]), &(this->st_values), sizeof(diagnostic_msgs::KeyValue));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "diagnostic_msgs/DiagnosticStatus"; };
+    const char * getMD5(){ return "d0ce08bc6e5ba34c7754f563a9cabaf1"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/diagnostic_msgs/KeyValue.h b/rosserial_test/Inc/diagnostic_msgs/KeyValue.h
new file mode 100644 (file)
index 0000000..81c1937
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef _ROS_diagnostic_msgs_KeyValue_h
+#define _ROS_diagnostic_msgs_KeyValue_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace diagnostic_msgs
+{
+
+  class KeyValue : public ros::Msg
+  {
+    public:
+      typedef const char* _key_type;
+      _key_type key;
+      typedef const char* _value_type;
+      _value_type value;
+
+    KeyValue():
+      key(""),
+      value("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_key = strlen(this->key);
+      varToArr(outbuffer + offset, length_key);
+      offset += 4;
+      memcpy(outbuffer + offset, this->key, length_key);
+      offset += length_key;
+      uint32_t length_value = strlen(this->value);
+      varToArr(outbuffer + offset, length_value);
+      offset += 4;
+      memcpy(outbuffer + offset, this->value, length_value);
+      offset += length_value;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_key;
+      arrToVar(length_key, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_key; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_key-1]=0;
+      this->key = (char *)(inbuffer + offset-1);
+      offset += length_key;
+      uint32_t length_value;
+      arrToVar(length_value, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_value; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_value-1]=0;
+      this->value = (char *)(inbuffer + offset-1);
+      offset += length_value;
+     return offset;
+    }
+
+    const char * getType(){ return "diagnostic_msgs/KeyValue"; };
+    const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/diagnostic_msgs/SelfTest.h b/rosserial_test/Inc/diagnostic_msgs/SelfTest.h
new file mode 100644 (file)
index 0000000..6687c6b
--- /dev/null
@@ -0,0 +1,131 @@
+#ifndef _ROS_SERVICE_SelfTest_h
+#define _ROS_SERVICE_SelfTest_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "diagnostic_msgs/DiagnosticStatus.h"
+
+namespace diagnostic_msgs
+{
+
+static const char SELFTEST[] = "diagnostic_msgs/SelfTest";
+
+  class SelfTestRequest : public ros::Msg
+  {
+    public:
+
+    SelfTestRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SELFTEST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SelfTestResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _id_type;
+      _id_type id;
+      typedef int8_t _passed_type;
+      _passed_type passed;
+      uint32_t status_length;
+      typedef diagnostic_msgs::DiagnosticStatus _status_type;
+      _status_type st_status;
+      _status_type * status;
+
+    SelfTestResponse():
+      id(""),
+      passed(0),
+      status_length(0), status(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_id = strlen(this->id);
+      varToArr(outbuffer + offset, length_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->id, length_id);
+      offset += length_id;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_passed;
+      u_passed.real = this->passed;
+      *(outbuffer + offset + 0) = (u_passed.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->passed);
+      *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->status_length);
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->status[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_id;
+      arrToVar(length_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_id-1]=0;
+      this->id = (char *)(inbuffer + offset-1);
+      offset += length_id;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_passed;
+      u_passed.base = 0;
+      u_passed.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->passed = u_passed.real;
+      offset += sizeof(this->passed);
+      uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->status_length);
+      if(status_lengthT > status_length)
+        this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus));
+      status_length = status_lengthT;
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->st_status.deserialize(inbuffer + offset);
+        memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return SELFTEST; };
+    const char * getMD5(){ return "ac21b1bab7ab17546986536c22eb34e9"; };
+
+  };
+
+  class SelfTest {
+    public:
+    typedef SelfTestRequest Request;
+    typedef SelfTestResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/duration.cpp b/rosserial_test/Inc/duration.cpp
new file mode 100644 (file)
index 0000000..d2dfdd6
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <math.h>
+#include "ros/duration.h"
+
+namespace ros
+{
+void normalizeSecNSecSigned(int32_t &sec, int32_t &nsec)
+{
+  int32_t nsec_part = nsec;
+  int32_t sec_part = sec;
+
+  while (nsec_part > 1000000000L)
+  {
+    nsec_part -= 1000000000L;
+    ++sec_part;
+  }
+  while (nsec_part < 0)
+  {
+    nsec_part += 1000000000L;
+    --sec_part;
+  }
+  sec = sec_part;
+  nsec = nsec_part;
+}
+
+Duration& Duration::operator+=(const Duration &rhs)
+{
+  sec += rhs.sec;
+  nsec += rhs.nsec;
+  normalizeSecNSecSigned(sec, nsec);
+  return *this;
+}
+
+Duration& Duration::operator-=(const Duration &rhs)
+{
+  sec += -rhs.sec;
+  nsec += -rhs.nsec;
+  normalizeSecNSecSigned(sec, nsec);
+  return *this;
+}
+
+Duration& Duration::operator*=(double scale)
+{
+  sec *= scale;
+  nsec *= scale;
+  normalizeSecNSecSigned(sec, nsec);
+  return *this;
+}
+
+}
diff --git a/rosserial_test/Inc/dynamic_reconfigure/BoolParameter.h b/rosserial_test/Inc/dynamic_reconfigure/BoolParameter.h
new file mode 100644 (file)
index 0000000..1c9ec12
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_dynamic_reconfigure_BoolParameter_h
+#define _ROS_dynamic_reconfigure_BoolParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class BoolParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef bool _value_type;
+      _value_type value;
+
+    BoolParameter():
+      name(""),
+      value(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_value;
+      u_value.real = this->value;
+      *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->value);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_value;
+      u_value.base = 0;
+      u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->value = u_value.real;
+      offset += sizeof(this->value);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/BoolParameter"; };
+    const char * getMD5(){ return "23f05028c1a699fb83e22401228c3a9e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/Config.h b/rosserial_test/Inc/dynamic_reconfigure/Config.h
new file mode 100644 (file)
index 0000000..c7890b6
--- /dev/null
@@ -0,0 +1,168 @@
+#ifndef _ROS_dynamic_reconfigure_Config_h
+#define _ROS_dynamic_reconfigure_Config_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/BoolParameter.h"
+#include "dynamic_reconfigure/IntParameter.h"
+#include "dynamic_reconfigure/StrParameter.h"
+#include "dynamic_reconfigure/DoubleParameter.h"
+#include "dynamic_reconfigure/GroupState.h"
+
+namespace dynamic_reconfigure
+{
+
+  class Config : public ros::Msg
+  {
+    public:
+      uint32_t bools_length;
+      typedef dynamic_reconfigure::BoolParameter _bools_type;
+      _bools_type st_bools;
+      _bools_type * bools;
+      uint32_t ints_length;
+      typedef dynamic_reconfigure::IntParameter _ints_type;
+      _ints_type st_ints;
+      _ints_type * ints;
+      uint32_t strs_length;
+      typedef dynamic_reconfigure::StrParameter _strs_type;
+      _strs_type st_strs;
+      _strs_type * strs;
+      uint32_t doubles_length;
+      typedef dynamic_reconfigure::DoubleParameter _doubles_type;
+      _doubles_type st_doubles;
+      _doubles_type * doubles;
+      uint32_t groups_length;
+      typedef dynamic_reconfigure::GroupState _groups_type;
+      _groups_type st_groups;
+      _groups_type * groups;
+
+    Config():
+      bools_length(0), bools(NULL),
+      ints_length(0), ints(NULL),
+      strs_length(0), strs(NULL),
+      doubles_length(0), doubles(NULL),
+      groups_length(0), groups(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->bools_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->bools_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->bools_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->bools_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->bools_length);
+      for( uint32_t i = 0; i < bools_length; i++){
+      offset += this->bools[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ints_length);
+      for( uint32_t i = 0; i < ints_length; i++){
+      offset += this->ints[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->strs_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->strs_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->strs_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->strs_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->strs_length);
+      for( uint32_t i = 0; i < strs_length; i++){
+      offset += this->strs[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->doubles_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->doubles_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->doubles_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->doubles_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->doubles_length);
+      for( uint32_t i = 0; i < doubles_length; i++){
+      offset += this->doubles[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->groups_length);
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->groups[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t bools_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->bools_length);
+      if(bools_lengthT > bools_length)
+        this->bools = (dynamic_reconfigure::BoolParameter*)realloc(this->bools, bools_lengthT * sizeof(dynamic_reconfigure::BoolParameter));
+      bools_length = bools_lengthT;
+      for( uint32_t i = 0; i < bools_length; i++){
+      offset += this->st_bools.deserialize(inbuffer + offset);
+        memcpy( &(this->bools[i]), &(this->st_bools), sizeof(dynamic_reconfigure::BoolParameter));
+      }
+      uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ints_length);
+      if(ints_lengthT > ints_length)
+        this->ints = (dynamic_reconfigure::IntParameter*)realloc(this->ints, ints_lengthT * sizeof(dynamic_reconfigure::IntParameter));
+      ints_length = ints_lengthT;
+      for( uint32_t i = 0; i < ints_length; i++){
+      offset += this->st_ints.deserialize(inbuffer + offset);
+        memcpy( &(this->ints[i]), &(this->st_ints), sizeof(dynamic_reconfigure::IntParameter));
+      }
+      uint32_t strs_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->strs_length);
+      if(strs_lengthT > strs_length)
+        this->strs = (dynamic_reconfigure::StrParameter*)realloc(this->strs, strs_lengthT * sizeof(dynamic_reconfigure::StrParameter));
+      strs_length = strs_lengthT;
+      for( uint32_t i = 0; i < strs_length; i++){
+      offset += this->st_strs.deserialize(inbuffer + offset);
+        memcpy( &(this->strs[i]), &(this->st_strs), sizeof(dynamic_reconfigure::StrParameter));
+      }
+      uint32_t doubles_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->doubles_length);
+      if(doubles_lengthT > doubles_length)
+        this->doubles = (dynamic_reconfigure::DoubleParameter*)realloc(this->doubles, doubles_lengthT * sizeof(dynamic_reconfigure::DoubleParameter));
+      doubles_length = doubles_lengthT;
+      for( uint32_t i = 0; i < doubles_length; i++){
+      offset += this->st_doubles.deserialize(inbuffer + offset);
+        memcpy( &(this->doubles[i]), &(this->st_doubles), sizeof(dynamic_reconfigure::DoubleParameter));
+      }
+      uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->groups_length);
+      if(groups_lengthT > groups_length)
+        this->groups = (dynamic_reconfigure::GroupState*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::GroupState));
+      groups_length = groups_lengthT;
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->st_groups.deserialize(inbuffer + offset);
+        memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::GroupState));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/Config"; };
+    const char * getMD5(){ return "958f16a05573709014982821e6822580"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/ConfigDescription.h b/rosserial_test/Inc/dynamic_reconfigure/ConfigDescription.h
new file mode 100644 (file)
index 0000000..8a1fd63
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef _ROS_dynamic_reconfigure_ConfigDescription_h
+#define _ROS_dynamic_reconfigure_ConfigDescription_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/Group.h"
+#include "dynamic_reconfigure/Config.h"
+
+namespace dynamic_reconfigure
+{
+
+  class ConfigDescription : public ros::Msg
+  {
+    public:
+      uint32_t groups_length;
+      typedef dynamic_reconfigure::Group _groups_type;
+      _groups_type st_groups;
+      _groups_type * groups;
+      typedef dynamic_reconfigure::Config _max_type;
+      _max_type max;
+      typedef dynamic_reconfigure::Config _min_type;
+      _min_type min;
+      typedef dynamic_reconfigure::Config _dflt_type;
+      _dflt_type dflt;
+
+    ConfigDescription():
+      groups_length(0), groups(NULL),
+      max(),
+      min(),
+      dflt()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->groups_length);
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->groups[i].serialize(outbuffer + offset);
+      }
+      offset += this->max.serialize(outbuffer + offset);
+      offset += this->min.serialize(outbuffer + offset);
+      offset += this->dflt.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->groups_length);
+      if(groups_lengthT > groups_length)
+        this->groups = (dynamic_reconfigure::Group*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::Group));
+      groups_length = groups_lengthT;
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->st_groups.deserialize(inbuffer + offset);
+        memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::Group));
+      }
+      offset += this->max.deserialize(inbuffer + offset);
+      offset += this->min.deserialize(inbuffer + offset);
+      offset += this->dflt.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/ConfigDescription"; };
+    const char * getMD5(){ return "757ce9d44ba8ddd801bb30bc456f946f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/DoubleParameter.h b/rosserial_test/Inc/dynamic_reconfigure/DoubleParameter.h
new file mode 100644 (file)
index 0000000..01c7bac
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_dynamic_reconfigure_DoubleParameter_h
+#define _ROS_dynamic_reconfigure_DoubleParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class DoubleParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef double _value_type;
+      _value_type value;
+
+    DoubleParameter():
+      name(""),
+      value(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        double real;
+        uint64_t base;
+      } u_value;
+      u_value.real = this->value;
+      *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_value.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_value.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_value.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_value.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->value);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        double real;
+        uint64_t base;
+      } u_value;
+      u_value.base = 0;
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->value = u_value.real;
+      offset += sizeof(this->value);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/DoubleParameter"; };
+    const char * getMD5(){ return "d8512f27253c0f65f928a67c329cd658"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/Group.h b/rosserial_test/Inc/dynamic_reconfigure/Group.h
new file mode 100644 (file)
index 0000000..8e2fc04
--- /dev/null
@@ -0,0 +1,146 @@
+#ifndef _ROS_dynamic_reconfigure_Group_h
+#define _ROS_dynamic_reconfigure_Group_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/ParamDescription.h"
+
+namespace dynamic_reconfigure
+{
+
+  class Group : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      uint32_t parameters_length;
+      typedef dynamic_reconfigure::ParamDescription _parameters_type;
+      _parameters_type st_parameters;
+      _parameters_type * parameters;
+      typedef int32_t _parent_type;
+      _parent_type parent;
+      typedef int32_t _id_type;
+      _id_type id;
+
+    Group():
+      name(""),
+      type(""),
+      parameters_length(0), parameters(NULL),
+      parent(0),
+      id(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->parameters_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->parameters_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->parameters_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->parameters_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parameters_length);
+      for( uint32_t i = 0; i < parameters_length; i++){
+      offset += this->parameters[i].serialize(outbuffer + offset);
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.real = this->parent;
+      *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parent);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      uint32_t parameters_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->parameters_length);
+      if(parameters_lengthT > parameters_length)
+        this->parameters = (dynamic_reconfigure::ParamDescription*)realloc(this->parameters, parameters_lengthT * sizeof(dynamic_reconfigure::ParamDescription));
+      parameters_length = parameters_lengthT;
+      for( uint32_t i = 0; i < parameters_length; i++){
+      offset += this->st_parameters.deserialize(inbuffer + offset);
+        memcpy( &(this->parameters[i]), &(this->st_parameters), sizeof(dynamic_reconfigure::ParamDescription));
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.base = 0;
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->parent = u_parent.real;
+      offset += sizeof(this->parent);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/Group"; };
+    const char * getMD5(){ return "9e8cd9e9423c94823db3614dd8b1cf7a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/GroupState.h b/rosserial_test/Inc/dynamic_reconfigure/GroupState.h
new file mode 100644 (file)
index 0000000..2445c6b
--- /dev/null
@@ -0,0 +1,121 @@
+#ifndef _ROS_dynamic_reconfigure_GroupState_h
+#define _ROS_dynamic_reconfigure_GroupState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class GroupState : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef bool _state_type;
+      _state_type state;
+      typedef int32_t _id_type;
+      _id_type id;
+      typedef int32_t _parent_type;
+      _parent_type parent;
+
+    GroupState():
+      name(""),
+      state(0),
+      id(0),
+      parent(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_state;
+      u_state.real = this->state;
+      *(outbuffer + offset + 0) = (u_state.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->state);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.real = this->parent;
+      *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parent);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_state;
+      u_state.base = 0;
+      u_state.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->state = u_state.real;
+      offset += sizeof(this->state);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.base = 0;
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->parent = u_parent.real;
+      offset += sizeof(this->parent);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/GroupState"; };
+    const char * getMD5(){ return "a2d87f51dc22930325041a2f8b1571f8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/IntParameter.h b/rosserial_test/Inc/dynamic_reconfigure/IntParameter.h
new file mode 100644 (file)
index 0000000..4fa02e8
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_dynamic_reconfigure_IntParameter_h
+#define _ROS_dynamic_reconfigure_IntParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class IntParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef int32_t _value_type;
+      _value_type value;
+
+    IntParameter():
+      name(""),
+      value(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_value;
+      u_value.real = this->value;
+      *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->value);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_value;
+      u_value.base = 0;
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->value = u_value.real;
+      offset += sizeof(this->value);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/IntParameter"; };
+    const char * getMD5(){ return "65fedc7a0cbfb8db035e46194a350bf1"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/ParamDescription.h b/rosserial_test/Inc/dynamic_reconfigure/ParamDescription.h
new file mode 100644 (file)
index 0000000..bddbb58
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef _ROS_dynamic_reconfigure_ParamDescription_h
+#define _ROS_dynamic_reconfigure_ParamDescription_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class ParamDescription : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      typedef uint32_t _level_type;
+      _level_type level;
+      typedef const char* _description_type;
+      _description_type description;
+      typedef const char* _edit_method_type;
+      _edit_method_type edit_method;
+
+    ParamDescription():
+      name(""),
+      type(""),
+      level(0),
+      description(""),
+      edit_method("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->level >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->level >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->level >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_description = strlen(this->description);
+      varToArr(outbuffer + offset, length_description);
+      offset += 4;
+      memcpy(outbuffer + offset, this->description, length_description);
+      offset += length_description;
+      uint32_t length_edit_method = strlen(this->edit_method);
+      varToArr(outbuffer + offset, length_edit_method);
+      offset += 4;
+      memcpy(outbuffer + offset, this->edit_method, length_edit_method);
+      offset += length_edit_method;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      this->level =  ((uint32_t) (*(inbuffer + offset)));
+      this->level |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->level |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->level |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->level);
+      uint32_t length_description;
+      arrToVar(length_description, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_description; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_description-1]=0;
+      this->description = (char *)(inbuffer + offset-1);
+      offset += length_description;
+      uint32_t length_edit_method;
+      arrToVar(length_edit_method, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_edit_method; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_edit_method-1]=0;
+      this->edit_method = (char *)(inbuffer + offset-1);
+      offset += length_edit_method;
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/ParamDescription"; };
+    const char * getMD5(){ return "7434fcb9348c13054e0c3b267c8cb34d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/Reconfigure.h b/rosserial_test/Inc/dynamic_reconfigure/Reconfigure.h
new file mode 100644 (file)
index 0000000..e4e6b79
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef _ROS_SERVICE_Reconfigure_h
+#define _ROS_SERVICE_Reconfigure_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/Config.h"
+
+namespace dynamic_reconfigure
+{
+
+static const char RECONFIGURE[] = "dynamic_reconfigure/Reconfigure";
+
+  class ReconfigureRequest : public ros::Msg
+  {
+    public:
+      typedef dynamic_reconfigure::Config _config_type;
+      _config_type config;
+
+    ReconfigureRequest():
+      config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return RECONFIGURE; };
+    const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; };
+
+  };
+
+  class ReconfigureResponse : public ros::Msg
+  {
+    public:
+      typedef dynamic_reconfigure::Config _config_type;
+      _config_type config;
+
+    ReconfigureResponse():
+      config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return RECONFIGURE; };
+    const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; };
+
+  };
+
+  class Reconfigure {
+    public:
+    typedef ReconfigureRequest Request;
+    typedef ReconfigureResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/SensorLevels.h b/rosserial_test/Inc/dynamic_reconfigure/SensorLevels.h
new file mode 100644 (file)
index 0000000..13fd269
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _ROS_dynamic_reconfigure_SensorLevels_h
+#define _ROS_dynamic_reconfigure_SensorLevels_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class SensorLevels : public ros::Msg
+  {
+    public:
+      enum { RECONFIGURE_CLOSE =  3   };
+      enum { RECONFIGURE_STOP =  1   };
+      enum { RECONFIGURE_RUNNING =  0  };
+
+    SensorLevels()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/SensorLevels"; };
+    const char * getMD5(){ return "6322637bee96d5489db6e2127c47602c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/dynamic_reconfigure/StrParameter.h b/rosserial_test/Inc/dynamic_reconfigure/StrParameter.h
new file mode 100644 (file)
index 0000000..965f5b7
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef _ROS_dynamic_reconfigure_StrParameter_h
+#define _ROS_dynamic_reconfigure_StrParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class StrParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _value_type;
+      _value_type value;
+
+    StrParameter():
+      name(""),
+      value("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_value = strlen(this->value);
+      varToArr(outbuffer + offset, length_value);
+      offset += 4;
+      memcpy(outbuffer + offset, this->value, length_value);
+      offset += length_value;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_value;
+      arrToVar(length_value, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_value; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_value-1]=0;
+      this->value = (char *)(inbuffer + offset-1);
+      offset += length_value;
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/StrParameter"; };
+    const char * getMD5(){ return "bc6ccc4a57f61779c8eaae61e9f422e0"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ApplyBodyWrench.h b/rosserial_test/Inc/gazebo_msgs/ApplyBodyWrench.h
new file mode 100644 (file)
index 0000000..e7af6bb
--- /dev/null
@@ -0,0 +1,199 @@
+#ifndef _ROS_SERVICE_ApplyBodyWrench_h
+#define _ROS_SERVICE_ApplyBodyWrench_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+#include "geometry_msgs/Wrench.h"
+#include "ros/time.h"
+#include "geometry_msgs/Point.h"
+
+namespace gazebo_msgs
+{
+
+static const char APPLYBODYWRENCH[] = "gazebo_msgs/ApplyBodyWrench";
+
+  class ApplyBodyWrenchRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _body_name_type;
+      _body_name_type body_name;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+      typedef geometry_msgs::Point _reference_point_type;
+      _reference_point_type reference_point;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type wrench;
+      typedef ros::Time _start_time_type;
+      _start_time_type start_time;
+      typedef ros::Duration _duration_type;
+      _duration_type duration;
+
+    ApplyBodyWrenchRequest():
+      body_name(""),
+      reference_frame(""),
+      reference_point(),
+      wrench(),
+      start_time(),
+      duration()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_body_name = strlen(this->body_name);
+      varToArr(outbuffer + offset, length_body_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->body_name, length_body_name);
+      offset += length_body_name;
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      offset += this->reference_point.serialize(outbuffer + offset);
+      offset += this->wrench.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.sec);
+      *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.nsec);
+      *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.sec);
+      *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_body_name;
+      arrToVar(length_body_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_body_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_body_name-1]=0;
+      this->body_name = (char *)(inbuffer + offset-1);
+      offset += length_body_name;
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+      offset += this->reference_point.deserialize(inbuffer + offset);
+      offset += this->wrench.deserialize(inbuffer + offset);
+      this->start_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.sec);
+      this->start_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.nsec);
+      this->duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.sec);
+      this->duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return APPLYBODYWRENCH; };
+    const char * getMD5(){ return "e37e6adf97eba5095baa77dffb71e5bd"; };
+
+  };
+
+  class ApplyBodyWrenchResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    ApplyBodyWrenchResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return APPLYBODYWRENCH; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class ApplyBodyWrench {
+    public:
+    typedef ApplyBodyWrenchRequest Request;
+    typedef ApplyBodyWrenchResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ApplyJointEffort.h b/rosserial_test/Inc/gazebo_msgs/ApplyJointEffort.h
new file mode 100644 (file)
index 0000000..636084f
--- /dev/null
@@ -0,0 +1,202 @@
+#ifndef _ROS_SERVICE_ApplyJointEffort_h
+#define _ROS_SERVICE_ApplyJointEffort_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+#include "ros/time.h"
+
+namespace gazebo_msgs
+{
+
+static const char APPLYJOINTEFFORT[] = "gazebo_msgs/ApplyJointEffort";
+
+  class ApplyJointEffortRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+      typedef double _effort_type;
+      _effort_type effort;
+      typedef ros::Time _start_time_type;
+      _start_time_type start_time;
+      typedef ros::Duration _duration_type;
+      _duration_type duration;
+
+    ApplyJointEffortRequest():
+      joint_name(""),
+      effort(0),
+      start_time(),
+      duration()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      union {
+        double real;
+        uint64_t base;
+      } u_effort;
+      u_effort.real = this->effort;
+      *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->effort);
+      *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.sec);
+      *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.nsec);
+      *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.sec);
+      *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+      union {
+        double real;
+        uint64_t base;
+      } u_effort;
+      u_effort.base = 0;
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->effort = u_effort.real;
+      offset += sizeof(this->effort);
+      this->start_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.sec);
+      this->start_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.nsec);
+      this->duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.sec);
+      this->duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return APPLYJOINTEFFORT; };
+    const char * getMD5(){ return "2c3396ab9af67a509ecd2167a8fe41a2"; };
+
+  };
+
+  class ApplyJointEffortResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    ApplyJointEffortResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return APPLYJOINTEFFORT; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class ApplyJointEffort {
+    public:
+    typedef ApplyJointEffortRequest Request;
+    typedef ApplyJointEffortResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/BodyRequest.h b/rosserial_test/Inc/gazebo_msgs/BodyRequest.h
new file mode 100644 (file)
index 0000000..bb2106d
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_BodyRequest_h
+#define _ROS_SERVICE_BodyRequest_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char BODYREQUEST[] = "gazebo_msgs/BodyRequest";
+
+  class BodyRequestRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _body_name_type;
+      _body_name_type body_name;
+
+    BodyRequestRequest():
+      body_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_body_name = strlen(this->body_name);
+      varToArr(outbuffer + offset, length_body_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->body_name, length_body_name);
+      offset += length_body_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_body_name;
+      arrToVar(length_body_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_body_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_body_name-1]=0;
+      this->body_name = (char *)(inbuffer + offset-1);
+      offset += length_body_name;
+     return offset;
+    }
+
+    const char * getType(){ return BODYREQUEST; };
+    const char * getMD5(){ return "5eade9afe7f232d78005bd0cafeab755"; };
+
+  };
+
+  class BodyRequestResponse : public ros::Msg
+  {
+    public:
+
+    BodyRequestResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return BODYREQUEST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class BodyRequest {
+    public:
+    typedef BodyRequestRequest Request;
+    typedef BodyRequestResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ContactState.h b/rosserial_test/Inc/gazebo_msgs/ContactState.h
new file mode 100644 (file)
index 0000000..6318017
--- /dev/null
@@ -0,0 +1,223 @@
+#ifndef _ROS_gazebo_msgs_ContactState_h
+#define _ROS_gazebo_msgs_ContactState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Wrench.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace gazebo_msgs
+{
+
+  class ContactState : public ros::Msg
+  {
+    public:
+      typedef const char* _info_type;
+      _info_type info;
+      typedef const char* _collision1_name_type;
+      _collision1_name_type collision1_name;
+      typedef const char* _collision2_name_type;
+      _collision2_name_type collision2_name;
+      uint32_t wrenches_length;
+      typedef geometry_msgs::Wrench _wrenches_type;
+      _wrenches_type st_wrenches;
+      _wrenches_type * wrenches;
+      typedef geometry_msgs::Wrench _total_wrench_type;
+      _total_wrench_type total_wrench;
+      uint32_t contact_positions_length;
+      typedef geometry_msgs::Vector3 _contact_positions_type;
+      _contact_positions_type st_contact_positions;
+      _contact_positions_type * contact_positions;
+      uint32_t contact_normals_length;
+      typedef geometry_msgs::Vector3 _contact_normals_type;
+      _contact_normals_type st_contact_normals;
+      _contact_normals_type * contact_normals;
+      uint32_t depths_length;
+      typedef double _depths_type;
+      _depths_type st_depths;
+      _depths_type * depths;
+
+    ContactState():
+      info(""),
+      collision1_name(""),
+      collision2_name(""),
+      wrenches_length(0), wrenches(NULL),
+      total_wrench(),
+      contact_positions_length(0), contact_positions(NULL),
+      contact_normals_length(0), contact_normals(NULL),
+      depths_length(0), depths(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_info = strlen(this->info);
+      varToArr(outbuffer + offset, length_info);
+      offset += 4;
+      memcpy(outbuffer + offset, this->info, length_info);
+      offset += length_info;
+      uint32_t length_collision1_name = strlen(this->collision1_name);
+      varToArr(outbuffer + offset, length_collision1_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->collision1_name, length_collision1_name);
+      offset += length_collision1_name;
+      uint32_t length_collision2_name = strlen(this->collision2_name);
+      varToArr(outbuffer + offset, length_collision2_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->collision2_name, length_collision2_name);
+      offset += length_collision2_name;
+      *(outbuffer + offset + 0) = (this->wrenches_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->wrenches_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->wrenches_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->wrenches_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->wrenches_length);
+      for( uint32_t i = 0; i < wrenches_length; i++){
+      offset += this->wrenches[i].serialize(outbuffer + offset);
+      }
+      offset += this->total_wrench.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->contact_positions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->contact_positions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->contact_positions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->contact_positions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->contact_positions_length);
+      for( uint32_t i = 0; i < contact_positions_length; i++){
+      offset += this->contact_positions[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->contact_normals_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->contact_normals_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->contact_normals_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->contact_normals_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->contact_normals_length);
+      for( uint32_t i = 0; i < contact_normals_length; i++){
+      offset += this->contact_normals[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->depths_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->depths_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->depths_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->depths_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->depths_length);
+      for( uint32_t i = 0; i < depths_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_depthsi;
+      u_depthsi.real = this->depths[i];
+      *(outbuffer + offset + 0) = (u_depthsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_depthsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_depthsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_depthsi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_depthsi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_depthsi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_depthsi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_depthsi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->depths[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_info;
+      arrToVar(length_info, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_info; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_info-1]=0;
+      this->info = (char *)(inbuffer + offset-1);
+      offset += length_info;
+      uint32_t length_collision1_name;
+      arrToVar(length_collision1_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_collision1_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_collision1_name-1]=0;
+      this->collision1_name = (char *)(inbuffer + offset-1);
+      offset += length_collision1_name;
+      uint32_t length_collision2_name;
+      arrToVar(length_collision2_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_collision2_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_collision2_name-1]=0;
+      this->collision2_name = (char *)(inbuffer + offset-1);
+      offset += length_collision2_name;
+      uint32_t wrenches_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->wrenches_length);
+      if(wrenches_lengthT > wrenches_length)
+        this->wrenches = (geometry_msgs::Wrench*)realloc(this->wrenches, wrenches_lengthT * sizeof(geometry_msgs::Wrench));
+      wrenches_length = wrenches_lengthT;
+      for( uint32_t i = 0; i < wrenches_length; i++){
+      offset += this->st_wrenches.deserialize(inbuffer + offset);
+        memcpy( &(this->wrenches[i]), &(this->st_wrenches), sizeof(geometry_msgs::Wrench));
+      }
+      offset += this->total_wrench.deserialize(inbuffer + offset);
+      uint32_t contact_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->contact_positions_length);
+      if(contact_positions_lengthT > contact_positions_length)
+        this->contact_positions = (geometry_msgs::Vector3*)realloc(this->contact_positions, contact_positions_lengthT * sizeof(geometry_msgs::Vector3));
+      contact_positions_length = contact_positions_lengthT;
+      for( uint32_t i = 0; i < contact_positions_length; i++){
+      offset += this->st_contact_positions.deserialize(inbuffer + offset);
+        memcpy( &(this->contact_positions[i]), &(this->st_contact_positions), sizeof(geometry_msgs::Vector3));
+      }
+      uint32_t contact_normals_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->contact_normals_length);
+      if(contact_normals_lengthT > contact_normals_length)
+        this->contact_normals = (geometry_msgs::Vector3*)realloc(this->contact_normals, contact_normals_lengthT * sizeof(geometry_msgs::Vector3));
+      contact_normals_length = contact_normals_lengthT;
+      for( uint32_t i = 0; i < contact_normals_length; i++){
+      offset += this->st_contact_normals.deserialize(inbuffer + offset);
+        memcpy( &(this->contact_normals[i]), &(this->st_contact_normals), sizeof(geometry_msgs::Vector3));
+      }
+      uint32_t depths_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->depths_length);
+      if(depths_lengthT > depths_length)
+        this->depths = (double*)realloc(this->depths, depths_lengthT * sizeof(double));
+      depths_length = depths_lengthT;
+      for( uint32_t i = 0; i < depths_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_depths;
+      u_st_depths.base = 0;
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_depths = u_st_depths.real;
+      offset += sizeof(this->st_depths);
+        memcpy( &(this->depths[i]), &(this->st_depths), sizeof(double));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ContactState"; };
+    const char * getMD5(){ return "48c0ffb054b8c444f870cecea1ee50d9"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ContactsState.h b/rosserial_test/Inc/gazebo_msgs/ContactsState.h
new file mode 100644 (file)
index 0000000..7f8eacf
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_gazebo_msgs_ContactsState_h
+#define _ROS_gazebo_msgs_ContactsState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "gazebo_msgs/ContactState.h"
+
+namespace gazebo_msgs
+{
+
+  class ContactsState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t states_length;
+      typedef gazebo_msgs::ContactState _states_type;
+      _states_type st_states;
+      _states_type * states;
+
+    ContactsState():
+      header(),
+      states_length(0), states(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->states_length);
+      for( uint32_t i = 0; i < states_length; i++){
+      offset += this->states[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->states_length);
+      if(states_lengthT > states_length)
+        this->states = (gazebo_msgs::ContactState*)realloc(this->states, states_lengthT * sizeof(gazebo_msgs::ContactState));
+      states_length = states_lengthT;
+      for( uint32_t i = 0; i < states_length; i++){
+      offset += this->st_states.deserialize(inbuffer + offset);
+        memcpy( &(this->states[i]), &(this->st_states), sizeof(gazebo_msgs::ContactState));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ContactsState"; };
+    const char * getMD5(){ return "acbcb1601a8e525bf72509f18e6f668d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/DeleteLight.h b/rosserial_test/Inc/gazebo_msgs/DeleteLight.h
new file mode 100644 (file)
index 0000000..54a9c5d
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef _ROS_SERVICE_DeleteLight_h
+#define _ROS_SERVICE_DeleteLight_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char DELETELIGHT[] = "gazebo_msgs/DeleteLight";
+
+  class DeleteLightRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _light_name_type;
+      _light_name_type light_name;
+
+    DeleteLightRequest():
+      light_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_light_name = strlen(this->light_name);
+      varToArr(outbuffer + offset, length_light_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->light_name, length_light_name);
+      offset += length_light_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_light_name;
+      arrToVar(length_light_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_light_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_light_name-1]=0;
+      this->light_name = (char *)(inbuffer + offset-1);
+      offset += length_light_name;
+     return offset;
+    }
+
+    const char * getType(){ return DELETELIGHT; };
+    const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; };
+
+  };
+
+  class DeleteLightResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    DeleteLightResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return DELETELIGHT; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class DeleteLight {
+    public:
+    typedef DeleteLightRequest Request;
+    typedef DeleteLightResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/DeleteModel.h b/rosserial_test/Inc/gazebo_msgs/DeleteModel.h
new file mode 100644 (file)
index 0000000..00da12d
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef _ROS_SERVICE_DeleteModel_h
+#define _ROS_SERVICE_DeleteModel_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char DELETEMODEL[] = "gazebo_msgs/DeleteModel";
+
+  class DeleteModelRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+
+    DeleteModelRequest():
+      model_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+     return offset;
+    }
+
+    const char * getType(){ return DELETEMODEL; };
+    const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; };
+
+  };
+
+  class DeleteModelResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    DeleteModelResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return DELETEMODEL; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class DeleteModel {
+    public:
+    typedef DeleteModelRequest Request;
+    typedef DeleteModelResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetJointProperties.h b/rosserial_test/Inc/gazebo_msgs/GetJointProperties.h
new file mode 100644 (file)
index 0000000..6ad0fe9
--- /dev/null
@@ -0,0 +1,291 @@
+#ifndef _ROS_SERVICE_GetJointProperties_h
+#define _ROS_SERVICE_GetJointProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETJOINTPROPERTIES[] = "gazebo_msgs/GetJointProperties";
+
+  class GetJointPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+
+    GetJointPropertiesRequest():
+      joint_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETJOINTPROPERTIES; };
+    const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; };
+
+  };
+
+  class GetJointPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef uint8_t _type_type;
+      _type_type type;
+      uint32_t damping_length;
+      typedef double _damping_type;
+      _damping_type st_damping;
+      _damping_type * damping;
+      uint32_t position_length;
+      typedef double _position_type;
+      _position_type st_position;
+      _position_type * position;
+      uint32_t rate_length;
+      typedef double _rate_type;
+      _rate_type st_rate;
+      _rate_type * rate;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+      enum { REVOLUTE =  0                 };
+      enum { CONTINUOUS =  1                 };
+      enum { PRISMATIC =  2                 };
+      enum { FIXED =  3                 };
+      enum { BALL =  4                 };
+      enum { UNIVERSAL =  5                 };
+
+    GetJointPropertiesResponse():
+      type(0),
+      damping_length(0), damping(NULL),
+      position_length(0), position(NULL),
+      rate_length(0), rate(NULL),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->damping_length);
+      for( uint32_t i = 0; i < damping_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_dampingi;
+      u_dampingi.real = this->damping[i];
+      *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->damping[i]);
+      }
+      *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->position_length);
+      for( uint32_t i = 0; i < position_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_positioni;
+      u_positioni.real = this->position[i];
+      *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position[i]);
+      }
+      *(outbuffer + offset + 0) = (this->rate_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->rate_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->rate_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->rate_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->rate_length);
+      for( uint32_t i = 0; i < rate_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_ratei;
+      u_ratei.real = this->rate[i];
+      *(outbuffer + offset + 0) = (u_ratei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ratei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ratei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ratei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ratei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ratei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ratei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ratei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->rate[i]);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->damping_length);
+      if(damping_lengthT > damping_length)
+        this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double));
+      damping_length = damping_lengthT;
+      for( uint32_t i = 0; i < damping_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_damping;
+      u_st_damping.base = 0;
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_damping = u_st_damping.real;
+      offset += sizeof(this->st_damping);
+        memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double));
+      }
+      uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->position_length);
+      if(position_lengthT > position_length)
+        this->position = (double*)realloc(this->position, position_lengthT * sizeof(double));
+      position_length = position_lengthT;
+      for( uint32_t i = 0; i < position_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_position;
+      u_st_position.base = 0;
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_position = u_st_position.real;
+      offset += sizeof(this->st_position);
+        memcpy( &(this->position[i]), &(this->st_position), sizeof(double));
+      }
+      uint32_t rate_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->rate_length);
+      if(rate_lengthT > rate_length)
+        this->rate = (double*)realloc(this->rate, rate_lengthT * sizeof(double));
+      rate_length = rate_lengthT;
+      for( uint32_t i = 0; i < rate_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_rate;
+      u_st_rate.base = 0;
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_rate = u_st_rate.real;
+      offset += sizeof(this->st_rate);
+        memcpy( &(this->rate[i]), &(this->st_rate), sizeof(double));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETJOINTPROPERTIES; };
+    const char * getMD5(){ return "cd7b30a39faa372283dc94c5f6457f82"; };
+
+  };
+
+  class GetJointProperties {
+    public:
+    typedef GetJointPropertiesRequest Request;
+    typedef GetJointPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetLightProperties.h b/rosserial_test/Inc/gazebo_msgs/GetLightProperties.h
new file mode 100644 (file)
index 0000000..7210186
--- /dev/null
@@ -0,0 +1,224 @@
+#ifndef _ROS_SERVICE_GetLightProperties_h
+#define _ROS_SERVICE_GetLightProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/ColorRGBA.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETLIGHTPROPERTIES[] = "gazebo_msgs/GetLightProperties";
+
+  class GetLightPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _light_name_type;
+      _light_name_type light_name;
+
+    GetLightPropertiesRequest():
+      light_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_light_name = strlen(this->light_name);
+      varToArr(outbuffer + offset, length_light_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->light_name, length_light_name);
+      offset += length_light_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_light_name;
+      arrToVar(length_light_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_light_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_light_name-1]=0;
+      this->light_name = (char *)(inbuffer + offset-1);
+      offset += length_light_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; };
+
+  };
+
+  class GetLightPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef std_msgs::ColorRGBA _diffuse_type;
+      _diffuse_type diffuse;
+      typedef double _attenuation_constant_type;
+      _attenuation_constant_type attenuation_constant;
+      typedef double _attenuation_linear_type;
+      _attenuation_linear_type attenuation_linear;
+      typedef double _attenuation_quadratic_type;
+      _attenuation_quadratic_type attenuation_quadratic;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetLightPropertiesResponse():
+      diffuse(),
+      attenuation_constant(0),
+      attenuation_linear(0),
+      attenuation_quadratic(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->diffuse.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_constant;
+      u_attenuation_constant.real = this->attenuation_constant;
+      *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->attenuation_constant);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_linear;
+      u_attenuation_linear.real = this->attenuation_linear;
+      *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->attenuation_linear);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_quadratic;
+      u_attenuation_quadratic.real = this->attenuation_quadratic;
+      *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->attenuation_quadratic);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->diffuse.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_constant;
+      u_attenuation_constant.base = 0;
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->attenuation_constant = u_attenuation_constant.real;
+      offset += sizeof(this->attenuation_constant);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_linear;
+      u_attenuation_linear.base = 0;
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->attenuation_linear = u_attenuation_linear.real;
+      offset += sizeof(this->attenuation_linear);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_quadratic;
+      u_attenuation_quadratic.base = 0;
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->attenuation_quadratic = u_attenuation_quadratic.real;
+      offset += sizeof(this->attenuation_quadratic);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "9a19ddd5aab4c13b7643d1722c709f1f"; };
+
+  };
+
+  class GetLightProperties {
+    public:
+    typedef GetLightPropertiesRequest Request;
+    typedef GetLightPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetLinkProperties.h b/rosserial_test/Inc/gazebo_msgs/GetLinkProperties.h
new file mode 100644 (file)
index 0000000..0d4173f
--- /dev/null
@@ -0,0 +1,370 @@
+#ifndef _ROS_SERVICE_GetLinkProperties_h
+#define _ROS_SERVICE_GetLinkProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETLINKPROPERTIES[] = "gazebo_msgs/GetLinkProperties";
+
+  class GetLinkPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+
+    GetLinkPropertiesRequest():
+      link_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKPROPERTIES; };
+    const char * getMD5(){ return "7d82d60381f1b66a30f2157f60884345"; };
+
+  };
+
+  class GetLinkPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Pose _com_type;
+      _com_type com;
+      typedef bool _gravity_mode_type;
+      _gravity_mode_type gravity_mode;
+      typedef double _mass_type;
+      _mass_type mass;
+      typedef double _ixx_type;
+      _ixx_type ixx;
+      typedef double _ixy_type;
+      _ixy_type ixy;
+      typedef double _ixz_type;
+      _ixz_type ixz;
+      typedef double _iyy_type;
+      _iyy_type iyy;
+      typedef double _iyz_type;
+      _iyz_type iyz;
+      typedef double _izz_type;
+      _izz_type izz;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetLinkPropertiesResponse():
+      com(),
+      gravity_mode(0),
+      mass(0),
+      ixx(0),
+      ixy(0),
+      ixz(0),
+      iyy(0),
+      iyz(0),
+      izz(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->com.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.real = this->gravity_mode;
+      *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->gravity_mode);
+      union {
+        double real;
+        uint64_t base;
+      } u_mass;
+      u_mass.real = this->mass;
+      *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->mass);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixx;
+      u_ixx.real = this->ixx;
+      *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixx);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixy;
+      u_ixy.real = this->ixy;
+      *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixy);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixz;
+      u_ixz.real = this->ixz;
+      *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixz);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyy;
+      u_iyy.real = this->iyy;
+      *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->iyy);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyz;
+      u_iyz.real = this->iyz;
+      *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->iyz);
+      union {
+        double real;
+        uint64_t base;
+      } u_izz;
+      u_izz.real = this->izz;
+      *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->izz);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->com.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.base = 0;
+      u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->gravity_mode = u_gravity_mode.real;
+      offset += sizeof(this->gravity_mode);
+      union {
+        double real;
+        uint64_t base;
+      } u_mass;
+      u_mass.base = 0;
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->mass = u_mass.real;
+      offset += sizeof(this->mass);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixx;
+      u_ixx.base = 0;
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixx = u_ixx.real;
+      offset += sizeof(this->ixx);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixy;
+      u_ixy.base = 0;
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixy = u_ixy.real;
+      offset += sizeof(this->ixy);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixz;
+      u_ixz.base = 0;
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixz = u_ixz.real;
+      offset += sizeof(this->ixz);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyy;
+      u_iyy.base = 0;
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->iyy = u_iyy.real;
+      offset += sizeof(this->iyy);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyz;
+      u_iyz.base = 0;
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->iyz = u_iyz.real;
+      offset += sizeof(this->iyz);
+      union {
+        double real;
+        uint64_t base;
+      } u_izz;
+      u_izz.base = 0;
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->izz = u_izz.real;
+      offset += sizeof(this->izz);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKPROPERTIES; };
+    const char * getMD5(){ return "a8619f92d17cfcc3958c0fd13299443d"; };
+
+  };
+
+  class GetLinkProperties {
+    public:
+    typedef GetLinkPropertiesRequest Request;
+    typedef GetLinkPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetLinkState.h b/rosserial_test/Inc/gazebo_msgs/GetLinkState.h
new file mode 100644 (file)
index 0000000..5e20764
--- /dev/null
@@ -0,0 +1,145 @@
+#ifndef _ROS_SERVICE_GetLinkState_h
+#define _ROS_SERVICE_GetLinkState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/LinkState.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETLINKSTATE[] = "gazebo_msgs/GetLinkState";
+
+  class GetLinkStateRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    GetLinkStateRequest():
+      link_name(""),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKSTATE; };
+    const char * getMD5(){ return "7551675c30aaa71f7c288d4864552001"; };
+
+  };
+
+  class GetLinkStateResponse : public ros::Msg
+  {
+    public:
+      typedef gazebo_msgs::LinkState _link_state_type;
+      _link_state_type link_state;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetLinkStateResponse():
+      link_state(),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->link_state.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->link_state.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKSTATE; };
+    const char * getMD5(){ return "8ba55ad34f9c072e75c0de57b089753b"; };
+
+  };
+
+  class GetLinkState {
+    public:
+    typedef GetLinkStateRequest Request;
+    typedef GetLinkStateResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetModelProperties.h b/rosserial_test/Inc/gazebo_msgs/GetModelProperties.h
new file mode 100644 (file)
index 0000000..082e688
--- /dev/null
@@ -0,0 +1,322 @@
+#ifndef _ROS_SERVICE_GetModelProperties_h
+#define _ROS_SERVICE_GetModelProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETMODELPROPERTIES[] = "gazebo_msgs/GetModelProperties";
+
+  class GetModelPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+
+    GetModelPropertiesRequest():
+      model_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELPROPERTIES; };
+    const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; };
+
+  };
+
+  class GetModelPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _parent_model_name_type;
+      _parent_model_name_type parent_model_name;
+      typedef const char* _canonical_body_name_type;
+      _canonical_body_name_type canonical_body_name;
+      uint32_t body_names_length;
+      typedef char* _body_names_type;
+      _body_names_type st_body_names;
+      _body_names_type * body_names;
+      uint32_t geom_names_length;
+      typedef char* _geom_names_type;
+      _geom_names_type st_geom_names;
+      _geom_names_type * geom_names;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t child_model_names_length;
+      typedef char* _child_model_names_type;
+      _child_model_names_type st_child_model_names;
+      _child_model_names_type * child_model_names;
+      typedef bool _is_static_type;
+      _is_static_type is_static;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetModelPropertiesResponse():
+      parent_model_name(""),
+      canonical_body_name(""),
+      body_names_length(0), body_names(NULL),
+      geom_names_length(0), geom_names(NULL),
+      joint_names_length(0), joint_names(NULL),
+      child_model_names_length(0), child_model_names(NULL),
+      is_static(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_parent_model_name = strlen(this->parent_model_name);
+      varToArr(outbuffer + offset, length_parent_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->parent_model_name, length_parent_model_name);
+      offset += length_parent_model_name;
+      uint32_t length_canonical_body_name = strlen(this->canonical_body_name);
+      varToArr(outbuffer + offset, length_canonical_body_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->canonical_body_name, length_canonical_body_name);
+      offset += length_canonical_body_name;
+      *(outbuffer + offset + 0) = (this->body_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->body_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->body_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->body_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->body_names_length);
+      for( uint32_t i = 0; i < body_names_length; i++){
+      uint32_t length_body_namesi = strlen(this->body_names[i]);
+      varToArr(outbuffer + offset, length_body_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->body_names[i], length_body_namesi);
+      offset += length_body_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->geom_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->geom_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->geom_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->geom_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->geom_names_length);
+      for( uint32_t i = 0; i < geom_names_length; i++){
+      uint32_t length_geom_namesi = strlen(this->geom_names[i]);
+      varToArr(outbuffer + offset, length_geom_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->geom_names[i], length_geom_namesi);
+      offset += length_geom_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->child_model_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->child_model_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->child_model_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->child_model_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->child_model_names_length);
+      for( uint32_t i = 0; i < child_model_names_length; i++){
+      uint32_t length_child_model_namesi = strlen(this->child_model_names[i]);
+      varToArr(outbuffer + offset, length_child_model_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->child_model_names[i], length_child_model_namesi);
+      offset += length_child_model_namesi;
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_static;
+      u_is_static.real = this->is_static;
+      *(outbuffer + offset + 0) = (u_is_static.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_static);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_parent_model_name;
+      arrToVar(length_parent_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_parent_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_parent_model_name-1]=0;
+      this->parent_model_name = (char *)(inbuffer + offset-1);
+      offset += length_parent_model_name;
+      uint32_t length_canonical_body_name;
+      arrToVar(length_canonical_body_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_canonical_body_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_canonical_body_name-1]=0;
+      this->canonical_body_name = (char *)(inbuffer + offset-1);
+      offset += length_canonical_body_name;
+      uint32_t body_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->body_names_length);
+      if(body_names_lengthT > body_names_length)
+        this->body_names = (char**)realloc(this->body_names, body_names_lengthT * sizeof(char*));
+      body_names_length = body_names_lengthT;
+      for( uint32_t i = 0; i < body_names_length; i++){
+      uint32_t length_st_body_names;
+      arrToVar(length_st_body_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_body_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_body_names-1]=0;
+      this->st_body_names = (char *)(inbuffer + offset-1);
+      offset += length_st_body_names;
+        memcpy( &(this->body_names[i]), &(this->st_body_names), sizeof(char*));
+      }
+      uint32_t geom_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->geom_names_length);
+      if(geom_names_lengthT > geom_names_length)
+        this->geom_names = (char**)realloc(this->geom_names, geom_names_lengthT * sizeof(char*));
+      geom_names_length = geom_names_lengthT;
+      for( uint32_t i = 0; i < geom_names_length; i++){
+      uint32_t length_st_geom_names;
+      arrToVar(length_st_geom_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_geom_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_geom_names-1]=0;
+      this->st_geom_names = (char *)(inbuffer + offset-1);
+      offset += length_st_geom_names;
+        memcpy( &(this->geom_names[i]), &(this->st_geom_names), sizeof(char*));
+      }
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t child_model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->child_model_names_length);
+      if(child_model_names_lengthT > child_model_names_length)
+        this->child_model_names = (char**)realloc(this->child_model_names, child_model_names_lengthT * sizeof(char*));
+      child_model_names_length = child_model_names_lengthT;
+      for( uint32_t i = 0; i < child_model_names_length; i++){
+      uint32_t length_st_child_model_names;
+      arrToVar(length_st_child_model_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_child_model_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_child_model_names-1]=0;
+      this->st_child_model_names = (char *)(inbuffer + offset-1);
+      offset += length_st_child_model_names;
+        memcpy( &(this->child_model_names[i]), &(this->st_child_model_names), sizeof(char*));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_static;
+      u_is_static.base = 0;
+      u_is_static.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_static = u_is_static.real;
+      offset += sizeof(this->is_static);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELPROPERTIES; };
+    const char * getMD5(){ return "b7f370938ef77b464b95f1bab3ec5028"; };
+
+  };
+
+  class GetModelProperties {
+    public:
+    typedef GetModelPropertiesRequest Request;
+    typedef GetModelPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetModelState.h b/rosserial_test/Inc/gazebo_msgs/GetModelState.h
new file mode 100644 (file)
index 0000000..0dbcc81
--- /dev/null
@@ -0,0 +1,157 @@
+#ifndef _ROS_SERVICE_GetModelState_h
+#define _ROS_SERVICE_GetModelState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+#include "std_msgs/Header.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETMODELSTATE[] = "gazebo_msgs/GetModelState";
+
+  class GetModelStateRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef const char* _relative_entity_name_type;
+      _relative_entity_name_type relative_entity_name;
+
+    GetModelStateRequest():
+      model_name(""),
+      relative_entity_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      uint32_t length_relative_entity_name = strlen(this->relative_entity_name);
+      varToArr(outbuffer + offset, length_relative_entity_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->relative_entity_name, length_relative_entity_name);
+      offset += length_relative_entity_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      uint32_t length_relative_entity_name;
+      arrToVar(length_relative_entity_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_relative_entity_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_relative_entity_name-1]=0;
+      this->relative_entity_name = (char *)(inbuffer + offset-1);
+      offset += length_relative_entity_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELSTATE; };
+    const char * getMD5(){ return "19d412713cefe4a67437e17a951e759e"; };
+
+  };
+
+  class GetModelStateResponse : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetModelStateResponse():
+      header(),
+      pose(),
+      twist(),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELSTATE; };
+    const char * getMD5(){ return "ccd51739bb00f0141629e87b792e92b9"; };
+
+  };
+
+  class GetModelState {
+    public:
+    typedef GetModelStateRequest Request;
+    typedef GetModelStateResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetPhysicsProperties.h b/rosserial_test/Inc/gazebo_msgs/GetPhysicsProperties.h
new file mode 100644 (file)
index 0000000..f79bc89
--- /dev/null
@@ -0,0 +1,199 @@
+#ifndef _ROS_SERVICE_GetPhysicsProperties_h
+#define _ROS_SERVICE_GetPhysicsProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+#include "gazebo_msgs/ODEPhysics.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETPHYSICSPROPERTIES[] = "gazebo_msgs/GetPhysicsProperties";
+
+  class GetPhysicsPropertiesRequest : public ros::Msg
+  {
+    public:
+
+    GetPhysicsPropertiesRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetPhysicsPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef double _time_step_type;
+      _time_step_type time_step;
+      typedef bool _pause_type;
+      _pause_type pause;
+      typedef double _max_update_rate_type;
+      _max_update_rate_type max_update_rate;
+      typedef geometry_msgs::Vector3 _gravity_type;
+      _gravity_type gravity;
+      typedef gazebo_msgs::ODEPhysics _ode_config_type;
+      _ode_config_type ode_config;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetPhysicsPropertiesResponse():
+      time_step(0),
+      pause(0),
+      max_update_rate(0),
+      gravity(),
+      ode_config(),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_time_step;
+      u_time_step.real = this->time_step;
+      *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->time_step);
+      union {
+        bool real;
+        uint8_t base;
+      } u_pause;
+      u_pause.real = this->pause;
+      *(outbuffer + offset + 0) = (u_pause.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->pause);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_update_rate;
+      u_max_update_rate.real = this->max_update_rate;
+      *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->max_update_rate);
+      offset += this->gravity.serialize(outbuffer + offset);
+      offset += this->ode_config.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_time_step;
+      u_time_step.base = 0;
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->time_step = u_time_step.real;
+      offset += sizeof(this->time_step);
+      union {
+        bool real;
+        uint8_t base;
+      } u_pause;
+      u_pause.base = 0;
+      u_pause.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->pause = u_pause.real;
+      offset += sizeof(this->pause);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_update_rate;
+      u_max_update_rate.base = 0;
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->max_update_rate = u_max_update_rate.real;
+      offset += sizeof(this->max_update_rate);
+      offset += this->gravity.deserialize(inbuffer + offset);
+      offset += this->ode_config.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "575a5e74786981b7df2e3afc567693a6"; };
+
+  };
+
+  class GetPhysicsProperties {
+    public:
+    typedef GetPhysicsPropertiesRequest Request;
+    typedef GetPhysicsPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/GetWorldProperties.h b/rosserial_test/Inc/gazebo_msgs/GetWorldProperties.h
new file mode 100644 (file)
index 0000000..e9170e7
--- /dev/null
@@ -0,0 +1,192 @@
+#ifndef _ROS_SERVICE_GetWorldProperties_h
+#define _ROS_SERVICE_GetWorldProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETWORLDPROPERTIES[] = "gazebo_msgs/GetWorldProperties";
+
+  class GetWorldPropertiesRequest : public ros::Msg
+  {
+    public:
+
+    GetWorldPropertiesRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETWORLDPROPERTIES; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetWorldPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef double _sim_time_type;
+      _sim_time_type sim_time;
+      uint32_t model_names_length;
+      typedef char* _model_names_type;
+      _model_names_type st_model_names;
+      _model_names_type * model_names;
+      typedef bool _rendering_enabled_type;
+      _rendering_enabled_type rendering_enabled;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetWorldPropertiesResponse():
+      sim_time(0),
+      model_names_length(0), model_names(NULL),
+      rendering_enabled(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_sim_time;
+      u_sim_time.real = this->sim_time;
+      *(outbuffer + offset + 0) = (u_sim_time.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sim_time.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sim_time.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sim_time.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sim_time.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sim_time.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sim_time.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sim_time.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sim_time);
+      *(outbuffer + offset + 0) = (this->model_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->model_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->model_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->model_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->model_names_length);
+      for( uint32_t i = 0; i < model_names_length; i++){
+      uint32_t length_model_namesi = strlen(this->model_names[i]);
+      varToArr(outbuffer + offset, length_model_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_names[i], length_model_namesi);
+      offset += length_model_namesi;
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_rendering_enabled;
+      u_rendering_enabled.real = this->rendering_enabled;
+      *(outbuffer + offset + 0) = (u_rendering_enabled.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->rendering_enabled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_sim_time;
+      u_sim_time.base = 0;
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sim_time = u_sim_time.real;
+      offset += sizeof(this->sim_time);
+      uint32_t model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->model_names_length);
+      if(model_names_lengthT > model_names_length)
+        this->model_names = (char**)realloc(this->model_names, model_names_lengthT * sizeof(char*));
+      model_names_length = model_names_lengthT;
+      for( uint32_t i = 0; i < model_names_length; i++){
+      uint32_t length_st_model_names;
+      arrToVar(length_st_model_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_model_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_model_names-1]=0;
+      this->st_model_names = (char *)(inbuffer + offset-1);
+      offset += length_st_model_names;
+        memcpy( &(this->model_names[i]), &(this->st_model_names), sizeof(char*));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_rendering_enabled;
+      u_rendering_enabled.base = 0;
+      u_rendering_enabled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->rendering_enabled = u_rendering_enabled.real;
+      offset += sizeof(this->rendering_enabled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETWORLDPROPERTIES; };
+    const char * getMD5(){ return "36bb0f2eccf4d8be971410c22818ba3f"; };
+
+  };
+
+  class GetWorldProperties {
+    public:
+    typedef GetWorldPropertiesRequest Request;
+    typedef GetWorldPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/JointRequest.h b/rosserial_test/Inc/gazebo_msgs/JointRequest.h
new file mode 100644 (file)
index 0000000..6c2c13e
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_JointRequest_h
+#define _ROS_SERVICE_JointRequest_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char JOINTREQUEST[] = "gazebo_msgs/JointRequest";
+
+  class JointRequestRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+
+    JointRequestRequest():
+      joint_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+     return offset;
+    }
+
+    const char * getType(){ return JOINTREQUEST; };
+    const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; };
+
+  };
+
+  class JointRequestResponse : public ros::Msg
+  {
+    public:
+
+    JointRequestResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return JOINTREQUEST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class JointRequest {
+    public:
+    typedef JointRequestRequest Request;
+    typedef JointRequestResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/LinkState.h b/rosserial_test/Inc/gazebo_msgs/LinkState.h
new file mode 100644 (file)
index 0000000..6f476a1
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_gazebo_msgs_LinkState_h
+#define _ROS_gazebo_msgs_LinkState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class LinkState : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    LinkState():
+      link_name(""),
+      pose(),
+      twist(),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/LinkState"; };
+    const char * getMD5(){ return "0818ebbf28ce3a08d48ab1eaa7309ebe"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/LinkStates.h b/rosserial_test/Inc/gazebo_msgs/LinkStates.h
new file mode 100644 (file)
index 0000000..33c154b
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef _ROS_gazebo_msgs_LinkStates_h
+#define _ROS_gazebo_msgs_LinkStates_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class LinkStates : public ros::Msg
+  {
+    public:
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t pose_length;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type st_pose;
+      _pose_type * pose;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+
+    LinkStates():
+      name_length(0), name(NULL),
+      pose_length(0), pose(NULL),
+      twist_length(0), twist(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pose_length);
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->pose[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->pose_length);
+      if(pose_lengthT > pose_length)
+        this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose));
+      pose_length = pose_lengthT;
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->st_pose.deserialize(inbuffer + offset);
+        memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/LinkStates"; };
+    const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ModelState.h b/rosserial_test/Inc/gazebo_msgs/ModelState.h
new file mode 100644 (file)
index 0000000..510ae98
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_gazebo_msgs_ModelState_h
+#define _ROS_gazebo_msgs_ModelState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class ModelState : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    ModelState():
+      model_name(""),
+      pose(),
+      twist(),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ModelState"; };
+    const char * getMD5(){ return "9330fd35f2fcd82d457e54bd54e10593"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ModelStates.h b/rosserial_test/Inc/gazebo_msgs/ModelStates.h
new file mode 100644 (file)
index 0000000..cc0d6b9
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef _ROS_gazebo_msgs_ModelStates_h
+#define _ROS_gazebo_msgs_ModelStates_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class ModelStates : public ros::Msg
+  {
+    public:
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t pose_length;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type st_pose;
+      _pose_type * pose;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+
+    ModelStates():
+      name_length(0), name(NULL),
+      pose_length(0), pose(NULL),
+      twist_length(0), twist(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pose_length);
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->pose[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->pose_length);
+      if(pose_lengthT > pose_length)
+        this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose));
+      pose_length = pose_lengthT;
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->st_pose.deserialize(inbuffer + offset);
+        memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ModelStates"; };
+    const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ODEJointProperties.h b/rosserial_test/Inc/gazebo_msgs/ODEJointProperties.h
new file mode 100644 (file)
index 0000000..50628e4
--- /dev/null
@@ -0,0 +1,558 @@
+#ifndef _ROS_gazebo_msgs_ODEJointProperties_h
+#define _ROS_gazebo_msgs_ODEJointProperties_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+  class ODEJointProperties : public ros::Msg
+  {
+    public:
+      uint32_t damping_length;
+      typedef double _damping_type;
+      _damping_type st_damping;
+      _damping_type * damping;
+      uint32_t hiStop_length;
+      typedef double _hiStop_type;
+      _hiStop_type st_hiStop;
+      _hiStop_type * hiStop;
+      uint32_t loStop_length;
+      typedef double _loStop_type;
+      _loStop_type st_loStop;
+      _loStop_type * loStop;
+      uint32_t erp_length;
+      typedef double _erp_type;
+      _erp_type st_erp;
+      _erp_type * erp;
+      uint32_t cfm_length;
+      typedef double _cfm_type;
+      _cfm_type st_cfm;
+      _cfm_type * cfm;
+      uint32_t stop_erp_length;
+      typedef double _stop_erp_type;
+      _stop_erp_type st_stop_erp;
+      _stop_erp_type * stop_erp;
+      uint32_t stop_cfm_length;
+      typedef double _stop_cfm_type;
+      _stop_cfm_type st_stop_cfm;
+      _stop_cfm_type * stop_cfm;
+      uint32_t fudge_factor_length;
+      typedef double _fudge_factor_type;
+      _fudge_factor_type st_fudge_factor;
+      _fudge_factor_type * fudge_factor;
+      uint32_t fmax_length;
+      typedef double _fmax_type;
+      _fmax_type st_fmax;
+      _fmax_type * fmax;
+      uint32_t vel_length;
+      typedef double _vel_type;
+      _vel_type st_vel;
+      _vel_type * vel;
+
+    ODEJointProperties():
+      damping_length(0), damping(NULL),
+      hiStop_length(0), hiStop(NULL),
+      loStop_length(0), loStop(NULL),
+      erp_length(0), erp(NULL),
+      cfm_length(0), cfm(NULL),
+      stop_erp_length(0), stop_erp(NULL),
+      stop_cfm_length(0), stop_cfm(NULL),
+      fudge_factor_length(0), fudge_factor(NULL),
+      fmax_length(0), fmax(NULL),
+      vel_length(0), vel(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->damping_length);
+      for( uint32_t i = 0; i < damping_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_dampingi;
+      u_dampingi.real = this->damping[i];
+      *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->damping[i]);
+      }
+      *(outbuffer + offset + 0) = (this->hiStop_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->hiStop_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->hiStop_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->hiStop_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->hiStop_length);
+      for( uint32_t i = 0; i < hiStop_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_hiStopi;
+      u_hiStopi.real = this->hiStop[i];
+      *(outbuffer + offset + 0) = (u_hiStopi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_hiStopi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_hiStopi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_hiStopi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_hiStopi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_hiStopi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_hiStopi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_hiStopi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->hiStop[i]);
+      }
+      *(outbuffer + offset + 0) = (this->loStop_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->loStop_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->loStop_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->loStop_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->loStop_length);
+      for( uint32_t i = 0; i < loStop_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_loStopi;
+      u_loStopi.real = this->loStop[i];
+      *(outbuffer + offset + 0) = (u_loStopi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_loStopi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_loStopi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_loStopi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_loStopi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_loStopi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_loStopi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_loStopi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->loStop[i]);
+      }
+      *(outbuffer + offset + 0) = (this->erp_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->erp_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->erp_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->erp_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->erp_length);
+      for( uint32_t i = 0; i < erp_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_erpi;
+      u_erpi.real = this->erp[i];
+      *(outbuffer + offset + 0) = (u_erpi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_erpi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_erpi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_erpi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_erpi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_erpi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_erpi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_erpi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->erp[i]);
+      }
+      *(outbuffer + offset + 0) = (this->cfm_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->cfm_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->cfm_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->cfm_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cfm_length);
+      for( uint32_t i = 0; i < cfm_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_cfmi;
+      u_cfmi.real = this->cfm[i];
+      *(outbuffer + offset + 0) = (u_cfmi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cfmi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cfmi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cfmi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_cfmi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_cfmi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_cfmi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_cfmi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->cfm[i]);
+      }
+      *(outbuffer + offset + 0) = (this->stop_erp_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stop_erp_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stop_erp_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stop_erp_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stop_erp_length);
+      for( uint32_t i = 0; i < stop_erp_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_stop_erpi;
+      u_stop_erpi.real = this->stop_erp[i];
+      *(outbuffer + offset + 0) = (u_stop_erpi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_stop_erpi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_stop_erpi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_stop_erpi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_stop_erpi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_stop_erpi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_stop_erpi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_stop_erpi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->stop_erp[i]);
+      }
+      *(outbuffer + offset + 0) = (this->stop_cfm_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stop_cfm_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stop_cfm_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stop_cfm_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stop_cfm_length);
+      for( uint32_t i = 0; i < stop_cfm_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_stop_cfmi;
+      u_stop_cfmi.real = this->stop_cfm[i];
+      *(outbuffer + offset + 0) = (u_stop_cfmi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_stop_cfmi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_stop_cfmi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_stop_cfmi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_stop_cfmi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_stop_cfmi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_stop_cfmi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_stop_cfmi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->stop_cfm[i]);
+      }
+      *(outbuffer + offset + 0) = (this->fudge_factor_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->fudge_factor_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->fudge_factor_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->fudge_factor_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->fudge_factor_length);
+      for( uint32_t i = 0; i < fudge_factor_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_fudge_factori;
+      u_fudge_factori.real = this->fudge_factor[i];
+      *(outbuffer + offset + 0) = (u_fudge_factori.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_fudge_factori.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_fudge_factori.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_fudge_factori.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_fudge_factori.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_fudge_factori.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_fudge_factori.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_fudge_factori.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->fudge_factor[i]);
+      }
+      *(outbuffer + offset + 0) = (this->fmax_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->fmax_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->fmax_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->fmax_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->fmax_length);
+      for( uint32_t i = 0; i < fmax_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_fmaxi;
+      u_fmaxi.real = this->fmax[i];
+      *(outbuffer + offset + 0) = (u_fmaxi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_fmaxi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_fmaxi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_fmaxi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_fmaxi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_fmaxi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_fmaxi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_fmaxi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->fmax[i]);
+      }
+      *(outbuffer + offset + 0) = (this->vel_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vel_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vel_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vel_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vel_length);
+      for( uint32_t i = 0; i < vel_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_veli;
+      u_veli.real = this->vel[i];
+      *(outbuffer + offset + 0) = (u_veli.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_veli.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_veli.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_veli.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_veli.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_veli.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_veli.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_veli.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->vel[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->damping_length);
+      if(damping_lengthT > damping_length)
+        this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double));
+      damping_length = damping_lengthT;
+      for( uint32_t i = 0; i < damping_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_damping;
+      u_st_damping.base = 0;
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_damping = u_st_damping.real;
+      offset += sizeof(this->st_damping);
+        memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double));
+      }
+      uint32_t hiStop_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->hiStop_length);
+      if(hiStop_lengthT > hiStop_length)
+        this->hiStop = (double*)realloc(this->hiStop, hiStop_lengthT * sizeof(double));
+      hiStop_length = hiStop_lengthT;
+      for( uint32_t i = 0; i < hiStop_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_hiStop;
+      u_st_hiStop.base = 0;
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_hiStop = u_st_hiStop.real;
+      offset += sizeof(this->st_hiStop);
+        memcpy( &(this->hiStop[i]), &(this->st_hiStop), sizeof(double));
+      }
+      uint32_t loStop_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->loStop_length);
+      if(loStop_lengthT > loStop_length)
+        this->loStop = (double*)realloc(this->loStop, loStop_lengthT * sizeof(double));
+      loStop_length = loStop_lengthT;
+      for( uint32_t i = 0; i < loStop_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_loStop;
+      u_st_loStop.base = 0;
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_loStop = u_st_loStop.real;
+      offset += sizeof(this->st_loStop);
+        memcpy( &(this->loStop[i]), &(this->st_loStop), sizeof(double));
+      }
+      uint32_t erp_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->erp_length);
+      if(erp_lengthT > erp_length)
+        this->erp = (double*)realloc(this->erp, erp_lengthT * sizeof(double));
+      erp_length = erp_lengthT;
+      for( uint32_t i = 0; i < erp_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_erp;
+      u_st_erp.base = 0;
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_erp = u_st_erp.real;
+      offset += sizeof(this->st_erp);
+        memcpy( &(this->erp[i]), &(this->st_erp), sizeof(double));
+      }
+      uint32_t cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->cfm_length);
+      if(cfm_lengthT > cfm_length)
+        this->cfm = (double*)realloc(this->cfm, cfm_lengthT * sizeof(double));
+      cfm_length = cfm_lengthT;
+      for( uint32_t i = 0; i < cfm_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_cfm;
+      u_st_cfm.base = 0;
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_cfm = u_st_cfm.real;
+      offset += sizeof(this->st_cfm);
+        memcpy( &(this->cfm[i]), &(this->st_cfm), sizeof(double));
+      }
+      uint32_t stop_erp_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->stop_erp_length);
+      if(stop_erp_lengthT > stop_erp_length)
+        this->stop_erp = (double*)realloc(this->stop_erp, stop_erp_lengthT * sizeof(double));
+      stop_erp_length = stop_erp_lengthT;
+      for( uint32_t i = 0; i < stop_erp_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_stop_erp;
+      u_st_stop_erp.base = 0;
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_stop_erp = u_st_stop_erp.real;
+      offset += sizeof(this->st_stop_erp);
+        memcpy( &(this->stop_erp[i]), &(this->st_stop_erp), sizeof(double));
+      }
+      uint32_t stop_cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->stop_cfm_length);
+      if(stop_cfm_lengthT > stop_cfm_length)
+        this->stop_cfm = (double*)realloc(this->stop_cfm, stop_cfm_lengthT * sizeof(double));
+      stop_cfm_length = stop_cfm_lengthT;
+      for( uint32_t i = 0; i < stop_cfm_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_stop_cfm;
+      u_st_stop_cfm.base = 0;
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_stop_cfm = u_st_stop_cfm.real;
+      offset += sizeof(this->st_stop_cfm);
+        memcpy( &(this->stop_cfm[i]), &(this->st_stop_cfm), sizeof(double));
+      }
+      uint32_t fudge_factor_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->fudge_factor_length);
+      if(fudge_factor_lengthT > fudge_factor_length)
+        this->fudge_factor = (double*)realloc(this->fudge_factor, fudge_factor_lengthT * sizeof(double));
+      fudge_factor_length = fudge_factor_lengthT;
+      for( uint32_t i = 0; i < fudge_factor_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_fudge_factor;
+      u_st_fudge_factor.base = 0;
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_fudge_factor = u_st_fudge_factor.real;
+      offset += sizeof(this->st_fudge_factor);
+        memcpy( &(this->fudge_factor[i]), &(this->st_fudge_factor), sizeof(double));
+      }
+      uint32_t fmax_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->fmax_length);
+      if(fmax_lengthT > fmax_length)
+        this->fmax = (double*)realloc(this->fmax, fmax_lengthT * sizeof(double));
+      fmax_length = fmax_lengthT;
+      for( uint32_t i = 0; i < fmax_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_fmax;
+      u_st_fmax.base = 0;
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_fmax = u_st_fmax.real;
+      offset += sizeof(this->st_fmax);
+        memcpy( &(this->fmax[i]), &(this->st_fmax), sizeof(double));
+      }
+      uint32_t vel_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->vel_length);
+      if(vel_lengthT > vel_length)
+        this->vel = (double*)realloc(this->vel, vel_lengthT * sizeof(double));
+      vel_length = vel_lengthT;
+      for( uint32_t i = 0; i < vel_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_vel;
+      u_st_vel.base = 0;
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_vel = u_st_vel.real;
+      offset += sizeof(this->st_vel);
+        memcpy( &(this->vel[i]), &(this->st_vel), sizeof(double));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ODEJointProperties"; };
+    const char * getMD5(){ return "1b744c32a920af979f53afe2f9c3511f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/ODEPhysics.h b/rosserial_test/Inc/gazebo_msgs/ODEPhysics.h
new file mode 100644 (file)
index 0000000..02331b7
--- /dev/null
@@ -0,0 +1,287 @@
+#ifndef _ROS_gazebo_msgs_ODEPhysics_h
+#define _ROS_gazebo_msgs_ODEPhysics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+  class ODEPhysics : public ros::Msg
+  {
+    public:
+      typedef bool _auto_disable_bodies_type;
+      _auto_disable_bodies_type auto_disable_bodies;
+      typedef uint32_t _sor_pgs_precon_iters_type;
+      _sor_pgs_precon_iters_type sor_pgs_precon_iters;
+      typedef uint32_t _sor_pgs_iters_type;
+      _sor_pgs_iters_type sor_pgs_iters;
+      typedef double _sor_pgs_w_type;
+      _sor_pgs_w_type sor_pgs_w;
+      typedef double _sor_pgs_rms_error_tol_type;
+      _sor_pgs_rms_error_tol_type sor_pgs_rms_error_tol;
+      typedef double _contact_surface_layer_type;
+      _contact_surface_layer_type contact_surface_layer;
+      typedef double _contact_max_correcting_vel_type;
+      _contact_max_correcting_vel_type contact_max_correcting_vel;
+      typedef double _cfm_type;
+      _cfm_type cfm;
+      typedef double _erp_type;
+      _erp_type erp;
+      typedef uint32_t _max_contacts_type;
+      _max_contacts_type max_contacts;
+
+    ODEPhysics():
+      auto_disable_bodies(0),
+      sor_pgs_precon_iters(0),
+      sor_pgs_iters(0),
+      sor_pgs_w(0),
+      sor_pgs_rms_error_tol(0),
+      contact_surface_layer(0),
+      contact_max_correcting_vel(0),
+      cfm(0),
+      erp(0),
+      max_contacts(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_auto_disable_bodies;
+      u_auto_disable_bodies.real = this->auto_disable_bodies;
+      *(outbuffer + offset + 0) = (u_auto_disable_bodies.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->auto_disable_bodies);
+      *(outbuffer + offset + 0) = (this->sor_pgs_precon_iters >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sor_pgs_precon_iters >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sor_pgs_precon_iters >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sor_pgs_precon_iters >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sor_pgs_precon_iters);
+      *(outbuffer + offset + 0) = (this->sor_pgs_iters >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sor_pgs_iters >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sor_pgs_iters >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sor_pgs_iters >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sor_pgs_iters);
+      union {
+        double real;
+        uint64_t base;
+      } u_sor_pgs_w;
+      u_sor_pgs_w.real = this->sor_pgs_w;
+      *(outbuffer + offset + 0) = (u_sor_pgs_w.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sor_pgs_w.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sor_pgs_w.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sor_pgs_w.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sor_pgs_w.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sor_pgs_w.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sor_pgs_w.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sor_pgs_w.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sor_pgs_w);
+      union {
+        double real;
+        uint64_t base;
+      } u_sor_pgs_rms_error_tol;
+      u_sor_pgs_rms_error_tol.real = this->sor_pgs_rms_error_tol;
+      *(outbuffer + offset + 0) = (u_sor_pgs_rms_error_tol.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sor_pgs_rms_error_tol.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sor_pgs_rms_error_tol.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sor_pgs_rms_error_tol.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sor_pgs_rms_error_tol.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sor_pgs_rms_error_tol.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sor_pgs_rms_error_tol.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sor_pgs_rms_error_tol.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sor_pgs_rms_error_tol);
+      union {
+        double real;
+        uint64_t base;
+      } u_contact_surface_layer;
+      u_contact_surface_layer.real = this->contact_surface_layer;
+      *(outbuffer + offset + 0) = (u_contact_surface_layer.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_contact_surface_layer.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_contact_surface_layer.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_contact_surface_layer.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_contact_surface_layer.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_contact_surface_layer.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_contact_surface_layer.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_contact_surface_layer.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->contact_surface_layer);
+      union {
+        double real;
+        uint64_t base;
+      } u_contact_max_correcting_vel;
+      u_contact_max_correcting_vel.real = this->contact_max_correcting_vel;
+      *(outbuffer + offset + 0) = (u_contact_max_correcting_vel.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_contact_max_correcting_vel.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_contact_max_correcting_vel.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_contact_max_correcting_vel.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_contact_max_correcting_vel.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_contact_max_correcting_vel.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_contact_max_correcting_vel.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_contact_max_correcting_vel.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->contact_max_correcting_vel);
+      union {
+        double real;
+        uint64_t base;
+      } u_cfm;
+      u_cfm.real = this->cfm;
+      *(outbuffer + offset + 0) = (u_cfm.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cfm.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cfm.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cfm.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_cfm.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_cfm.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_cfm.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_cfm.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->cfm);
+      union {
+        double real;
+        uint64_t base;
+      } u_erp;
+      u_erp.real = this->erp;
+      *(outbuffer + offset + 0) = (u_erp.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_erp.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_erp.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_erp.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_erp.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_erp.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_erp.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_erp.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->erp);
+      *(outbuffer + offset + 0) = (this->max_contacts >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->max_contacts >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->max_contacts >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->max_contacts >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_contacts);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_auto_disable_bodies;
+      u_auto_disable_bodies.base = 0;
+      u_auto_disable_bodies.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->auto_disable_bodies = u_auto_disable_bodies.real;
+      offset += sizeof(this->auto_disable_bodies);
+      this->sor_pgs_precon_iters =  ((uint32_t) (*(inbuffer + offset)));
+      this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->sor_pgs_precon_iters);
+      this->sor_pgs_iters =  ((uint32_t) (*(inbuffer + offset)));
+      this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->sor_pgs_iters);
+      union {
+        double real;
+        uint64_t base;
+      } u_sor_pgs_w;
+      u_sor_pgs_w.base = 0;
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sor_pgs_w = u_sor_pgs_w.real;
+      offset += sizeof(this->sor_pgs_w);
+      union {
+        double real;
+        uint64_t base;
+      } u_sor_pgs_rms_error_tol;
+      u_sor_pgs_rms_error_tol.base = 0;
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sor_pgs_rms_error_tol = u_sor_pgs_rms_error_tol.real;
+      offset += sizeof(this->sor_pgs_rms_error_tol);
+      union {
+        double real;
+        uint64_t base;
+      } u_contact_surface_layer;
+      u_contact_surface_layer.base = 0;
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->contact_surface_layer = u_contact_surface_layer.real;
+      offset += sizeof(this->contact_surface_layer);
+      union {
+        double real;
+        uint64_t base;
+      } u_contact_max_correcting_vel;
+      u_contact_max_correcting_vel.base = 0;
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->contact_max_correcting_vel = u_contact_max_correcting_vel.real;
+      offset += sizeof(this->contact_max_correcting_vel);
+      union {
+        double real;
+        uint64_t base;
+      } u_cfm;
+      u_cfm.base = 0;
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->cfm = u_cfm.real;
+      offset += sizeof(this->cfm);
+      union {
+        double real;
+        uint64_t base;
+      } u_erp;
+      u_erp.base = 0;
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->erp = u_erp.real;
+      offset += sizeof(this->erp);
+      this->max_contacts =  ((uint32_t) (*(inbuffer + offset)));
+      this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->max_contacts);
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ODEPhysics"; };
+    const char * getMD5(){ return "667d56ddbd547918c32d1934503dc335"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetJointProperties.h b/rosserial_test/Inc/gazebo_msgs/SetJointProperties.h
new file mode 100644 (file)
index 0000000..981853d
--- /dev/null
@@ -0,0 +1,128 @@
+#ifndef _ROS_SERVICE_SetJointProperties_h
+#define _ROS_SERVICE_SetJointProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/ODEJointProperties.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETJOINTPROPERTIES[] = "gazebo_msgs/SetJointProperties";
+
+  class SetJointPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+      typedef gazebo_msgs::ODEJointProperties _ode_joint_config_type;
+      _ode_joint_config_type ode_joint_config;
+
+    SetJointPropertiesRequest():
+      joint_name(""),
+      ode_joint_config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      offset += this->ode_joint_config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+      offset += this->ode_joint_config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTPROPERTIES; };
+    const char * getMD5(){ return "331fd8f35fd27e3c1421175590258e26"; };
+
+  };
+
+  class SetJointPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetJointPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetJointProperties {
+    public:
+    typedef SetJointPropertiesRequest Request;
+    typedef SetJointPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetJointTrajectory.h b/rosserial_test/Inc/gazebo_msgs/SetJointTrajectory.h
new file mode 100644 (file)
index 0000000..81146ce
--- /dev/null
@@ -0,0 +1,170 @@
+#ifndef _ROS_SERVICE_SetJointTrajectory_h
+#define _ROS_SERVICE_SetJointTrajectory_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "trajectory_msgs/JointTrajectory.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETJOINTTRAJECTORY[] = "gazebo_msgs/SetJointTrajectory";
+
+  class SetJointTrajectoryRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef trajectory_msgs::JointTrajectory _joint_trajectory_type;
+      _joint_trajectory_type joint_trajectory;
+      typedef geometry_msgs::Pose _model_pose_type;
+      _model_pose_type model_pose;
+      typedef bool _set_model_pose_type;
+      _set_model_pose_type set_model_pose;
+      typedef bool _disable_physics_updates_type;
+      _disable_physics_updates_type disable_physics_updates;
+
+    SetJointTrajectoryRequest():
+      model_name(""),
+      joint_trajectory(),
+      model_pose(),
+      set_model_pose(0),
+      disable_physics_updates(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      offset += this->joint_trajectory.serialize(outbuffer + offset);
+      offset += this->model_pose.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_set_model_pose;
+      u_set_model_pose.real = this->set_model_pose;
+      *(outbuffer + offset + 0) = (u_set_model_pose.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->set_model_pose);
+      union {
+        bool real;
+        uint8_t base;
+      } u_disable_physics_updates;
+      u_disable_physics_updates.real = this->disable_physics_updates;
+      *(outbuffer + offset + 0) = (u_disable_physics_updates.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->disable_physics_updates);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      offset += this->joint_trajectory.deserialize(inbuffer + offset);
+      offset += this->model_pose.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_set_model_pose;
+      u_set_model_pose.base = 0;
+      u_set_model_pose.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->set_model_pose = u_set_model_pose.real;
+      offset += sizeof(this->set_model_pose);
+      union {
+        bool real;
+        uint8_t base;
+      } u_disable_physics_updates;
+      u_disable_physics_updates.base = 0;
+      u_disable_physics_updates.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->disable_physics_updates = u_disable_physics_updates.real;
+      offset += sizeof(this->disable_physics_updates);
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTTRAJECTORY; };
+    const char * getMD5(){ return "649dd2eba5ffd358069238825f9f85ab"; };
+
+  };
+
+  class SetJointTrajectoryResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetJointTrajectoryResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTTRAJECTORY; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetJointTrajectory {
+    public:
+    typedef SetJointTrajectoryRequest Request;
+    typedef SetJointTrajectoryResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetLightProperties.h b/rosserial_test/Inc/gazebo_msgs/SetLightProperties.h
new file mode 100644 (file)
index 0000000..5243ae2
--- /dev/null
@@ -0,0 +1,224 @@
+#ifndef _ROS_SERVICE_SetLightProperties_h
+#define _ROS_SERVICE_SetLightProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/ColorRGBA.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETLIGHTPROPERTIES[] = "gazebo_msgs/SetLightProperties";
+
+  class SetLightPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _light_name_type;
+      _light_name_type light_name;
+      typedef std_msgs::ColorRGBA _diffuse_type;
+      _diffuse_type diffuse;
+      typedef double _attenuation_constant_type;
+      _attenuation_constant_type attenuation_constant;
+      typedef double _attenuation_linear_type;
+      _attenuation_linear_type attenuation_linear;
+      typedef double _attenuation_quadratic_type;
+      _attenuation_quadratic_type attenuation_quadratic;
+
+    SetLightPropertiesRequest():
+      light_name(""),
+      diffuse(),
+      attenuation_constant(0),
+      attenuation_linear(0),
+      attenuation_quadratic(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_light_name = strlen(this->light_name);
+      varToArr(outbuffer + offset, length_light_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->light_name, length_light_name);
+      offset += length_light_name;
+      offset += this->diffuse.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_constant;
+      u_attenuation_constant.real = this->attenuation_constant;
+      *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->attenuation_constant);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_linear;
+      u_attenuation_linear.real = this->attenuation_linear;
+      *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->attenuation_linear);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_quadratic;
+      u_attenuation_quadratic.real = this->attenuation_quadratic;
+      *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->attenuation_quadratic);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_light_name;
+      arrToVar(length_light_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_light_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_light_name-1]=0;
+      this->light_name = (char *)(inbuffer + offset-1);
+      offset += length_light_name;
+      offset += this->diffuse.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_constant;
+      u_attenuation_constant.base = 0;
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->attenuation_constant = u_attenuation_constant.real;
+      offset += sizeof(this->attenuation_constant);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_linear;
+      u_attenuation_linear.base = 0;
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->attenuation_linear = u_attenuation_linear.real;
+      offset += sizeof(this->attenuation_linear);
+      union {
+        double real;
+        uint64_t base;
+      } u_attenuation_quadratic;
+      u_attenuation_quadratic.base = 0;
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->attenuation_quadratic = u_attenuation_quadratic.real;
+      offset += sizeof(this->attenuation_quadratic);
+     return offset;
+    }
+
+    const char * getType(){ return SETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "73ad1ac5e9e312ddf7c74f38ad843f34"; };
+
+  };
+
+  class SetLightPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetLightPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetLightProperties {
+    public:
+    typedef SetLightPropertiesRequest Request;
+    typedef SetLightPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetLinkProperties.h b/rosserial_test/Inc/gazebo_msgs/SetLinkProperties.h
new file mode 100644 (file)
index 0000000..3b0ae61
--- /dev/null
@@ -0,0 +1,370 @@
+#ifndef _ROS_SERVICE_SetLinkProperties_h
+#define _ROS_SERVICE_SetLinkProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETLINKPROPERTIES[] = "gazebo_msgs/SetLinkProperties";
+
+  class SetLinkPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+      typedef geometry_msgs::Pose _com_type;
+      _com_type com;
+      typedef bool _gravity_mode_type;
+      _gravity_mode_type gravity_mode;
+      typedef double _mass_type;
+      _mass_type mass;
+      typedef double _ixx_type;
+      _ixx_type ixx;
+      typedef double _ixy_type;
+      _ixy_type ixy;
+      typedef double _ixz_type;
+      _ixz_type ixz;
+      typedef double _iyy_type;
+      _iyy_type iyy;
+      typedef double _iyz_type;
+      _iyz_type iyz;
+      typedef double _izz_type;
+      _izz_type izz;
+
+    SetLinkPropertiesRequest():
+      link_name(""),
+      com(),
+      gravity_mode(0),
+      mass(0),
+      ixx(0),
+      ixy(0),
+      ixz(0),
+      iyy(0),
+      iyz(0),
+      izz(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      offset += this->com.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.real = this->gravity_mode;
+      *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->gravity_mode);
+      union {
+        double real;
+        uint64_t base;
+      } u_mass;
+      u_mass.real = this->mass;
+      *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->mass);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixx;
+      u_ixx.real = this->ixx;
+      *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixx);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixy;
+      u_ixy.real = this->ixy;
+      *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixy);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixz;
+      u_ixz.real = this->ixz;
+      *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixz);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyy;
+      u_iyy.real = this->iyy;
+      *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->iyy);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyz;
+      u_iyz.real = this->iyz;
+      *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->iyz);
+      union {
+        double real;
+        uint64_t base;
+      } u_izz;
+      u_izz.real = this->izz;
+      *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->izz);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+      offset += this->com.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.base = 0;
+      u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->gravity_mode = u_gravity_mode.real;
+      offset += sizeof(this->gravity_mode);
+      union {
+        double real;
+        uint64_t base;
+      } u_mass;
+      u_mass.base = 0;
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->mass = u_mass.real;
+      offset += sizeof(this->mass);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixx;
+      u_ixx.base = 0;
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixx = u_ixx.real;
+      offset += sizeof(this->ixx);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixy;
+      u_ixy.base = 0;
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixy = u_ixy.real;
+      offset += sizeof(this->ixy);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixz;
+      u_ixz.base = 0;
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixz = u_ixz.real;
+      offset += sizeof(this->ixz);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyy;
+      u_iyy.base = 0;
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->iyy = u_iyy.real;
+      offset += sizeof(this->iyy);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyz;
+      u_iyz.base = 0;
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->iyz = u_iyz.real;
+      offset += sizeof(this->iyz);
+      union {
+        double real;
+        uint64_t base;
+      } u_izz;
+      u_izz.base = 0;
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->izz = u_izz.real;
+      offset += sizeof(this->izz);
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKPROPERTIES; };
+    const char * getMD5(){ return "68ac74a4be01b165bc305b5ccdc45e91"; };
+
+  };
+
+  class SetLinkPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetLinkPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetLinkProperties {
+    public:
+    typedef SetLinkPropertiesRequest Request;
+    typedef SetLinkPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetLinkState.h b/rosserial_test/Inc/gazebo_msgs/SetLinkState.h
new file mode 100644 (file)
index 0000000..f089492
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_SetLinkState_h
+#define _ROS_SERVICE_SetLinkState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/LinkState.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETLINKSTATE[] = "gazebo_msgs/SetLinkState";
+
+  class SetLinkStateRequest : public ros::Msg
+  {
+    public:
+      typedef gazebo_msgs::LinkState _link_state_type;
+      _link_state_type link_state;
+
+    SetLinkStateRequest():
+      link_state()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->link_state.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->link_state.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKSTATE; };
+    const char * getMD5(){ return "22a2c757d56911b6f27868159e9a872d"; };
+
+  };
+
+  class SetLinkStateResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetLinkStateResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKSTATE; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetLinkState {
+    public:
+    typedef SetLinkStateRequest Request;
+    typedef SetLinkStateResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetModelConfiguration.h b/rosserial_test/Inc/gazebo_msgs/SetModelConfiguration.h
new file mode 100644 (file)
index 0000000..d2da91b
--- /dev/null
@@ -0,0 +1,228 @@
+#ifndef _ROS_SERVICE_SetModelConfiguration_h
+#define _ROS_SERVICE_SetModelConfiguration_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETMODELCONFIGURATION[] = "gazebo_msgs/SetModelConfiguration";
+
+  class SetModelConfigurationRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef const char* _urdf_param_name_type;
+      _urdf_param_name_type urdf_param_name;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t joint_positions_length;
+      typedef double _joint_positions_type;
+      _joint_positions_type st_joint_positions;
+      _joint_positions_type * joint_positions;
+
+    SetModelConfigurationRequest():
+      model_name(""),
+      urdf_param_name(""),
+      joint_names_length(0), joint_names(NULL),
+      joint_positions_length(0), joint_positions(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      uint32_t length_urdf_param_name = strlen(this->urdf_param_name);
+      varToArr(outbuffer + offset, length_urdf_param_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->urdf_param_name, length_urdf_param_name);
+      offset += length_urdf_param_name;
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->joint_positions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_positions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_positions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_positions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_positions_length);
+      for( uint32_t i = 0; i < joint_positions_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_joint_positionsi;
+      u_joint_positionsi.real = this->joint_positions[i];
+      *(outbuffer + offset + 0) = (u_joint_positionsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_joint_positionsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_joint_positionsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_joint_positionsi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_joint_positionsi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_joint_positionsi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_joint_positionsi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_joint_positionsi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->joint_positions[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      uint32_t length_urdf_param_name;
+      arrToVar(length_urdf_param_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_urdf_param_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_urdf_param_name-1]=0;
+      this->urdf_param_name = (char *)(inbuffer + offset-1);
+      offset += length_urdf_param_name;
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t joint_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_positions_length);
+      if(joint_positions_lengthT > joint_positions_length)
+        this->joint_positions = (double*)realloc(this->joint_positions, joint_positions_lengthT * sizeof(double));
+      joint_positions_length = joint_positions_lengthT;
+      for( uint32_t i = 0; i < joint_positions_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_joint_positions;
+      u_st_joint_positions.base = 0;
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_joint_positions = u_st_joint_positions.real;
+      offset += sizeof(this->st_joint_positions);
+        memcpy( &(this->joint_positions[i]), &(this->st_joint_positions), sizeof(double));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELCONFIGURATION; };
+    const char * getMD5(){ return "160eae60f51fabff255480c70afa289f"; };
+
+  };
+
+  class SetModelConfigurationResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetModelConfigurationResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELCONFIGURATION; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetModelConfiguration {
+    public:
+    typedef SetModelConfigurationRequest Request;
+    typedef SetModelConfigurationResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetModelState.h b/rosserial_test/Inc/gazebo_msgs/SetModelState.h
new file mode 100644 (file)
index 0000000..ef251ad
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_SetModelState_h
+#define _ROS_SERVICE_SetModelState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/ModelState.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETMODELSTATE[] = "gazebo_msgs/SetModelState";
+
+  class SetModelStateRequest : public ros::Msg
+  {
+    public:
+      typedef gazebo_msgs::ModelState _model_state_type;
+      _model_state_type model_state;
+
+    SetModelStateRequest():
+      model_state()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->model_state.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->model_state.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELSTATE; };
+    const char * getMD5(){ return "cb042b0e91880f4661b29ea5b6234350"; };
+
+  };
+
+  class SetModelStateResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetModelStateResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELSTATE; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetModelState {
+    public:
+    typedef SetModelStateRequest Request;
+    typedef SetModelStateResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SetPhysicsProperties.h b/rosserial_test/Inc/gazebo_msgs/SetPhysicsProperties.h
new file mode 100644 (file)
index 0000000..ea160b5
--- /dev/null
@@ -0,0 +1,181 @@
+#ifndef _ROS_SERVICE_SetPhysicsProperties_h
+#define _ROS_SERVICE_SetPhysicsProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+#include "gazebo_msgs/ODEPhysics.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETPHYSICSPROPERTIES[] = "gazebo_msgs/SetPhysicsProperties";
+
+  class SetPhysicsPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef double _time_step_type;
+      _time_step_type time_step;
+      typedef double _max_update_rate_type;
+      _max_update_rate_type max_update_rate;
+      typedef geometry_msgs::Vector3 _gravity_type;
+      _gravity_type gravity;
+      typedef gazebo_msgs::ODEPhysics _ode_config_type;
+      _ode_config_type ode_config;
+
+    SetPhysicsPropertiesRequest():
+      time_step(0),
+      max_update_rate(0),
+      gravity(),
+      ode_config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_time_step;
+      u_time_step.real = this->time_step;
+      *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->time_step);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_update_rate;
+      u_max_update_rate.real = this->max_update_rate;
+      *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->max_update_rate);
+      offset += this->gravity.serialize(outbuffer + offset);
+      offset += this->ode_config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_time_step;
+      u_time_step.base = 0;
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->time_step = u_time_step.real;
+      offset += sizeof(this->time_step);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_update_rate;
+      u_max_update_rate.base = 0;
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->max_update_rate = u_max_update_rate.real;
+      offset += sizeof(this->max_update_rate);
+      offset += this->gravity.deserialize(inbuffer + offset);
+      offset += this->ode_config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "abd9f82732b52b92e9d6bb36e6a82452"; };
+
+  };
+
+  class SetPhysicsPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetPhysicsPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetPhysicsProperties {
+    public:
+    typedef SetPhysicsPropertiesRequest Request;
+    typedef SetPhysicsPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/SpawnModel.h b/rosserial_test/Inc/gazebo_msgs/SpawnModel.h
new file mode 100644 (file)
index 0000000..215b001
--- /dev/null
@@ -0,0 +1,179 @@
+#ifndef _ROS_SERVICE_SpawnModel_h
+#define _ROS_SERVICE_SpawnModel_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char SPAWNMODEL[] = "gazebo_msgs/SpawnModel";
+
+  class SpawnModelRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef const char* _model_xml_type;
+      _model_xml_type model_xml;
+      typedef const char* _robot_namespace_type;
+      _robot_namespace_type robot_namespace;
+      typedef geometry_msgs::Pose _initial_pose_type;
+      _initial_pose_type initial_pose;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    SpawnModelRequest():
+      model_name(""),
+      model_xml(""),
+      robot_namespace(""),
+      initial_pose(),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      uint32_t length_model_xml = strlen(this->model_xml);
+      varToArr(outbuffer + offset, length_model_xml);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_xml, length_model_xml);
+      offset += length_model_xml;
+      uint32_t length_robot_namespace = strlen(this->robot_namespace);
+      varToArr(outbuffer + offset, length_robot_namespace);
+      offset += 4;
+      memcpy(outbuffer + offset, this->robot_namespace, length_robot_namespace);
+      offset += length_robot_namespace;
+      offset += this->initial_pose.serialize(outbuffer + offset);
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      uint32_t length_model_xml;
+      arrToVar(length_model_xml, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_xml; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_xml-1]=0;
+      this->model_xml = (char *)(inbuffer + offset-1);
+      offset += length_model_xml;
+      uint32_t length_robot_namespace;
+      arrToVar(length_robot_namespace, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_robot_namespace; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_robot_namespace-1]=0;
+      this->robot_namespace = (char *)(inbuffer + offset-1);
+      offset += length_robot_namespace;
+      offset += this->initial_pose.deserialize(inbuffer + offset);
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWNMODEL; };
+    const char * getMD5(){ return "6d0eba5753761cd57e6263a056b79930"; };
+
+  };
+
+  class SpawnModelResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SpawnModelResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWNMODEL; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SpawnModel {
+    public:
+    typedef SpawnModelRequest Request;
+    typedef SpawnModelResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/gazebo_msgs/WorldState.h b/rosserial_test/Inc/gazebo_msgs/WorldState.h
new file mode 100644 (file)
index 0000000..bbfaa41
--- /dev/null
@@ -0,0 +1,159 @@
+#ifndef _ROS_gazebo_msgs_WorldState_h
+#define _ROS_gazebo_msgs_WorldState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+#include "geometry_msgs/Wrench.h"
+
+namespace gazebo_msgs
+{
+
+  class WorldState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t pose_length;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type st_pose;
+      _pose_type * pose;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+      uint32_t wrench_length;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type st_wrench;
+      _wrench_type * wrench;
+
+    WorldState():
+      header(),
+      name_length(0), name(NULL),
+      pose_length(0), pose(NULL),
+      twist_length(0), twist(NULL),
+      wrench_length(0), wrench(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pose_length);
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->pose[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->wrench_length);
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->wrench[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->pose_length);
+      if(pose_lengthT > pose_length)
+        this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose));
+      pose_length = pose_lengthT;
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->st_pose.deserialize(inbuffer + offset);
+        memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+      uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->wrench_length);
+      if(wrench_lengthT > wrench_length)
+        this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench));
+      wrench_length = wrench_lengthT;
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->st_wrench.deserialize(inbuffer + offset);
+        memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/WorldState"; };
+    const char * getMD5(){ return "de1a9de3ab7ba97ac0e9ec01a4eb481e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Accel.h b/rosserial_test/Inc/geometry_msgs/Accel.h
new file mode 100644 (file)
index 0000000..d7250a1
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef _ROS_geometry_msgs_Accel_h
+#define _ROS_geometry_msgs_Accel_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Accel : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _linear_type;
+      _linear_type linear;
+      typedef geometry_msgs::Vector3 _angular_type;
+      _angular_type angular;
+
+    Accel():
+      linear(),
+      angular()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->linear.serialize(outbuffer + offset);
+      offset += this->angular.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->linear.deserialize(inbuffer + offset);
+      offset += this->angular.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Accel"; };
+    const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/AccelStamped.h b/rosserial_test/Inc/geometry_msgs/AccelStamped.h
new file mode 100644 (file)
index 0000000..66b8e23
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_AccelStamped_h
+#define _ROS_geometry_msgs_AccelStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Accel.h"
+
+namespace geometry_msgs
+{
+
+  class AccelStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Accel _accel_type;
+      _accel_type accel;
+
+    AccelStamped():
+      header(),
+      accel()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->accel.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->accel.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/AccelStamped"; };
+    const char * getMD5(){ return "d8a98a5d81351b6eb0578c78557e7659"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/AccelWithCovariance.h b/rosserial_test/Inc/geometry_msgs/AccelWithCovariance.h
new file mode 100644 (file)
index 0000000..82011a7
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_geometry_msgs_AccelWithCovariance_h
+#define _ROS_geometry_msgs_AccelWithCovariance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Accel.h"
+
+namespace geometry_msgs
+{
+
+  class AccelWithCovariance : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Accel _accel_type;
+      _accel_type accel;
+      double covariance[36];
+
+    AccelWithCovariance():
+      accel(),
+      covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->accel.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_covariancei;
+      u_covariancei.real = this->covariance[i];
+      *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->accel.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_covariancei;
+      u_covariancei.base = 0;
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->covariance[i] = u_covariancei.real;
+      offset += sizeof(this->covariance[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/AccelWithCovariance"; };
+    const char * getMD5(){ return "ad5a718d699c6be72a02b8d6a139f334"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/AccelWithCovarianceStamped.h b/rosserial_test/Inc/geometry_msgs/AccelWithCovarianceStamped.h
new file mode 100644 (file)
index 0000000..b5d6608
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_AccelWithCovarianceStamped_h
+#define _ROS_geometry_msgs_AccelWithCovarianceStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/AccelWithCovariance.h"
+
+namespace geometry_msgs
+{
+
+  class AccelWithCovarianceStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::AccelWithCovariance _accel_type;
+      _accel_type accel;
+
+    AccelWithCovarianceStamped():
+      header(),
+      accel()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->accel.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->accel.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/AccelWithCovarianceStamped"; };
+    const char * getMD5(){ return "96adb295225031ec8d57fb4251b0a886"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Inertia.h b/rosserial_test/Inc/geometry_msgs/Inertia.h
new file mode 100644 (file)
index 0000000..256ddf3
--- /dev/null
@@ -0,0 +1,268 @@
+#ifndef _ROS_geometry_msgs_Inertia_h
+#define _ROS_geometry_msgs_Inertia_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Inertia : public ros::Msg
+  {
+    public:
+      typedef double _m_type;
+      _m_type m;
+      typedef geometry_msgs::Vector3 _com_type;
+      _com_type com;
+      typedef double _ixx_type;
+      _ixx_type ixx;
+      typedef double _ixy_type;
+      _ixy_type ixy;
+      typedef double _ixz_type;
+      _ixz_type ixz;
+      typedef double _iyy_type;
+      _iyy_type iyy;
+      typedef double _iyz_type;
+      _iyz_type iyz;
+      typedef double _izz_type;
+      _izz_type izz;
+
+    Inertia():
+      m(0),
+      com(),
+      ixx(0),
+      ixy(0),
+      ixz(0),
+      iyy(0),
+      iyz(0),
+      izz(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_m;
+      u_m.real = this->m;
+      *(outbuffer + offset + 0) = (u_m.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_m.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_m.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_m.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_m.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_m.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_m.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_m.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->m);
+      offset += this->com.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixx;
+      u_ixx.real = this->ixx;
+      *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixx);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixy;
+      u_ixy.real = this->ixy;
+      *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixy);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixz;
+      u_ixz.real = this->ixz;
+      *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->ixz);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyy;
+      u_iyy.real = this->iyy;
+      *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->iyy);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyz;
+      u_iyz.real = this->iyz;
+      *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->iyz);
+      union {
+        double real;
+        uint64_t base;
+      } u_izz;
+      u_izz.real = this->izz;
+      *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->izz);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_m;
+      u_m.base = 0;
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_m.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->m = u_m.real;
+      offset += sizeof(this->m);
+      offset += this->com.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixx;
+      u_ixx.base = 0;
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixx = u_ixx.real;
+      offset += sizeof(this->ixx);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixy;
+      u_ixy.base = 0;
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixy = u_ixy.real;
+      offset += sizeof(this->ixy);
+      union {
+        double real;
+        uint64_t base;
+      } u_ixz;
+      u_ixz.base = 0;
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->ixz = u_ixz.real;
+      offset += sizeof(this->ixz);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyy;
+      u_iyy.base = 0;
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->iyy = u_iyy.real;
+      offset += sizeof(this->iyy);
+      union {
+        double real;
+        uint64_t base;
+      } u_iyz;
+      u_iyz.base = 0;
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->iyz = u_iyz.real;
+      offset += sizeof(this->iyz);
+      union {
+        double real;
+        uint64_t base;
+      } u_izz;
+      u_izz.base = 0;
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->izz = u_izz.real;
+      offset += sizeof(this->izz);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Inertia"; };
+    const char * getMD5(){ return "1d26e4bb6c83ff141c5cf0d883c2b0fe"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/InertiaStamped.h b/rosserial_test/Inc/geometry_msgs/InertiaStamped.h
new file mode 100644 (file)
index 0000000..1ddae56
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_InertiaStamped_h
+#define _ROS_geometry_msgs_InertiaStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Inertia.h"
+
+namespace geometry_msgs
+{
+
+  class InertiaStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Inertia _inertia_type;
+      _inertia_type inertia;
+
+    InertiaStamped():
+      header(),
+      inertia()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->inertia.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->inertia.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/InertiaStamped"; };
+    const char * getMD5(){ return "ddee48caeab5a966c5e8d166654a9ac7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Point.h b/rosserial_test/Inc/geometry_msgs/Point.h
new file mode 100644 (file)
index 0000000..939063c
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_geometry_msgs_Point_h
+#define _ROS_geometry_msgs_Point_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Point : public ros::Msg
+  {
+    public:
+      typedef double _x_type;
+      _x_type x;
+      typedef double _y_type;
+      _y_type y;
+      typedef double _z_type;
+      _z_type z;
+
+    Point():
+      x(0),
+      y(0),
+      z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.real = this->z;
+      *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.base = 0;
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->z = u_z.real;
+      offset += sizeof(this->z);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Point"; };
+    const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Point32.h b/rosserial_test/Inc/geometry_msgs/Point32.h
new file mode 100644 (file)
index 0000000..603d9f4
--- /dev/null
@@ -0,0 +1,110 @@
+#ifndef _ROS_geometry_msgs_Point32_h
+#define _ROS_geometry_msgs_Point32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Point32 : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _z_type;
+      _z_type z;
+
+    Point32():
+      x(0),
+      y(0),
+      z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_z;
+      u_z.real = this->z;
+      *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_z;
+      u_z.base = 0;
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->z = u_z.real;
+      offset += sizeof(this->z);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Point32"; };
+    const char * getMD5(){ return "cc153912f1453b708d221682bc23d9ac"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/PointStamped.h b/rosserial_test/Inc/geometry_msgs/PointStamped.h
new file mode 100644 (file)
index 0000000..366a090
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PointStamped_h
+#define _ROS_geometry_msgs_PointStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point.h"
+
+namespace geometry_msgs
+{
+
+  class PointStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Point _point_type;
+      _point_type point;
+
+    PointStamped():
+      header(),
+      point()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->point.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->point.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PointStamped"; };
+    const char * getMD5(){ return "c63aecb41bfdfd6b7e1fac37c7cbe7bf"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Polygon.h b/rosserial_test/Inc/geometry_msgs/Polygon.h
new file mode 100644 (file)
index 0000000..c709714
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_geometry_msgs_Polygon_h
+#define _ROS_geometry_msgs_Polygon_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Point32.h"
+
+namespace geometry_msgs
+{
+
+  class Polygon : public ros::Msg
+  {
+    public:
+      uint32_t points_length;
+      typedef geometry_msgs::Point32 _points_type;
+      _points_type st_points;
+      _points_type * points;
+
+    Polygon():
+      points_length(0), points(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Polygon"; };
+    const char * getMD5(){ return "cd60a26494a087f577976f0329fa120e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/PolygonStamped.h b/rosserial_test/Inc/geometry_msgs/PolygonStamped.h
new file mode 100644 (file)
index 0000000..3c179a0
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PolygonStamped_h
+#define _ROS_geometry_msgs_PolygonStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Polygon.h"
+
+namespace geometry_msgs
+{
+
+  class PolygonStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Polygon _polygon_type;
+      _polygon_type polygon;
+
+    PolygonStamped():
+      header(),
+      polygon()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->polygon.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->polygon.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PolygonStamped"; };
+    const char * getMD5(){ return "c6be8f7dc3bee7fe9e8d296070f53340"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Pose.h b/rosserial_test/Inc/geometry_msgs/Pose.h
new file mode 100644 (file)
index 0000000..79d5f48
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_Pose_h
+#define _ROS_geometry_msgs_Pose_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Point.h"
+#include "geometry_msgs/Quaternion.h"
+
+namespace geometry_msgs
+{
+
+  class Pose : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Point _position_type;
+      _position_type position;
+      typedef geometry_msgs::Quaternion _orientation_type;
+      _orientation_type orientation;
+
+    Pose():
+      position(),
+      orientation()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->position.serialize(outbuffer + offset);
+      offset += this->orientation.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->position.deserialize(inbuffer + offset);
+      offset += this->orientation.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Pose"; };
+    const char * getMD5(){ return "e45d45a5a1ce597b249e23fb30fc871f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Pose2D.h b/rosserial_test/Inc/geometry_msgs/Pose2D.h
new file mode 100644 (file)
index 0000000..e553136
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_geometry_msgs_Pose2D_h
+#define _ROS_geometry_msgs_Pose2D_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Pose2D : public ros::Msg
+  {
+    public:
+      typedef double _x_type;
+      _x_type x;
+      typedef double _y_type;
+      _y_type y;
+      typedef double _theta_type;
+      _theta_type theta;
+
+    Pose2D():
+      x(0),
+      y(0),
+      theta(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_theta;
+      u_theta.real = this->theta;
+      *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_theta.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_theta.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_theta.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_theta.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->theta);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_theta;
+      u_theta.base = 0;
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_theta.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->theta = u_theta.real;
+      offset += sizeof(this->theta);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Pose2D"; };
+    const char * getMD5(){ return "938fa65709584ad8e77d238529be13b8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/PoseArray.h b/rosserial_test/Inc/geometry_msgs/PoseArray.h
new file mode 100644 (file)
index 0000000..f7f7887
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_geometry_msgs_PoseArray_h
+#define _ROS_geometry_msgs_PoseArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+
+namespace geometry_msgs
+{
+
+  class PoseArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t poses_length;
+      typedef geometry_msgs::Pose _poses_type;
+      _poses_type st_poses;
+      _poses_type * poses;
+
+    PoseArray():
+      header(),
+      poses_length(0), poses(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->poses_length);
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->poses[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->poses_length);
+      if(poses_lengthT > poses_length)
+        this->poses = (geometry_msgs::Pose*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::Pose));
+      poses_length = poses_lengthT;
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->st_poses.deserialize(inbuffer + offset);
+        memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::Pose));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseArray"; };
+    const char * getMD5(){ return "916c28c5764443f268b296bb671b9d97"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/PoseStamped.h b/rosserial_test/Inc/geometry_msgs/PoseStamped.h
new file mode 100644 (file)
index 0000000..26a6ba6
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PoseStamped_h
+#define _ROS_geometry_msgs_PoseStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+
+namespace geometry_msgs
+{
+
+  class PoseStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+
+    PoseStamped():
+      header(),
+      pose()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseStamped"; };
+    const char * getMD5(){ return "d3812c3cbc69362b77dc0b19b345f8f5"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/PoseWithCovariance.h b/rosserial_test/Inc/geometry_msgs/PoseWithCovariance.h
new file mode 100644 (file)
index 0000000..10b2a41
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_geometry_msgs_PoseWithCovariance_h
+#define _ROS_geometry_msgs_PoseWithCovariance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace geometry_msgs
+{
+
+  class PoseWithCovariance : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      double covariance[36];
+
+    PoseWithCovariance():
+      pose(),
+      covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->pose.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_covariancei;
+      u_covariancei.real = this->covariance[i];
+      *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->pose.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_covariancei;
+      u_covariancei.base = 0;
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->covariance[i] = u_covariancei.real;
+      offset += sizeof(this->covariance[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseWithCovariance"; };
+    const char * getMD5(){ return "c23e848cf1b7533a8d7c259073a97e6f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/PoseWithCovarianceStamped.h b/rosserial_test/Inc/geometry_msgs/PoseWithCovarianceStamped.h
new file mode 100644 (file)
index 0000000..46a94c0
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PoseWithCovarianceStamped_h
+#define _ROS_geometry_msgs_PoseWithCovarianceStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/PoseWithCovariance.h"
+
+namespace geometry_msgs
+{
+
+  class PoseWithCovarianceStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::PoseWithCovariance _pose_type;
+      _pose_type pose;
+
+    PoseWithCovarianceStamped():
+      header(),
+      pose()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseWithCovarianceStamped"; };
+    const char * getMD5(){ return "953b798c0f514ff060a53a3498ce6246"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Quaternion.h b/rosserial_test/Inc/geometry_msgs/Quaternion.h
new file mode 100644 (file)
index 0000000..a2dd198
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _ROS_geometry_msgs_Quaternion_h
+#define _ROS_geometry_msgs_Quaternion_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Quaternion : public ros::Msg
+  {
+    public:
+      typedef double _x_type;
+      _x_type x;
+      typedef double _y_type;
+      _y_type y;
+      typedef double _z_type;
+      _z_type z;
+      typedef double _w_type;
+      _w_type w;
+
+    Quaternion():
+      x(0),
+      y(0),
+      z(0),
+      w(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.real = this->z;
+      *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->z);
+      union {
+        double real;
+        uint64_t base;
+      } u_w;
+      u_w.real = this->w;
+      *(outbuffer + offset + 0) = (u_w.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_w.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_w.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_w.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_w.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_w.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_w.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_w.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->w);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.base = 0;
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->z = u_z.real;
+      offset += sizeof(this->z);
+      union {
+        double real;
+        uint64_t base;
+      } u_w;
+      u_w.base = 0;
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->w = u_w.real;
+      offset += sizeof(this->w);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Quaternion"; };
+    const char * getMD5(){ return "a779879fadf0160734f906b8c19c7004"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/QuaternionStamped.h b/rosserial_test/Inc/geometry_msgs/QuaternionStamped.h
new file mode 100644 (file)
index 0000000..1cc08fc
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_QuaternionStamped_h
+#define _ROS_geometry_msgs_QuaternionStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Quaternion.h"
+
+namespace geometry_msgs
+{
+
+  class QuaternionStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Quaternion _quaternion_type;
+      _quaternion_type quaternion;
+
+    QuaternionStamped():
+      header(),
+      quaternion()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->quaternion.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->quaternion.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/QuaternionStamped"; };
+    const char * getMD5(){ return "e57f1e547e0e1fd13504588ffc8334e2"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Transform.h b/rosserial_test/Inc/geometry_msgs/Transform.h
new file mode 100644 (file)
index 0000000..33645d1
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_Transform_h
+#define _ROS_geometry_msgs_Transform_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+#include "geometry_msgs/Quaternion.h"
+
+namespace geometry_msgs
+{
+
+  class Transform : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _translation_type;
+      _translation_type translation;
+      typedef geometry_msgs::Quaternion _rotation_type;
+      _rotation_type rotation;
+
+    Transform():
+      translation(),
+      rotation()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->translation.serialize(outbuffer + offset);
+      offset += this->rotation.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->translation.deserialize(inbuffer + offset);
+      offset += this->rotation.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Transform"; };
+    const char * getMD5(){ return "ac9eff44abf714214112b05d54a3cf9b"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/TransformStamped.h b/rosserial_test/Inc/geometry_msgs/TransformStamped.h
new file mode 100644 (file)
index 0000000..91d453d
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _ROS_geometry_msgs_TransformStamped_h
+#define _ROS_geometry_msgs_TransformStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Transform.h"
+
+namespace geometry_msgs
+{
+
+  class TransformStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _child_frame_id_type;
+      _child_frame_id_type child_frame_id;
+      typedef geometry_msgs::Transform _transform_type;
+      _transform_type transform;
+
+    TransformStamped():
+      header(),
+      child_frame_id(""),
+      transform()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_child_frame_id = strlen(this->child_frame_id);
+      varToArr(outbuffer + offset, length_child_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id);
+      offset += length_child_frame_id;
+      offset += this->transform.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_child_frame_id;
+      arrToVar(length_child_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_child_frame_id-1]=0;
+      this->child_frame_id = (char *)(inbuffer + offset-1);
+      offset += length_child_frame_id;
+      offset += this->transform.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TransformStamped"; };
+    const char * getMD5(){ return "b5764a33bfeb3588febc2682852579b0"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Twist.h b/rosserial_test/Inc/geometry_msgs/Twist.h
new file mode 100644 (file)
index 0000000..8352f64
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef _ROS_geometry_msgs_Twist_h
+#define _ROS_geometry_msgs_Twist_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Twist : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _linear_type;
+      _linear_type linear;
+      typedef geometry_msgs::Vector3 _angular_type;
+      _angular_type angular;
+
+    Twist():
+      linear(),
+      angular()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->linear.serialize(outbuffer + offset);
+      offset += this->angular.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->linear.deserialize(inbuffer + offset);
+      offset += this->angular.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Twist"; };
+    const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/TwistStamped.h b/rosserial_test/Inc/geometry_msgs/TwistStamped.h
new file mode 100644 (file)
index 0000000..53b6450
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_TwistStamped_h
+#define _ROS_geometry_msgs_TwistStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Twist.h"
+
+namespace geometry_msgs
+{
+
+  class TwistStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+
+    TwistStamped():
+      header(),
+      twist()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TwistStamped"; };
+    const char * getMD5(){ return "98d34b0043a2093cf9d9345ab6eef12e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/TwistWithCovariance.h b/rosserial_test/Inc/geometry_msgs/TwistWithCovariance.h
new file mode 100644 (file)
index 0000000..84e5f3a
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_geometry_msgs_TwistWithCovariance_h
+#define _ROS_geometry_msgs_TwistWithCovariance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Twist.h"
+
+namespace geometry_msgs
+{
+
+  class TwistWithCovariance : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      double covariance[36];
+
+    TwistWithCovariance():
+      twist(),
+      covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->twist.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_covariancei;
+      u_covariancei.real = this->covariance[i];
+      *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->twist.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_covariancei;
+      u_covariancei.base = 0;
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->covariance[i] = u_covariancei.real;
+      offset += sizeof(this->covariance[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TwistWithCovariance"; };
+    const char * getMD5(){ return "1fe8a28e6890a4cc3ae4c3ca5c7d82e6"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/TwistWithCovarianceStamped.h b/rosserial_test/Inc/geometry_msgs/TwistWithCovarianceStamped.h
new file mode 100644 (file)
index 0000000..68affe3
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_TwistWithCovarianceStamped_h
+#define _ROS_geometry_msgs_TwistWithCovarianceStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/TwistWithCovariance.h"
+
+namespace geometry_msgs
+{
+
+  class TwistWithCovarianceStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::TwistWithCovariance _twist_type;
+      _twist_type twist;
+
+    TwistWithCovarianceStamped():
+      header(),
+      twist()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TwistWithCovarianceStamped"; };
+    const char * getMD5(){ return "8927a1a12fb2607ceea095b2dc440a96"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Vector3.h b/rosserial_test/Inc/geometry_msgs/Vector3.h
new file mode 100644 (file)
index 0000000..23a6971
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_geometry_msgs_Vector3_h
+#define _ROS_geometry_msgs_Vector3_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Vector3 : public ros::Msg
+  {
+    public:
+      typedef double _x_type;
+      _x_type x;
+      typedef double _y_type;
+      _y_type y;
+      typedef double _z_type;
+      _z_type z;
+
+    Vector3():
+      x(0),
+      y(0),
+      z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.real = this->z;
+      *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.base = 0;
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->z = u_z.real;
+      offset += sizeof(this->z);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Vector3"; };
+    const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Vector3Stamped.h b/rosserial_test/Inc/geometry_msgs/Vector3Stamped.h
new file mode 100644 (file)
index 0000000..787ebe8
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_Vector3Stamped_h
+#define _ROS_geometry_msgs_Vector3Stamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Vector3Stamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Vector3 _vector_type;
+      _vector_type vector;
+
+    Vector3Stamped():
+      header(),
+      vector()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->vector.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->vector.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Vector3Stamped"; };
+    const char * getMD5(){ return "7b324c7325e683bf02a9b14b01090ec7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/Wrench.h b/rosserial_test/Inc/geometry_msgs/Wrench.h
new file mode 100644 (file)
index 0000000..cf7d124
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef _ROS_geometry_msgs_Wrench_h
+#define _ROS_geometry_msgs_Wrench_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Wrench : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _force_type;
+      _force_type force;
+      typedef geometry_msgs::Vector3 _torque_type;
+      _torque_type torque;
+
+    Wrench():
+      force(),
+      torque()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->force.serialize(outbuffer + offset);
+      offset += this->torque.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->force.deserialize(inbuffer + offset);
+      offset += this->torque.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Wrench"; };
+    const char * getMD5(){ return "4f539cf138b23283b520fd271b567936"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/geometry_msgs/WrenchStamped.h b/rosserial_test/Inc/geometry_msgs/WrenchStamped.h
new file mode 100644 (file)
index 0000000..6f041db
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_WrenchStamped_h
+#define _ROS_geometry_msgs_WrenchStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Wrench.h"
+
+namespace geometry_msgs
+{
+
+  class WrenchStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type wrench;
+
+    WrenchStamped():
+      header(),
+      wrench()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->wrench.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->wrench.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/WrenchStamped"; };
+    const char * getMD5(){ return "d78d3cb249ce23087ade7e7d0c40cfa7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/laser_assembler/AssembleScans.h b/rosserial_test/Inc/laser_assembler/AssembleScans.h
new file mode 100644 (file)
index 0000000..7aa8745
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_SERVICE_AssembleScans_h
+#define _ROS_SERVICE_AssembleScans_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "sensor_msgs/PointCloud.h"
+
+namespace laser_assembler
+{
+
+static const char ASSEMBLESCANS[] = "laser_assembler/AssembleScans";
+
+  class AssembleScansRequest : public ros::Msg
+  {
+    public:
+      typedef ros::Time _begin_type;
+      _begin_type begin;
+      typedef ros::Time _end_type;
+      _end_type end;
+
+    AssembleScansRequest():
+      begin(),
+      end()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.sec);
+      *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.nsec);
+      *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.sec);
+      *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->begin.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.sec);
+      this->begin.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.nsec);
+      this->end.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.sec);
+      this->end.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS; };
+    const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; };
+
+  };
+
+  class AssembleScansResponse : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud _cloud_type;
+      _cloud_type cloud;
+
+    AssembleScansResponse():
+      cloud()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->cloud.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->cloud.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS; };
+    const char * getMD5(){ return "4217b28a903e4ad7869a83b3653110ff"; };
+
+  };
+
+  class AssembleScans {
+    public:
+    typedef AssembleScansRequest Request;
+    typedef AssembleScansResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/laser_assembler/AssembleScans2.h b/rosserial_test/Inc/laser_assembler/AssembleScans2.h
new file mode 100644 (file)
index 0000000..ae2f6b7
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_SERVICE_AssembleScans2_h
+#define _ROS_SERVICE_AssembleScans2_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/PointCloud2.h"
+#include "ros/time.h"
+
+namespace laser_assembler
+{
+
+static const char ASSEMBLESCANS2[] = "laser_assembler/AssembleScans2";
+
+  class AssembleScans2Request : public ros::Msg
+  {
+    public:
+      typedef ros::Time _begin_type;
+      _begin_type begin;
+      typedef ros::Time _end_type;
+      _end_type end;
+
+    AssembleScans2Request():
+      begin(),
+      end()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.sec);
+      *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.nsec);
+      *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.sec);
+      *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->begin.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.sec);
+      this->begin.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.nsec);
+      this->end.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.sec);
+      this->end.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS2; };
+    const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; };
+
+  };
+
+  class AssembleScans2Response : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud2 _cloud_type;
+      _cloud_type cloud;
+
+    AssembleScans2Response():
+      cloud()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->cloud.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->cloud.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS2; };
+    const char * getMD5(){ return "96cec5374164b3b3d1d7ef5d7628a7ed"; };
+
+  };
+
+  class AssembleScans2 {
+    public:
+    typedef AssembleScans2Request Request;
+    typedef AssembleScans2Response Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/GetMapROI.h b/rosserial_test/Inc/map_msgs/GetMapROI.h
new file mode 100644 (file)
index 0000000..3d39495
--- /dev/null
@@ -0,0 +1,204 @@
+#ifndef _ROS_SERVICE_GetMapROI_h
+#define _ROS_SERVICE_GetMapROI_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace map_msgs
+{
+
+static const char GETMAPROI[] = "map_msgs/GetMapROI";
+
+  class GetMapROIRequest : public ros::Msg
+  {
+    public:
+      typedef double _x_type;
+      _x_type x;
+      typedef double _y_type;
+      _y_type y;
+      typedef double _l_x_type;
+      _l_x_type l_x;
+      typedef double _l_y_type;
+      _l_y_type l_y;
+
+    GetMapROIRequest():
+      x(0),
+      y(0),
+      l_x(0),
+      l_y(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_x;
+      u_l_x.real = this->l_x;
+      *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->l_x);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_y;
+      u_l_y.real = this->l_y;
+      *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->l_y);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_x;
+      u_l_x.base = 0;
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->l_x = u_l_x.real;
+      offset += sizeof(this->l_x);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_y;
+      u_l_y.base = 0;
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->l_y = u_l_y.real;
+      offset += sizeof(this->l_y);
+     return offset;
+    }
+
+    const char * getType(){ return GETMAPROI; };
+    const char * getMD5(){ return "43c2ff8f45af555c0eaf070c401e9a47"; };
+
+  };
+
+  class GetMapROIResponse : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _sub_map_type;
+      _sub_map_type sub_map;
+
+    GetMapROIResponse():
+      sub_map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->sub_map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->sub_map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETMAPROI; };
+    const char * getMD5(){ return "4d1986519c00d81967d2891a606b234c"; };
+
+  };
+
+  class GetMapROI {
+    public:
+    typedef GetMapROIRequest Request;
+    typedef GetMapROIResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/GetPointMap.h b/rosserial_test/Inc/map_msgs/GetPointMap.h
new file mode 100644 (file)
index 0000000..3da8ab1
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_SERVICE_GetPointMap_h
+#define _ROS_SERVICE_GetPointMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/PointCloud2.h"
+
+namespace map_msgs
+{
+
+static const char GETPOINTMAP[] = "map_msgs/GetPointMap";
+
+  class GetPointMapRequest : public ros::Msg
+  {
+    public:
+
+    GetPointMapRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAP; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetPointMapResponse : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud2 _map_type;
+      _map_type map;
+
+    GetPointMapResponse():
+      map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAP; };
+    const char * getMD5(){ return "b84fbb39505086eb6a62d933c75cb7b4"; };
+
+  };
+
+  class GetPointMap {
+    public:
+    typedef GetPointMapRequest Request;
+    typedef GetPointMapResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/GetPointMapROI.h b/rosserial_test/Inc/map_msgs/GetPointMapROI.h
new file mode 100644 (file)
index 0000000..b7c4cda
--- /dev/null
@@ -0,0 +1,300 @@
+#ifndef _ROS_SERVICE_GetPointMapROI_h
+#define _ROS_SERVICE_GetPointMapROI_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/PointCloud2.h"
+
+namespace map_msgs
+{
+
+static const char GETPOINTMAPROI[] = "map_msgs/GetPointMapROI";
+
+  class GetPointMapROIRequest : public ros::Msg
+  {
+    public:
+      typedef double _x_type;
+      _x_type x;
+      typedef double _y_type;
+      _y_type y;
+      typedef double _z_type;
+      _z_type z;
+      typedef double _r_type;
+      _r_type r;
+      typedef double _l_x_type;
+      _l_x_type l_x;
+      typedef double _l_y_type;
+      _l_y_type l_y;
+      typedef double _l_z_type;
+      _l_z_type l_z;
+
+    GetPointMapROIRequest():
+      x(0),
+      y(0),
+      z(0),
+      r(0),
+      l_x(0),
+      l_y(0),
+      l_z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.real = this->z;
+      *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->z);
+      union {
+        double real;
+        uint64_t base;
+      } u_r;
+      u_r.real = this->r;
+      *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_r.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_r.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_r.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_r.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->r);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_x;
+      u_l_x.real = this->l_x;
+      *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->l_x);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_y;
+      u_l_y.real = this->l_y;
+      *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->l_y);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_z;
+      u_l_z.real = this->l_z;
+      *(outbuffer + offset + 0) = (u_l_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_l_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_l_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_l_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_l_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_l_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_l_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_l_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->l_z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_z;
+      u_z.base = 0;
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->z = u_z.real;
+      offset += sizeof(this->z);
+      union {
+        double real;
+        uint64_t base;
+      } u_r;
+      u_r.base = 0;
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_r.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->r = u_r.real;
+      offset += sizeof(this->r);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_x;
+      u_l_x.base = 0;
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->l_x = u_l_x.real;
+      offset += sizeof(this->l_x);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_y;
+      u_l_y.base = 0;
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->l_y = u_l_y.real;
+      offset += sizeof(this->l_y);
+      union {
+        double real;
+        uint64_t base;
+      } u_l_z;
+      u_l_z.base = 0;
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->l_z = u_l_z.real;
+      offset += sizeof(this->l_z);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAPROI; };
+    const char * getMD5(){ return "895f7e437a9a6dd225316872b187a303"; };
+
+  };
+
+  class GetPointMapROIResponse : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud2 _sub_map_type;
+      _sub_map_type sub_map;
+
+    GetPointMapROIResponse():
+      sub_map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->sub_map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->sub_map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAPROI; };
+    const char * getMD5(){ return "313769f8b0e724525c6463336cbccd63"; };
+
+  };
+
+  class GetPointMapROI {
+    public:
+    typedef GetPointMapROIRequest Request;
+    typedef GetPointMapROIResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/OccupancyGridUpdate.h b/rosserial_test/Inc/map_msgs/OccupancyGridUpdate.h
new file mode 100644 (file)
index 0000000..b672a18
--- /dev/null
@@ -0,0 +1,156 @@
+#ifndef _ROS_map_msgs_OccupancyGridUpdate_h
+#define _ROS_map_msgs_OccupancyGridUpdate_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace map_msgs
+{
+
+  class OccupancyGridUpdate : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef int32_t _x_type;
+      _x_type x;
+      typedef int32_t _y_type;
+      _y_type y;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef uint32_t _height_type;
+      _height_type height;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    OccupancyGridUpdate():
+      header(),
+      x(0),
+      y(0),
+      width(0),
+      height(0),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/OccupancyGridUpdate"; };
+    const char * getMD5(){ return "b295be292b335c34718bd939deebe1c9"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/PointCloud2Update.h b/rosserial_test/Inc/map_msgs/PointCloud2Update.h
new file mode 100644 (file)
index 0000000..dcb9339
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef _ROS_map_msgs_PointCloud2Update_h
+#define _ROS_map_msgs_PointCloud2Update_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/PointCloud2.h"
+
+namespace map_msgs
+{
+
+  class PointCloud2Update : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _type_type;
+      _type_type type;
+      typedef sensor_msgs::PointCloud2 _points_type;
+      _points_type points;
+      enum { ADD = 0 };
+      enum { DELETE = 1 };
+
+    PointCloud2Update():
+      header(),
+      type(0),
+      points()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->type >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->type >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->type >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->type);
+      offset += this->points.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->type =  ((uint32_t) (*(inbuffer + offset)));
+      this->type |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->type |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->type |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->type);
+      offset += this->points.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/PointCloud2Update"; };
+    const char * getMD5(){ return "6c58e4f249ae9cd2b24fb1ee0f99195e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/ProjectedMap.h b/rosserial_test/Inc/map_msgs/ProjectedMap.h
new file mode 100644 (file)
index 0000000..9631360
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_map_msgs_ProjectedMap_h
+#define _ROS_map_msgs_ProjectedMap_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace map_msgs
+{
+
+  class ProjectedMap : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+      typedef double _min_z_type;
+      _min_z_type min_z;
+      typedef double _max_z_type;
+      _max_z_type max_z;
+
+    ProjectedMap():
+      map(),
+      min_z(0),
+      max_z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_min_z;
+      u_min_z.real = this->min_z;
+      *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->min_z);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_z;
+      u_max_z.real = this->max_z;
+      *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->max_z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_min_z;
+      u_min_z.base = 0;
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->min_z = u_min_z.real;
+      offset += sizeof(this->min_z);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_z;
+      u_max_z.base = 0;
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->max_z = u_max_z.real;
+      offset += sizeof(this->max_z);
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/ProjectedMap"; };
+    const char * getMD5(){ return "7bbe8f96e45089681dc1ea7d023cbfca"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/ProjectedMapInfo.h b/rosserial_test/Inc/map_msgs/ProjectedMapInfo.h
new file mode 100644 (file)
index 0000000..6757570
--- /dev/null
@@ -0,0 +1,247 @@
+#ifndef _ROS_map_msgs_ProjectedMapInfo_h
+#define _ROS_map_msgs_ProjectedMapInfo_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace map_msgs
+{
+
+  class ProjectedMapInfo : public ros::Msg
+  {
+    public:
+      typedef const char* _frame_id_type;
+      _frame_id_type frame_id;
+      typedef double _x_type;
+      _x_type x;
+      typedef double _y_type;
+      _y_type y;
+      typedef double _width_type;
+      _width_type width;
+      typedef double _height_type;
+      _height_type height;
+      typedef double _min_z_type;
+      _min_z_type min_z;
+      typedef double _max_z_type;
+      _max_z_type max_z;
+
+    ProjectedMapInfo():
+      frame_id(""),
+      x(0),
+      y(0),
+      width(0),
+      height(0),
+      min_z(0),
+      max_z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_frame_id = strlen(this->frame_id);
+      varToArr(outbuffer + offset, length_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->frame_id, length_frame_id);
+      offset += length_frame_id;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_width;
+      u_width.real = this->width;
+      *(outbuffer + offset + 0) = (u_width.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_width.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_width.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_width.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_width.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_width.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_width.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_width.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->width);
+      union {
+        double real;
+        uint64_t base;
+      } u_height;
+      u_height.real = this->height;
+      *(outbuffer + offset + 0) = (u_height.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_height.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_height.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_height.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_height.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_height.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_height.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_height.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->height);
+      union {
+        double real;
+        uint64_t base;
+      } u_min_z;
+      u_min_z.real = this->min_z;
+      *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->min_z);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_z;
+      u_max_z.real = this->max_z;
+      *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->max_z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_frame_id;
+      arrToVar(length_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_frame_id-1]=0;
+      this->frame_id = (char *)(inbuffer + offset-1);
+      offset += length_frame_id;
+      union {
+        double real;
+        uint64_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        double real;
+        uint64_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        double real;
+        uint64_t base;
+      } u_width;
+      u_width.base = 0;
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_width.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->width = u_width.real;
+      offset += sizeof(this->width);
+      union {
+        double real;
+        uint64_t base;
+      } u_height;
+      u_height.base = 0;
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_height.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->height = u_height.real;
+      offset += sizeof(this->height);
+      union {
+        double real;
+        uint64_t base;
+      } u_min_z;
+      u_min_z.base = 0;
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->min_z = u_min_z.real;
+      offset += sizeof(this->min_z);
+      union {
+        double real;
+        uint64_t base;
+      } u_max_z;
+      u_max_z.base = 0;
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->max_z = u_max_z.real;
+      offset += sizeof(this->max_z);
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/ProjectedMapInfo"; };
+    const char * getMD5(){ return "2dc10595ae94de23f22f8a6d2a0eef7a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/ProjectedMapsInfo.h b/rosserial_test/Inc/map_msgs/ProjectedMapsInfo.h
new file mode 100644 (file)
index 0000000..b515b94
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_ProjectedMapsInfo_h
+#define _ROS_SERVICE_ProjectedMapsInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "map_msgs/ProjectedMapInfo.h"
+
+namespace map_msgs
+{
+
+static const char PROJECTEDMAPSINFO[] = "map_msgs/ProjectedMapsInfo";
+
+  class ProjectedMapsInfoRequest : public ros::Msg
+  {
+    public:
+      uint32_t projected_maps_info_length;
+      typedef map_msgs::ProjectedMapInfo _projected_maps_info_type;
+      _projected_maps_info_type st_projected_maps_info;
+      _projected_maps_info_type * projected_maps_info;
+
+    ProjectedMapsInfoRequest():
+      projected_maps_info_length(0), projected_maps_info(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->projected_maps_info_length);
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->projected_maps_info[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->projected_maps_info_length);
+      if(projected_maps_info_lengthT > projected_maps_info_length)
+        this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo));
+      projected_maps_info_length = projected_maps_info_lengthT;
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->st_projected_maps_info.deserialize(inbuffer + offset);
+        memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return PROJECTEDMAPSINFO; };
+    const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; };
+
+  };
+
+  class ProjectedMapsInfoResponse : public ros::Msg
+  {
+    public:
+
+    ProjectedMapsInfoResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return PROJECTEDMAPSINFO; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class ProjectedMapsInfo {
+    public:
+    typedef ProjectedMapsInfoRequest Request;
+    typedef ProjectedMapsInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/SaveMap.h b/rosserial_test/Inc/map_msgs/SaveMap.h
new file mode 100644 (file)
index 0000000..c304c22
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_SERVICE_SaveMap_h
+#define _ROS_SERVICE_SaveMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/String.h"
+
+namespace map_msgs
+{
+
+static const char SAVEMAP[] = "map_msgs/SaveMap";
+
+  class SaveMapRequest : public ros::Msg
+  {
+    public:
+      typedef std_msgs::String _filename_type;
+      _filename_type filename;
+
+    SaveMapRequest():
+      filename()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->filename.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->filename.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SAVEMAP; };
+    const char * getMD5(){ return "716e25f9d9dc76ceba197f93cbf05dc7"; };
+
+  };
+
+  class SaveMapResponse : public ros::Msg
+  {
+    public:
+
+    SaveMapResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SAVEMAP; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SaveMap {
+    public:
+    typedef SaveMapRequest Request;
+    typedef SaveMapResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/map_msgs/SetMapProjections.h b/rosserial_test/Inc/map_msgs/SetMapProjections.h
new file mode 100644 (file)
index 0000000..1ead172
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_SetMapProjections_h
+#define _ROS_SERVICE_SetMapProjections_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "map_msgs/ProjectedMapInfo.h"
+
+namespace map_msgs
+{
+
+static const char SETMAPPROJECTIONS[] = "map_msgs/SetMapProjections";
+
+  class SetMapProjectionsRequest : public ros::Msg
+  {
+    public:
+
+    SetMapProjectionsRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETMAPPROJECTIONS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetMapProjectionsResponse : public ros::Msg
+  {
+    public:
+      uint32_t projected_maps_info_length;
+      typedef map_msgs::ProjectedMapInfo _projected_maps_info_type;
+      _projected_maps_info_type st_projected_maps_info;
+      _projected_maps_info_type * projected_maps_info;
+
+    SetMapProjectionsResponse():
+      projected_maps_info_length(0), projected_maps_info(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->projected_maps_info_length);
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->projected_maps_info[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->projected_maps_info_length);
+      if(projected_maps_info_lengthT > projected_maps_info_length)
+        this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo));
+      projected_maps_info_length = projected_maps_info_lengthT;
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->st_projected_maps_info.deserialize(inbuffer + offset);
+        memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return SETMAPPROJECTIONS; };
+    const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; };
+
+  };
+
+  class SetMapProjections {
+    public:
+    typedef SetMapProjectionsRequest Request;
+    typedef SetMapProjectionsResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMap.h b/rosserial_test/Inc/nav_msgs/GetMap.h
new file mode 100644 (file)
index 0000000..ef7e3fa
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_SERVICE_GetMap_h
+#define _ROS_SERVICE_GetMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace nav_msgs
+{
+
+static const char GETMAP[] = "nav_msgs/GetMap";
+
+  class GetMapRequest : public ros::Msg
+  {
+    public:
+
+    GetMapRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETMAP; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetMapResponse : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+
+    GetMapResponse():
+      map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETMAP; };
+    const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; };
+
+  };
+
+  class GetMap {
+    public:
+    typedef GetMapRequest Request;
+    typedef GetMapResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMapAction.h b/rosserial_test/Inc/nav_msgs/GetMapAction.h
new file mode 100644 (file)
index 0000000..9b5284a
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapAction_h
+#define _ROS_nav_msgs_GetMapAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/GetMapActionGoal.h"
+#include "nav_msgs/GetMapActionResult.h"
+#include "nav_msgs/GetMapActionFeedback.h"
+
+namespace nav_msgs
+{
+
+  class GetMapAction : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::GetMapActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef nav_msgs::GetMapActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef nav_msgs::GetMapActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    GetMapAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapAction"; };
+    const char * getMD5(){ return "e611ad23fbf237c031b7536416dc7cd7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMapActionFeedback.h b/rosserial_test/Inc/nav_msgs/GetMapActionFeedback.h
new file mode 100644 (file)
index 0000000..7c946f8
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapActionFeedback_h
+#define _ROS_nav_msgs_GetMapActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "nav_msgs/GetMapFeedback.h"
+
+namespace nav_msgs
+{
+
+  class GetMapActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef nav_msgs::GetMapFeedback _feedback_type;
+      _feedback_type feedback;
+
+    GetMapActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMapActionGoal.h b/rosserial_test/Inc/nav_msgs/GetMapActionGoal.h
new file mode 100644 (file)
index 0000000..ed72749
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapActionGoal_h
+#define _ROS_nav_msgs_GetMapActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "nav_msgs/GetMapGoal.h"
+
+namespace nav_msgs
+{
+
+  class GetMapActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef nav_msgs::GetMapGoal _goal_type;
+      _goal_type goal;
+
+    GetMapActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapActionGoal"; };
+    const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMapActionResult.h b/rosserial_test/Inc/nav_msgs/GetMapActionResult.h
new file mode 100644 (file)
index 0000000..a25f1b0
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapActionResult_h
+#define _ROS_nav_msgs_GetMapActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "nav_msgs/GetMapResult.h"
+
+namespace nav_msgs
+{
+
+  class GetMapActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef nav_msgs::GetMapResult _result_type;
+      _result_type result;
+
+    GetMapActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapActionResult"; };
+    const char * getMD5(){ return "ac66e5b9a79bb4bbd33dab245236c892"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMapFeedback.h b/rosserial_test/Inc/nav_msgs/GetMapFeedback.h
new file mode 100644 (file)
index 0000000..aaf6b38
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_nav_msgs_GetMapFeedback_h
+#define _ROS_nav_msgs_GetMapFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nav_msgs
+{
+
+  class GetMapFeedback : public ros::Msg
+  {
+    public:
+
+    GetMapFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMapGoal.h b/rosserial_test/Inc/nav_msgs/GetMapGoal.h
new file mode 100644 (file)
index 0000000..01b972b
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_nav_msgs_GetMapGoal_h
+#define _ROS_nav_msgs_GetMapGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nav_msgs
+{
+
+  class GetMapGoal : public ros::Msg
+  {
+    public:
+
+    GetMapGoal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapGoal"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetMapResult.h b/rosserial_test/Inc/nav_msgs/GetMapResult.h
new file mode 100644 (file)
index 0000000..41f3166
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_nav_msgs_GetMapResult_h
+#define _ROS_nav_msgs_GetMapResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace nav_msgs
+{
+
+  class GetMapResult : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+
+    GetMapResult():
+      map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapResult"; };
+    const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GetPlan.h b/rosserial_test/Inc/nav_msgs/GetPlan.h
new file mode 100644 (file)
index 0000000..fe312b2
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_GetPlan_h
+#define _ROS_SERVICE_GetPlan_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/PoseStamped.h"
+#include "nav_msgs/Path.h"
+
+namespace nav_msgs
+{
+
+static const char GETPLAN[] = "nav_msgs/GetPlan";
+
+  class GetPlanRequest : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::PoseStamped _start_type;
+      _start_type start;
+      typedef geometry_msgs::PoseStamped _goal_type;
+      _goal_type goal;
+      typedef float _tolerance_type;
+      _tolerance_type tolerance;
+
+    GetPlanRequest():
+      start(),
+      goal(),
+      tolerance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->start.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_tolerance;
+      u_tolerance.real = this->tolerance;
+      *(outbuffer + offset + 0) = (u_tolerance.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_tolerance.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_tolerance.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_tolerance.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->tolerance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->start.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_tolerance;
+      u_tolerance.base = 0;
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->tolerance = u_tolerance.real;
+      offset += sizeof(this->tolerance);
+     return offset;
+    }
+
+    const char * getType(){ return GETPLAN; };
+    const char * getMD5(){ return "e25a43e0752bcca599a8c2eef8282df8"; };
+
+  };
+
+  class GetPlanResponse : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::Path _plan_type;
+      _plan_type plan;
+
+    GetPlanResponse():
+      plan()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->plan.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->plan.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPLAN; };
+    const char * getMD5(){ return "0002bc113c0259d71f6cf8cbc9430e18"; };
+
+  };
+
+  class GetPlan {
+    public:
+    typedef GetPlanRequest Request;
+    typedef GetPlanResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/GridCells.h b/rosserial_test/Inc/nav_msgs/GridCells.h
new file mode 100644 (file)
index 0000000..448e669
--- /dev/null
@@ -0,0 +1,118 @@
+#ifndef _ROS_nav_msgs_GridCells_h
+#define _ROS_nav_msgs_GridCells_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point.h"
+
+namespace nav_msgs
+{
+
+  class GridCells : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _cell_width_type;
+      _cell_width_type cell_width;
+      typedef float _cell_height_type;
+      _cell_height_type cell_height;
+      uint32_t cells_length;
+      typedef geometry_msgs::Point _cells_type;
+      _cells_type st_cells;
+      _cells_type * cells;
+
+    GridCells():
+      header(),
+      cell_width(0),
+      cell_height(0),
+      cells_length(0), cells(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_width;
+      u_cell_width.real = this->cell_width;
+      *(outbuffer + offset + 0) = (u_cell_width.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cell_width.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cell_width.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cell_width.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_width);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_height;
+      u_cell_height.real = this->cell_height;
+      *(outbuffer + offset + 0) = (u_cell_height.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cell_height.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cell_height.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cell_height.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_height);
+      *(outbuffer + offset + 0) = (this->cells_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->cells_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->cells_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->cells_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cells_length);
+      for( uint32_t i = 0; i < cells_length; i++){
+      offset += this->cells[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_width;
+      u_cell_width.base = 0;
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->cell_width = u_cell_width.real;
+      offset += sizeof(this->cell_width);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_height;
+      u_cell_height.base = 0;
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->cell_height = u_cell_height.real;
+      offset += sizeof(this->cell_height);
+      uint32_t cells_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->cells_length);
+      if(cells_lengthT > cells_length)
+        this->cells = (geometry_msgs::Point*)realloc(this->cells, cells_lengthT * sizeof(geometry_msgs::Point));
+      cells_length = cells_lengthT;
+      for( uint32_t i = 0; i < cells_length; i++){
+      offset += this->st_cells.deserialize(inbuffer + offset);
+        memcpy( &(this->cells[i]), &(this->st_cells), sizeof(geometry_msgs::Point));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GridCells"; };
+    const char * getMD5(){ return "b9e4f5df6d28e272ebde00a3994830f5"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/MapMetaData.h b/rosserial_test/Inc/nav_msgs/MapMetaData.h
new file mode 100644 (file)
index 0000000..5ac655b
--- /dev/null
@@ -0,0 +1,118 @@
+#ifndef _ROS_nav_msgs_MapMetaData_h
+#define _ROS_nav_msgs_MapMetaData_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "geometry_msgs/Pose.h"
+
+namespace nav_msgs
+{
+
+  class MapMetaData : public ros::Msg
+  {
+    public:
+      typedef ros::Time _map_load_time_type;
+      _map_load_time_type map_load_time;
+      typedef float _resolution_type;
+      _resolution_type resolution;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef geometry_msgs::Pose _origin_type;
+      _origin_type origin;
+
+    MapMetaData():
+      map_load_time(),
+      resolution(0),
+      width(0),
+      height(0),
+      origin()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->map_load_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->map_load_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->map_load_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->map_load_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->map_load_time.sec);
+      *(outbuffer + offset + 0) = (this->map_load_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->map_load_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->map_load_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->map_load_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->map_load_time.nsec);
+      union {
+        float real;
+        uint32_t base;
+      } u_resolution;
+      u_resolution.real = this->resolution;
+      *(outbuffer + offset + 0) = (u_resolution.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_resolution.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_resolution.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_resolution.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->resolution);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      offset += this->origin.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->map_load_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->map_load_time.sec);
+      this->map_load_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->map_load_time.nsec);
+      union {
+        float real;
+        uint32_t base;
+      } u_resolution;
+      u_resolution.base = 0;
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->resolution = u_resolution.real;
+      offset += sizeof(this->resolution);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      offset += this->origin.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/MapMetaData"; };
+    const char * getMD5(){ return "10cfc8a2818024d3248802c00c95f11b"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/OccupancyGrid.h b/rosserial_test/Inc/nav_msgs/OccupancyGrid.h
new file mode 100644 (file)
index 0000000..9513832
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_nav_msgs_OccupancyGrid_h
+#define _ROS_nav_msgs_OccupancyGrid_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "nav_msgs/MapMetaData.h"
+
+namespace nav_msgs
+{
+
+  class OccupancyGrid : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef nav_msgs::MapMetaData _info_type;
+      _info_type info;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    OccupancyGrid():
+      header(),
+      info(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->info.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->info.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/OccupancyGrid"; };
+    const char * getMD5(){ return "3381f2d731d4076ec5c71b0759edbe4e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/Odometry.h b/rosserial_test/Inc/nav_msgs/Odometry.h
new file mode 100644 (file)
index 0000000..2f578ef
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_nav_msgs_Odometry_h
+#define _ROS_nav_msgs_Odometry_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/PoseWithCovariance.h"
+#include "geometry_msgs/TwistWithCovariance.h"
+
+namespace nav_msgs
+{
+
+  class Odometry : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _child_frame_id_type;
+      _child_frame_id_type child_frame_id;
+      typedef geometry_msgs::PoseWithCovariance _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::TwistWithCovariance _twist_type;
+      _twist_type twist;
+
+    Odometry():
+      header(),
+      child_frame_id(""),
+      pose(),
+      twist()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_child_frame_id = strlen(this->child_frame_id);
+      varToArr(outbuffer + offset, length_child_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id);
+      offset += length_child_frame_id;
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_child_frame_id;
+      arrToVar(length_child_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_child_frame_id-1]=0;
+      this->child_frame_id = (char *)(inbuffer + offset-1);
+      offset += length_child_frame_id;
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/Odometry"; };
+    const char * getMD5(){ return "cd5e73d190d741a2f92e81eda573aca7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/Path.h b/rosserial_test/Inc/nav_msgs/Path.h
new file mode 100644 (file)
index 0000000..e8ea825
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_nav_msgs_Path_h
+#define _ROS_nav_msgs_Path_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/PoseStamped.h"
+
+namespace nav_msgs
+{
+
+  class Path : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t poses_length;
+      typedef geometry_msgs::PoseStamped _poses_type;
+      _poses_type st_poses;
+      _poses_type * poses;
+
+    Path():
+      header(),
+      poses_length(0), poses(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->poses_length);
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->poses[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->poses_length);
+      if(poses_lengthT > poses_length)
+        this->poses = (geometry_msgs::PoseStamped*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::PoseStamped));
+      poses_length = poses_lengthT;
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->st_poses.deserialize(inbuffer + offset);
+        memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::PoseStamped));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/Path"; };
+    const char * getMD5(){ return "6227e2b7e9cce15051f669a5e197bbf7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nav_msgs/SetMap.h b/rosserial_test/Inc/nav_msgs/SetMap.h
new file mode 100644 (file)
index 0000000..717cead
--- /dev/null
@@ -0,0 +1,100 @@
+#ifndef _ROS_SERVICE_SetMap_h
+#define _ROS_SERVICE_SetMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+#include "geometry_msgs/PoseWithCovarianceStamped.h"
+
+namespace nav_msgs
+{
+
+static const char SETMAP[] = "nav_msgs/SetMap";
+
+  class SetMapRequest : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+      typedef geometry_msgs::PoseWithCovarianceStamped _initial_pose_type;
+      _initial_pose_type initial_pose;
+
+    SetMapRequest():
+      map(),
+      initial_pose()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      offset += this->initial_pose.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+      offset += this->initial_pose.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETMAP; };
+    const char * getMD5(){ return "91149a20d7be299b87c340df8cc94fd4"; };
+
+  };
+
+  class SetMapResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+
+    SetMapResponse():
+      success(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+     return offset;
+    }
+
+    const char * getType(){ return SETMAP; };
+    const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; };
+
+  };
+
+  class SetMap {
+    public:
+    typedef SetMapRequest Request;
+    typedef SetMapResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nodelet/NodeletList.h b/rosserial_test/Inc/nodelet/NodeletList.h
new file mode 100644 (file)
index 0000000..6210fa0
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_SERVICE_NodeletList_h
+#define _ROS_SERVICE_NodeletList_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nodelet
+{
+
+static const char NODELETLIST[] = "nodelet/NodeletList";
+
+  class NodeletListRequest : public ros::Msg
+  {
+    public:
+
+    NodeletListRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLIST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class NodeletListResponse : public ros::Msg
+  {
+    public:
+      uint32_t nodelets_length;
+      typedef char* _nodelets_type;
+      _nodelets_type st_nodelets;
+      _nodelets_type * nodelets;
+
+    NodeletListResponse():
+      nodelets_length(0), nodelets(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->nodelets_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->nodelets_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->nodelets_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->nodelets_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->nodelets_length);
+      for( uint32_t i = 0; i < nodelets_length; i++){
+      uint32_t length_nodeletsi = strlen(this->nodelets[i]);
+      varToArr(outbuffer + offset, length_nodeletsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->nodelets[i], length_nodeletsi);
+      offset += length_nodeletsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t nodelets_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->nodelets_length);
+      if(nodelets_lengthT > nodelets_length)
+        this->nodelets = (char**)realloc(this->nodelets, nodelets_lengthT * sizeof(char*));
+      nodelets_length = nodelets_lengthT;
+      for( uint32_t i = 0; i < nodelets_length; i++){
+      uint32_t length_st_nodelets;
+      arrToVar(length_st_nodelets, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_nodelets; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_nodelets-1]=0;
+      this->st_nodelets = (char *)(inbuffer + offset-1);
+      offset += length_st_nodelets;
+        memcpy( &(this->nodelets[i]), &(this->st_nodelets), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLIST; };
+    const char * getMD5(){ return "99c7b10e794f5600b8030e697e946ca7"; };
+
+  };
+
+  class NodeletList {
+    public:
+    typedef NodeletListRequest Request;
+    typedef NodeletListResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nodelet/NodeletLoad.h b/rosserial_test/Inc/nodelet/NodeletLoad.h
new file mode 100644 (file)
index 0000000..e7a9c5c
--- /dev/null
@@ -0,0 +1,250 @@
+#ifndef _ROS_SERVICE_NodeletLoad_h
+#define _ROS_SERVICE_NodeletLoad_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nodelet
+{
+
+static const char NODELETLOAD[] = "nodelet/NodeletLoad";
+
+  class NodeletLoadRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      uint32_t remap_source_args_length;
+      typedef char* _remap_source_args_type;
+      _remap_source_args_type st_remap_source_args;
+      _remap_source_args_type * remap_source_args;
+      uint32_t remap_target_args_length;
+      typedef char* _remap_target_args_type;
+      _remap_target_args_type st_remap_target_args;
+      _remap_target_args_type * remap_target_args;
+      uint32_t my_argv_length;
+      typedef char* _my_argv_type;
+      _my_argv_type st_my_argv;
+      _my_argv_type * my_argv;
+      typedef const char* _bond_id_type;
+      _bond_id_type bond_id;
+
+    NodeletLoadRequest():
+      name(""),
+      type(""),
+      remap_source_args_length(0), remap_source_args(NULL),
+      remap_target_args_length(0), remap_target_args(NULL),
+      my_argv_length(0), my_argv(NULL),
+      bond_id("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->remap_source_args_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->remap_source_args_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->remap_source_args_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->remap_source_args_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->remap_source_args_length);
+      for( uint32_t i = 0; i < remap_source_args_length; i++){
+      uint32_t length_remap_source_argsi = strlen(this->remap_source_args[i]);
+      varToArr(outbuffer + offset, length_remap_source_argsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->remap_source_args[i], length_remap_source_argsi);
+      offset += length_remap_source_argsi;
+      }
+      *(outbuffer + offset + 0) = (this->remap_target_args_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->remap_target_args_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->remap_target_args_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->remap_target_args_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->remap_target_args_length);
+      for( uint32_t i = 0; i < remap_target_args_length; i++){
+      uint32_t length_remap_target_argsi = strlen(this->remap_target_args[i]);
+      varToArr(outbuffer + offset, length_remap_target_argsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->remap_target_args[i], length_remap_target_argsi);
+      offset += length_remap_target_argsi;
+      }
+      *(outbuffer + offset + 0) = (this->my_argv_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->my_argv_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->my_argv_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->my_argv_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->my_argv_length);
+      for( uint32_t i = 0; i < my_argv_length; i++){
+      uint32_t length_my_argvi = strlen(this->my_argv[i]);
+      varToArr(outbuffer + offset, length_my_argvi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->my_argv[i], length_my_argvi);
+      offset += length_my_argvi;
+      }
+      uint32_t length_bond_id = strlen(this->bond_id);
+      varToArr(outbuffer + offset, length_bond_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->bond_id, length_bond_id);
+      offset += length_bond_id;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      uint32_t remap_source_args_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->remap_source_args_length);
+      if(remap_source_args_lengthT > remap_source_args_length)
+        this->remap_source_args = (char**)realloc(this->remap_source_args, remap_source_args_lengthT * sizeof(char*));
+      remap_source_args_length = remap_source_args_lengthT;
+      for( uint32_t i = 0; i < remap_source_args_length; i++){
+      uint32_t length_st_remap_source_args;
+      arrToVar(length_st_remap_source_args, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_remap_source_args; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_remap_source_args-1]=0;
+      this->st_remap_source_args = (char *)(inbuffer + offset-1);
+      offset += length_st_remap_source_args;
+        memcpy( &(this->remap_source_args[i]), &(this->st_remap_source_args), sizeof(char*));
+      }
+      uint32_t remap_target_args_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->remap_target_args_length);
+      if(remap_target_args_lengthT > remap_target_args_length)
+        this->remap_target_args = (char**)realloc(this->remap_target_args, remap_target_args_lengthT * sizeof(char*));
+      remap_target_args_length = remap_target_args_lengthT;
+      for( uint32_t i = 0; i < remap_target_args_length; i++){
+      uint32_t length_st_remap_target_args;
+      arrToVar(length_st_remap_target_args, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_remap_target_args; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_remap_target_args-1]=0;
+      this->st_remap_target_args = (char *)(inbuffer + offset-1);
+      offset += length_st_remap_target_args;
+        memcpy( &(this->remap_target_args[i]), &(this->st_remap_target_args), sizeof(char*));
+      }
+      uint32_t my_argv_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->my_argv_length);
+      if(my_argv_lengthT > my_argv_length)
+        this->my_argv = (char**)realloc(this->my_argv, my_argv_lengthT * sizeof(char*));
+      my_argv_length = my_argv_lengthT;
+      for( uint32_t i = 0; i < my_argv_length; i++){
+      uint32_t length_st_my_argv;
+      arrToVar(length_st_my_argv, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_my_argv; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_my_argv-1]=0;
+      this->st_my_argv = (char *)(inbuffer + offset-1);
+      offset += length_st_my_argv;
+        memcpy( &(this->my_argv[i]), &(this->st_my_argv), sizeof(char*));
+      }
+      uint32_t length_bond_id;
+      arrToVar(length_bond_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_bond_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_bond_id-1]=0;
+      this->bond_id = (char *)(inbuffer + offset-1);
+      offset += length_bond_id;
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLOAD; };
+    const char * getMD5(){ return "c6e28cc4d2e259249d96cfb50658fbec"; };
+
+  };
+
+  class NodeletLoadResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+
+    NodeletLoadResponse():
+      success(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLOAD; };
+    const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; };
+
+  };
+
+  class NodeletLoad {
+    public:
+    typedef NodeletLoadRequest Request;
+    typedef NodeletLoadResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/nodelet/NodeletUnload.h b/rosserial_test/Inc/nodelet/NodeletUnload.h
new file mode 100644 (file)
index 0000000..bc865b4
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_NodeletUnload_h
+#define _ROS_SERVICE_NodeletUnload_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nodelet
+{
+
+static const char NODELETUNLOAD[] = "nodelet/NodeletUnload";
+
+  class NodeletUnloadRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    NodeletUnloadRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return NODELETUNLOAD; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class NodeletUnloadResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+
+    NodeletUnloadResponse():
+      success(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+     return offset;
+    }
+
+    const char * getType(){ return NODELETUNLOAD; };
+    const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; };
+
+  };
+
+  class NodeletUnload {
+    public:
+    typedef NodeletUnloadRequest Request;
+    typedef NodeletUnloadResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/pcl_msgs/ModelCoefficients.h b/rosserial_test/Inc/pcl_msgs/ModelCoefficients.h
new file mode 100644 (file)
index 0000000..7b169e8
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_pcl_msgs_ModelCoefficients_h
+#define _ROS_pcl_msgs_ModelCoefficients_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace pcl_msgs
+{
+
+  class ModelCoefficients : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t values_length;
+      typedef float _values_type;
+      _values_type st_values;
+      _values_type * values;
+
+    ModelCoefficients():
+      header(),
+      values_length(0), values(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values_length);
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_valuesi;
+      u_valuesi.real = this->values[i];
+      *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->values_length);
+      if(values_lengthT > values_length)
+        this->values = (float*)realloc(this->values, values_lengthT * sizeof(float));
+      values_length = values_lengthT;
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_values;
+      u_st_values.base = 0;
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_values = u_st_values.real;
+      offset += sizeof(this->st_values);
+        memcpy( &(this->values[i]), &(this->st_values), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/ModelCoefficients"; };
+    const char * getMD5(){ return "ca27dea75e72cb894cd36f9e5005e93e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/pcl_msgs/PointIndices.h b/rosserial_test/Inc/pcl_msgs/PointIndices.h
new file mode 100644 (file)
index 0000000..3d55941
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_pcl_msgs_PointIndices_h
+#define _ROS_pcl_msgs_PointIndices_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace pcl_msgs
+{
+
+  class PointIndices : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t indices_length;
+      typedef int32_t _indices_type;
+      _indices_type st_indices;
+      _indices_type * indices;
+
+    PointIndices():
+      header(),
+      indices_length(0), indices(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->indices_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->indices_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->indices_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->indices_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->indices_length);
+      for( uint32_t i = 0; i < indices_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_indicesi;
+      u_indicesi.real = this->indices[i];
+      *(outbuffer + offset + 0) = (u_indicesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_indicesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_indicesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_indicesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->indices[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t indices_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->indices_length);
+      if(indices_lengthT > indices_length)
+        this->indices = (int32_t*)realloc(this->indices, indices_lengthT * sizeof(int32_t));
+      indices_length = indices_lengthT;
+      for( uint32_t i = 0; i < indices_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_indices;
+      u_st_indices.base = 0;
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_indices = u_st_indices.real;
+      offset += sizeof(this->st_indices);
+        memcpy( &(this->indices[i]), &(this->st_indices), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/PointIndices"; };
+    const char * getMD5(){ return "458c7998b7eaf99908256472e273b3d4"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/pcl_msgs/PolygonMesh.h b/rosserial_test/Inc/pcl_msgs/PolygonMesh.h
new file mode 100644 (file)
index 0000000..5769b20
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_pcl_msgs_PolygonMesh_h
+#define _ROS_pcl_msgs_PolygonMesh_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/PointCloud2.h"
+#include "pcl_msgs/Vertices.h"
+
+namespace pcl_msgs
+{
+
+  class PolygonMesh : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef sensor_msgs::PointCloud2 _cloud_type;
+      _cloud_type cloud;
+      uint32_t polygons_length;
+      typedef pcl_msgs::Vertices _polygons_type;
+      _polygons_type st_polygons;
+      _polygons_type * polygons;
+
+    PolygonMesh():
+      header(),
+      cloud(),
+      polygons_length(0), polygons(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->cloud.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->polygons_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->polygons_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->polygons_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->polygons_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->polygons_length);
+      for( uint32_t i = 0; i < polygons_length; i++){
+      offset += this->polygons[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->cloud.deserialize(inbuffer + offset);
+      uint32_t polygons_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->polygons_length);
+      if(polygons_lengthT > polygons_length)
+        this->polygons = (pcl_msgs::Vertices*)realloc(this->polygons, polygons_lengthT * sizeof(pcl_msgs::Vertices));
+      polygons_length = polygons_lengthT;
+      for( uint32_t i = 0; i < polygons_length; i++){
+      offset += this->st_polygons.deserialize(inbuffer + offset);
+        memcpy( &(this->polygons[i]), &(this->st_polygons), sizeof(pcl_msgs::Vertices));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/PolygonMesh"; };
+    const char * getMD5(){ return "45a5fc6ad2cde8489600a790acc9a38a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/pcl_msgs/Vertices.h b/rosserial_test/Inc/pcl_msgs/Vertices.h
new file mode 100644 (file)
index 0000000..5601a1e
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef _ROS_pcl_msgs_Vertices_h
+#define _ROS_pcl_msgs_Vertices_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace pcl_msgs
+{
+
+  class Vertices : public ros::Msg
+  {
+    public:
+      uint32_t vertices_length;
+      typedef uint32_t _vertices_type;
+      _vertices_type st_vertices;
+      _vertices_type * vertices;
+
+    Vertices():
+      vertices_length(0), vertices(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertices_length);
+      for( uint32_t i = 0; i < vertices_length; i++){
+      *(outbuffer + offset + 0) = (this->vertices[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertices[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertices[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertices[i] >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertices[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->vertices_length);
+      if(vertices_lengthT > vertices_length)
+        this->vertices = (uint32_t*)realloc(this->vertices, vertices_lengthT * sizeof(uint32_t));
+      vertices_length = vertices_lengthT;
+      for( uint32_t i = 0; i < vertices_length; i++){
+      this->st_vertices =  ((uint32_t) (*(inbuffer + offset)));
+      this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->st_vertices);
+        memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(uint32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/Vertices"; };
+    const char * getMD5(){ return "39bd7b1c23763ddd1b882b97cb7cfe11"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/polled_camera/GetPolledImage.h b/rosserial_test/Inc/polled_camera/GetPolledImage.h
new file mode 100644 (file)
index 0000000..b062405
--- /dev/null
@@ -0,0 +1,202 @@
+#ifndef _ROS_SERVICE_GetPolledImage_h
+#define _ROS_SERVICE_GetPolledImage_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/RegionOfInterest.h"
+#include "ros/duration.h"
+#include "ros/time.h"
+
+namespace polled_camera
+{
+
+static const char GETPOLLEDIMAGE[] = "polled_camera/GetPolledImage";
+
+  class GetPolledImageRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _response_namespace_type;
+      _response_namespace_type response_namespace;
+      typedef ros::Duration _timeout_type;
+      _timeout_type timeout;
+      typedef uint32_t _binning_x_type;
+      _binning_x_type binning_x;
+      typedef uint32_t _binning_y_type;
+      _binning_y_type binning_y;
+      typedef sensor_msgs::RegionOfInterest _roi_type;
+      _roi_type roi;
+
+    GetPolledImageRequest():
+      response_namespace(""),
+      timeout(),
+      binning_x(0),
+      binning_y(0),
+      roi()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_response_namespace = strlen(this->response_namespace);
+      varToArr(outbuffer + offset, length_response_namespace);
+      offset += 4;
+      memcpy(outbuffer + offset, this->response_namespace, length_response_namespace);
+      offset += length_response_namespace;
+      *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.sec);
+      *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.nsec);
+      *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_x);
+      *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_y);
+      offset += this->roi.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_response_namespace;
+      arrToVar(length_response_namespace, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_response_namespace; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_response_namespace-1]=0;
+      this->response_namespace = (char *)(inbuffer + offset-1);
+      offset += length_response_namespace;
+      this->timeout.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.sec);
+      this->timeout.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.nsec);
+      this->binning_x =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_x);
+      this->binning_y =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_y);
+      offset += this->roi.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOLLEDIMAGE; };
+    const char * getMD5(){ return "c77ed43e530fd48e9e7a2a93845e154c"; };
+
+  };
+
+  class GetPolledImageResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+      typedef ros::Time _stamp_type;
+      _stamp_type stamp;
+
+    GetPolledImageResponse():
+      success(0),
+      status_message(""),
+      stamp()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.sec);
+      *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+      this->stamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.sec);
+      this->stamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOLLEDIMAGE; };
+    const char * getMD5(){ return "dbf1f851bc511800e6129ccd5a3542ab"; };
+
+  };
+
+  class GetPolledImage {
+    public:
+    typedef GetPolledImageRequest Request;
+    typedef GetPolledImageResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/ros.h b/rosserial_test/Inc/ros.h
new file mode 100644 (file)
index 0000000..af13995
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2018, Kenta Yonekura (a.k.a. yoneken)
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_H_
+#define _ROS_H_
+
+#include "ros/node_handle.h"
+#include "STM32Hardware.h"
+
+namespace ros
+{
+  typedef NodeHandle_<STM32Hardware> NodeHandle; // default 25, 25, 512, 512
+}
+
+#endif
diff --git a/rosserial_test/Inc/ros/duration.h b/rosserial_test/Inc/ros/duration.h
new file mode 100644 (file)
index 0000000..5ec6d90
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_DURATION_H_
+#define _ROS_DURATION_H_
+
+#include <math.h>
+#include <stdint.h>
+
+namespace ros
+{
+
+void normalizeSecNSecSigned(int32_t& sec, int32_t& nsec);
+
+class Duration
+{
+public:
+  int32_t sec, nsec;
+
+  Duration() : sec(0), nsec(0) {}
+  Duration(int32_t _sec, int32_t _nsec) : sec(_sec), nsec(_nsec)
+  {
+    normalizeSecNSecSigned(sec, nsec);
+  }
+
+  double toSec() const
+  {
+    return (double)sec + 1e-9 * (double)nsec;
+  };
+  void fromSec(double t)
+  {
+    sec = (uint32_t) floor(t);
+    nsec = (uint32_t) round((t - sec) * 1e9);
+  };
+
+  Duration& operator+=(const Duration &rhs);
+  Duration& operator-=(const Duration &rhs);
+  Duration& operator*=(double scale);
+};
+
+}
+
+#endif
+
diff --git a/rosserial_test/Inc/ros/msg.h b/rosserial_test/Inc/ros/msg.h
new file mode 100644 (file)
index 0000000..aea0f6f
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_MSG_H_
+#define _ROS_MSG_H_
+
+#include <stdint.h>
+#include <stddef.h>
+
+namespace ros
+{
+
+/* Base Message Type */
+class Msg
+{
+public:
+  virtual int serialize(unsigned char *outbuffer) const = 0;
+  virtual int deserialize(unsigned char *data) = 0;
+  virtual const char * getType() = 0;
+  virtual const char * getMD5() = 0;
+
+  /**
+   * @brief This tricky function handles promoting a 32bit float to a 64bit
+   *        double, so that AVR can publish messages containing float64
+   *        fields, despite AVV having no native support for double.
+   *
+   * @param[out] outbuffer pointer for buffer to serialize to.
+   * @param[in] f value to serialize.
+   *
+   * @return number of bytes to advance the buffer pointer.
+   *
+   */
+  static int serializeAvrFloat64(unsigned char* outbuffer, const float f)
+  {
+    const int32_t* val = (int32_t*) &f;
+    int32_t exp = ((*val >> 23) & 255);
+    if (exp != 0)
+    {
+      exp += 1023 - 127;
+    }
+
+    int32_t sig = *val;
+    *(outbuffer++) = 0;
+    *(outbuffer++) = 0;
+    *(outbuffer++) = 0;
+    *(outbuffer++) = (sig << 5) & 0xff;
+    *(outbuffer++) = (sig >> 3) & 0xff;
+    *(outbuffer++) = (sig >> 11) & 0xff;
+    *(outbuffer++) = ((exp << 4) & 0xF0) | ((sig >> 19) & 0x0F);
+    *(outbuffer++) = (exp >> 4) & 0x7F;
+
+    // Mark negative bit as necessary.
+    if (f < 0)
+    {
+      *(outbuffer - 1) |= 0x80;
+    }
+
+    return 8;
+  }
+
+  /**
+   * @brief This tricky function handles demoting a 64bit double to a
+   *        32bit float, so that AVR can understand messages containing
+   *        float64 fields, despite AVR having no native support for double.
+   *
+   * @param[in] inbuffer pointer for buffer to deserialize from.
+   * @param[out] f pointer to place the deserialized value in.
+   *
+   * @return number of bytes to advance the buffer pointer.
+   */
+  static int deserializeAvrFloat64(const unsigned char* inbuffer, float* f)
+  {
+    uint32_t* val = (uint32_t*)f;
+    inbuffer += 3;
+
+    // Copy truncated mantissa.
+    *val = ((uint32_t)(*(inbuffer++)) >> 5 & 0x07);
+    *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 3;
+    *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 11;
+    *val |= ((uint32_t)(*inbuffer) & 0x0f) << 19;
+
+    // Copy truncated exponent.
+    uint32_t exp = ((uint32_t)(*(inbuffer++)) & 0xf0) >> 4;
+    exp |= ((uint32_t)(*inbuffer) & 0x7f) << 4;
+    if (exp != 0)
+    {
+      *val |= ((exp) - 1023 + 127) << 23;
+    }
+
+    // Copy negative sign.
+    *val |= ((uint32_t)(*(inbuffer++)) & 0x80) << 24;
+
+    return 8;
+  }
+
+  // Copy data from variable into a byte array
+  template<typename A, typename V>
+  static void varToArr(A arr, const V var)
+  {
+    for (size_t i = 0; i < sizeof(V); i++)
+      arr[i] = (var >> (8 * i));
+  }
+
+  // Copy data from a byte array into variable
+  template<typename V, typename A>
+  static void arrToVar(V& var, const A arr)
+  {
+    var = 0;
+    for (size_t i = 0; i < sizeof(V); i++)
+      var |= (arr[i] << (8 * i));
+  }
+
+};
+
+}  // namespace ros
+
+#endif
diff --git a/rosserial_test/Inc/ros/node_handle.h b/rosserial_test/Inc/ros/node_handle.h
new file mode 100644 (file)
index 0000000..8fa27b1
--- /dev/null
@@ -0,0 +1,686 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_NODE_HANDLE_H_
+#define ROS_NODE_HANDLE_H_
+
+#include <stdint.h>
+
+#include "std_msgs/Time.h"
+#include "rosserial_msgs/TopicInfo.h"
+#include "rosserial_msgs/Log.h"
+#include "rosserial_msgs/RequestParam.h"
+
+#include "ros/msg.h"
+
+namespace ros
+{
+
+class NodeHandleBase_
+{
+public:
+  virtual int publish(int id, const Msg* msg) = 0;
+  virtual int spinOnce() = 0;
+  virtual bool connected() = 0;
+};
+}
+
+#include "ros/publisher.h"
+#include "ros/subscriber.h"
+#include "ros/service_server.h"
+#include "ros/service_client.h"
+
+namespace ros
+{
+
+const int SPIN_OK = 0;
+const int SPIN_ERR = -1;
+const int SPIN_TIMEOUT = -2;
+
+const uint8_t SYNC_SECONDS  = 5;
+const uint8_t MODE_FIRST_FF = 0;
+/*
+ * The second sync byte is a protocol version. It's value is 0xff for the first
+ * version of the rosserial protocol (used up to hydro), 0xfe for the second version
+ * (introduced in hydro), 0xfd for the next, and so on. Its purpose is to enable
+ * detection of mismatched protocol versions (e.g. hydro rosserial_python with groovy
+ * rosserial_arduino. It must be changed in both this file and in
+ * rosserial_python/src/rosserial_python/SerialClient.py
+ */
+const uint8_t MODE_PROTOCOL_VER   = 1;
+const uint8_t PROTOCOL_VER1       = 0xff; // through groovy
+const uint8_t PROTOCOL_VER2       = 0xfe; // in hydro
+const uint8_t PROTOCOL_VER        = PROTOCOL_VER2;
+const uint8_t MODE_SIZE_L         = 2;
+const uint8_t MODE_SIZE_H         = 3;
+const uint8_t MODE_SIZE_CHECKSUM  = 4;    // checksum for msg size received from size L and H
+const uint8_t MODE_TOPIC_L        = 5;    // waiting for topic id
+const uint8_t MODE_TOPIC_H        = 6;
+const uint8_t MODE_MESSAGE        = 7;
+const uint8_t MODE_MSG_CHECKSUM   = 8;    // checksum for msg and topic id
+
+
+const uint8_t SERIAL_MSG_TIMEOUT  = 20;   // 20 milliseconds to recieve all of message data
+
+using rosserial_msgs::TopicInfo;
+
+/* Node Handle */
+template<class Hardware,
+         int MAX_SUBSCRIBERS = 25,
+         int MAX_PUBLISHERS = 25,
+         int INPUT_SIZE = 512,
+         int OUTPUT_SIZE = 512>
+class NodeHandle_ : public NodeHandleBase_
+{
+protected:
+  Hardware hardware_;
+
+  /* time used for syncing */
+  uint32_t rt_time;
+
+  /* used for computing current time */
+  uint32_t sec_offset, nsec_offset;
+
+  /* Spinonce maximum work timeout */
+  uint32_t spin_timeout_;
+
+  uint8_t message_in[INPUT_SIZE];
+  uint8_t message_out[OUTPUT_SIZE];
+
+  Publisher * publishers[MAX_PUBLISHERS];
+  Subscriber_ * subscribers[MAX_SUBSCRIBERS];
+
+  /*
+   * Setup Functions
+   */
+public:
+  NodeHandle_() : configured_(false)
+  {
+
+    for (unsigned int i = 0; i < MAX_PUBLISHERS; i++)
+      publishers[i] = 0;
+
+    for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++)
+      subscribers[i] = 0;
+
+    for (unsigned int i = 0; i < INPUT_SIZE; i++)
+      message_in[i] = 0;
+
+    for (unsigned int i = 0; i < OUTPUT_SIZE; i++)
+      message_out[i] = 0;
+
+    req_param_resp.ints_length = 0;
+    req_param_resp.ints = NULL;
+    req_param_resp.floats_length = 0;
+    req_param_resp.floats = NULL;
+    req_param_resp.ints_length = 0;
+    req_param_resp.ints = NULL;
+
+    spin_timeout_ = 0;
+  }
+
+  Hardware* getHardware()
+  {
+    return &hardware_;
+  }
+
+  /* Start serial, initialize buffers */
+  void initNode()
+  {
+    hardware_.init();
+    mode_ = 0;
+    bytes_ = 0;
+    index_ = 0;
+    topic_ = 0;
+  };
+
+  /* Start a named port, which may be network server IP, initialize buffers */
+  void initNode(char *portName)
+  {
+    hardware_.init(portName);
+    mode_ = 0;
+    bytes_ = 0;
+    index_ = 0;
+    topic_ = 0;
+  };
+
+  /**
+   * @brief Sets the maximum time in millisconds that spinOnce() can work.
+   * This will not effect the processing of the buffer, as spinOnce processes
+   * one byte at a time. It simply sets the maximum time that one call can
+   * process for. You can choose to clear the buffer if that is beneficial if
+   * SPIN_TIMEOUT is returned from spinOnce().
+   * @param timeout The timeout in milliseconds that spinOnce will function.
+   */
+  void setSpinTimeout(const uint32_t& timeout)
+  {
+     spin_timeout_ = timeout;
+  }
+
+protected:
+  //State machine variables for spinOnce
+  int mode_;
+  int bytes_;
+  int topic_;
+  int index_;
+  int checksum_;
+
+  bool configured_;
+
+  /* used for syncing the time */
+  uint32_t last_sync_time;
+  uint32_t last_sync_receive_time;
+  uint32_t last_msg_timeout_time;
+
+public:
+  /* This function goes in your loop() function, it handles
+   *  serial input and callbacks for subscribers.
+   */
+
+
+  virtual int spinOnce()
+  {
+    /* restart if timed out */
+    uint32_t c_time = hardware_.time();
+    if ((c_time - last_sync_receive_time) > (SYNC_SECONDS * 2200))
+    {
+      configured_ = false;
+    }
+
+    /* reset if message has timed out */
+    if (mode_ != MODE_FIRST_FF)
+    {
+      if (c_time > last_msg_timeout_time)
+      {
+        mode_ = MODE_FIRST_FF;
+      }
+    }
+
+    /* while available buffer, read data */
+    while (true)
+    {
+      // If a timeout has been specified, check how long spinOnce has been running.
+      if (spin_timeout_ > 0)
+      {
+        // If the maximum processing timeout has been exceeded, exit with error.
+        // The next spinOnce can continue where it left off, or optionally
+        // based on the application in use, the hardware buffer could be flushed
+        // and start fresh.
+        if ((hardware_.time() - c_time) > spin_timeout_)
+        {
+          // Exit the spin, processing timeout exceeded.
+          return SPIN_TIMEOUT;
+        }
+      }
+      int data = hardware_.read();
+      if (data < 0)
+        break;
+      checksum_ += data;
+      if (mode_ == MODE_MESSAGE)          /* message data being recieved */
+      {
+        message_in[index_++] = data;
+        bytes_--;
+        if (bytes_ == 0)                 /* is message complete? if so, checksum */
+          mode_ = MODE_MSG_CHECKSUM;
+      }
+      else if (mode_ == MODE_FIRST_FF)
+      {
+        if (data == 0xff)
+        {
+          mode_++;
+          last_msg_timeout_time = c_time + SERIAL_MSG_TIMEOUT;
+        }
+        else if (hardware_.time() - c_time > (SYNC_SECONDS * 1000))
+        {
+          /* We have been stuck in spinOnce too long, return error */
+          configured_ = false;
+          return SPIN_TIMEOUT;
+        }
+      }
+      else if (mode_ == MODE_PROTOCOL_VER)
+      {
+        if (data == PROTOCOL_VER)
+        {
+          mode_++;
+        }
+        else
+        {
+          mode_ = MODE_FIRST_FF;
+          if (configured_ == false)
+            requestSyncTime();  /* send a msg back showing our protocol version */
+        }
+      }
+      else if (mode_ == MODE_SIZE_L)      /* bottom half of message size */
+      {
+        bytes_ = data;
+        index_ = 0;
+        mode_++;
+        checksum_ = data;               /* first byte for calculating size checksum */
+      }
+      else if (mode_ == MODE_SIZE_H)      /* top half of message size */
+      {
+        bytes_ += data << 8;
+        mode_++;
+      }
+      else if (mode_ == MODE_SIZE_CHECKSUM)
+      {
+        if ((checksum_ % 256) == 255)
+          mode_++;
+        else
+          mode_ = MODE_FIRST_FF;          /* Abandon the frame if the msg len is wrong */
+      }
+      else if (mode_ == MODE_TOPIC_L)     /* bottom half of topic id */
+      {
+        topic_ = data;
+        mode_++;
+        checksum_ = data;               /* first byte included in checksum */
+      }
+      else if (mode_ == MODE_TOPIC_H)     /* top half of topic id */
+      {
+        topic_ += data << 8;
+        mode_ = MODE_MESSAGE;
+        if (bytes_ == 0)
+          mode_ = MODE_MSG_CHECKSUM;
+      }
+      else if (mode_ == MODE_MSG_CHECKSUM)    /* do checksum */
+      {
+        mode_ = MODE_FIRST_FF;
+        if ((checksum_ % 256) == 255)
+        {
+          if (topic_ == TopicInfo::ID_PUBLISHER)
+          {
+            requestSyncTime();
+            negotiateTopics();
+            last_sync_time = c_time;
+            last_sync_receive_time = c_time;
+            return SPIN_ERR;
+          }
+          else if (topic_ == TopicInfo::ID_TIME)
+          {
+            syncTime(message_in);
+          }
+          else if (topic_ == TopicInfo::ID_PARAMETER_REQUEST)
+          {
+            req_param_resp.deserialize(message_in);
+            param_recieved = true;
+          }
+          else if (topic_ == TopicInfo::ID_TX_STOP)
+          {
+            configured_ = false;
+          }
+          else
+          {
+            if (subscribers[topic_ - 100])
+              subscribers[topic_ - 100]->callback(message_in);
+          }
+        }
+      }
+    }
+
+    /* occasionally sync time */
+    if (configured_ && ((c_time - last_sync_time) > (SYNC_SECONDS * 500)))
+    {
+      requestSyncTime();
+      last_sync_time = c_time;
+    }
+
+    return SPIN_OK;
+  }
+
+
+  /* Are we connected to the PC? */
+  virtual bool connected()
+  {
+    return configured_;
+  };
+
+  /********************************************************************
+   * Time functions
+   */
+
+  void requestSyncTime()
+  {
+    std_msgs::Time t;
+    publish(TopicInfo::ID_TIME, &t);
+    rt_time = hardware_.time();
+  }
+
+  void syncTime(uint8_t * data)
+  {
+    std_msgs::Time t;
+    uint32_t offset = hardware_.time() - rt_time;
+
+    t.deserialize(data);
+    t.data.sec += offset / 1000;
+    t.data.nsec += (offset % 1000) * 1000000UL;
+
+    this->setNow(t.data);
+    last_sync_receive_time = hardware_.time();
+  }
+
+  Time now()
+  {
+    uint32_t ms = hardware_.time();
+    Time current_time;
+    current_time.sec = ms / 1000 + sec_offset;
+    current_time.nsec = (ms % 1000) * 1000000UL + nsec_offset;
+    normalizeSecNSec(current_time.sec, current_time.nsec);
+    return current_time;
+  }
+
+  void setNow(Time & new_now)
+  {
+    uint32_t ms = hardware_.time();
+    sec_offset = new_now.sec - ms / 1000 - 1;
+    nsec_offset = new_now.nsec - (ms % 1000) * 1000000UL + 1000000000UL;
+    normalizeSecNSec(sec_offset, nsec_offset);
+  }
+
+  /********************************************************************
+   * Topic Management
+   */
+
+  /* Register a new publisher */
+  bool advertise(Publisher & p)
+  {
+    for (int i = 0; i < MAX_PUBLISHERS; i++)
+    {
+      if (publishers[i] == 0) // empty slot
+      {
+        publishers[i] = &p;
+        p.id_ = i + 100 + MAX_SUBSCRIBERS;
+        p.nh_ = this;
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /* Register a new subscriber */
+  template<typename SubscriberT>
+  bool subscribe(SubscriberT& s)
+  {
+    for (int i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] == 0) // empty slot
+      {
+        subscribers[i] = static_cast<Subscriber_*>(&s);
+        s.id_ = i + 100;
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /* Register a new Service Server */
+  template<typename MReq, typename MRes, typename ObjT>
+  bool advertiseService(ServiceServer<MReq, MRes, ObjT>& srv)
+  {
+    bool v = advertise(srv.pub);
+    for (int i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] == 0) // empty slot
+      {
+        subscribers[i] = static_cast<Subscriber_*>(&srv);
+        srv.id_ = i + 100;
+        return v;
+      }
+    }
+    return false;
+  }
+
+  /* Register a new Service Client */
+  template<typename MReq, typename MRes>
+  bool serviceClient(ServiceClient<MReq, MRes>& srv)
+  {
+    bool v = advertise(srv.pub);
+    for (int i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] == 0) // empty slot
+      {
+        subscribers[i] = static_cast<Subscriber_*>(&srv);
+        srv.id_ = i + 100;
+        return v;
+      }
+    }
+    return false;
+  }
+
+  void negotiateTopics()
+  {
+    rosserial_msgs::TopicInfo ti;
+    int i;
+    for (i = 0; i < MAX_PUBLISHERS; i++)
+    {
+      if (publishers[i] != 0) // non-empty slot
+      {
+        ti.topic_id = publishers[i]->id_;
+        ti.topic_name = (char *) publishers[i]->topic_;
+        ti.message_type = (char *) publishers[i]->msg_->getType();
+        ti.md5sum = (char *) publishers[i]->msg_->getMD5();
+        ti.buffer_size = OUTPUT_SIZE;
+        publish(publishers[i]->getEndpointType(), &ti);
+      }
+    }
+    for (i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] != 0) // non-empty slot
+      {
+        ti.topic_id = subscribers[i]->id_;
+        ti.topic_name = (char *) subscribers[i]->topic_;
+        ti.message_type = (char *) subscribers[i]->getMsgType();
+        ti.md5sum = (char *) subscribers[i]->getMsgMD5();
+        ti.buffer_size = INPUT_SIZE;
+        publish(subscribers[i]->getEndpointType(), &ti);
+      }
+    }
+    configured_ = true;
+  }
+
+  virtual int publish(int id, const Msg * msg)
+  {
+    if (id >= 100 && !configured_)
+      return 0;
+
+    /* serialize message */
+    int l = msg->serialize(message_out + 7);
+
+    /* setup the header */
+    message_out[0] = 0xff;
+    message_out[1] = PROTOCOL_VER;
+    message_out[2] = (uint8_t)((uint16_t)l & 255);
+    message_out[3] = (uint8_t)((uint16_t)l >> 8);
+    message_out[4] = 255 - ((message_out[2] + message_out[3]) % 256);
+    message_out[5] = (uint8_t)((int16_t)id & 255);
+    message_out[6] = (uint8_t)((int16_t)id >> 8);
+
+    /* calculate checksum */
+    int chk = 0;
+    for (int i = 5; i < l + 7; i++)
+      chk += message_out[i];
+    l += 7;
+    message_out[l++] = 255 - (chk % 256);
+
+    if (l <= OUTPUT_SIZE)
+    {
+      hardware_.write(message_out, l);
+      return l;
+    }
+    else
+    {
+      logerror("Message from device dropped: message larger than buffer.");
+      return -1;
+    }
+  }
+
+  /********************************************************************
+   * Logging
+   */
+
+private:
+  void log(char byte, const char * msg)
+  {
+    rosserial_msgs::Log l;
+    l.level = byte;
+    l.msg = (char*)msg;
+    publish(rosserial_msgs::TopicInfo::ID_LOG, &l);
+  }
+
+public:
+  void logdebug(const char* msg)
+  {
+    log(rosserial_msgs::Log::ROSDEBUG, msg);
+  }
+  void loginfo(const char * msg)
+  {
+    log(rosserial_msgs::Log::INFO, msg);
+  }
+  void logwarn(const char *msg)
+  {
+    log(rosserial_msgs::Log::WARN, msg);
+  }
+  void logerror(const char*msg)
+  {
+    log(rosserial_msgs::Log::ERROR, msg);
+  }
+  void logfatal(const char*msg)
+  {
+    log(rosserial_msgs::Log::FATAL, msg);
+  }
+
+  /********************************************************************
+   * Parameters
+   */
+
+private:
+  bool param_recieved;
+  rosserial_msgs::RequestParamResponse req_param_resp;
+
+  bool requestParam(const char * name, int time_out =  1000)
+  {
+    param_recieved = false;
+    rosserial_msgs::RequestParamRequest req;
+    req.name  = (char*)name;
+    publish(TopicInfo::ID_PARAMETER_REQUEST, &req);
+    uint32_t end_time = hardware_.time() + time_out;
+    while (!param_recieved)
+    {
+      spinOnce();
+      if (hardware_.time() > end_time)
+      {
+        logwarn("Failed to get param: timeout expired");
+        return false;
+      }
+    }
+    return true;
+  }
+
+public:
+  bool getParam(const char* name, int* param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.ints_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          param[i] = req_param_resp.ints[i];
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+  bool getParam(const char* name, float* param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.floats_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          param[i] = req_param_resp.floats[i];
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+  bool getParam(const char* name, char** param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.strings_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          strcpy(param[i], req_param_resp.strings[i]);
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+  bool getParam(const char* name, bool* param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.ints_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          param[i] = req_param_resp.ints[i];
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+};
+
+}
+
+#endif
diff --git a/rosserial_test/Inc/ros/publisher.h b/rosserial_test/Inc/ros/publisher.h
new file mode 100644 (file)
index 0000000..6fd3b7a
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_PUBLISHER_H_
+#define _ROS_PUBLISHER_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+#include "ros/node_handle.h"
+
+namespace ros
+{
+
+/* Generic Publisher */
+class Publisher
+{
+public:
+  Publisher(const char * topic_name, Msg * msg, int endpoint = rosserial_msgs::TopicInfo::ID_PUBLISHER) :
+    topic_(topic_name),
+    msg_(msg),
+    endpoint_(endpoint) {};
+
+  int publish(const Msg * msg)
+  {
+    return nh_->publish(id_, msg);
+  };
+  int getEndpointType()
+  {
+    return endpoint_;
+  }
+
+  const char * topic_;
+  Msg *msg_;
+  // id_ and no_ are set by NodeHandle when we advertise
+  int id_;
+  NodeHandleBase_* nh_;
+
+private:
+  int endpoint_;
+};
+
+}
+
+#endif
diff --git a/rosserial_test/Inc/ros/ros_time.h b/rosserial_test/Inc/ros/ros_time.h
new file mode 100644 (file)
index 0000000..441d952
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_TIME_H_
+#define ROS_TIME_H_
+
+#include "ros/duration.h"
+#include <math.h>
+#include <stdint.h>
+
+namespace ros
+{
+void normalizeSecNSec(uint32_t &sec, uint32_t &nsec);
+
+class Time
+{
+public:
+  uint32_t sec, nsec;
+
+  Time() : sec(0), nsec(0) {}
+  Time(uint32_t _sec, uint32_t _nsec) : sec(_sec), nsec(_nsec)
+  {
+    normalizeSecNSec(sec, nsec);
+  }
+
+  double toSec() const
+  {
+    return (double)sec + 1e-9 * (double)nsec;
+  };
+  void fromSec(double t)
+  {
+    sec = (uint32_t) floor(t);
+    nsec = (uint32_t) round((t - sec) * 1e9);
+  };
+
+  uint32_t toNsec()
+  {
+    return (uint32_t)sec * 1000000000ull + (uint32_t)nsec;
+  };
+  Time& fromNSec(int32_t t);
+
+  Time& operator +=(const Duration &rhs);
+  Time& operator -=(const Duration &rhs);
+
+  static Time now();
+  static void setNow(Time & new_now);
+};
+
+}
+
+#endif
diff --git a/rosserial_test/Inc/ros/service_client.h b/rosserial_test/Inc/ros/service_client.h
new file mode 100644 (file)
index 0000000..3494d96
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_SERVICE_CLIENT_H_
+#define _ROS_SERVICE_CLIENT_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+
+#include "ros/publisher.h"
+#include "ros/subscriber.h"
+
+namespace ros
+{
+
+template<typename MReq , typename MRes>
+class ServiceClient : public Subscriber_
+{
+public:
+  ServiceClient(const char* topic_name) :
+    pub(topic_name, &req, rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_PUBLISHER)
+  {
+    this->topic_ = topic_name;
+    this->waiting = true;
+  }
+
+  virtual void call(const MReq & request, MRes & response)
+  {
+    if (!pub.nh_->connected()) return;
+    ret = &response;
+    waiting = true;
+    pub.publish(&request);
+    while (waiting && pub.nh_->connected())
+      if (pub.nh_->spinOnce() < 0) break;
+  }
+
+  // these refer to the subscriber
+  virtual void callback(unsigned char *data)
+  {
+    ret->deserialize(data);
+    waiting = false;
+  }
+  virtual const char * getMsgType()
+  {
+    return this->resp.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->resp.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_SUBSCRIBER;
+  }
+
+  MReq req;
+  MRes resp;
+  MRes * ret;
+  bool waiting;
+  Publisher pub;
+};
+
+}
+
+#endif
diff --git a/rosserial_test/Inc/ros/service_server.h b/rosserial_test/Inc/ros/service_server.h
new file mode 100644 (file)
index 0000000..459d66e
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_SERVICE_SERVER_H_
+#define _ROS_SERVICE_SERVER_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+
+#include "ros/publisher.h"
+#include "ros/subscriber.h"
+
+namespace ros
+{
+
+template<typename MReq , typename MRes, typename ObjT = void>
+class ServiceServer : public Subscriber_
+{
+public:
+  typedef void(ObjT::*CallbackT)(const MReq&,  MRes&);
+
+  ServiceServer(const char* topic_name, CallbackT cb, ObjT* obj) :
+    pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER),
+    obj_(obj)
+  {
+    this->topic_ = topic_name;
+    this->cb_ = cb;
+  }
+
+  // these refer to the subscriber
+  virtual void callback(unsigned char *data)
+  {
+    req.deserialize(data);
+    (obj_->*cb_)(req, resp);
+    pub.publish(&resp);
+  }
+  virtual const char * getMsgType()
+  {
+    return this->req.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->req.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER;
+  }
+
+  MReq req;
+  MRes resp;
+  Publisher pub;
+private:
+  CallbackT cb_;
+  ObjT* obj_;
+};
+
+template<typename MReq , typename MRes>
+class ServiceServer<MReq, MRes, void> : public Subscriber_
+{
+public:
+  typedef void(*CallbackT)(const MReq&,  MRes&);
+
+  ServiceServer(const char* topic_name, CallbackT cb) :
+    pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER)
+  {
+    this->topic_ = topic_name;
+    this->cb_ = cb;
+  }
+
+  // these refer to the subscriber
+  virtual void callback(unsigned char *data)
+  {
+    req.deserialize(data);
+    cb_(req, resp);
+    pub.publish(&resp);
+  }
+  virtual const char * getMsgType()
+  {
+    return this->req.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->req.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER;
+  }
+
+  MReq req;
+  MRes resp;
+  Publisher pub;
+private:
+  CallbackT cb_;
+};
+
+}
+
+#endif
diff --git a/rosserial_test/Inc/ros/subscriber.h b/rosserial_test/Inc/ros/subscriber.h
new file mode 100644 (file)
index 0000000..d420bba
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_SUBSCRIBER_H_
+#define ROS_SUBSCRIBER_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+
+namespace ros
+{
+
+/* Base class for objects subscribers. */
+class Subscriber_
+{
+public:
+  virtual void callback(unsigned char *data) = 0;
+  virtual int getEndpointType() = 0;
+
+  // id_ is set by NodeHandle when we advertise
+  int id_;
+
+  virtual const char * getMsgType() = 0;
+  virtual const char * getMsgMD5() = 0;
+  const char * topic_;
+};
+
+/* Bound function subscriber. */
+template<typename MsgT, typename ObjT = void>
+class Subscriber: public Subscriber_
+{
+public:
+  typedef void(ObjT::*CallbackT)(const MsgT&);
+  MsgT msg;
+
+  Subscriber(const char * topic_name, CallbackT cb, ObjT* obj, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) :
+    cb_(cb),
+    obj_(obj),
+    endpoint_(endpoint)
+  {
+    topic_ = topic_name;
+  };
+
+  virtual void callback(unsigned char* data)
+  {
+    msg.deserialize(data);
+    (obj_->*cb_)(msg);
+  }
+
+  virtual const char * getMsgType()
+  {
+    return this->msg.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->msg.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return endpoint_;
+  }
+
+private:
+  CallbackT cb_;
+  ObjT* obj_;
+  int endpoint_;
+};
+
+/* Standalone function subscriber. */
+template<typename MsgT>
+class Subscriber<MsgT, void>: public Subscriber_
+{
+public:
+  typedef void(*CallbackT)(const MsgT&);
+  MsgT msg;
+
+  Subscriber(const char * topic_name, CallbackT cb, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) :
+    cb_(cb),
+    endpoint_(endpoint)
+  {
+    topic_ = topic_name;
+  };
+
+  virtual void callback(unsigned char* data)
+  {
+    msg.deserialize(data);
+    this->cb_(msg);
+  }
+
+  virtual const char * getMsgType()
+  {
+    return this->msg.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->msg.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return endpoint_;
+  }
+
+private:
+  CallbackT cb_;
+  int endpoint_;
+};
+
+}
+
+#endif
diff --git a/rosserial_test/Inc/roscpp/Empty.h b/rosserial_test/Inc/roscpp/Empty.h
new file mode 100644 (file)
index 0000000..df021b7
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_SERVICE_Empty_h
+#define _ROS_SERVICE_Empty_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp
+{
+
+static const char EMPTY[] = "roscpp/Empty";
+
+  class EmptyRequest : public ros::Msg
+  {
+    public:
+
+    EmptyRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class EmptyResponse : public ros::Msg
+  {
+    public:
+
+    EmptyResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class Empty {
+    public:
+    typedef EmptyRequest Request;
+    typedef EmptyResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/roscpp/GetLoggers.h b/rosserial_test/Inc/roscpp/GetLoggers.h
new file mode 100644 (file)
index 0000000..35f67fb
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_GetLoggers_h
+#define _ROS_SERVICE_GetLoggers_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "roscpp/Logger.h"
+
+namespace roscpp
+{
+
+static const char GETLOGGERS[] = "roscpp/GetLoggers";
+
+  class GetLoggersRequest : public ros::Msg
+  {
+    public:
+
+    GetLoggersRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETLOGGERS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetLoggersResponse : public ros::Msg
+  {
+    public:
+      uint32_t loggers_length;
+      typedef roscpp::Logger _loggers_type;
+      _loggers_type st_loggers;
+      _loggers_type * loggers;
+
+    GetLoggersResponse():
+      loggers_length(0), loggers(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->loggers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->loggers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->loggers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->loggers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->loggers_length);
+      for( uint32_t i = 0; i < loggers_length; i++){
+      offset += this->loggers[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t loggers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->loggers_length);
+      if(loggers_lengthT > loggers_length)
+        this->loggers = (roscpp::Logger*)realloc(this->loggers, loggers_lengthT * sizeof(roscpp::Logger));
+      loggers_length = loggers_lengthT;
+      for( uint32_t i = 0; i < loggers_length; i++){
+      offset += this->st_loggers.deserialize(inbuffer + offset);
+        memcpy( &(this->loggers[i]), &(this->st_loggers), sizeof(roscpp::Logger));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return GETLOGGERS; };
+    const char * getMD5(){ return "32e97e85527d4678a8f9279894bb64b0"; };
+
+  };
+
+  class GetLoggers {
+    public:
+    typedef GetLoggersRequest Request;
+    typedef GetLoggersResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/roscpp/Logger.h b/rosserial_test/Inc/roscpp/Logger.h
new file mode 100644 (file)
index 0000000..64c68f3
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef _ROS_roscpp_Logger_h
+#define _ROS_roscpp_Logger_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp
+{
+
+  class Logger : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _level_type;
+      _level_type level;
+
+    Logger():
+      name(""),
+      level("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_level = strlen(this->level);
+      varToArr(outbuffer + offset, length_level);
+      offset += 4;
+      memcpy(outbuffer + offset, this->level, length_level);
+      offset += length_level;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_level;
+      arrToVar(length_level, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_level; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_level-1]=0;
+      this->level = (char *)(inbuffer + offset-1);
+      offset += length_level;
+     return offset;
+    }
+
+    const char * getType(){ return "roscpp/Logger"; };
+    const char * getMD5(){ return "a6069a2ff40db7bd32143dd66e1f408e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/roscpp/SetLoggerLevel.h b/rosserial_test/Inc/roscpp/SetLoggerLevel.h
new file mode 100644 (file)
index 0000000..64f2a24
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef _ROS_SERVICE_SetLoggerLevel_h
+#define _ROS_SERVICE_SetLoggerLevel_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp
+{
+
+static const char SETLOGGERLEVEL[] = "roscpp/SetLoggerLevel";
+
+  class SetLoggerLevelRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _logger_type;
+      _logger_type logger;
+      typedef const char* _level_type;
+      _level_type level;
+
+    SetLoggerLevelRequest():
+      logger(""),
+      level("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_logger = strlen(this->logger);
+      varToArr(outbuffer + offset, length_logger);
+      offset += 4;
+      memcpy(outbuffer + offset, this->logger, length_logger);
+      offset += length_logger;
+      uint32_t length_level = strlen(this->level);
+      varToArr(outbuffer + offset, length_level);
+      offset += 4;
+      memcpy(outbuffer + offset, this->level, length_level);
+      offset += length_level;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_logger;
+      arrToVar(length_logger, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_logger; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_logger-1]=0;
+      this->logger = (char *)(inbuffer + offset-1);
+      offset += length_logger;
+      uint32_t length_level;
+      arrToVar(length_level, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_level; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_level-1]=0;
+      this->level = (char *)(inbuffer + offset-1);
+      offset += length_level;
+     return offset;
+    }
+
+    const char * getType(){ return SETLOGGERLEVEL; };
+    const char * getMD5(){ return "51da076440d78ca1684d36c868df61ea"; };
+
+  };
+
+  class SetLoggerLevelResponse : public ros::Msg
+  {
+    public:
+
+    SetLoggerLevelResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETLOGGERLEVEL; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetLoggerLevel {
+    public:
+    typedef SetLoggerLevelRequest Request;
+    typedef SetLoggerLevelResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/roscpp_tutorials/TwoInts.h b/rosserial_test/Inc/roscpp_tutorials/TwoInts.h
new file mode 100644 (file)
index 0000000..03510bb
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _ROS_SERVICE_TwoInts_h
+#define _ROS_SERVICE_TwoInts_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp_tutorials
+{
+
+static const char TWOINTS[] = "roscpp_tutorials/TwoInts";
+
+  class TwoIntsRequest : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int64_t _b_type;
+      _b_type b;
+
+    TwoIntsRequest():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return TWOINTS; };
+    const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; };
+
+  };
+
+  class TwoIntsResponse : public ros::Msg
+  {
+    public:
+      typedef int64_t _sum_type;
+      _sum_type sum;
+
+    TwoIntsResponse():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return TWOINTS; };
+    const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; };
+
+  };
+
+  class TwoInts {
+    public:
+    typedef TwoIntsRequest Request;
+    typedef TwoIntsResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosgraph_msgs/Clock.h b/rosserial_test/Inc/rosgraph_msgs/Clock.h
new file mode 100644 (file)
index 0000000..febd870
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_rosgraph_msgs_Clock_h
+#define _ROS_rosgraph_msgs_Clock_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace rosgraph_msgs
+{
+
+  class Clock : public ros::Msg
+  {
+    public:
+      typedef ros::Time _clock_type;
+      _clock_type clock;
+
+    Clock():
+      clock()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->clock.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->clock.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->clock.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->clock.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->clock.sec);
+      *(outbuffer + offset + 0) = (this->clock.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->clock.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->clock.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->clock.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->clock.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->clock.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->clock.sec);
+      this->clock.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->clock.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "rosgraph_msgs/Clock"; };
+    const char * getMD5(){ return "a9c97c1d230cfc112e270351a944ee47"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosgraph_msgs/Log.h b/rosserial_test/Inc/rosgraph_msgs/Log.h
new file mode 100644 (file)
index 0000000..eea68a1
--- /dev/null
@@ -0,0 +1,185 @@
+#ifndef _ROS_rosgraph_msgs_Log_h
+#define _ROS_rosgraph_msgs_Log_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace rosgraph_msgs
+{
+
+  class Log : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef int8_t _level_type;
+      _level_type level;
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _msg_type;
+      _msg_type msg;
+      typedef const char* _file_type;
+      _file_type file;
+      typedef const char* _function_type;
+      _function_type function;
+      typedef uint32_t _line_type;
+      _line_type line;
+      uint32_t topics_length;
+      typedef char* _topics_type;
+      _topics_type st_topics;
+      _topics_type * topics;
+      enum { DEBUG = 1  };
+      enum { INFO = 2   };
+      enum { WARN = 4   };
+      enum { ERROR = 8  };
+      enum { FATAL = 16  };
+
+    Log():
+      header(),
+      level(0),
+      name(""),
+      msg(""),
+      file(""),
+      function(""),
+      line(0),
+      topics_length(0), topics(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.real = this->level;
+      *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_msg = strlen(this->msg);
+      varToArr(outbuffer + offset, length_msg);
+      offset += 4;
+      memcpy(outbuffer + offset, this->msg, length_msg);
+      offset += length_msg;
+      uint32_t length_file = strlen(this->file);
+      varToArr(outbuffer + offset, length_file);
+      offset += 4;
+      memcpy(outbuffer + offset, this->file, length_file);
+      offset += length_file;
+      uint32_t length_function = strlen(this->function);
+      varToArr(outbuffer + offset, length_function);
+      offset += 4;
+      memcpy(outbuffer + offset, this->function, length_function);
+      offset += length_function;
+      *(outbuffer + offset + 0) = (this->line >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->line >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->line >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->line >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->line);
+      *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->topics_length);
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_topicsi = strlen(this->topics[i]);
+      varToArr(outbuffer + offset, length_topicsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topics[i], length_topicsi);
+      offset += length_topicsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.base = 0;
+      u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->level = u_level.real;
+      offset += sizeof(this->level);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_msg;
+      arrToVar(length_msg, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_msg; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_msg-1]=0;
+      this->msg = (char *)(inbuffer + offset-1);
+      offset += length_msg;
+      uint32_t length_file;
+      arrToVar(length_file, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_file; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_file-1]=0;
+      this->file = (char *)(inbuffer + offset-1);
+      offset += length_file;
+      uint32_t length_function;
+      arrToVar(length_function, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_function; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_function-1]=0;
+      this->function = (char *)(inbuffer + offset-1);
+      offset += length_function;
+      this->line =  ((uint32_t) (*(inbuffer + offset)));
+      this->line |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->line |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->line |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->line);
+      uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->topics_length);
+      if(topics_lengthT > topics_length)
+        this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*));
+      topics_length = topics_lengthT;
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_st_topics;
+      arrToVar(length_st_topics, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_topics; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_topics-1]=0;
+      this->st_topics = (char *)(inbuffer + offset-1);
+      offset += length_st_topics;
+        memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "rosgraph_msgs/Log"; };
+    const char * getMD5(){ return "acffd30cd6b6de30f120938c17c593fb"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosgraph_msgs/TopicStatistics.h b/rosserial_test/Inc/rosgraph_msgs/TopicStatistics.h
new file mode 100644 (file)
index 0000000..a11f784
--- /dev/null
@@ -0,0 +1,347 @@
+#ifndef _ROS_rosgraph_msgs_TopicStatistics_h
+#define _ROS_rosgraph_msgs_TopicStatistics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "ros/duration.h"
+
+namespace rosgraph_msgs
+{
+
+  class TopicStatistics : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+      typedef const char* _node_pub_type;
+      _node_pub_type node_pub;
+      typedef const char* _node_sub_type;
+      _node_sub_type node_sub;
+      typedef ros::Time _window_start_type;
+      _window_start_type window_start;
+      typedef ros::Time _window_stop_type;
+      _window_stop_type window_stop;
+      typedef int32_t _delivered_msgs_type;
+      _delivered_msgs_type delivered_msgs;
+      typedef int32_t _dropped_msgs_type;
+      _dropped_msgs_type dropped_msgs;
+      typedef int32_t _traffic_type;
+      _traffic_type traffic;
+      typedef ros::Duration _period_mean_type;
+      _period_mean_type period_mean;
+      typedef ros::Duration _period_stddev_type;
+      _period_stddev_type period_stddev;
+      typedef ros::Duration _period_max_type;
+      _period_max_type period_max;
+      typedef ros::Duration _stamp_age_mean_type;
+      _stamp_age_mean_type stamp_age_mean;
+      typedef ros::Duration _stamp_age_stddev_type;
+      _stamp_age_stddev_type stamp_age_stddev;
+      typedef ros::Duration _stamp_age_max_type;
+      _stamp_age_max_type stamp_age_max;
+
+    TopicStatistics():
+      topic(""),
+      node_pub(""),
+      node_sub(""),
+      window_start(),
+      window_stop(),
+      delivered_msgs(0),
+      dropped_msgs(0),
+      traffic(0),
+      period_mean(),
+      period_stddev(),
+      period_max(),
+      stamp_age_mean(),
+      stamp_age_stddev(),
+      stamp_age_max()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      uint32_t length_node_pub = strlen(this->node_pub);
+      varToArr(outbuffer + offset, length_node_pub);
+      offset += 4;
+      memcpy(outbuffer + offset, this->node_pub, length_node_pub);
+      offset += length_node_pub;
+      uint32_t length_node_sub = strlen(this->node_sub);
+      varToArr(outbuffer + offset, length_node_sub);
+      offset += 4;
+      memcpy(outbuffer + offset, this->node_sub, length_node_sub);
+      offset += length_node_sub;
+      *(outbuffer + offset + 0) = (this->window_start.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_start.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_start.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_start.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_start.sec);
+      *(outbuffer + offset + 0) = (this->window_start.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_start.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_start.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_start.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_start.nsec);
+      *(outbuffer + offset + 0) = (this->window_stop.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_stop.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_stop.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_stop.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_stop.sec);
+      *(outbuffer + offset + 0) = (this->window_stop.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_stop.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_stop.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_stop.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_stop.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_delivered_msgs;
+      u_delivered_msgs.real = this->delivered_msgs;
+      *(outbuffer + offset + 0) = (u_delivered_msgs.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_delivered_msgs.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_delivered_msgs.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_delivered_msgs.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delivered_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_dropped_msgs;
+      u_dropped_msgs.real = this->dropped_msgs;
+      *(outbuffer + offset + 0) = (u_dropped_msgs.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_dropped_msgs.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_dropped_msgs.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_dropped_msgs.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->dropped_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_traffic;
+      u_traffic.real = this->traffic;
+      *(outbuffer + offset + 0) = (u_traffic.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_traffic.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_traffic.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_traffic.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->traffic);
+      *(outbuffer + offset + 0) = (this->period_mean.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_mean.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_mean.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_mean.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_mean.sec);
+      *(outbuffer + offset + 0) = (this->period_mean.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_mean.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_mean.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_mean.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_mean.nsec);
+      *(outbuffer + offset + 0) = (this->period_stddev.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_stddev.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_stddev.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_stddev.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_stddev.sec);
+      *(outbuffer + offset + 0) = (this->period_stddev.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_stddev.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_stddev.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_stddev.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_stddev.nsec);
+      *(outbuffer + offset + 0) = (this->period_max.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_max.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_max.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_max.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_max.sec);
+      *(outbuffer + offset + 0) = (this->period_max.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_max.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_max.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_max.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_max.nsec);
+      *(outbuffer + offset + 0) = (this->stamp_age_mean.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_mean.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_mean.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_mean.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_mean.sec);
+      *(outbuffer + offset + 0) = (this->stamp_age_mean.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_mean.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_mean.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_mean.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_mean.nsec);
+      *(outbuffer + offset + 0) = (this->stamp_age_stddev.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_stddev.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_stddev.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_stddev.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_stddev.sec);
+      *(outbuffer + offset + 0) = (this->stamp_age_stddev.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_stddev.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_stddev.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_stddev.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_stddev.nsec);
+      *(outbuffer + offset + 0) = (this->stamp_age_max.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_max.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_max.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_max.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_max.sec);
+      *(outbuffer + offset + 0) = (this->stamp_age_max.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_max.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_max.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_max.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_max.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+      uint32_t length_node_pub;
+      arrToVar(length_node_pub, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_node_pub; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_node_pub-1]=0;
+      this->node_pub = (char *)(inbuffer + offset-1);
+      offset += length_node_pub;
+      uint32_t length_node_sub;
+      arrToVar(length_node_sub, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_node_sub; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_node_sub-1]=0;
+      this->node_sub = (char *)(inbuffer + offset-1);
+      offset += length_node_sub;
+      this->window_start.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_start.sec);
+      this->window_start.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_start.nsec);
+      this->window_stop.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_stop.sec);
+      this->window_stop.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_stop.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_delivered_msgs;
+      u_delivered_msgs.base = 0;
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->delivered_msgs = u_delivered_msgs.real;
+      offset += sizeof(this->delivered_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_dropped_msgs;
+      u_dropped_msgs.base = 0;
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->dropped_msgs = u_dropped_msgs.real;
+      offset += sizeof(this->dropped_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_traffic;
+      u_traffic.base = 0;
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->traffic = u_traffic.real;
+      offset += sizeof(this->traffic);
+      this->period_mean.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_mean.sec);
+      this->period_mean.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_mean.nsec);
+      this->period_stddev.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_stddev.sec);
+      this->period_stddev.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_stddev.nsec);
+      this->period_max.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_max.sec);
+      this->period_max.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_max.nsec);
+      this->stamp_age_mean.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_mean.sec);
+      this->stamp_age_mean.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_mean.nsec);
+      this->stamp_age_stddev.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_stddev.sec);
+      this->stamp_age_stddev.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_stddev.nsec);
+      this->stamp_age_max.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_max.sec);
+      this->stamp_age_max.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_max.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "rosgraph_msgs/TopicStatistics"; };
+    const char * getMD5(){ return "10152ed868c5097a5e2e4a89d7daa710"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rospy_tutorials/AddTwoInts.h b/rosserial_test/Inc/rospy_tutorials/AddTwoInts.h
new file mode 100644 (file)
index 0000000..04dec98
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _ROS_SERVICE_AddTwoInts_h
+#define _ROS_SERVICE_AddTwoInts_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rospy_tutorials
+{
+
+static const char ADDTWOINTS[] = "rospy_tutorials/AddTwoInts";
+
+  class AddTwoIntsRequest : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int64_t _b_type;
+      _b_type b;
+
+    AddTwoIntsRequest():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return ADDTWOINTS; };
+    const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; };
+
+  };
+
+  class AddTwoIntsResponse : public ros::Msg
+  {
+    public:
+      typedef int64_t _sum_type;
+      _sum_type sum;
+
+    AddTwoIntsResponse():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return ADDTWOINTS; };
+    const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; };
+
+  };
+
+  class AddTwoInts {
+    public:
+    typedef AddTwoIntsRequest Request;
+    typedef AddTwoIntsResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rospy_tutorials/BadTwoInts.h b/rosserial_test/Inc/rospy_tutorials/BadTwoInts.h
new file mode 100644 (file)
index 0000000..0218f54
--- /dev/null
@@ -0,0 +1,150 @@
+#ifndef _ROS_SERVICE_BadTwoInts_h
+#define _ROS_SERVICE_BadTwoInts_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rospy_tutorials
+{
+
+static const char BADTWOINTS[] = "rospy_tutorials/BadTwoInts";
+
+  class BadTwoIntsRequest : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int32_t _b_type;
+      _b_type b;
+
+    BadTwoIntsRequest():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return BADTWOINTS; };
+    const char * getMD5(){ return "29bb5c7dea8bf822f53e94b0ee5a3a56"; };
+
+  };
+
+  class BadTwoIntsResponse : public ros::Msg
+  {
+    public:
+      typedef int32_t _sum_type;
+      _sum_type sum;
+
+    BadTwoIntsResponse():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return BADTWOINTS; };
+    const char * getMD5(){ return "0ba699c25c9418c0366f3595c0c8e8ec"; };
+
+  };
+
+  class BadTwoInts {
+    public:
+    typedef BadTwoIntsRequest Request;
+    typedef BadTwoIntsResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rospy_tutorials/Floats.h b/rosserial_test/Inc/rospy_tutorials/Floats.h
new file mode 100644 (file)
index 0000000..37fe6dd
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_rospy_tutorials_Floats_h
+#define _ROS_rospy_tutorials_Floats_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rospy_tutorials
+{
+
+  class Floats : public ros::Msg
+  {
+    public:
+      uint32_t data_length;
+      typedef float _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Floats():
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (float*)realloc(this->data, data_lengthT * sizeof(float));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "rospy_tutorials/Floats"; };
+    const char * getMD5(){ return "420cd38b6b071cd49f2970c3e2cee511"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rospy_tutorials/HeaderString.h b/rosserial_test/Inc/rospy_tutorials/HeaderString.h
new file mode 100644 (file)
index 0000000..052b747
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef _ROS_rospy_tutorials_HeaderString_h
+#define _ROS_rospy_tutorials_HeaderString_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace rospy_tutorials
+{
+
+  class HeaderString : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _data_type;
+      _data_type data;
+
+    HeaderString():
+      header(),
+      data("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_data = strlen(this->data);
+      varToArr(outbuffer + offset, length_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->data, length_data);
+      offset += length_data;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_data;
+      arrToVar(length_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_data-1]=0;
+      this->data = (char *)(inbuffer + offset-1);
+      offset += length_data;
+     return offset;
+    }
+
+    const char * getType(){ return "rospy_tutorials/HeaderString"; };
+    const char * getMD5(){ return "c99a9440709e4d4a9716d55b8270d5e7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosserial_msgs/Log.h b/rosserial_test/Inc/rosserial_msgs/Log.h
new file mode 100644 (file)
index 0000000..a01f494
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _ROS_rosserial_msgs_Log_h
+#define _ROS_rosserial_msgs_Log_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+  class Log : public ros::Msg
+  {
+    public:
+      typedef uint8_t _level_type;
+      _level_type level;
+      typedef const char* _msg_type;
+      _msg_type msg;
+      enum { ROSDEBUG = 0 };
+      enum { INFO = 1 };
+      enum { WARN = 2 };
+      enum { ERROR = 3 };
+      enum { FATAL = 4 };
+
+    Log():
+      level(0),
+      msg("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_msg = strlen(this->msg);
+      varToArr(outbuffer + offset, length_msg);
+      offset += 4;
+      memcpy(outbuffer + offset, this->msg, length_msg);
+      offset += length_msg;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->level =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->level);
+      uint32_t length_msg;
+      arrToVar(length_msg, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_msg; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_msg-1]=0;
+      this->msg = (char *)(inbuffer + offset-1);
+      offset += length_msg;
+     return offset;
+    }
+
+    const char * getType(){ return "rosserial_msgs/Log"; };
+    const char * getMD5(){ return "11abd731c25933261cd6183bd12d6295"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosserial_msgs/RequestMessageInfo.h b/rosserial_test/Inc/rosserial_msgs/RequestMessageInfo.h
new file mode 100644 (file)
index 0000000..3466ddc
--- /dev/null
@@ -0,0 +1,121 @@
+#ifndef _ROS_SERVICE_RequestMessageInfo_h
+#define _ROS_SERVICE_RequestMessageInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+static const char REQUESTMESSAGEINFO[] = "rosserial_msgs/RequestMessageInfo";
+
+  class RequestMessageInfoRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _type_type;
+      _type_type type;
+
+    RequestMessageInfoRequest():
+      type("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTMESSAGEINFO; };
+    const char * getMD5(){ return "dc67331de85cf97091b7d45e5c64ab75"; };
+
+  };
+
+  class RequestMessageInfoResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _md5_type;
+      _md5_type md5;
+      typedef const char* _definition_type;
+      _definition_type definition;
+
+    RequestMessageInfoResponse():
+      md5(""),
+      definition("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_md5 = strlen(this->md5);
+      varToArr(outbuffer + offset, length_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->md5, length_md5);
+      offset += length_md5;
+      uint32_t length_definition = strlen(this->definition);
+      varToArr(outbuffer + offset, length_definition);
+      offset += 4;
+      memcpy(outbuffer + offset, this->definition, length_definition);
+      offset += length_definition;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_md5;
+      arrToVar(length_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_md5-1]=0;
+      this->md5 = (char *)(inbuffer + offset-1);
+      offset += length_md5;
+      uint32_t length_definition;
+      arrToVar(length_definition, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_definition; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_definition-1]=0;
+      this->definition = (char *)(inbuffer + offset-1);
+      offset += length_definition;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTMESSAGEINFO; };
+    const char * getMD5(){ return "fe452186a069bed40f09b8628fe5eac8"; };
+
+  };
+
+  class RequestMessageInfo {
+    public:
+    typedef RequestMessageInfoRequest Request;
+    typedef RequestMessageInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosserial_msgs/RequestParam.h b/rosserial_test/Inc/rosserial_msgs/RequestParam.h
new file mode 100644 (file)
index 0000000..007653c
--- /dev/null
@@ -0,0 +1,212 @@
+#ifndef _ROS_SERVICE_RequestParam_h
+#define _ROS_SERVICE_RequestParam_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+static const char REQUESTPARAM[] = "rosserial_msgs/RequestParam";
+
+  class RequestParamRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    RequestParamRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTPARAM; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class RequestParamResponse : public ros::Msg
+  {
+    public:
+      uint32_t ints_length;
+      typedef int32_t _ints_type;
+      _ints_type st_ints;
+      _ints_type * ints;
+      uint32_t floats_length;
+      typedef float _floats_type;
+      _floats_type st_floats;
+      _floats_type * floats;
+      uint32_t strings_length;
+      typedef char* _strings_type;
+      _strings_type st_strings;
+      _strings_type * strings;
+
+    RequestParamResponse():
+      ints_length(0), ints(NULL),
+      floats_length(0), floats(NULL),
+      strings_length(0), strings(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ints_length);
+      for( uint32_t i = 0; i < ints_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_intsi;
+      u_intsi.real = this->ints[i];
+      *(outbuffer + offset + 0) = (u_intsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_intsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_intsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_intsi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ints[i]);
+      }
+      *(outbuffer + offset + 0) = (this->floats_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->floats_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->floats_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->floats_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->floats_length);
+      for( uint32_t i = 0; i < floats_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_floatsi;
+      u_floatsi.real = this->floats[i];
+      *(outbuffer + offset + 0) = (u_floatsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_floatsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_floatsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_floatsi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->floats[i]);
+      }
+      *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->strings_length);
+      for( uint32_t i = 0; i < strings_length; i++){
+      uint32_t length_stringsi = strlen(this->strings[i]);
+      varToArr(outbuffer + offset, length_stringsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->strings[i], length_stringsi);
+      offset += length_stringsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ints_length);
+      if(ints_lengthT > ints_length)
+        this->ints = (int32_t*)realloc(this->ints, ints_lengthT * sizeof(int32_t));
+      ints_length = ints_lengthT;
+      for( uint32_t i = 0; i < ints_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_ints;
+      u_st_ints.base = 0;
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_ints = u_st_ints.real;
+      offset += sizeof(this->st_ints);
+        memcpy( &(this->ints[i]), &(this->st_ints), sizeof(int32_t));
+      }
+      uint32_t floats_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->floats_length);
+      if(floats_lengthT > floats_length)
+        this->floats = (float*)realloc(this->floats, floats_lengthT * sizeof(float));
+      floats_length = floats_lengthT;
+      for( uint32_t i = 0; i < floats_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_floats;
+      u_st_floats.base = 0;
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_floats = u_st_floats.real;
+      offset += sizeof(this->st_floats);
+        memcpy( &(this->floats[i]), &(this->st_floats), sizeof(float));
+      }
+      uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->strings_length);
+      if(strings_lengthT > strings_length)
+        this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*));
+      strings_length = strings_lengthT;
+      for( uint32_t i = 0; i < strings_length; i++){
+      uint32_t length_st_strings;
+      arrToVar(length_st_strings, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_strings; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_strings-1]=0;
+      this->st_strings = (char *)(inbuffer + offset-1);
+      offset += length_st_strings;
+        memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTPARAM; };
+    const char * getMD5(){ return "9f0e98bda65981986ddf53afa7a40e49"; };
+
+  };
+
+  class RequestParam {
+    public:
+    typedef RequestParamRequest Request;
+    typedef RequestParamResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosserial_msgs/RequestServiceInfo.h b/rosserial_test/Inc/rosserial_msgs/RequestServiceInfo.h
new file mode 100644 (file)
index 0000000..b18cf9d
--- /dev/null
@@ -0,0 +1,138 @@
+#ifndef _ROS_SERVICE_RequestServiceInfo_h
+#define _ROS_SERVICE_RequestServiceInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+static const char REQUESTSERVICEINFO[] = "rosserial_msgs/RequestServiceInfo";
+
+  class RequestServiceInfoRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _service_type;
+      _service_type service;
+
+    RequestServiceInfoRequest():
+      service("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_service = strlen(this->service);
+      varToArr(outbuffer + offset, length_service);
+      offset += 4;
+      memcpy(outbuffer + offset, this->service, length_service);
+      offset += length_service;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_service;
+      arrToVar(length_service, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_service; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_service-1]=0;
+      this->service = (char *)(inbuffer + offset-1);
+      offset += length_service;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTSERVICEINFO; };
+    const char * getMD5(){ return "1cbcfa13b08f6d36710b9af8741e6112"; };
+
+  };
+
+  class RequestServiceInfoResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _service_md5_type;
+      _service_md5_type service_md5;
+      typedef const char* _request_md5_type;
+      _request_md5_type request_md5;
+      typedef const char* _response_md5_type;
+      _response_md5_type response_md5;
+
+    RequestServiceInfoResponse():
+      service_md5(""),
+      request_md5(""),
+      response_md5("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_service_md5 = strlen(this->service_md5);
+      varToArr(outbuffer + offset, length_service_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->service_md5, length_service_md5);
+      offset += length_service_md5;
+      uint32_t length_request_md5 = strlen(this->request_md5);
+      varToArr(outbuffer + offset, length_request_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->request_md5, length_request_md5);
+      offset += length_request_md5;
+      uint32_t length_response_md5 = strlen(this->response_md5);
+      varToArr(outbuffer + offset, length_response_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->response_md5, length_response_md5);
+      offset += length_response_md5;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_service_md5;
+      arrToVar(length_service_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_service_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_service_md5-1]=0;
+      this->service_md5 = (char *)(inbuffer + offset-1);
+      offset += length_service_md5;
+      uint32_t length_request_md5;
+      arrToVar(length_request_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_request_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_request_md5-1]=0;
+      this->request_md5 = (char *)(inbuffer + offset-1);
+      offset += length_request_md5;
+      uint32_t length_response_md5;
+      arrToVar(length_response_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_response_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_response_md5-1]=0;
+      this->response_md5 = (char *)(inbuffer + offset-1);
+      offset += length_response_md5;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTSERVICEINFO; };
+    const char * getMD5(){ return "c3d6dd25b909596479fbbc6559fa6874"; };
+
+  };
+
+  class RequestServiceInfo {
+    public:
+    typedef RequestServiceInfoRequest Request;
+    typedef RequestServiceInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/rosserial_msgs/TopicInfo.h b/rosserial_test/Inc/rosserial_msgs/TopicInfo.h
new file mode 100644 (file)
index 0000000..7934245
--- /dev/null
@@ -0,0 +1,130 @@
+#ifndef _ROS_rosserial_msgs_TopicInfo_h
+#define _ROS_rosserial_msgs_TopicInfo_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+  class TopicInfo : public ros::Msg
+  {
+    public:
+      typedef uint16_t _topic_id_type;
+      _topic_id_type topic_id;
+      typedef const char* _topic_name_type;
+      _topic_name_type topic_name;
+      typedef const char* _message_type_type;
+      _message_type_type message_type;
+      typedef const char* _md5sum_type;
+      _md5sum_type md5sum;
+      typedef int32_t _buffer_size_type;
+      _buffer_size_type buffer_size;
+      enum { ID_PUBLISHER = 0 };
+      enum { ID_SUBSCRIBER = 1 };
+      enum { ID_SERVICE_SERVER = 2 };
+      enum { ID_SERVICE_CLIENT = 4 };
+      enum { ID_PARAMETER_REQUEST = 6 };
+      enum { ID_LOG = 7 };
+      enum { ID_TIME = 10 };
+      enum { ID_TX_STOP = 11 };
+
+    TopicInfo():
+      topic_id(0),
+      topic_name(""),
+      message_type(""),
+      md5sum(""),
+      buffer_size(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->topic_id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topic_id >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->topic_id);
+      uint32_t length_topic_name = strlen(this->topic_name);
+      varToArr(outbuffer + offset, length_topic_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic_name, length_topic_name);
+      offset += length_topic_name;
+      uint32_t length_message_type = strlen(this->message_type);
+      varToArr(outbuffer + offset, length_message_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message_type, length_message_type);
+      offset += length_message_type;
+      uint32_t length_md5sum = strlen(this->md5sum);
+      varToArr(outbuffer + offset, length_md5sum);
+      offset += 4;
+      memcpy(outbuffer + offset, this->md5sum, length_md5sum);
+      offset += length_md5sum;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buffer_size;
+      u_buffer_size.real = this->buffer_size;
+      *(outbuffer + offset + 0) = (u_buffer_size.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_buffer_size.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_buffer_size.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_buffer_size.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->buffer_size);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->topic_id =  ((uint16_t) (*(inbuffer + offset)));
+      this->topic_id |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->topic_id);
+      uint32_t length_topic_name;
+      arrToVar(length_topic_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic_name-1]=0;
+      this->topic_name = (char *)(inbuffer + offset-1);
+      offset += length_topic_name;
+      uint32_t length_message_type;
+      arrToVar(length_message_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message_type-1]=0;
+      this->message_type = (char *)(inbuffer + offset-1);
+      offset += length_message_type;
+      uint32_t length_md5sum;
+      arrToVar(length_md5sum, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_md5sum; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_md5sum-1]=0;
+      this->md5sum = (char *)(inbuffer + offset-1);
+      offset += length_md5sum;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buffer_size;
+      u_buffer_size.base = 0;
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->buffer_size = u_buffer_size.real;
+      offset += sizeof(this->buffer_size);
+     return offset;
+    }
+
+    const char * getType(){ return "rosserial_msgs/TopicInfo"; };
+    const char * getMD5(){ return "0ad51f88fc44892f8c10684077646005"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/BatteryState.h b/rosserial_test/Inc/sensor_msgs/BatteryState.h
new file mode 100644 (file)
index 0000000..3aa77c5
--- /dev/null
@@ -0,0 +1,326 @@
+#ifndef _ROS_sensor_msgs_BatteryState_h
+#define _ROS_sensor_msgs_BatteryState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class BatteryState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _voltage_type;
+      _voltage_type voltage;
+      typedef float _current_type;
+      _current_type current;
+      typedef float _charge_type;
+      _charge_type charge;
+      typedef float _capacity_type;
+      _capacity_type capacity;
+      typedef float _design_capacity_type;
+      _design_capacity_type design_capacity;
+      typedef float _percentage_type;
+      _percentage_type percentage;
+      typedef uint8_t _power_supply_status_type;
+      _power_supply_status_type power_supply_status;
+      typedef uint8_t _power_supply_health_type;
+      _power_supply_health_type power_supply_health;
+      typedef uint8_t _power_supply_technology_type;
+      _power_supply_technology_type power_supply_technology;
+      typedef bool _present_type;
+      _present_type present;
+      uint32_t cell_voltage_length;
+      typedef float _cell_voltage_type;
+      _cell_voltage_type st_cell_voltage;
+      _cell_voltage_type * cell_voltage;
+      typedef const char* _location_type;
+      _location_type location;
+      typedef const char* _serial_number_type;
+      _serial_number_type serial_number;
+      enum { POWER_SUPPLY_STATUS_UNKNOWN =  0 };
+      enum { POWER_SUPPLY_STATUS_CHARGING =  1 };
+      enum { POWER_SUPPLY_STATUS_DISCHARGING =  2 };
+      enum { POWER_SUPPLY_STATUS_NOT_CHARGING =  3 };
+      enum { POWER_SUPPLY_STATUS_FULL =  4 };
+      enum { POWER_SUPPLY_HEALTH_UNKNOWN =  0 };
+      enum { POWER_SUPPLY_HEALTH_GOOD =  1 };
+      enum { POWER_SUPPLY_HEALTH_OVERHEAT =  2 };
+      enum { POWER_SUPPLY_HEALTH_DEAD =  3 };
+      enum { POWER_SUPPLY_HEALTH_OVERVOLTAGE =  4 };
+      enum { POWER_SUPPLY_HEALTH_UNSPEC_FAILURE =  5 };
+      enum { POWER_SUPPLY_HEALTH_COLD =  6 };
+      enum { POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE =  7 };
+      enum { POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE =  8 };
+      enum { POWER_SUPPLY_TECHNOLOGY_UNKNOWN =  0 };
+      enum { POWER_SUPPLY_TECHNOLOGY_NIMH =  1 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LION =  2 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LIPO =  3 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LIFE =  4 };
+      enum { POWER_SUPPLY_TECHNOLOGY_NICD =  5 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LIMN =  6 };
+
+    BatteryState():
+      header(),
+      voltage(0),
+      current(0),
+      charge(0),
+      capacity(0),
+      design_capacity(0),
+      percentage(0),
+      power_supply_status(0),
+      power_supply_health(0),
+      power_supply_technology(0),
+      present(0),
+      cell_voltage_length(0), cell_voltage(NULL),
+      location(""),
+      serial_number("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_voltage;
+      u_voltage.real = this->voltage;
+      *(outbuffer + offset + 0) = (u_voltage.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_voltage.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_voltage.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_voltage.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->voltage);
+      union {
+        float real;
+        uint32_t base;
+      } u_current;
+      u_current.real = this->current;
+      *(outbuffer + offset + 0) = (u_current.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_current.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_current.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_current.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->current);
+      union {
+        float real;
+        uint32_t base;
+      } u_charge;
+      u_charge.real = this->charge;
+      *(outbuffer + offset + 0) = (u_charge.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_charge.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_charge.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_charge.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->charge);
+      union {
+        float real;
+        uint32_t base;
+      } u_capacity;
+      u_capacity.real = this->capacity;
+      *(outbuffer + offset + 0) = (u_capacity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_capacity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_capacity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_capacity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_design_capacity;
+      u_design_capacity.real = this->design_capacity;
+      *(outbuffer + offset + 0) = (u_design_capacity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_design_capacity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_design_capacity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_design_capacity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->design_capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_percentage;
+      u_percentage.real = this->percentage;
+      *(outbuffer + offset + 0) = (u_percentage.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_percentage.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_percentage.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_percentage.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->percentage);
+      *(outbuffer + offset + 0) = (this->power_supply_status >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->power_supply_status);
+      *(outbuffer + offset + 0) = (this->power_supply_health >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->power_supply_health);
+      *(outbuffer + offset + 0) = (this->power_supply_technology >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->power_supply_technology);
+      union {
+        bool real;
+        uint8_t base;
+      } u_present;
+      u_present.real = this->present;
+      *(outbuffer + offset + 0) = (u_present.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->present);
+      *(outbuffer + offset + 0) = (this->cell_voltage_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->cell_voltage_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->cell_voltage_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->cell_voltage_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_voltage_length);
+      for( uint32_t i = 0; i < cell_voltage_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_voltagei;
+      u_cell_voltagei.real = this->cell_voltage[i];
+      *(outbuffer + offset + 0) = (u_cell_voltagei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cell_voltagei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cell_voltagei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cell_voltagei.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_voltage[i]);
+      }
+      uint32_t length_location = strlen(this->location);
+      varToArr(outbuffer + offset, length_location);
+      offset += 4;
+      memcpy(outbuffer + offset, this->location, length_location);
+      offset += length_location;
+      uint32_t length_serial_number = strlen(this->serial_number);
+      varToArr(outbuffer + offset, length_serial_number);
+      offset += 4;
+      memcpy(outbuffer + offset, this->serial_number, length_serial_number);
+      offset += length_serial_number;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_voltage;
+      u_voltage.base = 0;
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->voltage = u_voltage.real;
+      offset += sizeof(this->voltage);
+      union {
+        float real;
+        uint32_t base;
+      } u_current;
+      u_current.base = 0;
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->current = u_current.real;
+      offset += sizeof(this->current);
+      union {
+        float real;
+        uint32_t base;
+      } u_charge;
+      u_charge.base = 0;
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->charge = u_charge.real;
+      offset += sizeof(this->charge);
+      union {
+        float real;
+        uint32_t base;
+      } u_capacity;
+      u_capacity.base = 0;
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->capacity = u_capacity.real;
+      offset += sizeof(this->capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_design_capacity;
+      u_design_capacity.base = 0;
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->design_capacity = u_design_capacity.real;
+      offset += sizeof(this->design_capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_percentage;
+      u_percentage.base = 0;
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->percentage = u_percentage.real;
+      offset += sizeof(this->percentage);
+      this->power_supply_status =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->power_supply_status);
+      this->power_supply_health =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->power_supply_health);
+      this->power_supply_technology =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->power_supply_technology);
+      union {
+        bool real;
+        uint8_t base;
+      } u_present;
+      u_present.base = 0;
+      u_present.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->present = u_present.real;
+      offset += sizeof(this->present);
+      uint32_t cell_voltage_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->cell_voltage_length);
+      if(cell_voltage_lengthT > cell_voltage_length)
+        this->cell_voltage = (float*)realloc(this->cell_voltage, cell_voltage_lengthT * sizeof(float));
+      cell_voltage_length = cell_voltage_lengthT;
+      for( uint32_t i = 0; i < cell_voltage_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_cell_voltage;
+      u_st_cell_voltage.base = 0;
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_cell_voltage = u_st_cell_voltage.real;
+      offset += sizeof(this->st_cell_voltage);
+        memcpy( &(this->cell_voltage[i]), &(this->st_cell_voltage), sizeof(float));
+      }
+      uint32_t length_location;
+      arrToVar(length_location, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_location; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_location-1]=0;
+      this->location = (char *)(inbuffer + offset-1);
+      offset += length_location;
+      uint32_t length_serial_number;
+      arrToVar(length_serial_number, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_serial_number; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_serial_number-1]=0;
+      this->serial_number = (char *)(inbuffer + offset-1);
+      offset += length_serial_number;
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/BatteryState"; };
+    const char * getMD5(){ return "476f837fa6771f6e16e3bf4ef96f8770"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/CameraInfo.h b/rosserial_test/Inc/sensor_msgs/CameraInfo.h
new file mode 100644 (file)
index 0000000..eff9a32
--- /dev/null
@@ -0,0 +1,276 @@
+#ifndef _ROS_sensor_msgs_CameraInfo_h
+#define _ROS_sensor_msgs_CameraInfo_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/RegionOfInterest.h"
+
+namespace sensor_msgs
+{
+
+  class CameraInfo : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef const char* _distortion_model_type;
+      _distortion_model_type distortion_model;
+      uint32_t D_length;
+      typedef double _D_type;
+      _D_type st_D;
+      _D_type * D;
+      double K[9];
+      double R[9];
+      double P[12];
+      typedef uint32_t _binning_x_type;
+      _binning_x_type binning_x;
+      typedef uint32_t _binning_y_type;
+      _binning_y_type binning_y;
+      typedef sensor_msgs::RegionOfInterest _roi_type;
+      _roi_type roi;
+
+    CameraInfo():
+      header(),
+      height(0),
+      width(0),
+      distortion_model(""),
+      D_length(0), D(NULL),
+      K(),
+      R(),
+      P(),
+      binning_x(0),
+      binning_y(0),
+      roi()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      uint32_t length_distortion_model = strlen(this->distortion_model);
+      varToArr(outbuffer + offset, length_distortion_model);
+      offset += 4;
+      memcpy(outbuffer + offset, this->distortion_model, length_distortion_model);
+      offset += length_distortion_model;
+      *(outbuffer + offset + 0) = (this->D_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->D_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->D_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->D_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->D_length);
+      for( uint32_t i = 0; i < D_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_Di;
+      u_Di.real = this->D[i];
+      *(outbuffer + offset + 0) = (u_Di.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_Di.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_Di.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_Di.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_Di.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_Di.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_Di.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_Di.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->D[i]);
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_Ki;
+      u_Ki.real = this->K[i];
+      *(outbuffer + offset + 0) = (u_Ki.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_Ki.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_Ki.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_Ki.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_Ki.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_Ki.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_Ki.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_Ki.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->K[i]);
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_Ri;
+      u_Ri.real = this->R[i];
+      *(outbuffer + offset + 0) = (u_Ri.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_Ri.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_Ri.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_Ri.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_Ri.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_Ri.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_Ri.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_Ri.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->R[i]);
+      }
+      for( uint32_t i = 0; i < 12; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_Pi;
+      u_Pi.real = this->P[i];
+      *(outbuffer + offset + 0) = (u_Pi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_Pi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_Pi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_Pi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_Pi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_Pi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_Pi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_Pi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->P[i]);
+      }
+      *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_x);
+      *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_y);
+      offset += this->roi.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      uint32_t length_distortion_model;
+      arrToVar(length_distortion_model, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_distortion_model; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_distortion_model-1]=0;
+      this->distortion_model = (char *)(inbuffer + offset-1);
+      offset += length_distortion_model;
+      uint32_t D_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      D_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      D_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      D_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->D_length);
+      if(D_lengthT > D_length)
+        this->D = (double*)realloc(this->D, D_lengthT * sizeof(double));
+      D_length = D_lengthT;
+      for( uint32_t i = 0; i < D_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_D;
+      u_st_D.base = 0;
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_D = u_st_D.real;
+      offset += sizeof(this->st_D);
+        memcpy( &(this->D[i]), &(this->st_D), sizeof(double));
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_Ki;
+      u_Ki.base = 0;
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->K[i] = u_Ki.real;
+      offset += sizeof(this->K[i]);
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_Ri;
+      u_Ri.base = 0;
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->R[i] = u_Ri.real;
+      offset += sizeof(this->R[i]);
+      }
+      for( uint32_t i = 0; i < 12; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_Pi;
+      u_Pi.base = 0;
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->P[i] = u_Pi.real;
+      offset += sizeof(this->P[i]);
+      }
+      this->binning_x =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_x);
+      this->binning_y =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_y);
+      offset += this->roi.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/CameraInfo"; };
+    const char * getMD5(){ return "c9a58c1b0b154e0e6da7578cb991d214"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/ChannelFloat32.h b/rosserial_test/Inc/sensor_msgs/ChannelFloat32.h
new file mode 100644 (file)
index 0000000..e4f83f9
--- /dev/null
@@ -0,0 +1,99 @@
+#ifndef _ROS_sensor_msgs_ChannelFloat32_h
+#define _ROS_sensor_msgs_ChannelFloat32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class ChannelFloat32 : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      uint32_t values_length;
+      typedef float _values_type;
+      _values_type st_values;
+      _values_type * values;
+
+    ChannelFloat32():
+      name(""),
+      values_length(0), values(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values_length);
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_valuesi;
+      u_valuesi.real = this->values[i];
+      *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->values_length);
+      if(values_lengthT > values_length)
+        this->values = (float*)realloc(this->values, values_lengthT * sizeof(float));
+      values_length = values_lengthT;
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_values;
+      u_st_values.base = 0;
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_values = u_st_values.real;
+      offset += sizeof(this->st_values);
+        memcpy( &(this->values[i]), &(this->st_values), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/ChannelFloat32"; };
+    const char * getMD5(){ return "3d40139cdd33dfedcb71ffeeeb42ae7f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/CompressedImage.h b/rosserial_test/Inc/sensor_msgs/CompressedImage.h
new file mode 100644 (file)
index 0000000..ad8ca41
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_sensor_msgs_CompressedImage_h
+#define _ROS_sensor_msgs_CompressedImage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class CompressedImage : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _format_type;
+      _format_type format;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    CompressedImage():
+      header(),
+      format(""),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_format = strlen(this->format);
+      varToArr(outbuffer + offset, length_format);
+      offset += 4;
+      memcpy(outbuffer + offset, this->format, length_format);
+      offset += length_format;
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_format;
+      arrToVar(length_format, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_format; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_format-1]=0;
+      this->format = (char *)(inbuffer + offset-1);
+      offset += length_format;
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/CompressedImage"; };
+    const char * getMD5(){ return "8f7a12909da2c9d3332d540a0977563f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/FluidPressure.h b/rosserial_test/Inc/sensor_msgs/FluidPressure.h
new file mode 100644 (file)
index 0000000..57fc840
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_sensor_msgs_FluidPressure_h
+#define _ROS_sensor_msgs_FluidPressure_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class FluidPressure : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef double _fluid_pressure_type;
+      _fluid_pressure_type fluid_pressure;
+      typedef double _variance_type;
+      _variance_type variance;
+
+    FluidPressure():
+      header(),
+      fluid_pressure(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_fluid_pressure;
+      u_fluid_pressure.real = this->fluid_pressure;
+      *(outbuffer + offset + 0) = (u_fluid_pressure.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_fluid_pressure.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_fluid_pressure.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_fluid_pressure.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_fluid_pressure.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_fluid_pressure.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_fluid_pressure.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_fluid_pressure.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->fluid_pressure);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.real = this->variance;
+      *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_fluid_pressure;
+      u_fluid_pressure.base = 0;
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->fluid_pressure = u_fluid_pressure.real;
+      offset += sizeof(this->fluid_pressure);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.base = 0;
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->variance = u_variance.real;
+      offset += sizeof(this->variance);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/FluidPressure"; };
+    const char * getMD5(){ return "804dc5cea1c5306d6a2eb80b9833befe"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/Illuminance.h b/rosserial_test/Inc/sensor_msgs/Illuminance.h
new file mode 100644 (file)
index 0000000..1479b0b
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_sensor_msgs_Illuminance_h
+#define _ROS_sensor_msgs_Illuminance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Illuminance : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef double _illuminance_type;
+      _illuminance_type illuminance;
+      typedef double _variance_type;
+      _variance_type variance;
+
+    Illuminance():
+      header(),
+      illuminance(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_illuminance;
+      u_illuminance.real = this->illuminance;
+      *(outbuffer + offset + 0) = (u_illuminance.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_illuminance.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_illuminance.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_illuminance.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_illuminance.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_illuminance.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_illuminance.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_illuminance.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->illuminance);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.real = this->variance;
+      *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_illuminance;
+      u_illuminance.base = 0;
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->illuminance = u_illuminance.real;
+      offset += sizeof(this->illuminance);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.base = 0;
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->variance = u_variance.real;
+      offset += sizeof(this->variance);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Illuminance"; };
+    const char * getMD5(){ return "8cf5febb0952fca9d650c3d11a81a188"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/Image.h b/rosserial_test/Inc/sensor_msgs/Image.h
new file mode 100644 (file)
index 0000000..81675d5
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_sensor_msgs_Image_h
+#define _ROS_sensor_msgs_Image_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Image : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef const char* _encoding_type;
+      _encoding_type encoding;
+      typedef uint8_t _is_bigendian_type;
+      _is_bigendian_type is_bigendian;
+      typedef uint32_t _step_type;
+      _step_type step;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Image():
+      header(),
+      height(0),
+      width(0),
+      encoding(""),
+      is_bigendian(0),
+      step(0),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      uint32_t length_encoding = strlen(this->encoding);
+      varToArr(outbuffer + offset, length_encoding);
+      offset += 4;
+      memcpy(outbuffer + offset, this->encoding, length_encoding);
+      offset += length_encoding;
+      *(outbuffer + offset + 0) = (this->is_bigendian >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_bigendian);
+      *(outbuffer + offset + 0) = (this->step >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->step >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->step >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->step >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->step);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      uint32_t length_encoding;
+      arrToVar(length_encoding, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_encoding; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_encoding-1]=0;
+      this->encoding = (char *)(inbuffer + offset-1);
+      offset += length_encoding;
+      this->is_bigendian =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->is_bigendian);
+      this->step =  ((uint32_t) (*(inbuffer + offset)));
+      this->step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->step);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Image"; };
+    const char * getMD5(){ return "060021388200f6f0f447d0fcd9c64743"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/Imu.h b/rosserial_test/Inc/sensor_msgs/Imu.h
new file mode 100644 (file)
index 0000000..a04a2bd
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _ROS_sensor_msgs_Imu_h
+#define _ROS_sensor_msgs_Imu_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Quaternion.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace sensor_msgs
+{
+
+  class Imu : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Quaternion _orientation_type;
+      _orientation_type orientation;
+      double orientation_covariance[9];
+      typedef geometry_msgs::Vector3 _angular_velocity_type;
+      _angular_velocity_type angular_velocity;
+      double angular_velocity_covariance[9];
+      typedef geometry_msgs::Vector3 _linear_acceleration_type;
+      _linear_acceleration_type linear_acceleration;
+      double linear_acceleration_covariance[9];
+
+    Imu():
+      header(),
+      orientation(),
+      orientation_covariance(),
+      angular_velocity(),
+      angular_velocity_covariance(),
+      linear_acceleration(),
+      linear_acceleration_covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->orientation.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_orientation_covariancei;
+      u_orientation_covariancei.real = this->orientation_covariance[i];
+      *(outbuffer + offset + 0) = (u_orientation_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_orientation_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_orientation_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_orientation_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_orientation_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_orientation_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_orientation_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_orientation_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->orientation_covariance[i]);
+      }
+      offset += this->angular_velocity.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_angular_velocity_covariancei;
+      u_angular_velocity_covariancei.real = this->angular_velocity_covariance[i];
+      *(outbuffer + offset + 0) = (u_angular_velocity_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angular_velocity_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angular_velocity_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angular_velocity_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_angular_velocity_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_angular_velocity_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_angular_velocity_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_angular_velocity_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->angular_velocity_covariance[i]);
+      }
+      offset += this->linear_acceleration.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_linear_acceleration_covariancei;
+      u_linear_acceleration_covariancei.real = this->linear_acceleration_covariance[i];
+      *(outbuffer + offset + 0) = (u_linear_acceleration_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_linear_acceleration_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_linear_acceleration_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_linear_acceleration_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_linear_acceleration_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_linear_acceleration_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_linear_acceleration_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_linear_acceleration_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->linear_acceleration_covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->orientation.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_orientation_covariancei;
+      u_orientation_covariancei.base = 0;
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->orientation_covariance[i] = u_orientation_covariancei.real;
+      offset += sizeof(this->orientation_covariance[i]);
+      }
+      offset += this->angular_velocity.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_angular_velocity_covariancei;
+      u_angular_velocity_covariancei.base = 0;
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->angular_velocity_covariance[i] = u_angular_velocity_covariancei.real;
+      offset += sizeof(this->angular_velocity_covariance[i]);
+      }
+      offset += this->linear_acceleration.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_linear_acceleration_covariancei;
+      u_linear_acceleration_covariancei.base = 0;
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->linear_acceleration_covariance[i] = u_linear_acceleration_covariancei.real;
+      offset += sizeof(this->linear_acceleration_covariance[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Imu"; };
+    const char * getMD5(){ return "6a62c6daae103f4ff57a132d6f95cec2"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/JointState.h b/rosserial_test/Inc/sensor_msgs/JointState.h
new file mode 100644 (file)
index 0000000..464acb3
--- /dev/null
@@ -0,0 +1,237 @@
+#ifndef _ROS_sensor_msgs_JointState_h
+#define _ROS_sensor_msgs_JointState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class JointState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t position_length;
+      typedef double _position_type;
+      _position_type st_position;
+      _position_type * position;
+      uint32_t velocity_length;
+      typedef double _velocity_type;
+      _velocity_type st_velocity;
+      _velocity_type * velocity;
+      uint32_t effort_length;
+      typedef double _effort_type;
+      _effort_type st_effort;
+      _effort_type * effort;
+
+    JointState():
+      header(),
+      name_length(0), name(NULL),
+      position_length(0), position(NULL),
+      velocity_length(0), velocity(NULL),
+      effort_length(0), effort(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->position_length);
+      for( uint32_t i = 0; i < position_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_positioni;
+      u_positioni.real = this->position[i];
+      *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocity_length);
+      for( uint32_t i = 0; i < velocity_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_velocityi;
+      u_velocityi.real = this->velocity[i];
+      *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->velocity[i]);
+      }
+      *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->effort_length);
+      for( uint32_t i = 0; i < effort_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_efforti;
+      u_efforti.real = this->effort[i];
+      *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->effort[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->position_length);
+      if(position_lengthT > position_length)
+        this->position = (double*)realloc(this->position, position_lengthT * sizeof(double));
+      position_length = position_lengthT;
+      for( uint32_t i = 0; i < position_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_position;
+      u_st_position.base = 0;
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_position = u_st_position.real;
+      offset += sizeof(this->st_position);
+        memcpy( &(this->position[i]), &(this->st_position), sizeof(double));
+      }
+      uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocity_length);
+      if(velocity_lengthT > velocity_length)
+        this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double));
+      velocity_length = velocity_lengthT;
+      for( uint32_t i = 0; i < velocity_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_velocity;
+      u_st_velocity.base = 0;
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_velocity = u_st_velocity.real;
+      offset += sizeof(this->st_velocity);
+        memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double));
+      }
+      uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->effort_length);
+      if(effort_lengthT > effort_length)
+        this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double));
+      effort_length = effort_lengthT;
+      for( uint32_t i = 0; i < effort_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_effort;
+      u_st_effort.base = 0;
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_effort = u_st_effort.real;
+      offset += sizeof(this->st_effort);
+        memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/JointState"; };
+    const char * getMD5(){ return "3066dcd76a6cfaef579bd0f34173e9fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/Joy.h b/rosserial_test/Inc/sensor_msgs/Joy.h
new file mode 100644 (file)
index 0000000..9162813
--- /dev/null
@@ -0,0 +1,132 @@
+#ifndef _ROS_sensor_msgs_Joy_h
+#define _ROS_sensor_msgs_Joy_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Joy : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t axes_length;
+      typedef float _axes_type;
+      _axes_type st_axes;
+      _axes_type * axes;
+      uint32_t buttons_length;
+      typedef int32_t _buttons_type;
+      _buttons_type st_buttons;
+      _buttons_type * buttons;
+
+    Joy():
+      header(),
+      axes_length(0), axes(NULL),
+      buttons_length(0), buttons(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->axes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->axes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->axes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->axes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->axes_length);
+      for( uint32_t i = 0; i < axes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_axesi;
+      u_axesi.real = this->axes[i];
+      *(outbuffer + offset + 0) = (u_axesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_axesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_axesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_axesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->axes[i]);
+      }
+      *(outbuffer + offset + 0) = (this->buttons_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->buttons_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->buttons_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->buttons_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->buttons_length);
+      for( uint32_t i = 0; i < buttons_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buttonsi;
+      u_buttonsi.real = this->buttons[i];
+      *(outbuffer + offset + 0) = (u_buttonsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_buttonsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_buttonsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_buttonsi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->buttons[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t axes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->axes_length);
+      if(axes_lengthT > axes_length)
+        this->axes = (float*)realloc(this->axes, axes_lengthT * sizeof(float));
+      axes_length = axes_lengthT;
+      for( uint32_t i = 0; i < axes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_axes;
+      u_st_axes.base = 0;
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_axes = u_st_axes.real;
+      offset += sizeof(this->st_axes);
+        memcpy( &(this->axes[i]), &(this->st_axes), sizeof(float));
+      }
+      uint32_t buttons_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->buttons_length);
+      if(buttons_lengthT > buttons_length)
+        this->buttons = (int32_t*)realloc(this->buttons, buttons_lengthT * sizeof(int32_t));
+      buttons_length = buttons_lengthT;
+      for( uint32_t i = 0; i < buttons_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_buttons;
+      u_st_buttons.base = 0;
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_buttons = u_st_buttons.real;
+      offset += sizeof(this->st_buttons);
+        memcpy( &(this->buttons[i]), &(this->st_buttons), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Joy"; };
+    const char * getMD5(){ return "5a9ea5f83505693b71e785041e67a8bb"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/JoyFeedback.h b/rosserial_test/Inc/sensor_msgs/JoyFeedback.h
new file mode 100644 (file)
index 0000000..bfbbb08
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_sensor_msgs_JoyFeedback_h
+#define _ROS_sensor_msgs_JoyFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class JoyFeedback : public ros::Msg
+  {
+    public:
+      typedef uint8_t _type_type;
+      _type_type type;
+      typedef uint8_t _id_type;
+      _id_type id;
+      typedef float _intensity_type;
+      _intensity_type intensity;
+      enum { TYPE_LED =  0 };
+      enum { TYPE_RUMBLE =  1 };
+      enum { TYPE_BUZZER =  2 };
+
+    JoyFeedback():
+      type(0),
+      id(0),
+      intensity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        float real;
+        uint32_t base;
+      } u_intensity;
+      u_intensity.real = this->intensity;
+      *(outbuffer + offset + 0) = (u_intensity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_intensity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_intensity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_intensity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      this->id =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->id);
+      union {
+        float real;
+        uint32_t base;
+      } u_intensity;
+      u_intensity.base = 0;
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->intensity = u_intensity.real;
+      offset += sizeof(this->intensity);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/JoyFeedback"; };
+    const char * getMD5(){ return "f4dcd73460360d98f36e55ee7f2e46f1"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/JoyFeedbackArray.h b/rosserial_test/Inc/sensor_msgs/JoyFeedbackArray.h
new file mode 100644 (file)
index 0000000..a97bfcf
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_sensor_msgs_JoyFeedbackArray_h
+#define _ROS_sensor_msgs_JoyFeedbackArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/JoyFeedback.h"
+
+namespace sensor_msgs
+{
+
+  class JoyFeedbackArray : public ros::Msg
+  {
+    public:
+      uint32_t array_length;
+      typedef sensor_msgs::JoyFeedback _array_type;
+      _array_type st_array;
+      _array_type * array;
+
+    JoyFeedbackArray():
+      array_length(0), array(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->array_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->array_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->array_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->array_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->array_length);
+      for( uint32_t i = 0; i < array_length; i++){
+      offset += this->array[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t array_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      array_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      array_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      array_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->array_length);
+      if(array_lengthT > array_length)
+        this->array = (sensor_msgs::JoyFeedback*)realloc(this->array, array_lengthT * sizeof(sensor_msgs::JoyFeedback));
+      array_length = array_lengthT;
+      for( uint32_t i = 0; i < array_length; i++){
+      offset += this->st_array.deserialize(inbuffer + offset);
+        memcpy( &(this->array[i]), &(this->st_array), sizeof(sensor_msgs::JoyFeedback));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/JoyFeedbackArray"; };
+    const char * getMD5(){ return "cde5730a895b1fc4dee6f91b754b213d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/LaserEcho.h b/rosserial_test/Inc/sensor_msgs/LaserEcho.h
new file mode 100644 (file)
index 0000000..d523ac3
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_sensor_msgs_LaserEcho_h
+#define _ROS_sensor_msgs_LaserEcho_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class LaserEcho : public ros::Msg
+  {
+    public:
+      uint32_t echoes_length;
+      typedef float _echoes_type;
+      _echoes_type st_echoes;
+      _echoes_type * echoes;
+
+    LaserEcho():
+      echoes_length(0), echoes(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->echoes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->echoes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->echoes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->echoes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->echoes_length);
+      for( uint32_t i = 0; i < echoes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_echoesi;
+      u_echoesi.real = this->echoes[i];
+      *(outbuffer + offset + 0) = (u_echoesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_echoesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_echoesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_echoesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->echoes[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t echoes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->echoes_length);
+      if(echoes_lengthT > echoes_length)
+        this->echoes = (float*)realloc(this->echoes, echoes_lengthT * sizeof(float));
+      echoes_length = echoes_lengthT;
+      for( uint32_t i = 0; i < echoes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_echoes;
+      u_st_echoes.base = 0;
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_echoes = u_st_echoes.real;
+      offset += sizeof(this->st_echoes);
+        memcpy( &(this->echoes[i]), &(this->st_echoes), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/LaserEcho"; };
+    const char * getMD5(){ return "8bc5ae449b200fba4d552b4225586696"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/LaserScan.h b/rosserial_test/Inc/sensor_msgs/LaserScan.h
new file mode 100644 (file)
index 0000000..8ec85f5
--- /dev/null
@@ -0,0 +1,300 @@
+#ifndef _ROS_sensor_msgs_LaserScan_h
+#define _ROS_sensor_msgs_LaserScan_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class LaserScan : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _angle_min_type;
+      _angle_min_type angle_min;
+      typedef float _angle_max_type;
+      _angle_max_type angle_max;
+      typedef float _angle_increment_type;
+      _angle_increment_type angle_increment;
+      typedef float _time_increment_type;
+      _time_increment_type time_increment;
+      typedef float _scan_time_type;
+      _scan_time_type scan_time;
+      typedef float _range_min_type;
+      _range_min_type range_min;
+      typedef float _range_max_type;
+      _range_max_type range_max;
+      uint32_t ranges_length;
+      typedef float _ranges_type;
+      _ranges_type st_ranges;
+      _ranges_type * ranges;
+      uint32_t intensities_length;
+      typedef float _intensities_type;
+      _intensities_type st_intensities;
+      _intensities_type * intensities;
+
+    LaserScan():
+      header(),
+      angle_min(0),
+      angle_max(0),
+      angle_increment(0),
+      time_increment(0),
+      scan_time(0),
+      range_min(0),
+      range_max(0),
+      ranges_length(0), ranges(NULL),
+      intensities_length(0), intensities(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.real = this->angle_min;
+      *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.real = this->angle_max;
+      *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.real = this->angle_increment;
+      *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.real = this->time_increment;
+      *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.real = this->scan_time;
+      *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.real = this->range_min;
+      *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.real = this->range_max;
+      *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_max);
+      *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ranges_length);
+      for( uint32_t i = 0; i < ranges_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_rangesi;
+      u_rangesi.real = this->ranges[i];
+      *(outbuffer + offset + 0) = (u_rangesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_rangesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_rangesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_rangesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ranges[i]);
+      }
+      *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensities_length);
+      for( uint32_t i = 0; i < intensities_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_intensitiesi;
+      u_intensitiesi.real = this->intensities[i];
+      *(outbuffer + offset + 0) = (u_intensitiesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_intensitiesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_intensitiesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_intensitiesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensities[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.base = 0;
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_min = u_angle_min.real;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.base = 0;
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_max = u_angle_max.real;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.base = 0;
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_increment = u_angle_increment.real;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.base = 0;
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->time_increment = u_time_increment.real;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.base = 0;
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scan_time = u_scan_time.real;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.base = 0;
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_min = u_range_min.real;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.base = 0;
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_max = u_range_max.real;
+      offset += sizeof(this->range_max);
+      uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ranges_length);
+      if(ranges_lengthT > ranges_length)
+        this->ranges = (float*)realloc(this->ranges, ranges_lengthT * sizeof(float));
+      ranges_length = ranges_lengthT;
+      for( uint32_t i = 0; i < ranges_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_ranges;
+      u_st_ranges.base = 0;
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_ranges = u_st_ranges.real;
+      offset += sizeof(this->st_ranges);
+        memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(float));
+      }
+      uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->intensities_length);
+      if(intensities_lengthT > intensities_length)
+        this->intensities = (float*)realloc(this->intensities, intensities_lengthT * sizeof(float));
+      intensities_length = intensities_lengthT;
+      for( uint32_t i = 0; i < intensities_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_intensities;
+      u_st_intensities.base = 0;
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_intensities = u_st_intensities.real;
+      offset += sizeof(this->st_intensities);
+        memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/LaserScan"; };
+    const char * getMD5(){ return "90c7ef2dc6895d81024acba2ac42f369"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/MagneticField.h b/rosserial_test/Inc/sensor_msgs/MagneticField.h
new file mode 100644 (file)
index 0000000..295d07d
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_sensor_msgs_MagneticField_h
+#define _ROS_sensor_msgs_MagneticField_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace sensor_msgs
+{
+
+  class MagneticField : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Vector3 _magnetic_field_type;
+      _magnetic_field_type magnetic_field;
+      double magnetic_field_covariance[9];
+
+    MagneticField():
+      header(),
+      magnetic_field(),
+      magnetic_field_covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->magnetic_field.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_magnetic_field_covariancei;
+      u_magnetic_field_covariancei.real = this->magnetic_field_covariance[i];
+      *(outbuffer + offset + 0) = (u_magnetic_field_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_magnetic_field_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_magnetic_field_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_magnetic_field_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_magnetic_field_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_magnetic_field_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_magnetic_field_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_magnetic_field_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->magnetic_field_covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->magnetic_field.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_magnetic_field_covariancei;
+      u_magnetic_field_covariancei.base = 0;
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->magnetic_field_covariance[i] = u_magnetic_field_covariancei.real;
+      offset += sizeof(this->magnetic_field_covariance[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/MagneticField"; };
+    const char * getMD5(){ return "2f3b0b43eed0c9501de0fa3ff89a45aa"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/MultiDOFJointState.h b/rosserial_test/Inc/sensor_msgs/MultiDOFJointState.h
new file mode 100644 (file)
index 0000000..6e38c3d
--- /dev/null
@@ -0,0 +1,159 @@
+#ifndef _ROS_sensor_msgs_MultiDOFJointState_h
+#define _ROS_sensor_msgs_MultiDOFJointState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Transform.h"
+#include "geometry_msgs/Twist.h"
+#include "geometry_msgs/Wrench.h"
+
+namespace sensor_msgs
+{
+
+  class MultiDOFJointState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t transforms_length;
+      typedef geometry_msgs::Transform _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+      uint32_t wrench_length;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type st_wrench;
+      _wrench_type * wrench;
+
+    MultiDOFJointState():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      transforms_length(0), transforms(NULL),
+      twist_length(0), twist(NULL),
+      wrench_length(0), wrench(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->wrench_length);
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->wrench[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+      uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->wrench_length);
+      if(wrench_lengthT > wrench_length)
+        this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench));
+      wrench_length = wrench_lengthT;
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->st_wrench.deserialize(inbuffer + offset);
+        memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/MultiDOFJointState"; };
+    const char * getMD5(){ return "690f272f0640d2631c305eeb8301e59d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/MultiEchoLaserScan.h b/rosserial_test/Inc/sensor_msgs/MultiEchoLaserScan.h
new file mode 100644 (file)
index 0000000..007157b
--- /dev/null
@@ -0,0 +1,263 @@
+#ifndef _ROS_sensor_msgs_MultiEchoLaserScan_h
+#define _ROS_sensor_msgs_MultiEchoLaserScan_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/LaserEcho.h"
+
+namespace sensor_msgs
+{
+
+  class MultiEchoLaserScan : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _angle_min_type;
+      _angle_min_type angle_min;
+      typedef float _angle_max_type;
+      _angle_max_type angle_max;
+      typedef float _angle_increment_type;
+      _angle_increment_type angle_increment;
+      typedef float _time_increment_type;
+      _time_increment_type time_increment;
+      typedef float _scan_time_type;
+      _scan_time_type scan_time;
+      typedef float _range_min_type;
+      _range_min_type range_min;
+      typedef float _range_max_type;
+      _range_max_type range_max;
+      uint32_t ranges_length;
+      typedef sensor_msgs::LaserEcho _ranges_type;
+      _ranges_type st_ranges;
+      _ranges_type * ranges;
+      uint32_t intensities_length;
+      typedef sensor_msgs::LaserEcho _intensities_type;
+      _intensities_type st_intensities;
+      _intensities_type * intensities;
+
+    MultiEchoLaserScan():
+      header(),
+      angle_min(0),
+      angle_max(0),
+      angle_increment(0),
+      time_increment(0),
+      scan_time(0),
+      range_min(0),
+      range_max(0),
+      ranges_length(0), ranges(NULL),
+      intensities_length(0), intensities(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.real = this->angle_min;
+      *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.real = this->angle_max;
+      *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.real = this->angle_increment;
+      *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.real = this->time_increment;
+      *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.real = this->scan_time;
+      *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.real = this->range_min;
+      *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.real = this->range_max;
+      *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_max);
+      *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ranges_length);
+      for( uint32_t i = 0; i < ranges_length; i++){
+      offset += this->ranges[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensities_length);
+      for( uint32_t i = 0; i < intensities_length; i++){
+      offset += this->intensities[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.base = 0;
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_min = u_angle_min.real;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.base = 0;
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_max = u_angle_max.real;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.base = 0;
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_increment = u_angle_increment.real;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.base = 0;
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->time_increment = u_time_increment.real;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.base = 0;
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scan_time = u_scan_time.real;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.base = 0;
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_min = u_range_min.real;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.base = 0;
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_max = u_range_max.real;
+      offset += sizeof(this->range_max);
+      uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ranges_length);
+      if(ranges_lengthT > ranges_length)
+        this->ranges = (sensor_msgs::LaserEcho*)realloc(this->ranges, ranges_lengthT * sizeof(sensor_msgs::LaserEcho));
+      ranges_length = ranges_lengthT;
+      for( uint32_t i = 0; i < ranges_length; i++){
+      offset += this->st_ranges.deserialize(inbuffer + offset);
+        memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(sensor_msgs::LaserEcho));
+      }
+      uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->intensities_length);
+      if(intensities_lengthT > intensities_length)
+        this->intensities = (sensor_msgs::LaserEcho*)realloc(this->intensities, intensities_lengthT * sizeof(sensor_msgs::LaserEcho));
+      intensities_length = intensities_lengthT;
+      for( uint32_t i = 0; i < intensities_length; i++){
+      offset += this->st_intensities.deserialize(inbuffer + offset);
+        memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(sensor_msgs::LaserEcho));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/MultiEchoLaserScan"; };
+    const char * getMD5(){ return "6fefb0c6da89d7c8abe4b339f5c2f8fb"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/NavSatFix.h b/rosserial_test/Inc/sensor_msgs/NavSatFix.h
new file mode 100644 (file)
index 0000000..d8c619c
--- /dev/null
@@ -0,0 +1,192 @@
+#ifndef _ROS_sensor_msgs_NavSatFix_h
+#define _ROS_sensor_msgs_NavSatFix_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/NavSatStatus.h"
+
+namespace sensor_msgs
+{
+
+  class NavSatFix : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef sensor_msgs::NavSatStatus _status_type;
+      _status_type status;
+      typedef double _latitude_type;
+      _latitude_type latitude;
+      typedef double _longitude_type;
+      _longitude_type longitude;
+      typedef double _altitude_type;
+      _altitude_type altitude;
+      double position_covariance[9];
+      typedef uint8_t _position_covariance_type_type;
+      _position_covariance_type_type position_covariance_type;
+      enum { COVARIANCE_TYPE_UNKNOWN =  0 };
+      enum { COVARIANCE_TYPE_APPROXIMATED =  1 };
+      enum { COVARIANCE_TYPE_DIAGONAL_KNOWN =  2 };
+      enum { COVARIANCE_TYPE_KNOWN =  3 };
+
+    NavSatFix():
+      header(),
+      status(),
+      latitude(0),
+      longitude(0),
+      altitude(0),
+      position_covariance(),
+      position_covariance_type(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_latitude;
+      u_latitude.real = this->latitude;
+      *(outbuffer + offset + 0) = (u_latitude.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_latitude.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_latitude.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_latitude.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_latitude.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_latitude.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_latitude.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_latitude.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->latitude);
+      union {
+        double real;
+        uint64_t base;
+      } u_longitude;
+      u_longitude.real = this->longitude;
+      *(outbuffer + offset + 0) = (u_longitude.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_longitude.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_longitude.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_longitude.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_longitude.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_longitude.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_longitude.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_longitude.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->longitude);
+      union {
+        double real;
+        uint64_t base;
+      } u_altitude;
+      u_altitude.real = this->altitude;
+      *(outbuffer + offset + 0) = (u_altitude.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_altitude.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_altitude.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_altitude.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_altitude.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_altitude.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_altitude.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_altitude.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->altitude);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_position_covariancei;
+      u_position_covariancei.real = this->position_covariance[i];
+      *(outbuffer + offset + 0) = (u_position_covariancei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_position_covariancei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_position_covariancei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_position_covariancei.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_position_covariancei.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_position_covariancei.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_position_covariancei.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_position_covariancei.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->position_covariance[i]);
+      }
+      *(outbuffer + offset + 0) = (this->position_covariance_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->position_covariance_type);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_latitude;
+      u_latitude.base = 0;
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->latitude = u_latitude.real;
+      offset += sizeof(this->latitude);
+      union {
+        double real;
+        uint64_t base;
+      } u_longitude;
+      u_longitude.base = 0;
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->longitude = u_longitude.real;
+      offset += sizeof(this->longitude);
+      union {
+        double real;
+        uint64_t base;
+      } u_altitude;
+      u_altitude.base = 0;
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->altitude = u_altitude.real;
+      offset += sizeof(this->altitude);
+      for( uint32_t i = 0; i < 9; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_position_covariancei;
+      u_position_covariancei.base = 0;
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->position_covariance[i] = u_position_covariancei.real;
+      offset += sizeof(this->position_covariance[i]);
+      }
+      this->position_covariance_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->position_covariance_type);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/NavSatFix"; };
+    const char * getMD5(){ return "2d3a8cd499b9b4a0249fb98fd05cfa48"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/NavSatStatus.h b/rosserial_test/Inc/sensor_msgs/NavSatStatus.h
new file mode 100644 (file)
index 0000000..45e2a7c
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_sensor_msgs_NavSatStatus_h
+#define _ROS_sensor_msgs_NavSatStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class NavSatStatus : public ros::Msg
+  {
+    public:
+      typedef int8_t _status_type;
+      _status_type status;
+      typedef uint16_t _service_type;
+      _service_type service;
+      enum { STATUS_NO_FIX =   -1         };
+      enum { STATUS_FIX =       0         };
+      enum { STATUS_SBAS_FIX =  1         };
+      enum { STATUS_GBAS_FIX =  2         };
+      enum { SERVICE_GPS =      1 };
+      enum { SERVICE_GLONASS =  2 };
+      enum { SERVICE_COMPASS =  4       };
+      enum { SERVICE_GALILEO =  8 };
+
+    NavSatStatus():
+      status(0),
+      service(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_status;
+      u_status.real = this->status;
+      *(outbuffer + offset + 0) = (u_status.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->status);
+      *(outbuffer + offset + 0) = (this->service >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->service >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->service);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_status;
+      u_status.base = 0;
+      u_status.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->status = u_status.real;
+      offset += sizeof(this->status);
+      this->service =  ((uint16_t) (*(inbuffer + offset)));
+      this->service |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->service);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/NavSatStatus"; };
+    const char * getMD5(){ return "331cdbddfa4bc96ffc3b9ad98900a54c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/PointCloud.h b/rosserial_test/Inc/sensor_msgs/PointCloud.h
new file mode 100644 (file)
index 0000000..c18892b
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_sensor_msgs_PointCloud_h
+#define _ROS_sensor_msgs_PointCloud_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point32.h"
+#include "sensor_msgs/ChannelFloat32.h"
+
+namespace sensor_msgs
+{
+
+  class PointCloud : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t points_length;
+      typedef geometry_msgs::Point32 _points_type;
+      _points_type st_points;
+      _points_type * points;
+      uint32_t channels_length;
+      typedef sensor_msgs::ChannelFloat32 _channels_type;
+      _channels_type st_channels;
+      _channels_type * channels;
+
+    PointCloud():
+      header(),
+      points_length(0), points(NULL),
+      channels_length(0), channels(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->channels_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->channels_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->channels_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->channels_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->channels_length);
+      for( uint32_t i = 0; i < channels_length; i++){
+      offset += this->channels[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32));
+      }
+      uint32_t channels_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->channels_length);
+      if(channels_lengthT > channels_length)
+        this->channels = (sensor_msgs::ChannelFloat32*)realloc(this->channels, channels_lengthT * sizeof(sensor_msgs::ChannelFloat32));
+      channels_length = channels_lengthT;
+      for( uint32_t i = 0; i < channels_length; i++){
+      offset += this->st_channels.deserialize(inbuffer + offset);
+        memcpy( &(this->channels[i]), &(this->st_channels), sizeof(sensor_msgs::ChannelFloat32));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/PointCloud"; };
+    const char * getMD5(){ return "d8e9c3f5afbdd8a130fd1d2763945fca"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/PointCloud2.h b/rosserial_test/Inc/sensor_msgs/PointCloud2.h
new file mode 100644 (file)
index 0000000..7f1ccb4
--- /dev/null
@@ -0,0 +1,185 @@
+#ifndef _ROS_sensor_msgs_PointCloud2_h
+#define _ROS_sensor_msgs_PointCloud2_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/PointField.h"
+
+namespace sensor_msgs
+{
+
+  class PointCloud2 : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      uint32_t fields_length;
+      typedef sensor_msgs::PointField _fields_type;
+      _fields_type st_fields;
+      _fields_type * fields;
+      typedef bool _is_bigendian_type;
+      _is_bigendian_type is_bigendian;
+      typedef uint32_t _point_step_type;
+      _point_step_type point_step;
+      typedef uint32_t _row_step_type;
+      _row_step_type row_step;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+      typedef bool _is_dense_type;
+      _is_dense_type is_dense;
+
+    PointCloud2():
+      header(),
+      height(0),
+      width(0),
+      fields_length(0), fields(NULL),
+      is_bigendian(0),
+      point_step(0),
+      row_step(0),
+      data_length(0), data(NULL),
+      is_dense(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->fields_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->fields_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->fields_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->fields_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->fields_length);
+      for( uint32_t i = 0; i < fields_length; i++){
+      offset += this->fields[i].serialize(outbuffer + offset);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_bigendian;
+      u_is_bigendian.real = this->is_bigendian;
+      *(outbuffer + offset + 0) = (u_is_bigendian.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_bigendian);
+      *(outbuffer + offset + 0) = (this->point_step >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->point_step >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->point_step >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->point_step >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->point_step);
+      *(outbuffer + offset + 0) = (this->row_step >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->row_step >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->row_step >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->row_step >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->row_step);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_dense;
+      u_is_dense.real = this->is_dense;
+      *(outbuffer + offset + 0) = (u_is_dense.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_dense);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      uint32_t fields_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->fields_length);
+      if(fields_lengthT > fields_length)
+        this->fields = (sensor_msgs::PointField*)realloc(this->fields, fields_lengthT * sizeof(sensor_msgs::PointField));
+      fields_length = fields_lengthT;
+      for( uint32_t i = 0; i < fields_length; i++){
+      offset += this->st_fields.deserialize(inbuffer + offset);
+        memcpy( &(this->fields[i]), &(this->st_fields), sizeof(sensor_msgs::PointField));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_bigendian;
+      u_is_bigendian.base = 0;
+      u_is_bigendian.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_bigendian = u_is_bigendian.real;
+      offset += sizeof(this->is_bigendian);
+      this->point_step =  ((uint32_t) (*(inbuffer + offset)));
+      this->point_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->point_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->point_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->point_step);
+      this->row_step =  ((uint32_t) (*(inbuffer + offset)));
+      this->row_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->row_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->row_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->row_step);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_dense;
+      u_is_dense.base = 0;
+      u_is_dense.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_dense = u_is_dense.real;
+      offset += sizeof(this->is_dense);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/PointCloud2"; };
+    const char * getMD5(){ return "1158d486dd51d683ce2f1be655c3c181"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/PointField.h b/rosserial_test/Inc/sensor_msgs/PointField.h
new file mode 100644 (file)
index 0000000..2db22d6
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_sensor_msgs_PointField_h
+#define _ROS_sensor_msgs_PointField_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class PointField : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef uint32_t _offset_type;
+      _offset_type offset;
+      typedef uint8_t _datatype_type;
+      _datatype_type datatype;
+      typedef uint32_t _count_type;
+      _count_type count;
+      enum { INT8 =  1 };
+      enum { UINT8 =  2 };
+      enum { INT16 =  3 };
+      enum { UINT16 =  4 };
+      enum { INT32 =  5 };
+      enum { UINT32 =  6 };
+      enum { FLOAT32 =  7 };
+      enum { FLOAT64 =  8 };
+
+    PointField():
+      name(""),
+      offset(0),
+      datatype(0),
+      count(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      *(outbuffer + offset + 0) = (this->offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->offset);
+      *(outbuffer + offset + 0) = (this->datatype >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->datatype);
+      *(outbuffer + offset + 0) = (this->count >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->count >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->count >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->count >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->count);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      this->offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->offset);
+      this->datatype =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->datatype);
+      this->count =  ((uint32_t) (*(inbuffer + offset)));
+      this->count |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->count |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->count |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->count);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/PointField"; };
+    const char * getMD5(){ return "268eacb2962780ceac86cbd17e328150"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/Range.h b/rosserial_test/Inc/sensor_msgs/Range.h
new file mode 100644 (file)
index 0000000..db9e22e
--- /dev/null
@@ -0,0 +1,149 @@
+#ifndef _ROS_sensor_msgs_Range_h
+#define _ROS_sensor_msgs_Range_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Range : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint8_t _radiation_type_type;
+      _radiation_type_type radiation_type;
+      typedef float _field_of_view_type;
+      _field_of_view_type field_of_view;
+      typedef float _min_range_type;
+      _min_range_type min_range;
+      typedef float _max_range_type;
+      _max_range_type max_range;
+      typedef float _range_type;
+      _range_type range;
+      enum { ULTRASOUND = 0 };
+      enum { INFRARED = 1 };
+
+    Range():
+      header(),
+      radiation_type(0),
+      field_of_view(0),
+      min_range(0),
+      max_range(0),
+      range(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->radiation_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->radiation_type);
+      union {
+        float real;
+        uint32_t base;
+      } u_field_of_view;
+      u_field_of_view.real = this->field_of_view;
+      *(outbuffer + offset + 0) = (u_field_of_view.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_field_of_view.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_field_of_view.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_field_of_view.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->field_of_view);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_range;
+      u_min_range.real = this->min_range;
+      *(outbuffer + offset + 0) = (u_min_range.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_min_range.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_min_range.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_min_range.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_range;
+      u_max_range.real = this->max_range;
+      *(outbuffer + offset + 0) = (u_max_range.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_range.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_range.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_range.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_range;
+      u_range.real = this->range;
+      *(outbuffer + offset + 0) = (u_range.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->radiation_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->radiation_type);
+      union {
+        float real;
+        uint32_t base;
+      } u_field_of_view;
+      u_field_of_view.base = 0;
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->field_of_view = u_field_of_view.real;
+      offset += sizeof(this->field_of_view);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_range;
+      u_min_range.base = 0;
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->min_range = u_min_range.real;
+      offset += sizeof(this->min_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_range;
+      u_max_range.base = 0;
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->max_range = u_max_range.real;
+      offset += sizeof(this->max_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_range;
+      u_range.base = 0;
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range = u_range.real;
+      offset += sizeof(this->range);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Range"; };
+    const char * getMD5(){ return "c005c34273dc426c67a020a87bc24148"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/RegionOfInterest.h b/rosserial_test/Inc/sensor_msgs/RegionOfInterest.h
new file mode 100644 (file)
index 0000000..7b7df04
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_sensor_msgs_RegionOfInterest_h
+#define _ROS_sensor_msgs_RegionOfInterest_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class RegionOfInterest : public ros::Msg
+  {
+    public:
+      typedef uint32_t _x_offset_type;
+      _x_offset_type x_offset;
+      typedef uint32_t _y_offset_type;
+      _y_offset_type y_offset;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef bool _do_rectify_type;
+      _do_rectify_type do_rectify;
+
+    RegionOfInterest():
+      x_offset(0),
+      y_offset(0),
+      height(0),
+      width(0),
+      do_rectify(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->x_offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->x_offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->x_offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->x_offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x_offset);
+      *(outbuffer + offset + 0) = (this->y_offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->y_offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->y_offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->y_offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y_offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      union {
+        bool real;
+        uint8_t base;
+      } u_do_rectify;
+      u_do_rectify.real = this->do_rectify;
+      *(outbuffer + offset + 0) = (u_do_rectify.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->do_rectify);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->x_offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->x_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->x_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->x_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->x_offset);
+      this->y_offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->y_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->y_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->y_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->y_offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      union {
+        bool real;
+        uint8_t base;
+      } u_do_rectify;
+      u_do_rectify.base = 0;
+      u_do_rectify.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->do_rectify = u_do_rectify.real;
+      offset += sizeof(this->do_rectify);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/RegionOfInterest"; };
+    const char * getMD5(){ return "bdb633039d588fcccb441a4d43ccfe09"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/RelativeHumidity.h b/rosserial_test/Inc/sensor_msgs/RelativeHumidity.h
new file mode 100644 (file)
index 0000000..52109ad
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_sensor_msgs_RelativeHumidity_h
+#define _ROS_sensor_msgs_RelativeHumidity_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class RelativeHumidity : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef double _relative_humidity_type;
+      _relative_humidity_type relative_humidity;
+      typedef double _variance_type;
+      _variance_type variance;
+
+    RelativeHumidity():
+      header(),
+      relative_humidity(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_relative_humidity;
+      u_relative_humidity.real = this->relative_humidity;
+      *(outbuffer + offset + 0) = (u_relative_humidity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_relative_humidity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_relative_humidity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_relative_humidity.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_relative_humidity.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_relative_humidity.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_relative_humidity.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_relative_humidity.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->relative_humidity);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.real = this->variance;
+      *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_relative_humidity;
+      u_relative_humidity.base = 0;
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->relative_humidity = u_relative_humidity.real;
+      offset += sizeof(this->relative_humidity);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.base = 0;
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->variance = u_variance.real;
+      offset += sizeof(this->variance);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/RelativeHumidity"; };
+    const char * getMD5(){ return "8730015b05955b7e992ce29a2678d90f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/SetCameraInfo.h b/rosserial_test/Inc/sensor_msgs/SetCameraInfo.h
new file mode 100644 (file)
index 0000000..3f838fb
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_SetCameraInfo_h
+#define _ROS_SERVICE_SetCameraInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/CameraInfo.h"
+
+namespace sensor_msgs
+{
+
+static const char SETCAMERAINFO[] = "sensor_msgs/SetCameraInfo";
+
+  class SetCameraInfoRequest : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::CameraInfo _camera_info_type;
+      _camera_info_type camera_info;
+
+    SetCameraInfoRequest():
+      camera_info()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->camera_info.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->camera_info.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETCAMERAINFO; };
+    const char * getMD5(){ return "ee34be01fdeee563d0d99cd594d5581d"; };
+
+  };
+
+  class SetCameraInfoResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetCameraInfoResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETCAMERAINFO; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetCameraInfo {
+    public:
+    typedef SetCameraInfoRequest Request;
+    typedef SetCameraInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/Temperature.h b/rosserial_test/Inc/sensor_msgs/Temperature.h
new file mode 100644 (file)
index 0000000..443543f
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_sensor_msgs_Temperature_h
+#define _ROS_sensor_msgs_Temperature_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Temperature : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef double _temperature_type;
+      _temperature_type temperature;
+      typedef double _variance_type;
+      _variance_type variance;
+
+    Temperature():
+      header(),
+      temperature(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_temperature;
+      u_temperature.real = this->temperature;
+      *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_temperature.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_temperature.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_temperature.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_temperature.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->temperature);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.real = this->variance;
+      *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        double real;
+        uint64_t base;
+      } u_temperature;
+      u_temperature.base = 0;
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->temperature = u_temperature.real;
+      offset += sizeof(this->temperature);
+      union {
+        double real;
+        uint64_t base;
+      } u_variance;
+      u_variance.base = 0;
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->variance = u_variance.real;
+      offset += sizeof(this->variance);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Temperature"; };
+    const char * getMD5(){ return "ff71b307acdbe7c871a5a6d7ed359100"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/sensor_msgs/TimeReference.h b/rosserial_test/Inc/sensor_msgs/TimeReference.h
new file mode 100644 (file)
index 0000000..dbb8a02
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_sensor_msgs_TimeReference_h
+#define _ROS_sensor_msgs_TimeReference_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "ros/time.h"
+
+namespace sensor_msgs
+{
+
+  class TimeReference : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef ros::Time _time_ref_type;
+      _time_ref_type time_ref;
+      typedef const char* _source_type;
+      _source_type source;
+
+    TimeReference():
+      header(),
+      time_ref(),
+      source("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->time_ref.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_ref.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_ref.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_ref.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_ref.sec);
+      *(outbuffer + offset + 0) = (this->time_ref.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_ref.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_ref.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_ref.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_ref.nsec);
+      uint32_t length_source = strlen(this->source);
+      varToArr(outbuffer + offset, length_source);
+      offset += 4;
+      memcpy(outbuffer + offset, this->source, length_source);
+      offset += length_source;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->time_ref.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_ref.sec);
+      this->time_ref.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_ref.nsec);
+      uint32_t length_source;
+      arrToVar(length_source, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_source; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_source-1]=0;
+      this->source = (char *)(inbuffer + offset-1);
+      offset += length_source;
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/TimeReference"; };
+    const char * getMD5(){ return "fded64a0265108ba86c3d38fb11c0c16"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/shape_msgs/Mesh.h b/rosserial_test/Inc/shape_msgs/Mesh.h
new file mode 100644 (file)
index 0000000..d138e08
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef _ROS_shape_msgs_Mesh_h
+#define _ROS_shape_msgs_Mesh_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "shape_msgs/MeshTriangle.h"
+#include "geometry_msgs/Point.h"
+
+namespace shape_msgs
+{
+
+  class Mesh : public ros::Msg
+  {
+    public:
+      uint32_t triangles_length;
+      typedef shape_msgs::MeshTriangle _triangles_type;
+      _triangles_type st_triangles;
+      _triangles_type * triangles;
+      uint32_t vertices_length;
+      typedef geometry_msgs::Point _vertices_type;
+      _vertices_type st_vertices;
+      _vertices_type * vertices;
+
+    Mesh():
+      triangles_length(0), triangles(NULL),
+      vertices_length(0), vertices(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->triangles_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->triangles_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->triangles_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->triangles_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->triangles_length);
+      for( uint32_t i = 0; i < triangles_length; i++){
+      offset += this->triangles[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertices_length);
+      for( uint32_t i = 0; i < vertices_length; i++){
+      offset += this->vertices[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t triangles_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->triangles_length);
+      if(triangles_lengthT > triangles_length)
+        this->triangles = (shape_msgs::MeshTriangle*)realloc(this->triangles, triangles_lengthT * sizeof(shape_msgs::MeshTriangle));
+      triangles_length = triangles_lengthT;
+      for( uint32_t i = 0; i < triangles_length; i++){
+      offset += this->st_triangles.deserialize(inbuffer + offset);
+        memcpy( &(this->triangles[i]), &(this->st_triangles), sizeof(shape_msgs::MeshTriangle));
+      }
+      uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->vertices_length);
+      if(vertices_lengthT > vertices_length)
+        this->vertices = (geometry_msgs::Point*)realloc(this->vertices, vertices_lengthT * sizeof(geometry_msgs::Point));
+      vertices_length = vertices_lengthT;
+      for( uint32_t i = 0; i < vertices_length; i++){
+      offset += this->st_vertices.deserialize(inbuffer + offset);
+        memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(geometry_msgs::Point));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/Mesh"; };
+    const char * getMD5(){ return "1ffdae9486cd3316a121c578b47a85cc"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/shape_msgs/MeshTriangle.h b/rosserial_test/Inc/shape_msgs/MeshTriangle.h
new file mode 100644 (file)
index 0000000..d35ef55
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _ROS_shape_msgs_MeshTriangle_h
+#define _ROS_shape_msgs_MeshTriangle_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace shape_msgs
+{
+
+  class MeshTriangle : public ros::Msg
+  {
+    public:
+      uint32_t vertex_indices[3];
+
+    MeshTriangle():
+      vertex_indices()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 3; i++){
+      *(outbuffer + offset + 0) = (this->vertex_indices[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertex_indices[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertex_indices[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertex_indices[i] >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertex_indices[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 3; i++){
+      this->vertex_indices[i] =  ((uint32_t) (*(inbuffer + offset)));
+      this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->vertex_indices[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/MeshTriangle"; };
+    const char * getMD5(){ return "23688b2e6d2de3d32fe8af104a903253"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/shape_msgs/Plane.h b/rosserial_test/Inc/shape_msgs/Plane.h
new file mode 100644 (file)
index 0000000..b1a0461
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_shape_msgs_Plane_h
+#define _ROS_shape_msgs_Plane_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace shape_msgs
+{
+
+  class Plane : public ros::Msg
+  {
+    public:
+      double coef[4];
+
+    Plane():
+      coef()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 4; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_coefi;
+      u_coefi.real = this->coef[i];
+      *(outbuffer + offset + 0) = (u_coefi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_coefi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_coefi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_coefi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_coefi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_coefi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_coefi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_coefi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->coef[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 4; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_coefi;
+      u_coefi.base = 0;
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->coef[i] = u_coefi.real;
+      offset += sizeof(this->coef[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/Plane"; };
+    const char * getMD5(){ return "2c1b92ed8f31492f8e73f6a4a44ca796"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/shape_msgs/SolidPrimitive.h b/rosserial_test/Inc/shape_msgs/SolidPrimitive.h
new file mode 100644 (file)
index 0000000..90257b7
--- /dev/null
@@ -0,0 +1,109 @@
+#ifndef _ROS_shape_msgs_SolidPrimitive_h
+#define _ROS_shape_msgs_SolidPrimitive_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace shape_msgs
+{
+
+  class SolidPrimitive : public ros::Msg
+  {
+    public:
+      typedef uint8_t _type_type;
+      _type_type type;
+      uint32_t dimensions_length;
+      typedef double _dimensions_type;
+      _dimensions_type st_dimensions;
+      _dimensions_type * dimensions;
+      enum { BOX = 1 };
+      enum { SPHERE = 2 };
+      enum { CYLINDER = 3 };
+      enum { CONE = 4 };
+      enum { BOX_X = 0 };
+      enum { BOX_Y = 1 };
+      enum { BOX_Z = 2 };
+      enum { SPHERE_RADIUS = 0 };
+      enum { CYLINDER_HEIGHT = 0 };
+      enum { CYLINDER_RADIUS = 1 };
+      enum { CONE_HEIGHT = 0 };
+      enum { CONE_RADIUS = 1 };
+
+    SolidPrimitive():
+      type(0),
+      dimensions_length(0), dimensions(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->dimensions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->dimensions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->dimensions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->dimensions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->dimensions_length);
+      for( uint32_t i = 0; i < dimensions_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_dimensionsi;
+      u_dimensionsi.real = this->dimensions[i];
+      *(outbuffer + offset + 0) = (u_dimensionsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_dimensionsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_dimensionsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_dimensionsi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_dimensionsi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_dimensionsi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_dimensionsi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_dimensionsi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->dimensions[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      uint32_t dimensions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->dimensions_length);
+      if(dimensions_lengthT > dimensions_length)
+        this->dimensions = (double*)realloc(this->dimensions, dimensions_lengthT * sizeof(double));
+      dimensions_length = dimensions_lengthT;
+      for( uint32_t i = 0; i < dimensions_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_dimensions;
+      u_st_dimensions.base = 0;
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_dimensions = u_st_dimensions.real;
+      offset += sizeof(this->st_dimensions);
+        memcpy( &(this->dimensions[i]), &(this->st_dimensions), sizeof(double));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/SolidPrimitive"; };
+    const char * getMD5(){ return "d8f8cbc74c5ff283fca29569ccefb45d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/smach_msgs/SmachContainerInitialStatusCmd.h b/rosserial_test/Inc/smach_msgs/SmachContainerInitialStatusCmd.h
new file mode 100644 (file)
index 0000000..d328eb8
--- /dev/null
@@ -0,0 +1,109 @@
+#ifndef _ROS_smach_msgs_SmachContainerInitialStatusCmd_h
+#define _ROS_smach_msgs_SmachContainerInitialStatusCmd_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace smach_msgs
+{
+
+  class SmachContainerInitialStatusCmd : public ros::Msg
+  {
+    public:
+      typedef const char* _path_type;
+      _path_type path;
+      uint32_t initial_states_length;
+      typedef char* _initial_states_type;
+      _initial_states_type st_initial_states;
+      _initial_states_type * initial_states;
+      typedef const char* _local_data_type;
+      _local_data_type local_data;
+
+    SmachContainerInitialStatusCmd():
+      path(""),
+      initial_states_length(0), initial_states(NULL),
+      local_data("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_path = strlen(this->path);
+      varToArr(outbuffer + offset, length_path);
+      offset += 4;
+      memcpy(outbuffer + offset, this->path, length_path);
+      offset += length_path;
+      *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->initial_states_length);
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_initial_statesi = strlen(this->initial_states[i]);
+      varToArr(outbuffer + offset, length_initial_statesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi);
+      offset += length_initial_statesi;
+      }
+      uint32_t length_local_data = strlen(this->local_data);
+      varToArr(outbuffer + offset, length_local_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->local_data, length_local_data);
+      offset += length_local_data;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_path;
+      arrToVar(length_path, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_path; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_path-1]=0;
+      this->path = (char *)(inbuffer + offset-1);
+      offset += length_path;
+      uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->initial_states_length);
+      if(initial_states_lengthT > initial_states_length)
+        this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*));
+      initial_states_length = initial_states_lengthT;
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_st_initial_states;
+      arrToVar(length_st_initial_states, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_initial_states-1]=0;
+      this->st_initial_states = (char *)(inbuffer + offset-1);
+      offset += length_st_initial_states;
+        memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*));
+      }
+      uint32_t length_local_data;
+      arrToVar(length_local_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_local_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_local_data-1]=0;
+      this->local_data = (char *)(inbuffer + offset-1);
+      offset += length_local_data;
+     return offset;
+    }
+
+    const char * getType(){ return "smach_msgs/SmachContainerInitialStatusCmd"; };
+    const char * getMD5(){ return "45f8cf31fc29b829db77f23001f788d6"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/smach_msgs/SmachContainerStatus.h b/rosserial_test/Inc/smach_msgs/SmachContainerStatus.h
new file mode 100644 (file)
index 0000000..2c00cd3
--- /dev/null
@@ -0,0 +1,169 @@
+#ifndef _ROS_smach_msgs_SmachContainerStatus_h
+#define _ROS_smach_msgs_SmachContainerStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace smach_msgs
+{
+
+  class SmachContainerStatus : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _path_type;
+      _path_type path;
+      uint32_t initial_states_length;
+      typedef char* _initial_states_type;
+      _initial_states_type st_initial_states;
+      _initial_states_type * initial_states;
+      uint32_t active_states_length;
+      typedef char* _active_states_type;
+      _active_states_type st_active_states;
+      _active_states_type * active_states;
+      typedef const char* _local_data_type;
+      _local_data_type local_data;
+      typedef const char* _info_type;
+      _info_type info;
+
+    SmachContainerStatus():
+      header(),
+      path(""),
+      initial_states_length(0), initial_states(NULL),
+      active_states_length(0), active_states(NULL),
+      local_data(""),
+      info("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_path = strlen(this->path);
+      varToArr(outbuffer + offset, length_path);
+      offset += 4;
+      memcpy(outbuffer + offset, this->path, length_path);
+      offset += length_path;
+      *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->initial_states_length);
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_initial_statesi = strlen(this->initial_states[i]);
+      varToArr(outbuffer + offset, length_initial_statesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi);
+      offset += length_initial_statesi;
+      }
+      *(outbuffer + offset + 0) = (this->active_states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->active_states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->active_states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->active_states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->active_states_length);
+      for( uint32_t i = 0; i < active_states_length; i++){
+      uint32_t length_active_statesi = strlen(this->active_states[i]);
+      varToArr(outbuffer + offset, length_active_statesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->active_states[i], length_active_statesi);
+      offset += length_active_statesi;
+      }
+      uint32_t length_local_data = strlen(this->local_data);
+      varToArr(outbuffer + offset, length_local_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->local_data, length_local_data);
+      offset += length_local_data;
+      uint32_t length_info = strlen(this->info);
+      varToArr(outbuffer + offset, length_info);
+      offset += 4;
+      memcpy(outbuffer + offset, this->info, length_info);
+      offset += length_info;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_path;
+      arrToVar(length_path, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_path; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_path-1]=0;
+      this->path = (char *)(inbuffer + offset-1);
+      offset += length_path;
+      uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->initial_states_length);
+      if(initial_states_lengthT > initial_states_length)
+        this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*));
+      initial_states_length = initial_states_lengthT;
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_st_initial_states;
+      arrToVar(length_st_initial_states, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_initial_states-1]=0;
+      this->st_initial_states = (char *)(inbuffer + offset-1);
+      offset += length_st_initial_states;
+        memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*));
+      }
+      uint32_t active_states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->active_states_length);
+      if(active_states_lengthT > active_states_length)
+        this->active_states = (char**)realloc(this->active_states, active_states_lengthT * sizeof(char*));
+      active_states_length = active_states_lengthT;
+      for( uint32_t i = 0; i < active_states_length; i++){
+      uint32_t length_st_active_states;
+      arrToVar(length_st_active_states, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_active_states; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_active_states-1]=0;
+      this->st_active_states = (char *)(inbuffer + offset-1);
+      offset += length_st_active_states;
+        memcpy( &(this->active_states[i]), &(this->st_active_states), sizeof(char*));
+      }
+      uint32_t length_local_data;
+      arrToVar(length_local_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_local_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_local_data-1]=0;
+      this->local_data = (char *)(inbuffer + offset-1);
+      offset += length_local_data;
+      uint32_t length_info;
+      arrToVar(length_info, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_info; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_info-1]=0;
+      this->info = (char *)(inbuffer + offset-1);
+      offset += length_info;
+     return offset;
+    }
+
+    const char * getType(){ return "smach_msgs/SmachContainerStatus"; };
+    const char * getMD5(){ return "5ba2bb79ac19e3842d562a191f2a675b"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/smach_msgs/SmachContainerStructure.h b/rosserial_test/Inc/smach_msgs/SmachContainerStructure.h
new file mode 100644 (file)
index 0000000..d0919ce
--- /dev/null
@@ -0,0 +1,246 @@
+#ifndef _ROS_smach_msgs_SmachContainerStructure_h
+#define _ROS_smach_msgs_SmachContainerStructure_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace smach_msgs
+{
+
+  class SmachContainerStructure : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _path_type;
+      _path_type path;
+      uint32_t children_length;
+      typedef char* _children_type;
+      _children_type st_children;
+      _children_type * children;
+      uint32_t internal_outcomes_length;
+      typedef char* _internal_outcomes_type;
+      _internal_outcomes_type st_internal_outcomes;
+      _internal_outcomes_type * internal_outcomes;
+      uint32_t outcomes_from_length;
+      typedef char* _outcomes_from_type;
+      _outcomes_from_type st_outcomes_from;
+      _outcomes_from_type * outcomes_from;
+      uint32_t outcomes_to_length;
+      typedef char* _outcomes_to_type;
+      _outcomes_to_type st_outcomes_to;
+      _outcomes_to_type * outcomes_to;
+      uint32_t container_outcomes_length;
+      typedef char* _container_outcomes_type;
+      _container_outcomes_type st_container_outcomes;
+      _container_outcomes_type * container_outcomes;
+
+    SmachContainerStructure():
+      header(),
+      path(""),
+      children_length(0), children(NULL),
+      internal_outcomes_length(0), internal_outcomes(NULL),
+      outcomes_from_length(0), outcomes_from(NULL),
+      outcomes_to_length(0), outcomes_to(NULL),
+      container_outcomes_length(0), container_outcomes(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_path = strlen(this->path);
+      varToArr(outbuffer + offset, length_path);
+      offset += 4;
+      memcpy(outbuffer + offset, this->path, length_path);
+      offset += length_path;
+      *(outbuffer + offset + 0) = (this->children_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->children_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->children_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->children_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->children_length);
+      for( uint32_t i = 0; i < children_length; i++){
+      uint32_t length_childreni = strlen(this->children[i]);
+      varToArr(outbuffer + offset, length_childreni);
+      offset += 4;
+      memcpy(outbuffer + offset, this->children[i], length_childreni);
+      offset += length_childreni;
+      }
+      *(outbuffer + offset + 0) = (this->internal_outcomes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->internal_outcomes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->internal_outcomes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->internal_outcomes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->internal_outcomes_length);
+      for( uint32_t i = 0; i < internal_outcomes_length; i++){
+      uint32_t length_internal_outcomesi = strlen(this->internal_outcomes[i]);
+      varToArr(outbuffer + offset, length_internal_outcomesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->internal_outcomes[i], length_internal_outcomesi);
+      offset += length_internal_outcomesi;
+      }
+      *(outbuffer + offset + 0) = (this->outcomes_from_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->outcomes_from_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->outcomes_from_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->outcomes_from_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->outcomes_from_length);
+      for( uint32_t i = 0; i < outcomes_from_length; i++){
+      uint32_t length_outcomes_fromi = strlen(this->outcomes_from[i]);
+      varToArr(outbuffer + offset, length_outcomes_fromi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->outcomes_from[i], length_outcomes_fromi);
+      offset += length_outcomes_fromi;
+      }
+      *(outbuffer + offset + 0) = (this->outcomes_to_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->outcomes_to_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->outcomes_to_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->outcomes_to_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->outcomes_to_length);
+      for( uint32_t i = 0; i < outcomes_to_length; i++){
+      uint32_t length_outcomes_toi = strlen(this->outcomes_to[i]);
+      varToArr(outbuffer + offset, length_outcomes_toi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->outcomes_to[i], length_outcomes_toi);
+      offset += length_outcomes_toi;
+      }
+      *(outbuffer + offset + 0) = (this->container_outcomes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->container_outcomes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->container_outcomes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->container_outcomes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->container_outcomes_length);
+      for( uint32_t i = 0; i < container_outcomes_length; i++){
+      uint32_t length_container_outcomesi = strlen(this->container_outcomes[i]);
+      varToArr(outbuffer + offset, length_container_outcomesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->container_outcomes[i], length_container_outcomesi);
+      offset += length_container_outcomesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_path;
+      arrToVar(length_path, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_path; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_path-1]=0;
+      this->path = (char *)(inbuffer + offset-1);
+      offset += length_path;
+      uint32_t children_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      children_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      children_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      children_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->children_length);
+      if(children_lengthT > children_length)
+        this->children = (char**)realloc(this->children, children_lengthT * sizeof(char*));
+      children_length = children_lengthT;
+      for( uint32_t i = 0; i < children_length; i++){
+      uint32_t length_st_children;
+      arrToVar(length_st_children, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_children; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_children-1]=0;
+      this->st_children = (char *)(inbuffer + offset-1);
+      offset += length_st_children;
+        memcpy( &(this->children[i]), &(this->st_children), sizeof(char*));
+      }
+      uint32_t internal_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->internal_outcomes_length);
+      if(internal_outcomes_lengthT > internal_outcomes_length)
+        this->internal_outcomes = (char**)realloc(this->internal_outcomes, internal_outcomes_lengthT * sizeof(char*));
+      internal_outcomes_length = internal_outcomes_lengthT;
+      for( uint32_t i = 0; i < internal_outcomes_length; i++){
+      uint32_t length_st_internal_outcomes;
+      arrToVar(length_st_internal_outcomes, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_internal_outcomes; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_internal_outcomes-1]=0;
+      this->st_internal_outcomes = (char *)(inbuffer + offset-1);
+      offset += length_st_internal_outcomes;
+        memcpy( &(this->internal_outcomes[i]), &(this->st_internal_outcomes), sizeof(char*));
+      }
+      uint32_t outcomes_from_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->outcomes_from_length);
+      if(outcomes_from_lengthT > outcomes_from_length)
+        this->outcomes_from = (char**)realloc(this->outcomes_from, outcomes_from_lengthT * sizeof(char*));
+      outcomes_from_length = outcomes_from_lengthT;
+      for( uint32_t i = 0; i < outcomes_from_length; i++){
+      uint32_t length_st_outcomes_from;
+      arrToVar(length_st_outcomes_from, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_outcomes_from; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_outcomes_from-1]=0;
+      this->st_outcomes_from = (char *)(inbuffer + offset-1);
+      offset += length_st_outcomes_from;
+        memcpy( &(this->outcomes_from[i]), &(this->st_outcomes_from), sizeof(char*));
+      }
+      uint32_t outcomes_to_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->outcomes_to_length);
+      if(outcomes_to_lengthT > outcomes_to_length)
+        this->outcomes_to = (char**)realloc(this->outcomes_to, outcomes_to_lengthT * sizeof(char*));
+      outcomes_to_length = outcomes_to_lengthT;
+      for( uint32_t i = 0; i < outcomes_to_length; i++){
+      uint32_t length_st_outcomes_to;
+      arrToVar(length_st_outcomes_to, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_outcomes_to; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_outcomes_to-1]=0;
+      this->st_outcomes_to = (char *)(inbuffer + offset-1);
+      offset += length_st_outcomes_to;
+        memcpy( &(this->outcomes_to[i]), &(this->st_outcomes_to), sizeof(char*));
+      }
+      uint32_t container_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->container_outcomes_length);
+      if(container_outcomes_lengthT > container_outcomes_length)
+        this->container_outcomes = (char**)realloc(this->container_outcomes, container_outcomes_lengthT * sizeof(char*));
+      container_outcomes_length = container_outcomes_lengthT;
+      for( uint32_t i = 0; i < container_outcomes_length; i++){
+      uint32_t length_st_container_outcomes;
+      arrToVar(length_st_container_outcomes, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_container_outcomes; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_container_outcomes-1]=0;
+      this->st_container_outcomes = (char *)(inbuffer + offset-1);
+      offset += length_st_container_outcomes;
+        memcpy( &(this->container_outcomes[i]), &(this->st_container_outcomes), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "smach_msgs/SmachContainerStructure"; };
+    const char * getMD5(){ return "3d3d1e0d0f99779ee9e58101a5dcf7ea"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Bool.h b/rosserial_test/Inc/std_msgs/Bool.h
new file mode 100644 (file)
index 0000000..9cfebb5
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_std_msgs_Bool_h
+#define _ROS_std_msgs_Bool_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Bool : public ros::Msg
+  {
+    public:
+      typedef bool _data_type;
+      _data_type data;
+
+    Bool():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Bool"; };
+    const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Byte.h b/rosserial_test/Inc/std_msgs/Byte.h
new file mode 100644 (file)
index 0000000..ba06017
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_std_msgs_Byte_h
+#define _ROS_std_msgs_Byte_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Byte : public ros::Msg
+  {
+    public:
+      typedef int8_t _data_type;
+      _data_type data;
+
+    Byte():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Byte"; };
+    const char * getMD5(){ return "ad736a2e8818154c487bb80fe42ce43b"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/ByteMultiArray.h b/rosserial_test/Inc/std_msgs/ByteMultiArray.h
new file mode 100644 (file)
index 0000000..51e72b0
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_std_msgs_ByteMultiArray_h
+#define _ROS_std_msgs_ByteMultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class ByteMultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    ByteMultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/ByteMultiArray"; };
+    const char * getMD5(){ return "70ea476cbcfd65ac2f68f3cda1e891fe"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Char.h b/rosserial_test/Inc/std_msgs/Char.h
new file mode 100644 (file)
index 0000000..d705c4c
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef _ROS_std_msgs_Char_h
+#define _ROS_std_msgs_Char_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Char : public ros::Msg
+  {
+    public:
+      typedef uint8_t _data_type;
+      _data_type data;
+
+    Char():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Char"; };
+    const char * getMD5(){ return "1bf77f25acecdedba0e224b162199717"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/ColorRGBA.h b/rosserial_test/Inc/std_msgs/ColorRGBA.h
new file mode 100644 (file)
index 0000000..b692492
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_std_msgs_ColorRGBA_h
+#define _ROS_std_msgs_ColorRGBA_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class ColorRGBA : public ros::Msg
+  {
+    public:
+      typedef float _r_type;
+      _r_type r;
+      typedef float _g_type;
+      _g_type g;
+      typedef float _b_type;
+      _b_type b;
+      typedef float _a_type;
+      _a_type a;
+
+    ColorRGBA():
+      r(0),
+      g(0),
+      b(0),
+      a(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_r;
+      u_r.real = this->r;
+      *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->r);
+      union {
+        float real;
+        uint32_t base;
+      } u_g;
+      u_g.real = this->g;
+      *(outbuffer + offset + 0) = (u_g.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_g.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_g.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_g.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->g);
+      union {
+        float real;
+        uint32_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->b);
+      union {
+        float real;
+        uint32_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->a);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_r;
+      u_r.base = 0;
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->r = u_r.real;
+      offset += sizeof(this->r);
+      union {
+        float real;
+        uint32_t base;
+      } u_g;
+      u_g.base = 0;
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->g = u_g.real;
+      offset += sizeof(this->g);
+      union {
+        float real;
+        uint32_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+      union {
+        float real;
+        uint32_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/ColorRGBA"; };
+    const char * getMD5(){ return "a29a96539573343b1310c73607334b00"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Duration.h b/rosserial_test/Inc/std_msgs/Duration.h
new file mode 100644 (file)
index 0000000..7d65999
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Duration_h
+#define _ROS_std_msgs_Duration_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace std_msgs
+{
+
+  class Duration : public ros::Msg
+  {
+    public:
+      typedef ros::Duration _data_type;
+      _data_type data;
+
+    Duration():
+      data()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.sec);
+      *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.sec);
+      this->data.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Duration"; };
+    const char * getMD5(){ return "3e286caf4241d664e55f3ad380e2ae46"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Empty.h b/rosserial_test/Inc/std_msgs/Empty.h
new file mode 100644 (file)
index 0000000..16d0df4
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_std_msgs_Empty_h
+#define _ROS_std_msgs_Empty_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Empty : public ros::Msg
+  {
+    public:
+
+    Empty()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Empty"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Float32.h b/rosserial_test/Inc/std_msgs/Float32.h
new file mode 100644 (file)
index 0000000..fef15ff
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Float32_h
+#define _ROS_std_msgs_Float32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Float32 : public ros::Msg
+  {
+    public:
+      typedef float _data_type;
+      _data_type data;
+
+    Float32():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float32"; };
+    const char * getMD5(){ return "73fcbf46b49191e672908e50842a83d4"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Float32MultiArray.h b/rosserial_test/Inc/std_msgs/Float32MultiArray.h
new file mode 100644 (file)
index 0000000..eb8aba0
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_std_msgs_Float32MultiArray_h
+#define _ROS_std_msgs_Float32MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Float32MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef float _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Float32MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (float*)realloc(this->data, data_lengthT * sizeof(float));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float32MultiArray"; };
+    const char * getMD5(){ return "6a40e0ffa6a17a503ac3f8616991b1f6"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Float64.h b/rosserial_test/Inc/std_msgs/Float64.h
new file mode 100644 (file)
index 0000000..1960ca5
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_std_msgs_Float64_h
+#define _ROS_std_msgs_Float64_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Float64 : public ros::Msg
+  {
+    public:
+      typedef double _data_type;
+      _data_type data;
+
+    Float64():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        double real;
+        uint64_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float64"; };
+    const char * getMD5(){ return "fdb28210bfa9d7c91146260178d9a584"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Float64MultiArray.h b/rosserial_test/Inc/std_msgs/Float64MultiArray.h
new file mode 100644 (file)
index 0000000..20fcf90
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_std_msgs_Float64MultiArray_h
+#define _ROS_std_msgs_Float64MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Float64MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef double _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Float64MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (double*)realloc(this->data, data_lengthT * sizeof(double));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(double));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float64MultiArray"; };
+    const char * getMD5(){ return "4b7d974086d4060e7db4613a7e6c3ba4"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Header.h b/rosserial_test/Inc/std_msgs/Header.h
new file mode 100644 (file)
index 0000000..f7b0944
--- /dev/null
@@ -0,0 +1,92 @@
+#ifndef _ROS_std_msgs_Header_h
+#define _ROS_std_msgs_Header_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace std_msgs
+{
+
+  class Header : public ros::Msg
+  {
+    public:
+      typedef uint32_t _seq_type;
+      _seq_type seq;
+      typedef ros::Time _stamp_type;
+      _stamp_type stamp;
+      typedef const char* _frame_id_type;
+      _frame_id_type frame_id;
+
+    Header():
+      seq(0),
+      stamp(),
+      frame_id("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->seq >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->seq >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->seq >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->seq >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->seq);
+      *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.sec);
+      *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_frame_id = strlen(this->frame_id);
+      varToArr(outbuffer + offset, length_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->frame_id, length_frame_id);
+      offset += length_frame_id;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->seq =  ((uint32_t) (*(inbuffer + offset)));
+      this->seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->seq);
+      this->stamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.sec);
+      this->stamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_frame_id;
+      arrToVar(length_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_frame_id-1]=0;
+      this->frame_id = (char *)(inbuffer + offset-1);
+      offset += length_frame_id;
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Header"; };
+    const char * getMD5(){ return "2176decaecbce78abc3b96ef049fabed"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int16.h b/rosserial_test/Inc/std_msgs/Int16.h
new file mode 100644 (file)
index 0000000..a698660
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef _ROS_std_msgs_Int16_h
+#define _ROS_std_msgs_Int16_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int16 : public ros::Msg
+  {
+    public:
+      typedef int16_t _data_type;
+      _data_type data;
+
+    Int16():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int16"; };
+    const char * getMD5(){ return "8524586e34fbd7cb1c08c5f5f1ca0e57"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int16MultiArray.h b/rosserial_test/Inc/std_msgs/Int16MultiArray.h
new file mode 100644 (file)
index 0000000..22ffaa5
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_std_msgs_Int16MultiArray_h
+#define _ROS_std_msgs_Int16MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int16MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int16_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int16MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int16_t*)realloc(this->data, data_lengthT * sizeof(int16_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int16_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int16MultiArray"; };
+    const char * getMD5(){ return "d9338d7f523fcb692fae9d0a0e9f067c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int32.h b/rosserial_test/Inc/std_msgs/Int32.h
new file mode 100644 (file)
index 0000000..5f4ed0c
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Int32_h
+#define _ROS_std_msgs_Int32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int32 : public ros::Msg
+  {
+    public:
+      typedef int32_t _data_type;
+      _data_type data;
+
+    Int32():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int32"; };
+    const char * getMD5(){ return "da5909fbe378aeaf85e547e830cc1bb7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int32MultiArray.h b/rosserial_test/Inc/std_msgs/Int32MultiArray.h
new file mode 100644 (file)
index 0000000..30d1424
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_std_msgs_Int32MultiArray_h
+#define _ROS_std_msgs_Int32MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int32MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int32_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int32MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int32_t*)realloc(this->data, data_lengthT * sizeof(int32_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int32MultiArray"; };
+    const char * getMD5(){ return "1d99f79f8b325b44fee908053e9c945b"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int64.h b/rosserial_test/Inc/std_msgs/Int64.h
new file mode 100644 (file)
index 0000000..ba99461
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_std_msgs_Int64_h
+#define _ROS_std_msgs_Int64_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int64 : public ros::Msg
+  {
+    public:
+      typedef int64_t _data_type;
+      _data_type data;
+
+    Int64():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int64"; };
+    const char * getMD5(){ return "34add168574510e6e17f5d23ecc077ef"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int64MultiArray.h b/rosserial_test/Inc/std_msgs/Int64MultiArray.h
new file mode 100644 (file)
index 0000000..cd0bcbb
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_std_msgs_Int64MultiArray_h
+#define _ROS_std_msgs_Int64MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int64MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int64_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int64MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int64_t*)realloc(this->data, data_lengthT * sizeof(int64_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int64_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int64MultiArray"; };
+    const char * getMD5(){ return "54865aa6c65be0448113a2afc6a49270"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int8.h b/rosserial_test/Inc/std_msgs/Int8.h
new file mode 100644 (file)
index 0000000..8c1f8e0
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_std_msgs_Int8_h
+#define _ROS_std_msgs_Int8_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int8 : public ros::Msg
+  {
+    public:
+      typedef int8_t _data_type;
+      _data_type data;
+
+    Int8():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int8"; };
+    const char * getMD5(){ return "27ffa0c9c4b8fb8492252bcad9e5c57b"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Int8MultiArray.h b/rosserial_test/Inc/std_msgs/Int8MultiArray.h
new file mode 100644 (file)
index 0000000..da14fc8
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_std_msgs_Int8MultiArray_h
+#define _ROS_std_msgs_Int8MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int8MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int8MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int8MultiArray"; };
+    const char * getMD5(){ return "d7c1af35a1b4781bbe79e03dd94b7c13"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/MultiArrayDimension.h b/rosserial_test/Inc/std_msgs/MultiArrayDimension.h
new file mode 100644 (file)
index 0000000..5b09475
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef _ROS_std_msgs_MultiArrayDimension_h
+#define _ROS_std_msgs_MultiArrayDimension_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class MultiArrayDimension : public ros::Msg
+  {
+    public:
+      typedef const char* _label_type;
+      _label_type label;
+      typedef uint32_t _size_type;
+      _size_type size;
+      typedef uint32_t _stride_type;
+      _stride_type stride;
+
+    MultiArrayDimension():
+      label(""),
+      size(0),
+      stride(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_label = strlen(this->label);
+      varToArr(outbuffer + offset, length_label);
+      offset += 4;
+      memcpy(outbuffer + offset, this->label, length_label);
+      offset += length_label;
+      *(outbuffer + offset + 0) = (this->size >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->size >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->size >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->size >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->size);
+      *(outbuffer + offset + 0) = (this->stride >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stride >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stride >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stride >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stride);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_label;
+      arrToVar(length_label, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_label; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_label-1]=0;
+      this->label = (char *)(inbuffer + offset-1);
+      offset += length_label;
+      this->size =  ((uint32_t) (*(inbuffer + offset)));
+      this->size |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->size |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->size |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->size);
+      this->stride =  ((uint32_t) (*(inbuffer + offset)));
+      this->stride |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stride |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stride |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stride);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/MultiArrayDimension"; };
+    const char * getMD5(){ return "4cd0c83a8683deae40ecdac60e53bfa8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/MultiArrayLayout.h b/rosserial_test/Inc/std_msgs/MultiArrayLayout.h
new file mode 100644 (file)
index 0000000..3d1c8df
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef _ROS_std_msgs_MultiArrayLayout_h
+#define _ROS_std_msgs_MultiArrayLayout_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayDimension.h"
+
+namespace std_msgs
+{
+
+  class MultiArrayLayout : public ros::Msg
+  {
+    public:
+      uint32_t dim_length;
+      typedef std_msgs::MultiArrayDimension _dim_type;
+      _dim_type st_dim;
+      _dim_type * dim;
+      typedef uint32_t _data_offset_type;
+      _data_offset_type data_offset;
+
+    MultiArrayLayout():
+      dim_length(0), dim(NULL),
+      data_offset(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->dim_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->dim_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->dim_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->dim_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->dim_length);
+      for( uint32_t i = 0; i < dim_length; i++){
+      offset += this->dim[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->data_offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t dim_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->dim_length);
+      if(dim_lengthT > dim_length)
+        this->dim = (std_msgs::MultiArrayDimension*)realloc(this->dim, dim_lengthT * sizeof(std_msgs::MultiArrayDimension));
+      dim_length = dim_lengthT;
+      for( uint32_t i = 0; i < dim_length; i++){
+      offset += this->st_dim.deserialize(inbuffer + offset);
+        memcpy( &(this->dim[i]), &(this->st_dim), sizeof(std_msgs::MultiArrayDimension));
+      }
+      this->data_offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->data_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data_offset);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/MultiArrayLayout"; };
+    const char * getMD5(){ return "0fed2a11c13e11c5571b4e2a995a91a3"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/String.h b/rosserial_test/Inc/std_msgs/String.h
new file mode 100644 (file)
index 0000000..3fce50d
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef _ROS_std_msgs_String_h
+#define _ROS_std_msgs_String_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class String : public ros::Msg
+  {
+    public:
+      typedef const char* _data_type;
+      _data_type data;
+
+    String():
+      data("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_data = strlen(this->data);
+      varToArr(outbuffer + offset, length_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->data, length_data);
+      offset += length_data;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_data;
+      arrToVar(length_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_data-1]=0;
+      this->data = (char *)(inbuffer + offset-1);
+      offset += length_data;
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/String"; };
+    const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/Time.h b/rosserial_test/Inc/std_msgs/Time.h
new file mode 100644 (file)
index 0000000..2fba3cb
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Time_h
+#define _ROS_std_msgs_Time_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/ros_time.h"
+
+namespace std_msgs
+{
+
+  class Time : public ros::Msg
+  {
+    public:
+      typedef ros::Time _data_type;
+      _data_type data;
+
+    Time():
+      data()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.sec);
+      *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.sec);
+      this->data.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Time"; };
+    const char * getMD5(){ return "cd7166c74c552c311fbcc2fe5a7bc289"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt16.h b/rosserial_test/Inc/std_msgs/UInt16.h
new file mode 100644 (file)
index 0000000..63ab7ec
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef _ROS_std_msgs_UInt16_h
+#define _ROS_std_msgs_UInt16_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt16 : public ros::Msg
+  {
+    public:
+      typedef uint16_t _data_type;
+      _data_type data;
+
+    UInt16():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint16_t) (*(inbuffer + offset)));
+      this->data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt16"; };
+    const char * getMD5(){ return "1df79edf208b629fe6b81923a544552d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt16MultiArray.h b/rosserial_test/Inc/std_msgs/UInt16MultiArray.h
new file mode 100644 (file)
index 0000000..f528d1f
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_std_msgs_UInt16MultiArray_h
+#define _ROS_std_msgs_UInt16MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt16MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint16_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt16MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint16_t*)realloc(this->data, data_lengthT * sizeof(uint16_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint16_t) (*(inbuffer + offset)));
+      this->st_data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint16_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt16MultiArray"; };
+    const char * getMD5(){ return "52f264f1c973c4b73790d384c6cb4484"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt32.h b/rosserial_test/Inc/std_msgs/UInt32.h
new file mode 100644 (file)
index 0000000..38c0adf
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef _ROS_std_msgs_UInt32_h
+#define _ROS_std_msgs_UInt32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt32 : public ros::Msg
+  {
+    public:
+      typedef uint32_t _data_type;
+      _data_type data;
+
+    UInt32():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint32_t) (*(inbuffer + offset)));
+      this->data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt32"; };
+    const char * getMD5(){ return "304a39449588c7f8ce2df6e8001c5fce"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt32MultiArray.h b/rosserial_test/Inc/std_msgs/UInt32MultiArray.h
new file mode 100644 (file)
index 0000000..4022f51
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef _ROS_std_msgs_UInt32MultiArray_h
+#define _ROS_std_msgs_UInt32MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt32MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint32_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt32MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint32_t) (*(inbuffer + offset)));
+      this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt32MultiArray"; };
+    const char * getMD5(){ return "4d6a180abc9be191b96a7eda6c8a233d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt64.h b/rosserial_test/Inc/std_msgs/UInt64.h
new file mode 100644 (file)
index 0000000..cc23199
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef _ROS_std_msgs_UInt64_h
+#define _ROS_std_msgs_UInt64_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt64 : public ros::Msg
+  {
+    public:
+      typedef uint64_t _data_type;
+      _data_type data;
+
+    UInt64():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->data >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->data >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->data >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->data >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint64_t) (*(inbuffer + offset)));
+      this->data |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt64"; };
+    const char * getMD5(){ return "1b2a79973e8bf53d7b53acb71299cb57"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt64MultiArray.h b/rosserial_test/Inc/std_msgs/UInt64MultiArray.h
new file mode 100644 (file)
index 0000000..bee1fb3
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_std_msgs_UInt64MultiArray_h
+#define _ROS_std_msgs_UInt64MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt64MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint64_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt64MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->data[i] >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->data[i] >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->data[i] >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->data[i] >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint64_t*)realloc(this->data, data_lengthT * sizeof(uint64_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint64_t) (*(inbuffer + offset)));
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint64_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt64MultiArray"; };
+    const char * getMD5(){ return "6088f127afb1d6c72927aa1247e945af"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt8.h b/rosserial_test/Inc/std_msgs/UInt8.h
new file mode 100644 (file)
index 0000000..bd7901c
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef _ROS_std_msgs_UInt8_h
+#define _ROS_std_msgs_UInt8_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt8 : public ros::Msg
+  {
+    public:
+      typedef uint8_t _data_type;
+      _data_type data;
+
+    UInt8():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt8"; };
+    const char * getMD5(){ return "7c8164229e7d2c17eb95e9231617fdee"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_msgs/UInt8MultiArray.h b/rosserial_test/Inc/std_msgs/UInt8MultiArray.h
new file mode 100644 (file)
index 0000000..a579fa7
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef _ROS_std_msgs_UInt8MultiArray_h
+#define _ROS_std_msgs_UInt8MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt8MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt8MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt8MultiArray"; };
+    const char * getMD5(){ return "82373f1612381bb6ee473b5cd6f5d89c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_srvs/Empty.h b/rosserial_test/Inc/std_srvs/Empty.h
new file mode 100644 (file)
index 0000000..b040dd2
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_SERVICE_Empty_h
+#define _ROS_SERVICE_Empty_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_srvs
+{
+
+static const char EMPTY[] = "std_srvs/Empty";
+
+  class EmptyRequest : public ros::Msg
+  {
+    public:
+
+    EmptyRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class EmptyResponse : public ros::Msg
+  {
+    public:
+
+    EmptyResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class Empty {
+    public:
+    typedef EmptyRequest Request;
+    typedef EmptyResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_srvs/SetBool.h b/rosserial_test/Inc/std_srvs/SetBool.h
new file mode 100644 (file)
index 0000000..1feb34e
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_SERVICE_SetBool_h
+#define _ROS_SERVICE_SetBool_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_srvs
+{
+
+static const char SETBOOL[] = "std_srvs/SetBool";
+
+  class SetBoolRequest : public ros::Msg
+  {
+    public:
+      typedef bool _data_type;
+      _data_type data;
+
+    SetBoolRequest():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return SETBOOL; };
+    const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; };
+
+  };
+
+  class SetBoolResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _message_type;
+      _message_type message;
+
+    SetBoolResponse():
+      success(0),
+      message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETBOOL; };
+    const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; };
+
+  };
+
+  class SetBool {
+    public:
+    typedef SetBoolRequest Request;
+    typedef SetBoolResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/std_srvs/Trigger.h b/rosserial_test/Inc/std_srvs/Trigger.h
new file mode 100644 (file)
index 0000000..34d1e48
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_Trigger_h
+#define _ROS_SERVICE_Trigger_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_srvs
+{
+
+static const char TRIGGER[] = "std_srvs/Trigger";
+
+  class TriggerRequest : public ros::Msg
+  {
+    public:
+
+    TriggerRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return TRIGGER; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class TriggerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _message_type;
+      _message_type message;
+
+    TriggerResponse():
+      success(0),
+      message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+     return offset;
+    }
+
+    const char * getType(){ return TRIGGER; };
+    const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; };
+
+  };
+
+  class Trigger {
+    public:
+    typedef TriggerRequest Request;
+    typedef TriggerResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/stereo_msgs/DisparityImage.h b/rosserial_test/Inc/stereo_msgs/DisparityImage.h
new file mode 100644 (file)
index 0000000..a038acd
--- /dev/null
@@ -0,0 +1,176 @@
+#ifndef _ROS_stereo_msgs_DisparityImage_h
+#define _ROS_stereo_msgs_DisparityImage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/Image.h"
+#include "sensor_msgs/RegionOfInterest.h"
+
+namespace stereo_msgs
+{
+
+  class DisparityImage : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef sensor_msgs::Image _image_type;
+      _image_type image;
+      typedef float _f_type;
+      _f_type f;
+      typedef float _T_type;
+      _T_type T;
+      typedef sensor_msgs::RegionOfInterest _valid_window_type;
+      _valid_window_type valid_window;
+      typedef float _min_disparity_type;
+      _min_disparity_type min_disparity;
+      typedef float _max_disparity_type;
+      _max_disparity_type max_disparity;
+      typedef float _delta_d_type;
+      _delta_d_type delta_d;
+
+    DisparityImage():
+      header(),
+      image(),
+      f(0),
+      T(0),
+      valid_window(),
+      min_disparity(0),
+      max_disparity(0),
+      delta_d(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->image.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_f;
+      u_f.real = this->f;
+      *(outbuffer + offset + 0) = (u_f.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_f.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_f.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_f.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->f);
+      union {
+        float real;
+        uint32_t base;
+      } u_T;
+      u_T.real = this->T;
+      *(outbuffer + offset + 0) = (u_T.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_T.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_T.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_T.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->T);
+      offset += this->valid_window.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_disparity;
+      u_min_disparity.real = this->min_disparity;
+      *(outbuffer + offset + 0) = (u_min_disparity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_min_disparity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_min_disparity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_min_disparity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_disparity;
+      u_max_disparity.real = this->max_disparity;
+      *(outbuffer + offset + 0) = (u_max_disparity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_disparity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_disparity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_disparity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_delta_d;
+      u_delta_d.real = this->delta_d;
+      *(outbuffer + offset + 0) = (u_delta_d.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_delta_d.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_delta_d.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_delta_d.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delta_d);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->image.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_f;
+      u_f.base = 0;
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->f = u_f.real;
+      offset += sizeof(this->f);
+      union {
+        float real;
+        uint32_t base;
+      } u_T;
+      u_T.base = 0;
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->T = u_T.real;
+      offset += sizeof(this->T);
+      offset += this->valid_window.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_disparity;
+      u_min_disparity.base = 0;
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->min_disparity = u_min_disparity.real;
+      offset += sizeof(this->min_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_disparity;
+      u_max_disparity.base = 0;
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->max_disparity = u_max_disparity.real;
+      offset += sizeof(this->max_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_delta_d;
+      u_delta_d.base = 0;
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->delta_d = u_delta_d.real;
+      offset += sizeof(this->delta_d);
+     return offset;
+    }
+
+    const char * getType(){ return "stereo_msgs/DisparityImage"; };
+    const char * getMD5(){ return "04a177815f75271039fa21f16acad8c9"; };
+
+  };
+
+}
+#endif
index 0da8dc52b8cfaa464cdcc76d90992bf711763e4c..de63831a16540d1c6b7d4bd1d88848e69665cfeb 100644 (file)
@@ -63,7 +63,7 @@
 /* #define HAL_MMC_MODULE_ENABLED   */\r
 /* #define HAL_SPDIFRX_MODULE_ENABLED   */\r
 /* #define HAL_SPI_MODULE_ENABLED   */\r
-/* #define HAL_TIM_MODULE_ENABLED   */\r
+#define HAL_TIM_MODULE_ENABLED\r
 #define HAL_UART_MODULE_ENABLED\r
 /* #define HAL_USART_MODULE_ENABLED   */\r
 /* #define HAL_IRDA_MODULE_ENABLED   */\r
index 95d72085882e61d9c66caffce34a180f3fdd939b..87bbc224d738431d3a3e4c53f41c9210266c32db 100644 (file)
@@ -1,3 +1,3 @@
 #pragma once
 
-int write(int i);
+void write(uint8_t* data, int length, UART_HandleTypeDef huart);
diff --git a/rosserial_test/Inc/tf/FrameGraph.h b/rosserial_test/Inc/tf/FrameGraph.h
new file mode 100644 (file)
index 0000000..e95a945
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_FrameGraph_h
+#define _ROS_SERVICE_FrameGraph_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf
+{
+
+static const char FRAMEGRAPH[] = "tf/FrameGraph";
+
+  class FrameGraphRequest : public ros::Msg
+  {
+    public:
+
+    FrameGraphRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class FrameGraphResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _dot_graph_type;
+      _dot_graph_type dot_graph;
+
+    FrameGraphResponse():
+      dot_graph("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_dot_graph = strlen(this->dot_graph);
+      varToArr(outbuffer + offset, length_dot_graph);
+      offset += 4;
+      memcpy(outbuffer + offset, this->dot_graph, length_dot_graph);
+      offset += length_dot_graph;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_dot_graph;
+      arrToVar(length_dot_graph, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_dot_graph; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_dot_graph-1]=0;
+      this->dot_graph = (char *)(inbuffer + offset-1);
+      offset += length_dot_graph;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "c4af9ac907e58e906eb0b6e3c58478c0"; };
+
+  };
+
+  class FrameGraph {
+    public:
+    typedef FrameGraphRequest Request;
+    typedef FrameGraphResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf/tf.h b/rosserial_test/Inc/tf/tf.h
new file mode 100644 (file)
index 0000000..97858fe
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_TF_H_
+#define ROS_TF_H_
+
+#include "geometry_msgs/TransformStamped.h"
+
+namespace tf
+{
+
+static inline geometry_msgs::Quaternion createQuaternionFromYaw(double yaw)
+{
+  geometry_msgs::Quaternion q;
+  q.x = 0;
+  q.y = 0;
+  q.z = sin(yaw * 0.5);
+  q.w = cos(yaw * 0.5);
+  return q;
+}
+
+}
+
+#endif
+
diff --git a/rosserial_test/Inc/tf/tfMessage.h b/rosserial_test/Inc/tf/tfMessage.h
new file mode 100644 (file)
index 0000000..991ad06
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_tf_tfMessage_h
+#define _ROS_tf_tfMessage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/TransformStamped.h"
+
+namespace tf
+{
+
+  class tfMessage : public ros::Msg
+  {
+    public:
+      uint32_t transforms_length;
+      typedef geometry_msgs::TransformStamped _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+
+    tfMessage():
+      transforms_length(0), transforms(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "tf/tfMessage"; };
+    const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf/transform_broadcaster.h b/rosserial_test/Inc/tf/transform_broadcaster.h
new file mode 100644 (file)
index 0000000..6c4e5fe
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_TRANSFORM_BROADCASTER_H_
+#define ROS_TRANSFORM_BROADCASTER_H_
+
+#include "ros.h"
+#include "tfMessage.h"
+
+namespace tf
+{
+
+class TransformBroadcaster
+{
+public:
+  TransformBroadcaster() : publisher_("/tf", &internal_msg) {}
+
+  void init(ros::NodeHandle &nh)
+  {
+    nh.advertise(publisher_);
+  }
+
+  void sendTransform(geometry_msgs::TransformStamped &transform)
+  {
+    internal_msg.transforms_length = 1;
+    internal_msg.transforms = &transform;
+    publisher_.publish(&internal_msg);
+  }
+
+private:
+  tf::tfMessage internal_msg;
+  ros::Publisher publisher_;
+};
+
+}
+
+#endif
+
diff --git a/rosserial_test/Inc/tf2_msgs/FrameGraph.h b/rosserial_test/Inc/tf2_msgs/FrameGraph.h
new file mode 100644 (file)
index 0000000..9145639
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_FrameGraph_h
+#define _ROS_SERVICE_FrameGraph_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf2_msgs
+{
+
+static const char FRAMEGRAPH[] = "tf2_msgs/FrameGraph";
+
+  class FrameGraphRequest : public ros::Msg
+  {
+    public:
+
+    FrameGraphRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class FrameGraphResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _frame_yaml_type;
+      _frame_yaml_type frame_yaml;
+
+    FrameGraphResponse():
+      frame_yaml("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_frame_yaml = strlen(this->frame_yaml);
+      varToArr(outbuffer + offset, length_frame_yaml);
+      offset += 4;
+      memcpy(outbuffer + offset, this->frame_yaml, length_frame_yaml);
+      offset += length_frame_yaml;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_frame_yaml;
+      arrToVar(length_frame_yaml, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_frame_yaml; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_frame_yaml-1]=0;
+      this->frame_yaml = (char *)(inbuffer + offset-1);
+      offset += length_frame_yaml;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "437ea58e9463815a0d511c7326b686b0"; };
+
+  };
+
+  class FrameGraph {
+    public:
+    typedef FrameGraphRequest Request;
+    typedef FrameGraphResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/LookupTransformAction.h b/rosserial_test/Inc/tf2_msgs/LookupTransformAction.h
new file mode 100644 (file)
index 0000000..2a7444b
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformAction_h
+#define _ROS_tf2_msgs_LookupTransformAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "tf2_msgs/LookupTransformActionGoal.h"
+#include "tf2_msgs/LookupTransformActionResult.h"
+#include "tf2_msgs/LookupTransformActionFeedback.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformAction : public ros::Msg
+  {
+    public:
+      typedef tf2_msgs::LookupTransformActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef tf2_msgs::LookupTransformActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef tf2_msgs::LookupTransformActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    LookupTransformAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformAction"; };
+    const char * getMD5(){ return "7ee01ba91a56c2245c610992dbaa3c37"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/LookupTransformActionFeedback.h b/rosserial_test/Inc/tf2_msgs/LookupTransformActionFeedback.h
new file mode 100644 (file)
index 0000000..944f42d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformActionFeedback_h
+#define _ROS_tf2_msgs_LookupTransformActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "tf2_msgs/LookupTransformFeedback.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef tf2_msgs::LookupTransformFeedback _feedback_type;
+      _feedback_type feedback;
+
+    LookupTransformActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/LookupTransformActionGoal.h b/rosserial_test/Inc/tf2_msgs/LookupTransformActionGoal.h
new file mode 100644 (file)
index 0000000..f0fa740
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformActionGoal_h
+#define _ROS_tf2_msgs_LookupTransformActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "tf2_msgs/LookupTransformGoal.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef tf2_msgs::LookupTransformGoal _goal_type;
+      _goal_type goal;
+
+    LookupTransformActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformActionGoal"; };
+    const char * getMD5(){ return "f2e7bcdb75c847978d0351a13e699da5"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/LookupTransformActionResult.h b/rosserial_test/Inc/tf2_msgs/LookupTransformActionResult.h
new file mode 100644 (file)
index 0000000..b45a8b6
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformActionResult_h
+#define _ROS_tf2_msgs_LookupTransformActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "tf2_msgs/LookupTransformResult.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef tf2_msgs::LookupTransformResult _result_type;
+      _result_type result;
+
+    LookupTransformActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformActionResult"; };
+    const char * getMD5(){ return "ac26ce75a41384fa8bb4dc10f491ab90"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/LookupTransformFeedback.h b/rosserial_test/Inc/tf2_msgs/LookupTransformFeedback.h
new file mode 100644 (file)
index 0000000..fe78dce
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_tf2_msgs_LookupTransformFeedback_h
+#define _ROS_tf2_msgs_LookupTransformFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformFeedback : public ros::Msg
+  {
+    public:
+
+    LookupTransformFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/LookupTransformGoal.h b/rosserial_test/Inc/tf2_msgs/LookupTransformGoal.h
new file mode 100644 (file)
index 0000000..11cc856
--- /dev/null
@@ -0,0 +1,178 @@
+#ifndef _ROS_tf2_msgs_LookupTransformGoal_h
+#define _ROS_tf2_msgs_LookupTransformGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "ros/duration.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformGoal : public ros::Msg
+  {
+    public:
+      typedef const char* _target_frame_type;
+      _target_frame_type target_frame;
+      typedef const char* _source_frame_type;
+      _source_frame_type source_frame;
+      typedef ros::Time _source_time_type;
+      _source_time_type source_time;
+      typedef ros::Duration _timeout_type;
+      _timeout_type timeout;
+      typedef ros::Time _target_time_type;
+      _target_time_type target_time;
+      typedef const char* _fixed_frame_type;
+      _fixed_frame_type fixed_frame;
+      typedef bool _advanced_type;
+      _advanced_type advanced;
+
+    LookupTransformGoal():
+      target_frame(""),
+      source_frame(""),
+      source_time(),
+      timeout(),
+      target_time(),
+      fixed_frame(""),
+      advanced(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_target_frame = strlen(this->target_frame);
+      varToArr(outbuffer + offset, length_target_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->target_frame, length_target_frame);
+      offset += length_target_frame;
+      uint32_t length_source_frame = strlen(this->source_frame);
+      varToArr(outbuffer + offset, length_source_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->source_frame, length_source_frame);
+      offset += length_source_frame;
+      *(outbuffer + offset + 0) = (this->source_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->source_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->source_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->source_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->source_time.sec);
+      *(outbuffer + offset + 0) = (this->source_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->source_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->source_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->source_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->source_time.nsec);
+      *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.sec);
+      *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.nsec);
+      *(outbuffer + offset + 0) = (this->target_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->target_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->target_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->target_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->target_time.sec);
+      *(outbuffer + offset + 0) = (this->target_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->target_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->target_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->target_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->target_time.nsec);
+      uint32_t length_fixed_frame = strlen(this->fixed_frame);
+      varToArr(outbuffer + offset, length_fixed_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->fixed_frame, length_fixed_frame);
+      offset += length_fixed_frame;
+      union {
+        bool real;
+        uint8_t base;
+      } u_advanced;
+      u_advanced.real = this->advanced;
+      *(outbuffer + offset + 0) = (u_advanced.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->advanced);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_target_frame;
+      arrToVar(length_target_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_target_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_target_frame-1]=0;
+      this->target_frame = (char *)(inbuffer + offset-1);
+      offset += length_target_frame;
+      uint32_t length_source_frame;
+      arrToVar(length_source_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_source_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_source_frame-1]=0;
+      this->source_frame = (char *)(inbuffer + offset-1);
+      offset += length_source_frame;
+      this->source_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->source_time.sec);
+      this->source_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->source_time.nsec);
+      this->timeout.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.sec);
+      this->timeout.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.nsec);
+      this->target_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->target_time.sec);
+      this->target_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->target_time.nsec);
+      uint32_t length_fixed_frame;
+      arrToVar(length_fixed_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_fixed_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_fixed_frame-1]=0;
+      this->fixed_frame = (char *)(inbuffer + offset-1);
+      offset += length_fixed_frame;
+      union {
+        bool real;
+        uint8_t base;
+      } u_advanced;
+      u_advanced.base = 0;
+      u_advanced.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->advanced = u_advanced.real;
+      offset += sizeof(this->advanced);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformGoal"; };
+    const char * getMD5(){ return "35e3720468131d675a18bb6f3e5f22f8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/LookupTransformResult.h b/rosserial_test/Inc/tf2_msgs/LookupTransformResult.h
new file mode 100644 (file)
index 0000000..e1e0453
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_tf2_msgs_LookupTransformResult_h
+#define _ROS_tf2_msgs_LookupTransformResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/TransformStamped.h"
+#include "tf2_msgs/TF2Error.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformResult : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::TransformStamped _transform_type;
+      _transform_type transform;
+      typedef tf2_msgs::TF2Error _error_type;
+      _error_type error;
+
+    LookupTransformResult():
+      transform(),
+      error()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->transform.serialize(outbuffer + offset);
+      offset += this->error.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->transform.deserialize(inbuffer + offset);
+      offset += this->error.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformResult"; };
+    const char * getMD5(){ return "3fe5db6a19ca9cfb675418c5ad875c36"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/TF2Error.h b/rosserial_test/Inc/tf2_msgs/TF2Error.h
new file mode 100644 (file)
index 0000000..a44f1e6
--- /dev/null
@@ -0,0 +1,69 @@
+#ifndef _ROS_tf2_msgs_TF2Error_h
+#define _ROS_tf2_msgs_TF2Error_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf2_msgs
+{
+
+  class TF2Error : public ros::Msg
+  {
+    public:
+      typedef uint8_t _error_type;
+      _error_type error;
+      typedef const char* _error_string_type;
+      _error_string_type error_string;
+      enum { NO_ERROR =  0 };
+      enum { LOOKUP_ERROR =  1 };
+      enum { CONNECTIVITY_ERROR =  2 };
+      enum { EXTRAPOLATION_ERROR =  3 };
+      enum { INVALID_ARGUMENT_ERROR =  4 };
+      enum { TIMEOUT_ERROR =  5 };
+      enum { TRANSFORM_ERROR =  6 };
+
+    TF2Error():
+      error(0),
+      error_string("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->error >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->error);
+      uint32_t length_error_string = strlen(this->error_string);
+      varToArr(outbuffer + offset, length_error_string);
+      offset += 4;
+      memcpy(outbuffer + offset, this->error_string, length_error_string);
+      offset += length_error_string;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->error =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->error);
+      uint32_t length_error_string;
+      arrToVar(length_error_string, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_error_string; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_error_string-1]=0;
+      this->error_string = (char *)(inbuffer + offset-1);
+      offset += length_error_string;
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/TF2Error"; };
+    const char * getMD5(){ return "bc6848fd6fd750c92e38575618a4917d"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/tf2_msgs/TFMessage.h b/rosserial_test/Inc/tf2_msgs/TFMessage.h
new file mode 100644 (file)
index 0000000..0fec963
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_tf2_msgs_TFMessage_h
+#define _ROS_tf2_msgs_TFMessage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/TransformStamped.h"
+
+namespace tf2_msgs
+{
+
+  class TFMessage : public ros::Msg
+  {
+    public:
+      uint32_t transforms_length;
+      typedef geometry_msgs::TransformStamped _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+
+    TFMessage():
+      transforms_length(0), transforms(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/TFMessage"; };
+    const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/theora_image_transport/Packet.h b/rosserial_test/Inc/theora_image_transport/Packet.h
new file mode 100644 (file)
index 0000000..4bfe682
--- /dev/null
@@ -0,0 +1,183 @@
+#ifndef _ROS_theora_image_transport_Packet_h
+#define _ROS_theora_image_transport_Packet_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace theora_image_transport
+{
+
+  class Packet : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+      typedef int32_t _b_o_s_type;
+      _b_o_s_type b_o_s;
+      typedef int32_t _e_o_s_type;
+      _e_o_s_type e_o_s;
+      typedef int64_t _granulepos_type;
+      _granulepos_type granulepos;
+      typedef int64_t _packetno_type;
+      _packetno_type packetno;
+
+    Packet():
+      header(),
+      data_length(0), data(NULL),
+      b_o_s(0),
+      e_o_s(0),
+      granulepos(0),
+      packetno(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b_o_s;
+      u_b_o_s.real = this->b_o_s;
+      *(outbuffer + offset + 0) = (u_b_o_s.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b_o_s.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b_o_s.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b_o_s.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->b_o_s);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_e_o_s;
+      u_e_o_s.real = this->e_o_s;
+      *(outbuffer + offset + 0) = (u_e_o_s.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_e_o_s.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_e_o_s.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_e_o_s.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->e_o_s);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_granulepos;
+      u_granulepos.real = this->granulepos;
+      *(outbuffer + offset + 0) = (u_granulepos.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_granulepos.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_granulepos.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_granulepos.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_granulepos.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_granulepos.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_granulepos.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_granulepos.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->granulepos);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_packetno;
+      u_packetno.real = this->packetno;
+      *(outbuffer + offset + 0) = (u_packetno.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_packetno.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_packetno.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_packetno.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_packetno.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_packetno.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_packetno.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_packetno.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->packetno);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b_o_s;
+      u_b_o_s.base = 0;
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->b_o_s = u_b_o_s.real;
+      offset += sizeof(this->b_o_s);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_e_o_s;
+      u_e_o_s.base = 0;
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->e_o_s = u_e_o_s.real;
+      offset += sizeof(this->e_o_s);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_granulepos;
+      u_granulepos.base = 0;
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->granulepos = u_granulepos.real;
+      offset += sizeof(this->granulepos);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_packetno;
+      u_packetno.base = 0;
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->packetno = u_packetno.real;
+      offset += sizeof(this->packetno);
+     return offset;
+    }
+
+    const char * getType(){ return "theora_image_transport/Packet"; };
+    const char * getMD5(){ return "33ac4e14a7cff32e7e0d65f18bb410f3"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/DemuxAdd.h b/rosserial_test/Inc/topic_tools/DemuxAdd.h
new file mode 100644 (file)
index 0000000..d8016c6
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_DemuxAdd_h
+#define _ROS_SERVICE_DemuxAdd_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXADD[] = "topic_tools/DemuxAdd";
+
+  class DemuxAddRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    DemuxAddRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXADD; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class DemuxAddResponse : public ros::Msg
+  {
+    public:
+
+    DemuxAddResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXADD; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class DemuxAdd {
+    public:
+    typedef DemuxAddRequest Request;
+    typedef DemuxAddResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/DemuxDelete.h b/rosserial_test/Inc/topic_tools/DemuxDelete.h
new file mode 100644 (file)
index 0000000..3f030aa
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_DemuxDelete_h
+#define _ROS_SERVICE_DemuxDelete_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXDELETE[] = "topic_tools/DemuxDelete";
+
+  class DemuxDeleteRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    DemuxDeleteRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXDELETE; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class DemuxDeleteResponse : public ros::Msg
+  {
+    public:
+
+    DemuxDeleteResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXDELETE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class DemuxDelete {
+    public:
+    typedef DemuxDeleteRequest Request;
+    typedef DemuxDeleteResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/DemuxList.h b/rosserial_test/Inc/topic_tools/DemuxList.h
new file mode 100644 (file)
index 0000000..0553329
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_SERVICE_DemuxList_h
+#define _ROS_SERVICE_DemuxList_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXLIST[] = "topic_tools/DemuxList";
+
+  class DemuxListRequest : public ros::Msg
+  {
+    public:
+
+    DemuxListRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXLIST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class DemuxListResponse : public ros::Msg
+  {
+    public:
+      uint32_t topics_length;
+      typedef char* _topics_type;
+      _topics_type st_topics;
+      _topics_type * topics;
+
+    DemuxListResponse():
+      topics_length(0), topics(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->topics_length);
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_topicsi = strlen(this->topics[i]);
+      varToArr(outbuffer + offset, length_topicsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topics[i], length_topicsi);
+      offset += length_topicsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->topics_length);
+      if(topics_lengthT > topics_length)
+        this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*));
+      topics_length = topics_lengthT;
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_st_topics;
+      arrToVar(length_st_topics, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_topics; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_topics-1]=0;
+      this->st_topics = (char *)(inbuffer + offset-1);
+      offset += length_st_topics;
+        memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXLIST; };
+    const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; };
+
+  };
+
+  class DemuxList {
+    public:
+    typedef DemuxListRequest Request;
+    typedef DemuxListResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/DemuxSelect.h b/rosserial_test/Inc/topic_tools/DemuxSelect.h
new file mode 100644 (file)
index 0000000..17a6d9b
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef _ROS_SERVICE_DemuxSelect_h
+#define _ROS_SERVICE_DemuxSelect_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXSELECT[] = "topic_tools/DemuxSelect";
+
+  class DemuxSelectRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    DemuxSelectRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXSELECT; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class DemuxSelectResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _prev_topic_type;
+      _prev_topic_type prev_topic;
+
+    DemuxSelectResponse():
+      prev_topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_prev_topic = strlen(this->prev_topic);
+      varToArr(outbuffer + offset, length_prev_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->prev_topic, length_prev_topic);
+      offset += length_prev_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_prev_topic;
+      arrToVar(length_prev_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_prev_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_prev_topic-1]=0;
+      this->prev_topic = (char *)(inbuffer + offset-1);
+      offset += length_prev_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXSELECT; };
+    const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; };
+
+  };
+
+  class DemuxSelect {
+    public:
+    typedef DemuxSelectRequest Request;
+    typedef DemuxSelectResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/MuxAdd.h b/rosserial_test/Inc/topic_tools/MuxAdd.h
new file mode 100644 (file)
index 0000000..25a649a
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_MuxAdd_h
+#define _ROS_SERVICE_MuxAdd_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXADD[] = "topic_tools/MuxAdd";
+
+  class MuxAddRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    MuxAddRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXADD; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class MuxAddResponse : public ros::Msg
+  {
+    public:
+
+    MuxAddResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return MUXADD; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class MuxAdd {
+    public:
+    typedef MuxAddRequest Request;
+    typedef MuxAddResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/MuxDelete.h b/rosserial_test/Inc/topic_tools/MuxDelete.h
new file mode 100644 (file)
index 0000000..3672ad5
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_MuxDelete_h
+#define _ROS_SERVICE_MuxDelete_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXDELETE[] = "topic_tools/MuxDelete";
+
+  class MuxDeleteRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    MuxDeleteRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXDELETE; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class MuxDeleteResponse : public ros::Msg
+  {
+    public:
+
+    MuxDeleteResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return MUXDELETE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class MuxDelete {
+    public:
+    typedef MuxDeleteRequest Request;
+    typedef MuxDeleteResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/MuxList.h b/rosserial_test/Inc/topic_tools/MuxList.h
new file mode 100644 (file)
index 0000000..5d7936d
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_SERVICE_MuxList_h
+#define _ROS_SERVICE_MuxList_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXLIST[] = "topic_tools/MuxList";
+
+  class MuxListRequest : public ros::Msg
+  {
+    public:
+
+    MuxListRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return MUXLIST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class MuxListResponse : public ros::Msg
+  {
+    public:
+      uint32_t topics_length;
+      typedef char* _topics_type;
+      _topics_type st_topics;
+      _topics_type * topics;
+
+    MuxListResponse():
+      topics_length(0), topics(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->topics_length);
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_topicsi = strlen(this->topics[i]);
+      varToArr(outbuffer + offset, length_topicsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topics[i], length_topicsi);
+      offset += length_topicsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->topics_length);
+      if(topics_lengthT > topics_length)
+        this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*));
+      topics_length = topics_lengthT;
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_st_topics;
+      arrToVar(length_st_topics, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_topics; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_topics-1]=0;
+      this->st_topics = (char *)(inbuffer + offset-1);
+      offset += length_st_topics;
+        memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return MUXLIST; };
+    const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; };
+
+  };
+
+  class MuxList {
+    public:
+    typedef MuxListRequest Request;
+    typedef MuxListResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/topic_tools/MuxSelect.h b/rosserial_test/Inc/topic_tools/MuxSelect.h
new file mode 100644 (file)
index 0000000..67324a8
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef _ROS_SERVICE_MuxSelect_h
+#define _ROS_SERVICE_MuxSelect_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXSELECT[] = "topic_tools/MuxSelect";
+
+  class MuxSelectRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    MuxSelectRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXSELECT; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class MuxSelectResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _prev_topic_type;
+      _prev_topic_type prev_topic;
+
+    MuxSelectResponse():
+      prev_topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_prev_topic = strlen(this->prev_topic);
+      varToArr(outbuffer + offset, length_prev_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->prev_topic, length_prev_topic);
+      offset += length_prev_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_prev_topic;
+      arrToVar(length_prev_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_prev_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_prev_topic-1]=0;
+      this->prev_topic = (char *)(inbuffer + offset-1);
+      offset += length_prev_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXSELECT; };
+    const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; };
+
+  };
+
+  class MuxSelect {
+    public:
+    typedef MuxSelectRequest Request;
+    typedef MuxSelectResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/trajectory_msgs/JointTrajectory.h b/rosserial_test/Inc/trajectory_msgs/JointTrajectory.h
new file mode 100644 (file)
index 0000000..a68dbbb
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_trajectory_msgs_JointTrajectory_h
+#define _ROS_trajectory_msgs_JointTrajectory_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/JointTrajectoryPoint.h"
+
+namespace trajectory_msgs
+{
+
+  class JointTrajectory : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t points_length;
+      typedef trajectory_msgs::JointTrajectoryPoint _points_type;
+      _points_type st_points;
+      _points_type * points;
+
+    JointTrajectory():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      points_length(0), points(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (trajectory_msgs::JointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::JointTrajectoryPoint));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::JointTrajectoryPoint));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/JointTrajectory"; };
+    const char * getMD5(){ return "65b4f94a94d1ed67169da35a02f33d3f"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/trajectory_msgs/JointTrajectoryPoint.h b/rosserial_test/Inc/trajectory_msgs/JointTrajectoryPoint.h
new file mode 100644 (file)
index 0000000..48455ba
--- /dev/null
@@ -0,0 +1,270 @@
+#ifndef _ROS_trajectory_msgs_JointTrajectoryPoint_h
+#define _ROS_trajectory_msgs_JointTrajectoryPoint_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace trajectory_msgs
+{
+
+  class JointTrajectoryPoint : public ros::Msg
+  {
+    public:
+      uint32_t positions_length;
+      typedef double _positions_type;
+      _positions_type st_positions;
+      _positions_type * positions;
+      uint32_t velocities_length;
+      typedef double _velocities_type;
+      _velocities_type st_velocities;
+      _velocities_type * velocities;
+      uint32_t accelerations_length;
+      typedef double _accelerations_type;
+      _accelerations_type st_accelerations;
+      _accelerations_type * accelerations;
+      uint32_t effort_length;
+      typedef double _effort_type;
+      _effort_type st_effort;
+      _effort_type * effort;
+      typedef ros::Duration _time_from_start_type;
+      _time_from_start_type time_from_start;
+
+    JointTrajectoryPoint():
+      positions_length(0), positions(NULL),
+      velocities_length(0), velocities(NULL),
+      accelerations_length(0), accelerations(NULL),
+      effort_length(0), effort(NULL),
+      time_from_start()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->positions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->positions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->positions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->positions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->positions_length);
+      for( uint32_t i = 0; i < positions_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_positionsi;
+      u_positionsi.real = this->positions[i];
+      *(outbuffer + offset + 0) = (u_positionsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_positionsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_positionsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_positionsi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_positionsi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_positionsi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_positionsi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_positionsi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->positions[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocities_length);
+      for( uint32_t i = 0; i < velocities_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_velocitiesi;
+      u_velocitiesi.real = this->velocities[i];
+      *(outbuffer + offset + 0) = (u_velocitiesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_velocitiesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_velocitiesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_velocitiesi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_velocitiesi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_velocitiesi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_velocitiesi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_velocitiesi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->velocities[i]);
+      }
+      *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->accelerations_length);
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_accelerationsi;
+      u_accelerationsi.real = this->accelerations[i];
+      *(outbuffer + offset + 0) = (u_accelerationsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_accelerationsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_accelerationsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_accelerationsi.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_accelerationsi.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_accelerationsi.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_accelerationsi.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_accelerationsi.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->accelerations[i]);
+      }
+      *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->effort_length);
+      for( uint32_t i = 0; i < effort_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_efforti;
+      u_efforti.real = this->effort[i];
+      *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->effort[i]);
+      }
+      *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.sec);
+      *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t positions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->positions_length);
+      if(positions_lengthT > positions_length)
+        this->positions = (double*)realloc(this->positions, positions_lengthT * sizeof(double));
+      positions_length = positions_lengthT;
+      for( uint32_t i = 0; i < positions_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_positions;
+      u_st_positions.base = 0;
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_positions = u_st_positions.real;
+      offset += sizeof(this->st_positions);
+        memcpy( &(this->positions[i]), &(this->st_positions), sizeof(double));
+      }
+      uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocities_length);
+      if(velocities_lengthT > velocities_length)
+        this->velocities = (double*)realloc(this->velocities, velocities_lengthT * sizeof(double));
+      velocities_length = velocities_lengthT;
+      for( uint32_t i = 0; i < velocities_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_velocities;
+      u_st_velocities.base = 0;
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_velocities = u_st_velocities.real;
+      offset += sizeof(this->st_velocities);
+        memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(double));
+      }
+      uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->accelerations_length);
+      if(accelerations_lengthT > accelerations_length)
+        this->accelerations = (double*)realloc(this->accelerations, accelerations_lengthT * sizeof(double));
+      accelerations_length = accelerations_lengthT;
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_accelerations;
+      u_st_accelerations.base = 0;
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_accelerations = u_st_accelerations.real;
+      offset += sizeof(this->st_accelerations);
+        memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(double));
+      }
+      uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->effort_length);
+      if(effort_lengthT > effort_length)
+        this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double));
+      effort_length = effort_lengthT;
+      for( uint32_t i = 0; i < effort_length; i++){
+      union {
+        double real;
+        uint64_t base;
+      } u_st_effort;
+      u_st_effort.base = 0;
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_effort = u_st_effort.real;
+      offset += sizeof(this->st_effort);
+        memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double));
+      }
+      this->time_from_start.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.sec);
+      this->time_from_start.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/JointTrajectoryPoint"; };
+    const char * getMD5(){ return "f3cd1e1c4d320c79d6985c904ae5dcd3"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/trajectory_msgs/MultiDOFJointTrajectory.h b/rosserial_test/Inc/trajectory_msgs/MultiDOFJointTrajectory.h
new file mode 100644 (file)
index 0000000..50add38
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectory_h
+#define _ROS_trajectory_msgs_MultiDOFJointTrajectory_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/MultiDOFJointTrajectoryPoint.h"
+
+namespace trajectory_msgs
+{
+
+  class MultiDOFJointTrajectory : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t points_length;
+      typedef trajectory_msgs::MultiDOFJointTrajectoryPoint _points_type;
+      _points_type st_points;
+      _points_type * points;
+
+    MultiDOFJointTrajectory():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      points_length(0), points(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (trajectory_msgs::MultiDOFJointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectory"; };
+    const char * getMD5(){ return "ef145a45a5f47b77b7f5cdde4b16c942"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/trajectory_msgs/MultiDOFJointTrajectoryPoint.h b/rosserial_test/Inc/trajectory_msgs/MultiDOFJointTrajectoryPoint.h
new file mode 100644 (file)
index 0000000..7aac8c5
--- /dev/null
@@ -0,0 +1,139 @@
+#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h
+#define _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Transform.h"
+#include "geometry_msgs/Twist.h"
+#include "ros/duration.h"
+
+namespace trajectory_msgs
+{
+
+  class MultiDOFJointTrajectoryPoint : public ros::Msg
+  {
+    public:
+      uint32_t transforms_length;
+      typedef geometry_msgs::Transform _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+      uint32_t velocities_length;
+      typedef geometry_msgs::Twist _velocities_type;
+      _velocities_type st_velocities;
+      _velocities_type * velocities;
+      uint32_t accelerations_length;
+      typedef geometry_msgs::Twist _accelerations_type;
+      _accelerations_type st_accelerations;
+      _accelerations_type * accelerations;
+      typedef ros::Duration _time_from_start_type;
+      _time_from_start_type time_from_start;
+
+    MultiDOFJointTrajectoryPoint():
+      transforms_length(0), transforms(NULL),
+      velocities_length(0), velocities(NULL),
+      accelerations_length(0), accelerations(NULL),
+      time_from_start()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocities_length);
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += this->velocities[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->accelerations_length);
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      offset += this->accelerations[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.sec);
+      *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform));
+      }
+      uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocities_length);
+      if(velocities_lengthT > velocities_length)
+        this->velocities = (geometry_msgs::Twist*)realloc(this->velocities, velocities_lengthT * sizeof(geometry_msgs::Twist));
+      velocities_length = velocities_lengthT;
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += this->st_velocities.deserialize(inbuffer + offset);
+        memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(geometry_msgs::Twist));
+      }
+      uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->accelerations_length);
+      if(accelerations_lengthT > accelerations_length)
+        this->accelerations = (geometry_msgs::Twist*)realloc(this->accelerations, accelerations_lengthT * sizeof(geometry_msgs::Twist));
+      accelerations_length = accelerations_lengthT;
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      offset += this->st_accelerations.deserialize(inbuffer + offset);
+        memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(geometry_msgs::Twist));
+      }
+      this->time_from_start.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.sec);
+      this->time_from_start.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectoryPoint"; };
+    const char * getMD5(){ return "3ebe08d1abd5b65862d50e09430db776"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/ShapeAction.h b/rosserial_test/Inc/turtle_actionlib/ShapeAction.h
new file mode 100644 (file)
index 0000000..937c72d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeAction_h
+#define _ROS_turtle_actionlib_ShapeAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "turtle_actionlib/ShapeActionGoal.h"
+#include "turtle_actionlib/ShapeActionResult.h"
+#include "turtle_actionlib/ShapeActionFeedback.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeAction : public ros::Msg
+  {
+    public:
+      typedef turtle_actionlib::ShapeActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef turtle_actionlib::ShapeActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef turtle_actionlib::ShapeActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    ShapeAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeAction"; };
+    const char * getMD5(){ return "d73b17d6237a925511f5d7727a1dc903"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/ShapeActionFeedback.h b/rosserial_test/Inc/turtle_actionlib/ShapeActionFeedback.h
new file mode 100644 (file)
index 0000000..f9ee304
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeActionFeedback_h
+#define _ROS_turtle_actionlib_ShapeActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "turtle_actionlib/ShapeFeedback.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef turtle_actionlib::ShapeFeedback _feedback_type;
+      _feedback_type feedback;
+
+    ShapeActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/ShapeActionGoal.h b/rosserial_test/Inc/turtle_actionlib/ShapeActionGoal.h
new file mode 100644 (file)
index 0000000..afb9b01
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeActionGoal_h
+#define _ROS_turtle_actionlib_ShapeActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "turtle_actionlib/ShapeGoal.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef turtle_actionlib::ShapeGoal _goal_type;
+      _goal_type goal;
+
+    ShapeActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeActionGoal"; };
+    const char * getMD5(){ return "dbfccd187f2ec9c593916447ffd6cc77"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/ShapeActionResult.h b/rosserial_test/Inc/turtle_actionlib/ShapeActionResult.h
new file mode 100644 (file)
index 0000000..dc42883
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeActionResult_h
+#define _ROS_turtle_actionlib_ShapeActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "turtle_actionlib/ShapeResult.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef turtle_actionlib::ShapeResult _result_type;
+      _result_type result;
+
+    ShapeActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeActionResult"; };
+    const char * getMD5(){ return "c8d13d5d140f1047a2e4d3bf5c045822"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/ShapeFeedback.h b/rosserial_test/Inc/turtle_actionlib/ShapeFeedback.h
new file mode 100644 (file)
index 0000000..fbad990
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_turtle_actionlib_ShapeFeedback_h
+#define _ROS_turtle_actionlib_ShapeFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeFeedback : public ros::Msg
+  {
+    public:
+
+    ShapeFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/ShapeGoal.h b/rosserial_test/Inc/turtle_actionlib/ShapeGoal.h
new file mode 100644 (file)
index 0000000..4b63044
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_turtle_actionlib_ShapeGoal_h
+#define _ROS_turtle_actionlib_ShapeGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _edges_type;
+      _edges_type edges;
+      typedef float _radius_type;
+      _radius_type radius;
+
+    ShapeGoal():
+      edges(0),
+      radius(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_edges;
+      u_edges.real = this->edges;
+      *(outbuffer + offset + 0) = (u_edges.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_edges.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_edges.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_edges.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->edges);
+      union {
+        float real;
+        uint32_t base;
+      } u_radius;
+      u_radius.real = this->radius;
+      *(outbuffer + offset + 0) = (u_radius.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_radius.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_radius.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_radius.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->radius);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_edges;
+      u_edges.base = 0;
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->edges = u_edges.real;
+      offset += sizeof(this->edges);
+      union {
+        float real;
+        uint32_t base;
+      } u_radius;
+      u_radius.base = 0;
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->radius = u_radius.real;
+      offset += sizeof(this->radius);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeGoal"; };
+    const char * getMD5(){ return "3b9202ab7292cebe5a95ab2bf6b9c091"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/ShapeResult.h b/rosserial_test/Inc/turtle_actionlib/ShapeResult.h
new file mode 100644 (file)
index 0000000..1e8407b
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_turtle_actionlib_ShapeResult_h
+#define _ROS_turtle_actionlib_ShapeResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeResult : public ros::Msg
+  {
+    public:
+      typedef float _interior_angle_type;
+      _interior_angle_type interior_angle;
+      typedef float _apothem_type;
+      _apothem_type apothem;
+
+    ShapeResult():
+      interior_angle(0),
+      apothem(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_interior_angle;
+      u_interior_angle.real = this->interior_angle;
+      *(outbuffer + offset + 0) = (u_interior_angle.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_interior_angle.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_interior_angle.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_interior_angle.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->interior_angle);
+      union {
+        float real;
+        uint32_t base;
+      } u_apothem;
+      u_apothem.real = this->apothem;
+      *(outbuffer + offset + 0) = (u_apothem.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_apothem.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_apothem.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_apothem.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->apothem);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_interior_angle;
+      u_interior_angle.base = 0;
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->interior_angle = u_interior_angle.real;
+      offset += sizeof(this->interior_angle);
+      union {
+        float real;
+        uint32_t base;
+      } u_apothem;
+      u_apothem.base = 0;
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->apothem = u_apothem.real;
+      offset += sizeof(this->apothem);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeResult"; };
+    const char * getMD5(){ return "b06c6e2225f820dbc644270387cd1a7c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtle_actionlib/Velocity.h b/rosserial_test/Inc/turtle_actionlib/Velocity.h
new file mode 100644 (file)
index 0000000..4c540a9
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_turtle_actionlib_Velocity_h
+#define _ROS_turtle_actionlib_Velocity_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class Velocity : public ros::Msg
+  {
+    public:
+      typedef float _linear_type;
+      _linear_type linear;
+      typedef float _angular_type;
+      _angular_type angular;
+
+    Velocity():
+      linear(0),
+      angular(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.real = this->linear;
+      *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.real = this->angular;
+      *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angular);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.base = 0;
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->linear = u_linear.real;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.base = 0;
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angular = u_angular.real;
+      offset += sizeof(this->angular);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/Velocity"; };
+    const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtlesim/Color.h b/rosserial_test/Inc/turtlesim/Color.h
new file mode 100644 (file)
index 0000000..3cdcc95
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef _ROS_turtlesim_Color_h
+#define _ROS_turtlesim_Color_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+  class Color : public ros::Msg
+  {
+    public:
+      typedef uint8_t _r_type;
+      _r_type r;
+      typedef uint8_t _g_type;
+      _g_type g;
+      typedef uint8_t _b_type;
+      _b_type b;
+
+    Color():
+      r(0),
+      g(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->r);
+      *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->g);
+      *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->r =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->r);
+      this->g =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->g);
+      this->b =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return "turtlesim/Color"; };
+    const char * getMD5(){ return "353891e354491c51aabe32df673fb446"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtlesim/Kill.h b/rosserial_test/Inc/turtlesim/Kill.h
new file mode 100644 (file)
index 0000000..086f2bb
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_Kill_h
+#define _ROS_SERVICE_Kill_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char KILL[] = "turtlesim/Kill";
+
+  class KillRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    KillRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return KILL; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class KillResponse : public ros::Msg
+  {
+    public:
+
+    KillResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return KILL; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class Kill {
+    public:
+    typedef KillRequest Request;
+    typedef KillResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtlesim/Pose.h b/rosserial_test/Inc/turtlesim/Pose.h
new file mode 100644 (file)
index 0000000..3f5386f
--- /dev/null
@@ -0,0 +1,158 @@
+#ifndef _ROS_turtlesim_Pose_h
+#define _ROS_turtlesim_Pose_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+  class Pose : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _theta_type;
+      _theta_type theta;
+      typedef float _linear_velocity_type;
+      _linear_velocity_type linear_velocity;
+      typedef float _angular_velocity_type;
+      _angular_velocity_type angular_velocity;
+
+    Pose():
+      x(0),
+      y(0),
+      theta(0),
+      linear_velocity(0),
+      angular_velocity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.real = this->theta;
+      *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->theta);
+      union {
+        float real;
+        uint32_t base;
+      } u_linear_velocity;
+      u_linear_velocity.real = this->linear_velocity;
+      *(outbuffer + offset + 0) = (u_linear_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_linear_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_linear_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_linear_velocity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->linear_velocity);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular_velocity;
+      u_angular_velocity.real = this->angular_velocity;
+      *(outbuffer + offset + 0) = (u_angular_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angular_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angular_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angular_velocity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angular_velocity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.base = 0;
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->theta = u_theta.real;
+      offset += sizeof(this->theta);
+      union {
+        float real;
+        uint32_t base;
+      } u_linear_velocity;
+      u_linear_velocity.base = 0;
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->linear_velocity = u_linear_velocity.real;
+      offset += sizeof(this->linear_velocity);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular_velocity;
+      u_angular_velocity.base = 0;
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angular_velocity = u_angular_velocity.real;
+      offset += sizeof(this->angular_velocity);
+     return offset;
+    }
+
+    const char * getType(){ return "turtlesim/Pose"; };
+    const char * getMD5(){ return "863b248d5016ca62ea2e895ae5265cf9"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtlesim/SetPen.h b/rosserial_test/Inc/turtlesim/SetPen.h
new file mode 100644 (file)
index 0000000..a0e32c0
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_SetPen_h
+#define _ROS_SERVICE_SetPen_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char SETPEN[] = "turtlesim/SetPen";
+
+  class SetPenRequest : public ros::Msg
+  {
+    public:
+      typedef uint8_t _r_type;
+      _r_type r;
+      typedef uint8_t _g_type;
+      _g_type g;
+      typedef uint8_t _b_type;
+      _b_type b;
+      typedef uint8_t _width_type;
+      _width_type width;
+      typedef uint8_t _off_type;
+      _off_type off;
+
+    SetPenRequest():
+      r(0),
+      g(0),
+      b(0),
+      width(0),
+      off(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->r);
+      *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->g);
+      *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->b);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->off >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->off);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->r =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->r);
+      this->g =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->g);
+      this->b =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->b);
+      this->width =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->width);
+      this->off =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->off);
+     return offset;
+    }
+
+    const char * getType(){ return SETPEN; };
+    const char * getMD5(){ return "9f452acce566bf0c0954594f69a8e41b"; };
+
+  };
+
+  class SetPenResponse : public ros::Msg
+  {
+    public:
+
+    SetPenResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETPEN; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetPen {
+    public:
+    typedef SetPenRequest Request;
+    typedef SetPenResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtlesim/Spawn.h b/rosserial_test/Inc/turtlesim/Spawn.h
new file mode 100644 (file)
index 0000000..f69b42f
--- /dev/null
@@ -0,0 +1,176 @@
+#ifndef _ROS_SERVICE_Spawn_h
+#define _ROS_SERVICE_Spawn_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char SPAWN[] = "turtlesim/Spawn";
+
+  class SpawnRequest : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _theta_type;
+      _theta_type theta;
+      typedef const char* _name_type;
+      _name_type name;
+
+    SpawnRequest():
+      x(0),
+      y(0),
+      theta(0),
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.real = this->theta;
+      *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->theta);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.base = 0;
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->theta = u_theta.real;
+      offset += sizeof(this->theta);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWN; };
+    const char * getMD5(){ return "57f001c49ab7b11d699f8606c1f4f7ff"; };
+
+  };
+
+  class SpawnResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    SpawnResponse():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWN; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class Spawn {
+    public:
+    typedef SpawnRequest Request;
+    typedef SpawnResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtlesim/TeleportAbsolute.h b/rosserial_test/Inc/turtlesim/TeleportAbsolute.h
new file mode 100644 (file)
index 0000000..c81489b
--- /dev/null
@@ -0,0 +1,142 @@
+#ifndef _ROS_SERVICE_TeleportAbsolute_h
+#define _ROS_SERVICE_TeleportAbsolute_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char TELEPORTABSOLUTE[] = "turtlesim/TeleportAbsolute";
+
+  class TeleportAbsoluteRequest : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _theta_type;
+      _theta_type theta;
+
+    TeleportAbsoluteRequest():
+      x(0),
+      y(0),
+      theta(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.real = this->theta;
+      *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->theta);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.base = 0;
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->theta = u_theta.real;
+      offset += sizeof(this->theta);
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTABSOLUTE; };
+    const char * getMD5(){ return "a130bc60ee6513855dc62ea83fcc5b20"; };
+
+  };
+
+  class TeleportAbsoluteResponse : public ros::Msg
+  {
+    public:
+
+    TeleportAbsoluteResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTABSOLUTE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class TeleportAbsolute {
+    public:
+    typedef TeleportAbsoluteRequest Request;
+    typedef TeleportAbsoluteResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/turtlesim/TeleportRelative.h b/rosserial_test/Inc/turtlesim/TeleportRelative.h
new file mode 100644 (file)
index 0000000..2da9668
--- /dev/null
@@ -0,0 +1,118 @@
+#ifndef _ROS_SERVICE_TeleportRelative_h
+#define _ROS_SERVICE_TeleportRelative_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char TELEPORTRELATIVE[] = "turtlesim/TeleportRelative";
+
+  class TeleportRelativeRequest : public ros::Msg
+  {
+    public:
+      typedef float _linear_type;
+      _linear_type linear;
+      typedef float _angular_type;
+      _angular_type angular;
+
+    TeleportRelativeRequest():
+      linear(0),
+      angular(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.real = this->linear;
+      *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.real = this->angular;
+      *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angular);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.base = 0;
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->linear = u_linear.real;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.base = 0;
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angular = u_angular.real;
+      offset += sizeof(this->angular);
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTRELATIVE; };
+    const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; };
+
+  };
+
+  class TeleportRelativeResponse : public ros::Msg
+  {
+    public:
+
+    TeleportRelativeResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTRELATIVE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class TeleportRelative {
+    public:
+    typedef TeleportRelativeRequest Request;
+    typedef TeleportRelativeResponse Response;
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/ImageMarker.h b/rosserial_test/Inc/visualization_msgs/ImageMarker.h
new file mode 100644 (file)
index 0000000..cd8897d
--- /dev/null
@@ -0,0 +1,262 @@
+#ifndef _ROS_visualization_msgs_ImageMarker_h
+#define _ROS_visualization_msgs_ImageMarker_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point.h"
+#include "std_msgs/ColorRGBA.h"
+#include "ros/duration.h"
+
+namespace visualization_msgs
+{
+
+  class ImageMarker : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _ns_type;
+      _ns_type ns;
+      typedef int32_t _id_type;
+      _id_type id;
+      typedef int32_t _type_type;
+      _type_type type;
+      typedef int32_t _action_type;
+      _action_type action;
+      typedef geometry_msgs::Point _position_type;
+      _position_type position;
+      typedef float _scale_type;
+      _scale_type scale;
+      typedef std_msgs::ColorRGBA _outline_color_type;
+      _outline_color_type outline_color;
+      typedef uint8_t _filled_type;
+      _filled_type filled;
+      typedef std_msgs::ColorRGBA _fill_color_type;
+      _fill_color_type fill_color;
+      typedef ros::Duration _lifetime_type;
+      _lifetime_type lifetime;
+      uint32_t points_length;
+      typedef geometry_msgs::Point _points_type;
+      _points_type st_points;
+      _points_type * points;
+      uint32_t outline_colors_length;
+      typedef std_msgs::ColorRGBA _outline_colors_type;
+      _outline_colors_type st_outline_colors;
+      _outline_colors_type * outline_colors;
+      enum { CIRCLE = 0 };
+      enum { LINE_STRIP = 1 };
+      enum { LINE_LIST = 2 };
+      enum { POLYGON = 3 };
+      enum { POINTS = 4 };
+      enum { ADD = 0 };
+      enum { REMOVE = 1 };
+
+    ImageMarker():
+      header(),
+      ns(""),
+      id(0),
+      type(0),
+      action(0),
+      position(),
+      scale(0),
+      outline_color(),
+      filled(0),
+      fill_color(),
+      lifetime(),
+      points_length(0), points(NULL),
+      outline_colors_length(0), outline_colors(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_ns = strlen(this->ns);
+      varToArr(outbuffer + offset, length_ns);
+      offset += 4;
+      memcpy(outbuffer + offset, this->ns, length_ns);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.real = this->type;
+      *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.real = this->action;
+      *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->action);
+      offset += this->position.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.real = this->scale;
+      *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scale);
+      offset += this->outline_color.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->filled >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->filled);
+      offset += this->fill_color.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.sec);
+      *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.nsec);
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->outline_colors_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->outline_colors_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->outline_colors_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->outline_colors_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->outline_colors_length);
+      for( uint32_t i = 0; i < outline_colors_length; i++){
+      offset += this->outline_colors[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_ns;
+      arrToVar(length_ns, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_ns; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_ns-1]=0;
+      this->ns = (char *)(inbuffer + offset-1);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.base = 0;
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->type = u_type.real;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.base = 0;
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->action = u_action.real;
+      offset += sizeof(this->action);
+      offset += this->position.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.base = 0;
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scale = u_scale.real;
+      offset += sizeof(this->scale);
+      offset += this->outline_color.deserialize(inbuffer + offset);
+      this->filled =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->filled);
+      offset += this->fill_color.deserialize(inbuffer + offset);
+      this->lifetime.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.sec);
+      this->lifetime.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.nsec);
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point));
+      }
+      uint32_t outline_colors_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->outline_colors_length);
+      if(outline_colors_lengthT > outline_colors_length)
+        this->outline_colors = (std_msgs::ColorRGBA*)realloc(this->outline_colors, outline_colors_lengthT * sizeof(std_msgs::ColorRGBA));
+      outline_colors_length = outline_colors_lengthT;
+      for( uint32_t i = 0; i < outline_colors_length; i++){
+      offset += this->st_outline_colors.deserialize(inbuffer + offset);
+        memcpy( &(this->outline_colors[i]), &(this->st_outline_colors), sizeof(std_msgs::ColorRGBA));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/ImageMarker"; };
+    const char * getMD5(){ return "1de93c67ec8858b831025a08fbf1b35c"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/InteractiveMarker.h b/rosserial_test/Inc/visualization_msgs/InteractiveMarker.h
new file mode 100644 (file)
index 0000000..60adeb7
--- /dev/null
@@ -0,0 +1,160 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarker_h
+#define _ROS_visualization_msgs_InteractiveMarker_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "visualization_msgs/MenuEntry.h"
+#include "visualization_msgs/InteractiveMarkerControl.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarker : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _description_type;
+      _description_type description;
+      typedef float _scale_type;
+      _scale_type scale;
+      uint32_t menu_entries_length;
+      typedef visualization_msgs::MenuEntry _menu_entries_type;
+      _menu_entries_type st_menu_entries;
+      _menu_entries_type * menu_entries;
+      uint32_t controls_length;
+      typedef visualization_msgs::InteractiveMarkerControl _controls_type;
+      _controls_type st_controls;
+      _controls_type * controls;
+
+    InteractiveMarker():
+      header(),
+      pose(),
+      name(""),
+      description(""),
+      scale(0),
+      menu_entries_length(0), menu_entries(NULL),
+      controls_length(0), controls(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_description = strlen(this->description);
+      varToArr(outbuffer + offset, length_description);
+      offset += 4;
+      memcpy(outbuffer + offset, this->description, length_description);
+      offset += length_description;
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.real = this->scale;
+      *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scale);
+      *(outbuffer + offset + 0) = (this->menu_entries_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->menu_entries_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->menu_entries_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->menu_entries_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->menu_entries_length);
+      for( uint32_t i = 0; i < menu_entries_length; i++){
+      offset += this->menu_entries[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->controls_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->controls_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->controls_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->controls_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->controls_length);
+      for( uint32_t i = 0; i < controls_length; i++){
+      offset += this->controls[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_description;
+      arrToVar(length_description, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_description; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_description-1]=0;
+      this->description = (char *)(inbuffer + offset-1);
+      offset += length_description;
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.base = 0;
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scale = u_scale.real;
+      offset += sizeof(this->scale);
+      uint32_t menu_entries_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->menu_entries_length);
+      if(menu_entries_lengthT > menu_entries_length)
+        this->menu_entries = (visualization_msgs::MenuEntry*)realloc(this->menu_entries, menu_entries_lengthT * sizeof(visualization_msgs::MenuEntry));
+      menu_entries_length = menu_entries_lengthT;
+      for( uint32_t i = 0; i < menu_entries_length; i++){
+      offset += this->st_menu_entries.deserialize(inbuffer + offset);
+        memcpy( &(this->menu_entries[i]), &(this->st_menu_entries), sizeof(visualization_msgs::MenuEntry));
+      }
+      uint32_t controls_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->controls_length);
+      if(controls_lengthT > controls_length)
+        this->controls = (visualization_msgs::InteractiveMarkerControl*)realloc(this->controls, controls_lengthT * sizeof(visualization_msgs::InteractiveMarkerControl));
+      controls_length = controls_lengthT;
+      for( uint32_t i = 0; i < controls_length; i++){
+      offset += this->st_controls.deserialize(inbuffer + offset);
+        memcpy( &(this->controls[i]), &(this->st_controls), sizeof(visualization_msgs::InteractiveMarkerControl));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarker"; };
+    const char * getMD5(){ return "dd86d22909d5a3364b384492e35c10af"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/InteractiveMarkerControl.h b/rosserial_test/Inc/visualization_msgs/InteractiveMarkerControl.h
new file mode 100644 (file)
index 0000000..5195f43
--- /dev/null
@@ -0,0 +1,167 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerControl_h
+#define _ROS_visualization_msgs_InteractiveMarkerControl_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Quaternion.h"
+#include "visualization_msgs/Marker.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerControl : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef geometry_msgs::Quaternion _orientation_type;
+      _orientation_type orientation;
+      typedef uint8_t _orientation_mode_type;
+      _orientation_mode_type orientation_mode;
+      typedef uint8_t _interaction_mode_type;
+      _interaction_mode_type interaction_mode;
+      typedef bool _always_visible_type;
+      _always_visible_type always_visible;
+      uint32_t markers_length;
+      typedef visualization_msgs::Marker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+      typedef bool _independent_marker_orientation_type;
+      _independent_marker_orientation_type independent_marker_orientation;
+      typedef const char* _description_type;
+      _description_type description;
+      enum { INHERIT =  0 };
+      enum { FIXED =  1 };
+      enum { VIEW_FACING =  2 };
+      enum { NONE =  0 };
+      enum { MENU =  1 };
+      enum { BUTTON =  2 };
+      enum { MOVE_AXIS =  3 };
+      enum { MOVE_PLANE =  4 };
+      enum { ROTATE_AXIS =  5 };
+      enum { MOVE_ROTATE =  6 };
+      enum { MOVE_3D =  7 };
+      enum { ROTATE_3D =  8 };
+      enum { MOVE_ROTATE_3D =  9 };
+
+    InteractiveMarkerControl():
+      name(""),
+      orientation(),
+      orientation_mode(0),
+      interaction_mode(0),
+      always_visible(0),
+      markers_length(0), markers(NULL),
+      independent_marker_orientation(0),
+      description("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      offset += this->orientation.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->orientation_mode >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->orientation_mode);
+      *(outbuffer + offset + 0) = (this->interaction_mode >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->interaction_mode);
+      union {
+        bool real;
+        uint8_t base;
+      } u_always_visible;
+      u_always_visible.real = this->always_visible;
+      *(outbuffer + offset + 0) = (u_always_visible.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->always_visible);
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_independent_marker_orientation;
+      u_independent_marker_orientation.real = this->independent_marker_orientation;
+      *(outbuffer + offset + 0) = (u_independent_marker_orientation.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->independent_marker_orientation);
+      uint32_t length_description = strlen(this->description);
+      varToArr(outbuffer + offset, length_description);
+      offset += 4;
+      memcpy(outbuffer + offset, this->description, length_description);
+      offset += length_description;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      offset += this->orientation.deserialize(inbuffer + offset);
+      this->orientation_mode =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->orientation_mode);
+      this->interaction_mode =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->interaction_mode);
+      union {
+        bool real;
+        uint8_t base;
+      } u_always_visible;
+      u_always_visible.base = 0;
+      u_always_visible.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->always_visible = u_always_visible.real;
+      offset += sizeof(this->always_visible);
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_independent_marker_orientation;
+      u_independent_marker_orientation.base = 0;
+      u_independent_marker_orientation.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->independent_marker_orientation = u_independent_marker_orientation.real;
+      offset += sizeof(this->independent_marker_orientation);
+      uint32_t length_description;
+      arrToVar(length_description, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_description; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_description-1]=0;
+      this->description = (char *)(inbuffer + offset-1);
+      offset += length_description;
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerControl"; };
+    const char * getMD5(){ return "b3c81e785788195d1840b86c28da1aac"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/InteractiveMarkerFeedback.h b/rosserial_test/Inc/visualization_msgs/InteractiveMarkerFeedback.h
new file mode 100644 (file)
index 0000000..e732126
--- /dev/null
@@ -0,0 +1,151 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerFeedback_h
+#define _ROS_visualization_msgs_InteractiveMarkerFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Point.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _client_id_type;
+      _client_id_type client_id;
+      typedef const char* _marker_name_type;
+      _marker_name_type marker_name;
+      typedef const char* _control_name_type;
+      _control_name_type control_name;
+      typedef uint8_t _event_type_type;
+      _event_type_type event_type;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef uint32_t _menu_entry_id_type;
+      _menu_entry_id_type menu_entry_id;
+      typedef geometry_msgs::Point _mouse_point_type;
+      _mouse_point_type mouse_point;
+      typedef bool _mouse_point_valid_type;
+      _mouse_point_valid_type mouse_point_valid;
+      enum { KEEP_ALIVE =  0 };
+      enum { POSE_UPDATE =  1 };
+      enum { MENU_SELECT =  2 };
+      enum { BUTTON_CLICK =  3 };
+      enum { MOUSE_DOWN =  4 };
+      enum { MOUSE_UP =  5 };
+
+    InteractiveMarkerFeedback():
+      header(),
+      client_id(""),
+      marker_name(""),
+      control_name(""),
+      event_type(0),
+      pose(),
+      menu_entry_id(0),
+      mouse_point(),
+      mouse_point_valid(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_client_id = strlen(this->client_id);
+      varToArr(outbuffer + offset, length_client_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->client_id, length_client_id);
+      offset += length_client_id;
+      uint32_t length_marker_name = strlen(this->marker_name);
+      varToArr(outbuffer + offset, length_marker_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->marker_name, length_marker_name);
+      offset += length_marker_name;
+      uint32_t length_control_name = strlen(this->control_name);
+      varToArr(outbuffer + offset, length_control_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->control_name, length_control_name);
+      offset += length_control_name;
+      *(outbuffer + offset + 0) = (this->event_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->event_type);
+      offset += this->pose.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->menu_entry_id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->menu_entry_id >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->menu_entry_id >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->menu_entry_id >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->menu_entry_id);
+      offset += this->mouse_point.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_mouse_point_valid;
+      u_mouse_point_valid.real = this->mouse_point_valid;
+      *(outbuffer + offset + 0) = (u_mouse_point_valid.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->mouse_point_valid);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_client_id;
+      arrToVar(length_client_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_client_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_client_id-1]=0;
+      this->client_id = (char *)(inbuffer + offset-1);
+      offset += length_client_id;
+      uint32_t length_marker_name;
+      arrToVar(length_marker_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_marker_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_marker_name-1]=0;
+      this->marker_name = (char *)(inbuffer + offset-1);
+      offset += length_marker_name;
+      uint32_t length_control_name;
+      arrToVar(length_control_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_control_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_control_name-1]=0;
+      this->control_name = (char *)(inbuffer + offset-1);
+      offset += length_control_name;
+      this->event_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->event_type);
+      offset += this->pose.deserialize(inbuffer + offset);
+      this->menu_entry_id =  ((uint32_t) (*(inbuffer + offset)));
+      this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->menu_entry_id);
+      offset += this->mouse_point.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_mouse_point_valid;
+      u_mouse_point_valid.base = 0;
+      u_mouse_point_valid.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->mouse_point_valid = u_mouse_point_valid.real;
+      offset += sizeof(this->mouse_point_valid);
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerFeedback"; };
+    const char * getMD5(){ return "ab0f1eee058667e28c19ff3ffc3f4b78"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/InteractiveMarkerInit.h b/rosserial_test/Inc/visualization_msgs/InteractiveMarkerInit.h
new file mode 100644 (file)
index 0000000..065a3d2
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerInit_h
+#define _ROS_visualization_msgs_InteractiveMarkerInit_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "visualization_msgs/InteractiveMarker.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerInit : public ros::Msg
+  {
+    public:
+      typedef const char* _server_id_type;
+      _server_id_type server_id;
+      typedef uint64_t _seq_num_type;
+      _seq_num_type seq_num;
+      uint32_t markers_length;
+      typedef visualization_msgs::InteractiveMarker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+
+    InteractiveMarkerInit():
+      server_id(""),
+      seq_num(0),
+      markers_length(0), markers(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_server_id = strlen(this->server_id);
+      varToArr(outbuffer + offset, length_server_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->server_id, length_server_id);
+      offset += length_server_id;
+      *(outbuffer + offset + 0) = (this->seq_num >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->seq_num >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->seq_num >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->seq_num >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->seq_num >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->seq_num >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->seq_num >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->seq_num >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->seq_num);
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_server_id;
+      arrToVar(length_server_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_server_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_server_id-1]=0;
+      this->server_id = (char *)(inbuffer + offset-1);
+      offset += length_server_id;
+      this->seq_num =  ((uint64_t) (*(inbuffer + offset)));
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->seq_num);
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerInit"; };
+    const char * getMD5(){ return "d5f2c5045a72456d228676ab91048734"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/InteractiveMarkerPose.h b/rosserial_test/Inc/visualization_msgs/InteractiveMarkerPose.h
new file mode 100644 (file)
index 0000000..1997e87
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerPose_h
+#define _ROS_visualization_msgs_InteractiveMarkerPose_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerPose : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef const char* _name_type;
+      _name_type name;
+
+    InteractiveMarkerPose():
+      header(),
+      pose(),
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerPose"; };
+    const char * getMD5(){ return "a6e6833209a196a38d798dadb02c81f8"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/InteractiveMarkerUpdate.h b/rosserial_test/Inc/visualization_msgs/InteractiveMarkerUpdate.h
new file mode 100644 (file)
index 0000000..951bb55
--- /dev/null
@@ -0,0 +1,174 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerUpdate_h
+#define _ROS_visualization_msgs_InteractiveMarkerUpdate_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "visualization_msgs/InteractiveMarker.h"
+#include "visualization_msgs/InteractiveMarkerPose.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerUpdate : public ros::Msg
+  {
+    public:
+      typedef const char* _server_id_type;
+      _server_id_type server_id;
+      typedef uint64_t _seq_num_type;
+      _seq_num_type seq_num;
+      typedef uint8_t _type_type;
+      _type_type type;
+      uint32_t markers_length;
+      typedef visualization_msgs::InteractiveMarker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+      uint32_t poses_length;
+      typedef visualization_msgs::InteractiveMarkerPose _poses_type;
+      _poses_type st_poses;
+      _poses_type * poses;
+      uint32_t erases_length;
+      typedef char* _erases_type;
+      _erases_type st_erases;
+      _erases_type * erases;
+      enum { KEEP_ALIVE =  0 };
+      enum { UPDATE =  1 };
+
+    InteractiveMarkerUpdate():
+      server_id(""),
+      seq_num(0),
+      type(0),
+      markers_length(0), markers(NULL),
+      poses_length(0), poses(NULL),
+      erases_length(0), erases(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_server_id = strlen(this->server_id);
+      varToArr(outbuffer + offset, length_server_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->server_id, length_server_id);
+      offset += length_server_id;
+      *(outbuffer + offset + 0) = (this->seq_num >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->seq_num >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->seq_num >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->seq_num >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->seq_num >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->seq_num >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->seq_num >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->seq_num >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->seq_num);
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->poses_length);
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->poses[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->erases_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->erases_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->erases_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->erases_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->erases_length);
+      for( uint32_t i = 0; i < erases_length; i++){
+      uint32_t length_erasesi = strlen(this->erases[i]);
+      varToArr(outbuffer + offset, length_erasesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->erases[i], length_erasesi);
+      offset += length_erasesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_server_id;
+      arrToVar(length_server_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_server_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_server_id-1]=0;
+      this->server_id = (char *)(inbuffer + offset-1);
+      offset += length_server_id;
+      this->seq_num =  ((uint64_t) (*(inbuffer + offset)));
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->seq_num);
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker));
+      }
+      uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->poses_length);
+      if(poses_lengthT > poses_length)
+        this->poses = (visualization_msgs::InteractiveMarkerPose*)realloc(this->poses, poses_lengthT * sizeof(visualization_msgs::InteractiveMarkerPose));
+      poses_length = poses_lengthT;
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->st_poses.deserialize(inbuffer + offset);
+        memcpy( &(this->poses[i]), &(this->st_poses), sizeof(visualization_msgs::InteractiveMarkerPose));
+      }
+      uint32_t erases_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->erases_length);
+      if(erases_lengthT > erases_length)
+        this->erases = (char**)realloc(this->erases, erases_lengthT * sizeof(char*));
+      erases_length = erases_lengthT;
+      for( uint32_t i = 0; i < erases_length; i++){
+      uint32_t length_st_erases;
+      arrToVar(length_st_erases, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_erases; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_erases-1]=0;
+      this->st_erases = (char *)(inbuffer + offset-1);
+      offset += length_st_erases;
+        memcpy( &(this->erases[i]), &(this->st_erases), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerUpdate"; };
+    const char * getMD5(){ return "710d308d0a9276d65945e92dd30b3946"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/Marker.h b/rosserial_test/Inc/visualization_msgs/Marker.h
new file mode 100644 (file)
index 0000000..d1f4eb4
--- /dev/null
@@ -0,0 +1,312 @@
+#ifndef _ROS_visualization_msgs_Marker_h
+#define _ROS_visualization_msgs_Marker_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Vector3.h"
+#include "std_msgs/ColorRGBA.h"
+#include "ros/duration.h"
+#include "geometry_msgs/Point.h"
+
+namespace visualization_msgs
+{
+
+  class Marker : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _ns_type;
+      _ns_type ns;
+      typedef int32_t _id_type;
+      _id_type id;
+      typedef int32_t _type_type;
+      _type_type type;
+      typedef int32_t _action_type;
+      _action_type action;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Vector3 _scale_type;
+      _scale_type scale;
+      typedef std_msgs::ColorRGBA _color_type;
+      _color_type color;
+      typedef ros::Duration _lifetime_type;
+      _lifetime_type lifetime;
+      typedef bool _frame_locked_type;
+      _frame_locked_type frame_locked;
+      uint32_t points_length;
+      typedef geometry_msgs::Point _points_type;
+      _points_type st_points;
+      _points_type * points;
+      uint32_t colors_length;
+      typedef std_msgs::ColorRGBA _colors_type;
+      _colors_type st_colors;
+      _colors_type * colors;
+      typedef const char* _text_type;
+      _text_type text;
+      typedef const char* _mesh_resource_type;
+      _mesh_resource_type mesh_resource;
+      typedef bool _mesh_use_embedded_materials_type;
+      _mesh_use_embedded_materials_type mesh_use_embedded_materials;
+      enum { ARROW = 0 };
+      enum { CUBE = 1 };
+      enum { SPHERE = 2 };
+      enum { CYLINDER = 3 };
+      enum { LINE_STRIP = 4 };
+      enum { LINE_LIST = 5 };
+      enum { CUBE_LIST = 6 };
+      enum { SPHERE_LIST = 7 };
+      enum { POINTS = 8 };
+      enum { TEXT_VIEW_FACING = 9 };
+      enum { MESH_RESOURCE = 10 };
+      enum { TRIANGLE_LIST = 11 };
+      enum { ADD = 0 };
+      enum { MODIFY = 0 };
+      enum { DELETE = 2 };
+      enum { DELETEALL = 3 };
+
+    Marker():
+      header(),
+      ns(""),
+      id(0),
+      type(0),
+      action(0),
+      pose(),
+      scale(),
+      color(),
+      lifetime(),
+      frame_locked(0),
+      points_length(0), points(NULL),
+      colors_length(0), colors(NULL),
+      text(""),
+      mesh_resource(""),
+      mesh_use_embedded_materials(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_ns = strlen(this->ns);
+      varToArr(outbuffer + offset, length_ns);
+      offset += 4;
+      memcpy(outbuffer + offset, this->ns, length_ns);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.real = this->type;
+      *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.real = this->action;
+      *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->action);
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->scale.serialize(outbuffer + offset);
+      offset += this->color.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.sec);
+      *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_frame_locked;
+      u_frame_locked.real = this->frame_locked;
+      *(outbuffer + offset + 0) = (u_frame_locked.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->frame_locked);
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->colors_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->colors_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->colors_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->colors_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->colors_length);
+      for( uint32_t i = 0; i < colors_length; i++){
+      offset += this->colors[i].serialize(outbuffer + offset);
+      }
+      uint32_t length_text = strlen(this->text);
+      varToArr(outbuffer + offset, length_text);
+      offset += 4;
+      memcpy(outbuffer + offset, this->text, length_text);
+      offset += length_text;
+      uint32_t length_mesh_resource = strlen(this->mesh_resource);
+      varToArr(outbuffer + offset, length_mesh_resource);
+      offset += 4;
+      memcpy(outbuffer + offset, this->mesh_resource, length_mesh_resource);
+      offset += length_mesh_resource;
+      union {
+        bool real;
+        uint8_t base;
+      } u_mesh_use_embedded_materials;
+      u_mesh_use_embedded_materials.real = this->mesh_use_embedded_materials;
+      *(outbuffer + offset + 0) = (u_mesh_use_embedded_materials.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->mesh_use_embedded_materials);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_ns;
+      arrToVar(length_ns, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_ns; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_ns-1]=0;
+      this->ns = (char *)(inbuffer + offset-1);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.base = 0;
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->type = u_type.real;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.base = 0;
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->action = u_action.real;
+      offset += sizeof(this->action);
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->scale.deserialize(inbuffer + offset);
+      offset += this->color.deserialize(inbuffer + offset);
+      this->lifetime.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.sec);
+      this->lifetime.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_frame_locked;
+      u_frame_locked.base = 0;
+      u_frame_locked.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->frame_locked = u_frame_locked.real;
+      offset += sizeof(this->frame_locked);
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point));
+      }
+      uint32_t colors_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->colors_length);
+      if(colors_lengthT > colors_length)
+        this->colors = (std_msgs::ColorRGBA*)realloc(this->colors, colors_lengthT * sizeof(std_msgs::ColorRGBA));
+      colors_length = colors_lengthT;
+      for( uint32_t i = 0; i < colors_length; i++){
+      offset += this->st_colors.deserialize(inbuffer + offset);
+        memcpy( &(this->colors[i]), &(this->st_colors), sizeof(std_msgs::ColorRGBA));
+      }
+      uint32_t length_text;
+      arrToVar(length_text, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_text; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_text-1]=0;
+      this->text = (char *)(inbuffer + offset-1);
+      offset += length_text;
+      uint32_t length_mesh_resource;
+      arrToVar(length_mesh_resource, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_mesh_resource; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_mesh_resource-1]=0;
+      this->mesh_resource = (char *)(inbuffer + offset-1);
+      offset += length_mesh_resource;
+      union {
+        bool real;
+        uint8_t base;
+      } u_mesh_use_embedded_materials;
+      u_mesh_use_embedded_materials.base = 0;
+      u_mesh_use_embedded_materials.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->mesh_use_embedded_materials = u_mesh_use_embedded_materials.real;
+      offset += sizeof(this->mesh_use_embedded_materials);
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/Marker"; };
+    const char * getMD5(){ return "4048c9de2a16f4ae8e0538085ebf1b97"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/MarkerArray.h b/rosserial_test/Inc/visualization_msgs/MarkerArray.h
new file mode 100644 (file)
index 0000000..bc24a48
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_visualization_msgs_MarkerArray_h
+#define _ROS_visualization_msgs_MarkerArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "visualization_msgs/Marker.h"
+
+namespace visualization_msgs
+{
+
+  class MarkerArray : public ros::Msg
+  {
+    public:
+      uint32_t markers_length;
+      typedef visualization_msgs::Marker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+
+    MarkerArray():
+      markers_length(0), markers(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/MarkerArray"; };
+    const char * getMD5(){ return "d155b9ce5188fbaf89745847fd5882d7"; };
+
+  };
+
+}
+#endif
diff --git a/rosserial_test/Inc/visualization_msgs/MenuEntry.h b/rosserial_test/Inc/visualization_msgs/MenuEntry.h
new file mode 100644 (file)
index 0000000..3b66245
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_visualization_msgs_MenuEntry_h
+#define _ROS_visualization_msgs_MenuEntry_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace visualization_msgs
+{
+
+  class MenuEntry : public ros::Msg
+  {
+    public:
+      typedef uint32_t _id_type;
+      _id_type id;
+      typedef uint32_t _parent_id_type;
+      _parent_id_type parent_id;
+      typedef const char* _title_type;
+      _title_type title;
+      typedef const char* _command_type;
+      _command_type command;
+      typedef uint8_t _command_type_type;
+      _command_type_type command_type;
+      enum { FEEDBACK = 0 };
+      enum { ROSRUN = 1 };
+      enum { ROSLAUNCH = 2 };
+
+    MenuEntry():
+      id(0),
+      parent_id(0),
+      title(""),
+      command(""),
+      command_type(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      *(outbuffer + offset + 0) = (this->parent_id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->parent_id >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->parent_id >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->parent_id >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parent_id);
+      uint32_t length_title = strlen(this->title);
+      varToArr(outbuffer + offset, length_title);
+      offset += 4;
+      memcpy(outbuffer + offset, this->title, length_title);
+      offset += length_title;
+      uint32_t length_command = strlen(this->command);
+      varToArr(outbuffer + offset, length_command);
+      offset += 4;
+      memcpy(outbuffer + offset, this->command, length_command);
+      offset += length_command;
+      *(outbuffer + offset + 0) = (this->command_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->command_type);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->id =  ((uint32_t) (*(inbuffer + offset)));
+      this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->id);
+      this->parent_id =  ((uint32_t) (*(inbuffer + offset)));
+      this->parent_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->parent_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->parent_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->parent_id);
+      uint32_t length_title;
+      arrToVar(length_title, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_title; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_title-1]=0;
+      this->title = (char *)(inbuffer + offset-1);
+      offset += length_title;
+      uint32_t length_command;
+      arrToVar(length_command, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_command; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_command-1]=0;
+      this->command = (char *)(inbuffer + offset-1);
+      offset += length_command;
+      this->command_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->command_type);
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/MenuEntry"; };
+    const char * getMD5(){ return "b90ec63024573de83b57aa93eb39be2d"; };
+
+  };
+
+}
+#endif
index 744f0d622213e384b6cfd030a52ff40f0ee72741..a601ae18d168f13c3741d076215b0bdb3b9c96f2 100644 (file)
@@ -55,8 +55,8 @@ ENTRY(Reset_Handler)
 /* Highest address of the user mode stack */
 _estack = 0x20080000;  /* end of "RAM" Ram type memory */
 
-_Min_Heap_Size = 0x200 ;       /* required amount of heap  */
-_Min_Stack_Size = 0x400 ;      /* required amount of stack */
+_Min_Heap_Size = 0x200       /* required amount of heap  */
+_Min_Stack_Size = 0x400      /* required amount of stack */
 
 /* Memories definition */
 MEMORY
index 486280ad117c21cc518da34402601417c40dc5cb..3d52c5fb5c0328dd66784df0f83f747e9f301348 100644 (file)
@@ -23,7 +23,9 @@
 \r
 /* Private includes ----------------------------------------------------------*/\r
 /* USER CODE BEGIN Includes */\r
-#include "test.hpp"\r
+#include <std_msgs/String.h>\r
+#include <ros.h>\r
+\r
 /* USER CODE END Includes */\r
 \r
 /* Private typedef -----------------------------------------------------------*/\r
@@ -43,6 +45,8 @@
 \r
 /* Private variables ---------------------------------------------------------*/\r
 \r
+TIM_HandleTypeDef htim2;\r
+\r
 UART_HandleTypeDef huart3;\r
 \r
 /* USER CODE BEGIN PV */\r
@@ -52,6 +56,7 @@ UART_HandleTypeDef huart3;
 /* Private function prototypes -----------------------------------------------*/\r
 void SystemClock_Config(void);\r
 static void MX_GPIO_Init(void);\r
+static void MX_TIM2_Init(void);\r
 static void MX_USART3_UART_Init(void);\r
 /* USER CODE BEGIN PFP */\r
 \r
@@ -63,137 +68,188 @@ static void MX_USART3_UART_Init(void);
 /* USER CODE END 0 */\r
 \r
 /**\r
- * @brief  The application entry point.\r
- * @retval int\r
- */\r
-int main(void) {\r
-       /* USER CODE BEGIN 1 */\r
+  * @brief  The application entry point.\r
+  * @retval int\r
+  */\r
+int main(void)\r
+{\r
+  /* USER CODE BEGIN 1 */\r
+\r
+  /* USER CODE END 1 */\r
+  \r
 \r
-       /* USER CODE END 1 */\r
+  /* MCU Configuration--------------------------------------------------------*/\r
 \r
-       /* MCU Configuration--------------------------------------------------------*/\r
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */\r
+  HAL_Init();\r
 \r
-       /* Reset of all peripherals, Initializes the Flash interface and the Systick. */\r
-       HAL_Init();\r
+  /* USER CODE BEGIN Init */\r
 \r
-       /* USER CODE BEGIN Init */\r
+  /* USER CODE END Init */\r
 \r
-       /* USER CODE END Init */\r
+  /* Configure the system clock */\r
+  SystemClock_Config();\r
 \r
-       /* Configure the system clock */\r
-       SystemClock_Config();\r
+  /* USER CODE BEGIN SysInit */\r
 \r
-       /* USER CODE BEGIN SysInit */\r
+  /* USER CODE END SysInit */\r
 \r
-       /* USER CODE END SysInit */\r
+  /* Initialize all configured peripherals */\r
+  MX_GPIO_Init();\r
+  MX_TIM2_Init();\r
+  MX_USART3_UART_Init();\r
+  /* USER CODE BEGIN 2 */\r
+       ros::NodeHandle nh;\r
 \r
-       /* Initialize all configured peripherals */\r
-       MX_GPIO_Init();\r
-       MX_USART3_UART_Init();\r
-       /* USER CODE BEGIN 2 */\r
-       uint32_t i = 0;\r
-       /* USER CODE END 2 */\r
+       std_msgs::String str_msg;\r
+       ros::Publisher chatter("chatter", &str_msg);\r
+       char hello[] = "Hello world!";\r
 \r
-       /* Infinite loop */\r
-       /* USER CODE BEGIN WHILE */\r
+       nh.initNode();\r
+       nh.advertise(chatter);\r
+\r
+  /* USER CODE END 2 */\r
+\r
+  /* Infinite loop */\r
+  /* USER CODE BEGIN WHILE */\r
        while (1) {\r
-               i = write(i);\r
-               i = write(i);\r
-               i = write(i);\r
-               i = write(i);\r
 \r
-               /* USER CODE END WHILE */\r
+               /*\r
+               str_msg.data = hello;\r
+               chatter.publish(&str_msg);\r
+               nh.spinOnce();\r
+               */\r
+               HAL_UART_Transmit(&huart3, (uint8_t*)hello, strlen(hello), 100);\r
+\r
+               HAL_Delay(1000);\r
+    /* USER CODE END WHILE */\r
 \r
-               /* USER CODE BEGIN 3 */\r
+    /* USER CODE BEGIN 3 */\r
        }\r
-       /* USER CODE END 3 */\r
+  /* USER CODE END 3 */\r
 }\r
 \r
 /**\r
- * @brief System Clock Configuration\r
- * @retval None\r
- */\r
-void SystemClock_Config(void) {\r
-       RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };\r
-       RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };\r
-       RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };\r
-\r
-       /** Configure the main internal regulator output voltage\r
-        */\r
-       __HAL_RCC_PWR_CLK_ENABLE()\r
-       ;\r
-       __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);\r
-       /** Initializes the CPU, AHB and APB busses clocks\r
-        */\r
-       RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;\r
-       RCC_OscInitStruct.HSIState = RCC_HSI_ON;\r
-       RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;\r
-       RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;\r
-       if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {\r
-               Error_Handler();\r
-       }\r
-       /** Initializes the CPU, AHB and APB busses clocks\r
-        */\r
-       RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK\r
-                       | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;\r
-       RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;\r
-       RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;\r
-       RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;\r
-       RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;\r
-\r
-       if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {\r
-               Error_Handler();\r
-       }\r
-       PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;\r
-       PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;\r
-       if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {\r
-               Error_Handler();\r
-       }\r
+  * @brief System Clock Configuration\r
+  * @retval None\r
+  */\r
+void SystemClock_Config(void)\r
+{\r
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};\r
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};\r
+  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};\r
+\r
+  /** Configure the main internal regulator output voltage \r
+  */\r
+  __HAL_RCC_PWR_CLK_ENABLE();\r
+  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);\r
+  /** Initializes the CPU, AHB and APB busses clocks \r
+  */\r
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;\r
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;\r
+  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;\r
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;\r
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)\r
+  {\r
+    Error_Handler();\r
+  }\r
+  /** Initializes the CPU, AHB and APB busses clocks \r
+  */\r
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK\r
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;\r
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;\r
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;\r
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;\r
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;\r
+\r
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)\r
+  {\r
+    Error_Handler();\r
+  }\r
+  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;\r
+  PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;\r
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\r
+  {\r
+    Error_Handler();\r
+  }\r
 }\r
 \r
 /**\r
- * @brief USART3 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_USART3_UART_Init(void) {\r
-\r
-       /* USER CODE BEGIN USART3_Init 0 */\r
-\r
-       /* USER CODE END USART3_Init 0 */\r
-\r
-       /* USER CODE BEGIN USART3_Init 1 */\r
-\r
-       /* USER CODE END USART3_Init 1 */\r
-       huart3.Instance = USART3;\r
-       huart3.Init.BaudRate = 115200;\r
-       huart3.Init.WordLength = UART_WORDLENGTH_8B;\r
-       huart3.Init.StopBits = UART_STOPBITS_1;\r
-       huart3.Init.Parity = UART_PARITY_NONE;\r
-       huart3.Init.Mode = UART_MODE_TX_RX;\r
-       huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;\r
-       huart3.Init.OverSampling = UART_OVERSAMPLING_16;\r
-       huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\r
-       huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\r
-       if (HAL_UART_Init(&huart3) != HAL_OK) {\r
-               Error_Handler();\r
-       }\r
-       /* USER CODE BEGIN USART3_Init 2 */\r
+  * @brief TIM2 Initialization Function\r
+  * @param None\r
+  * @retval None\r
+  */\r
+static void MX_TIM2_Init(void)\r
+{\r
+\r
+  /* USER CODE BEGIN TIM2_Init 0 */\r
+\r
+  /* USER CODE END TIM2_Init 0 */\r
 \r
-       /* USER CODE END USART3_Init 2 */\r
+  /* USER CODE BEGIN TIM2_Init 1 */\r
+\r
+  /* USER CODE END TIM2_Init 1 */\r
+  htim2.Instance = TIM2;\r
+  htim2.Init.Prescaler = 0;\r
+  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;\r
+  htim2.Init.Period = 0;\r
+  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;\r
+  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;\r
+  if (HAL_TIM_OnePulse_Init(&htim2, TIM_OPMODE_SINGLE) != HAL_OK)\r
+  {\r
+    Error_Handler();\r
+  }\r
+  /* USER CODE BEGIN TIM2_Init 2 */\r
+\r
+  /* USER CODE END TIM2_Init 2 */\r
 \r
 }\r
 \r
 /**\r
- * @brief GPIO Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_GPIO_Init(void) {\r
+  * @brief USART3 Initialization Function\r
+  * @param None\r
+  * @retval None\r
+  */\r
+static void MX_USART3_UART_Init(void)\r
+{\r
+\r
+  /* USER CODE BEGIN USART3_Init 0 */\r
+\r
+  /* USER CODE END USART3_Init 0 */\r
+\r
+  /* USER CODE BEGIN USART3_Init 1 */\r
+\r
+  /* USER CODE END USART3_Init 1 */\r
+  huart3.Instance = USART3;\r
+  huart3.Init.BaudRate = 115200;\r
+  huart3.Init.WordLength = UART_WORDLENGTH_8B;\r
+  huart3.Init.StopBits = UART_STOPBITS_1;\r
+  huart3.Init.Parity = UART_PARITY_NONE;\r
+  huart3.Init.Mode = UART_MODE_TX_RX;\r
+  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;\r
+  huart3.Init.OverSampling = UART_OVERSAMPLING_16;\r
+  huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\r
+  huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\r
+  if (HAL_UART_Init(&huart3) != HAL_OK)\r
+  {\r
+    Error_Handler();\r
+  }\r
+  /* USER CODE BEGIN USART3_Init 2 */\r
+\r
+  /* USER CODE END USART3_Init 2 */\r
 \r
-       /* GPIO Ports Clock Enable */\r
-       __HAL_RCC_GPIOD_CLK_ENABLE()\r
-       ;\r
+}\r
+\r
+/**\r
+  * @brief GPIO Initialization Function\r
+  * @param None\r
+  * @retval None\r
+  */\r
+static void MX_GPIO_Init(void)\r
+{\r
+\r
+  /* GPIO Ports Clock Enable */\r
+  __HAL_RCC_GPIOD_CLK_ENABLE();\r
 \r
 }\r
 \r
@@ -202,14 +258,15 @@ static void MX_GPIO_Init(void) {
 /* USER CODE END 4 */\r
 \r
 /**\r
- * @brief  This function is executed in case of error occurrence.\r
- * @retval None\r
- */\r
-void Error_Handler(void) {\r
-       /* USER CODE BEGIN Error_Handler_Debug */\r
+  * @brief  This function is executed in case of error occurrence.\r
+  * @retval None\r
+  */\r
+void Error_Handler(void)\r
+{\r
+  /* USER CODE BEGIN Error_Handler_Debug */\r
        /* User can add his own implementation to report the HAL error return state */\r
 \r
-       /* USER CODE END Error_Handler_Debug */\r
+  /* USER CODE END Error_Handler_Debug */\r
 }\r
 \r
 #ifdef  USE_FULL_ASSERT\r
diff --git a/rosserial_test/Src/ros_time.cpp b/rosserial_test/Src/ros_time.cpp
new file mode 100644 (file)
index 0000000..2482e5d
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * 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.
+ *  * 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.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "ros/ros_time.h"
+
+namespace ros
+{
+void normalizeSecNSec(uint32_t& sec, uint32_t& nsec)
+{
+  uint32_t nsec_part = nsec % 1000000000UL;
+  uint32_t sec_part = nsec / 1000000000UL;
+  sec += sec_part;
+  nsec = nsec_part;
+}
+
+Time& Time::fromNSec(int32_t t)
+{
+  sec = t / 1000000000;
+  nsec = t % 1000000000;
+  normalizeSecNSec(sec, nsec);
+  return *this;
+}
+
+Time& Time::operator +=(const Duration &rhs)
+{
+  sec += rhs.sec;
+  nsec += rhs.nsec;
+  normalizeSecNSec(sec, nsec);
+  return *this;
+}
+
+Time& Time::operator -=(const Duration &rhs)
+{
+  sec += -rhs.sec;
+  nsec += -rhs.nsec;
+  normalizeSecNSec(sec, nsec);
+  return *this;
+}
+}
index e585391b747dad60f620d10bc27c53abd502df5d..fa7a3b8a3294ef8c4d4b727b9c47046aa401b75e 100644 (file)
@@ -77,6 +77,50 @@ void HAL_MspInit(void)
   /* USER CODE END MspInit 1 */\r
 }\r
 \r
+/**\r
+* @brief TIM_OnePulse MSP Initialization\r
+* This function configures the hardware resources used in this example\r
+* @param htim_onepulse: TIM_OnePulse handle pointer\r
+* @retval None\r
+*/\r
+void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef* htim_onepulse)\r
+{\r
+  if(htim_onepulse->Instance==TIM2)\r
+  {\r
+  /* USER CODE BEGIN TIM2_MspInit 0 */\r
+\r
+  /* USER CODE END TIM2_MspInit 0 */\r
+    /* Peripheral clock enable */\r
+    __HAL_RCC_TIM2_CLK_ENABLE();\r
+  /* USER CODE BEGIN TIM2_MspInit 1 */\r
+\r
+  /* USER CODE END TIM2_MspInit 1 */\r
+  }\r
+\r
+}\r
+\r
+/**\r
+* @brief TIM_OnePulse MSP De-Initialization\r
+* This function freeze the hardware resources used in this example\r
+* @param htim_onepulse: TIM_OnePulse handle pointer\r
+* @retval None\r
+*/\r
+void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef* htim_onepulse)\r
+{\r
+  if(htim_onepulse->Instance==TIM2)\r
+  {\r
+  /* USER CODE BEGIN TIM2_MspDeInit 0 */\r
+\r
+  /* USER CODE END TIM2_MspDeInit 0 */\r
+    /* Peripheral clock disable */\r
+    __HAL_RCC_TIM2_CLK_DISABLE();\r
+  /* USER CODE BEGIN TIM2_MspDeInit 1 */\r
+\r
+  /* USER CODE END TIM2_MspDeInit 1 */\r
+  }\r
+\r
+}\r
+\r
 /**\r
 * @brief UART MSP Initialization\r
 * This function configures the hardware resources used in this example\r
index 3148adaf81cc7688efda01eff5ff6308791f40dd..980ccf13b20326504835146aad2cf7da4af32815 100644 (file)
@@ -2,7 +2,6 @@
 #include "stm32f7xx_hal_uart.h"
 #include "test.hpp"
 
-int write(int i) {
-       i = 5;
-       return i;
+void write(uint8_t* data, int length, UART_HandleTypeDef huart) {
+       HAL_UART_Transmit(&huart, data, length, 100);
 }
index aa3e4954e0a23de342696db17bd2db02214e9ec4..49891c04223e742036f998797cbabf3e8d5720c0 100644 (file)
@@ -6,14 +6,16 @@ Mcu.IP0=CORTEX_M7
 Mcu.IP1=NVIC
 Mcu.IP2=RCC
 Mcu.IP3=SYS
-Mcu.IP4=USART3
-Mcu.IPNb=5
+Mcu.IP4=TIM2
+Mcu.IP5=USART3
+Mcu.IPNb=6
 Mcu.Name=STM32F767ZITx
 Mcu.Package=LQFP144
 Mcu.Pin0=PD8
 Mcu.Pin1=PD9
 Mcu.Pin2=VP_SYS_VS_Systick
-Mcu.PinsNb=3
+Mcu.Pin3=VP_TIM2_VS_OPM
+Mcu.PinsNb=4
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32F767ZITx
@@ -70,7 +72,7 @@ ProjectManager.StackSize=0x400
 ProjectManager.TargetToolchain=STM32CubeIDE
 ProjectManager.ToolChainLocation=
 ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=2-SystemClock_Config-RCC-false-HAL-false
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_TIM2_Init-TIM2-false-HAL-true,4-MX_USART3_UART_Init-USART3-false-HAL-true
 RCC.CECFreq_Value=32786.88524590164
 RCC.DFSDMFreq_Value=16000000
 RCC.FamilyName=M
@@ -101,9 +103,13 @@ RCC.VCOI2SOutputFreq_Value=192000000
 RCC.VCOInputFreq_Value=1000000
 RCC.VCOOutputFreq_Value=192000000
 RCC.VCOSAIOutputFreq_Value=192000000
+TIM2.IPParameters=Prescaler
+TIM2.Prescaler=0
 USART3.IPParameters=VirtualMode-Asynchronous
 USART3.VirtualMode-Asynchronous=VM_ASYNC
 VP_SYS_VS_Systick.Mode=SysTick
 VP_SYS_VS_Systick.Signal=SYS_VS_Systick
+VP_TIM2_VS_OPM.Mode=OPM_bit
+VP_TIM2_VS_OPM.Signal=TIM2_VS_OPM
 board=custom
 isbadioc=false