From b2f472a2b1f36073b0070b81c08a666380ad180d Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Jun 2017 13:14:55 -0500 Subject: [PATCH 001/195] SwRasterizer: Implement primary fragment color. --- src/video_core/swrasterizer/rasterizer.cpp | 119 ++++++++++++++++++++- 1 file changed, 114 insertions(+), 5 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 512e81c081..1ab41c2df3 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -13,6 +13,7 @@ #include "common/logging/log.h" #include "common/math_util.h" #include "common/microprofile.h" +#include "common/quaternion.h" #include "common/vector_math.h" #include "core/hw/gpu.h" #include "core/memory.h" @@ -114,6 +115,86 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v return std::make_tuple(x / z * half + half, y / z * half + half, addr); } +std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Quaternion& normquat, const Math::Vec3& view) { + const auto& lighting = g_state.regs.lighting; + + if (lighting.disable) + return {{}, {}}; + + // TODO(Subv): Bump mapping + Math::Vec3 surface_normal = {0.0f, 0.0f, 1.0f}; + + if (lighting.config0.bump_mode != LightingRegs::LightingBumpMode::None) { + LOG_CRITICAL(HW_GPU, "unimplemented bump mapping"); + UNIMPLEMENTED(); + } + + // TODO(Subv): Do we need to normalize the quaternion here? + auto normal = Math::QuaternionRotate(normquat, surface_normal); + + Math::Vec3 light_vector = {}; + Math::Vec3 diffuse_sum = {}; + // TODO(Subv): Calculate specular + Math::Vec3 specular_sum = {}; + + for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { + unsigned num = lighting.light_enable.GetNum(light_index); + const auto& light_config = g_state.regs.lighting.light[num]; + + Math::Vec3 position = {float16::FromRaw(light_config.x).ToFloat32(), float16::FromRaw(light_config.y).ToFloat32(), float16::FromRaw(light_config.z).ToFloat32()}; + + if (light_config.config.directional) + light_vector = position; + else + light_vector = position + view; + + light_vector.Normalize(); + + auto dot_product = Math::Dot(light_vector, normal); + + if (light_config.config.two_sided_diffuse) + dot_product = std::abs(dot_product); + else + dot_product = std::max(dot_product, 0.0f); + + float dist_atten = 1.0f; + if (!lighting.IsDistAttenDisabled(num)) { + auto distance = (-view - position).Length(); + float scale = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); + float bias = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); + size_t lut = static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; + + float sample_loc = scale * distance + bias; + unsigned index_i = static_cast(MathUtil::Clamp(floor(sample_loc * 256), 0.0f, 1.0f)); + + float index_f = sample_loc - index_i; + + ASSERT_MSG(lut < g_state.lighting.luts.size(), "Out of range lut"); + + float lut_value = g_state.lighting.luts[lut][index_i].ToFloat(); + float lut_diff = g_state.lighting.luts[lut][index_i].DiffToFloat(); + + dist_atten = lut_value + lut_diff * index_f; + } + + auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); + diffuse_sum += diffuse * dist_atten; + } + + diffuse_sum += lighting.global_ambient.ToVec3f(); + return { + Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, 255).Cast(), + Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, 255).Cast() + }; +} + +static bool AreQuaternionsOpposite(Math::Vec4 qa, Math::Vec4 qb) { + Math::Vec4f a{ qa.x.ToFloat32(), qa.y.ToFloat32(), qa.z.ToFloat32(), qa.w.ToFloat32() }; + Math::Vec4f b{ qb.x.ToFloat32(), qb.y.ToFloat32(), qb.z.ToFloat32(), qb.w.ToFloat32() }; + + return (Math::Dot(a, b) < 0.f); +} + MICROPROFILE_DEFINE(GPU_Rasterization, "GPU", "Rasterization", MP_RGB(50, 50, 240)); /** @@ -207,6 +288,15 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve int bias2 = IsRightSideOrFlatBottomEdge(vtxpos[2].xy(), vtxpos[0].xy(), vtxpos[1].xy()) ? -1 : 0; + // Flip the quaternions if they are opposite to prevent interpolating them over the wrong direction. + auto v1_quat = v1.quat; + auto v2_quat = v2.quat; + + if (AreQuaternionsOpposite(v0.quat, v1.quat)) + v1_quat = v1_quat * float24::FromFloat32(-1.0f); + if (AreQuaternionsOpposite(v0.quat, v2.quat)) + v2_quat = v2_quat * float24::FromFloat32(-1.0f); + auto w_inverse = Math::MakeVec(v0.pos.w, v1.pos.w, v2.pos.w); auto textures = regs.texturing.GetTextures(); @@ -305,6 +395,21 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve 255), }; + Math::Quaternion normquat{ + { + GetInterpolatedAttribute(v0.quat.x, v1_quat.x, v2_quat.x).ToFloat32(), + GetInterpolatedAttribute(v0.quat.y, v1_quat.y, v2_quat.y).ToFloat32(), + GetInterpolatedAttribute(v0.quat.z, v1_quat.z, v2_quat.z).ToFloat32() + }, + GetInterpolatedAttribute(v0.quat.w, v1_quat.w, v2_quat.w).ToFloat32(), + }; + + Math::Vec3 fragment_position{ + GetInterpolatedAttribute(v0.view.x, v1.view.x, v2.view.x).ToFloat32(), + GetInterpolatedAttribute(v0.view.y, v1.view.y, v2.view.y).ToFloat32(), + GetInterpolatedAttribute(v0.view.z, v1.view.z, v2.view.z).ToFloat32() + }; + Math::Vec2 uv[3]; uv[0].u() = GetInterpolatedAttribute(v0.tc0.u(), v1.tc0.u(), v2.tc0.u()); uv[0].v() = GetInterpolatedAttribute(v0.tc0.v(), v1.tc0.v(), v2.tc0.v()); @@ -419,6 +524,11 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve regs.texturing.tev_combiner_buffer_color.a, }; + Math::Vec4 primary_fragment_color; + Math::Vec4 secondary_fragment_color; + + std::tie(primary_fragment_color, secondary_fragment_color) = ComputeFragmentsColors(normquat, fragment_position); + for (unsigned tev_stage_index = 0; tev_stage_index < tev_stages.size(); ++tev_stage_index) { const auto& tev_stage = tev_stages[tev_stage_index]; @@ -427,14 +537,13 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve auto GetSource = [&](Source source) -> Math::Vec4 { switch (source) { case Source::PrimaryColor: - - // HACK: Until we implement fragment lighting, use primary_color - case Source::PrimaryFragmentColor: return primary_color; - // HACK: Until we implement fragment lighting, use zero + case Source::PrimaryFragmentColor: + return primary_fragment_color; + case Source::SecondaryFragmentColor: - return {0, 0, 0, 0}; + return secondary_fragment_color; case Source::Texture0: return texture_color[0]; From be25e78b07140cb745387f757001dd04b3b4cc64 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Jun 2017 14:25:41 -0500 Subject: [PATCH 002/195] SwRasterizer: Calculate specular_0 for fragment lighting. --- src/video_core/swrasterizer/rasterizer.cpp | 115 ++++++++++++++++++--- 1 file changed, 98 insertions(+), 17 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 1ab41c2df3..34b84b0af3 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -115,6 +115,20 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v return std::make_tuple(x / z * half + half, y / z * half + half, addr); } + +float LookupLightingLut(size_t lut_index, float index) { + unsigned index_i = static_cast(MathUtil::Clamp(floor(index * 256), 0.0f, 1.0f)); + + float index_f = index - index_i; + + ASSERT_MSG(lut_index < g_state.lighting.luts.size(), "Out of range lut"); + + float lut_value = g_state.lighting.luts[lut_index][index_i].ToFloat(); + float lut_diff = g_state.lighting.luts[lut_index][index_i].DiffToFloat(); + + return lut_value + lut_diff * index_f; +} + std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Quaternion& normquat, const Math::Vec3& view) { const auto& lighting = g_state.regs.lighting; @@ -133,9 +147,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu auto normal = Math::QuaternionRotate(normquat, surface_normal); Math::Vec3 light_vector = {}; - Math::Vec3 diffuse_sum = {}; + Math::Vec4 diffuse_sum = {0.f, 0.f, 0.f, 1.f}; // TODO(Subv): Calculate specular - Math::Vec3 specular_sum = {}; + Math::Vec4 specular_sum = {0.f, 0.f, 0.f, 1.f}; for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { unsigned num = lighting.light_enable.GetNum(light_index); @@ -150,7 +164,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu light_vector.Normalize(); - auto dot_product = Math::Dot(light_vector, normal); + auto LV_N = Math::Dot(light_vector, normal); + auto dot_product = LV_N; if (light_config.config.two_sided_diffuse) dot_product = std::abs(dot_product); @@ -165,26 +180,92 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu size_t lut = static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; float sample_loc = scale * distance + bias; - unsigned index_i = static_cast(MathUtil::Clamp(floor(sample_loc * 256), 0.0f, 1.0f)); - - float index_f = sample_loc - index_i; - - ASSERT_MSG(lut < g_state.lighting.luts.size(), "Out of range lut"); - - float lut_value = g_state.lighting.luts[lut][index_i].ToFloat(); - float lut_diff = g_state.lighting.luts[lut][index_i].DiffToFloat(); - - dist_atten = lut_value + lut_diff * index_f; + dist_atten = LookupLightingLut(lut, sample_loc); } + float clamp_highlights = 1.0f; + + if (lighting.config0.clamp_highlights) { + if (LV_N <= 0.f) + clamp_highlights = 0.f; + else + clamp_highlights = 1.f; + } + + auto GetLutIndex = [&](unsigned num, LightingRegs::LightingLutInput input, + bool abs) -> float { + + Math::Vec3 norm_view = view.Normalized(); + Math::Vec3 half_angle = (norm_view + light_vector).Normalized(); + float result = 0.0f; + + switch (input) { + case LightingRegs::LightingLutInput::NH: + result = Math::Dot(normal, half_angle); + break; + + case LightingRegs::LightingLutInput::VH: + result = Math::Dot(norm_view, half_angle); + break; + + case LightingRegs::LightingLutInput::NV: + result = Math::Dot(normal, norm_view); + break; + + case LightingRegs::LightingLutInput::LN: + result = Math::Dot(light_vector, normal); + break; + + default: + LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %d\n", (int)input); + UNIMPLEMENTED(); + result = 0.f; + } + + if (abs) { + if (light_config.config.two_sided_diffuse) + result = std::abs(result); + else + result = std::max(result, 0.0f); + } else { + if (result < 0.f) + result += 2.f; + + result /= 2.f; + } + + return MathUtil::Clamp(result, 0.0f, 1.0f); + }; + + // Specular 0 component + float d0_lut_value = 1.0f; + if (lighting.config1.disable_lut_d0 == 0 && + LightingRegs::IsLightingSamplerSupported( + lighting.config0.config, LightingRegs::LightingSampler::Distribution0)) { + + // Lookup specular "distribution 0" LUT value + float index = GetLutIndex(num, lighting.lut_input.d0.Value(), lighting.abs_lut_input.disable_d0 == 0); + + float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d0); + + d0_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution0), index); + } + + Math::Vec3 specular_0 = d0_lut_value * light_config.specular_0.ToVec3f(); + + // TODO(Subv): Specular 1 + Math::Vec3 specular_1 = {}; + auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); - diffuse_sum += diffuse * dist_atten; + diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); + + specular_sum += Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.f); } - diffuse_sum += lighting.global_ambient.ToVec3f(); + diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); return { - Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, 255).Cast(), - Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, 255).Cast() + Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255).Cast(), + Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255).Cast() }; } From 46b8c8e1da6bc29df2662d63b0e028136fef3636 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Jun 2017 14:44:02 -0500 Subject: [PATCH 003/195] SwRasterizer: Calculate specular_1 for fragment lighting. --- src/video_core/swrasterizer/rasterizer.cpp | 62 ++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 34b84b0af3..e0c326a4a9 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -148,8 +148,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu Math::Vec3 light_vector = {}; Math::Vec4 diffuse_sum = {0.f, 0.f, 0.f, 1.f}; - // TODO(Subv): Calculate specular Math::Vec4 specular_sum = {0.f, 0.f, 0.f, 1.f}; + Math::Vec3 refl_value = {}; for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { unsigned num = lighting.light_enable.GetNum(light_index); @@ -253,8 +253,64 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu Math::Vec3 specular_0 = d0_lut_value * light_config.specular_0.ToVec3f(); - // TODO(Subv): Specular 1 - Math::Vec3 specular_1 = {}; + // If enabled, lookup ReflectRed value, otherwise, 1.0 is used + if (lighting.config1.disable_lut_rr == 0 && + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::ReflectRed)) { + + float index = GetLutIndex(num, lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0); + + float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rr); + + refl_value.x = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectRed), index); + } else { + refl_value.x = 1.0f; + } + + // If enabled, lookup ReflectGreen value, otherwise, ReflectRed value is used + if (lighting.config1.disable_lut_rg == 0 && + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::ReflectGreen)) { + + float index = GetLutIndex(num, lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0); + + float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rg); + + refl_value.y = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectGreen), index); + } else { + refl_value.y = refl_value.x; + } + + // If enabled, lookup ReflectBlue value, otherwise, ReflectRed value is used + if (lighting.config1.disable_lut_rb == 0 && + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::ReflectBlue)) { + + float index = GetLutIndex(num, lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0); + + float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rb); + + refl_value.z = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectBlue), index); + } else { + refl_value.z = refl_value.x; + } + + float d1_lut_value = 1.0f; + if (lighting.config1.disable_lut_d1 == 0 && + LightingRegs::IsLightingSamplerSupported( + lighting.config0.config, LightingRegs::LightingSampler::Distribution1)) { + + // Lookup specular "distribution 1" LUT value + float index = GetLutIndex(num, lighting.lut_input.d1.Value(), lighting.abs_lut_input.disable_d1 == 0); + + float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d1); + + d1_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution1), index); + } + + Math::Vec3 specular_1 = d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); + + // TODO(Subv): Fresnel auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); From 10b0bea06008fea89564dc5ef8895c0274f8ef18 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Jun 2017 14:55:54 -0500 Subject: [PATCH 004/195] SwRasterizer: Calculate fresnel for fragment lighting. --- src/video_core/swrasterizer/rasterizer.cpp | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index e0c326a4a9..2d1daa24a9 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -310,7 +310,31 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu Math::Vec3 specular_1 = d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); - // TODO(Subv): Fresnel + if (lighting.config1.disable_lut_fr == 0 && + LightingRegs::IsLightingSamplerSupported( + lighting.config0.config, LightingRegs::LightingSampler::Fresnel)) { + + // Lookup fresnel LUT value + float index = GetLutIndex(num, lighting.lut_input.fr.Value(), lighting.abs_lut_input.disable_fr == 0); + + float scale = lighting.lut_scale.GetScale(lighting.lut_scale.fr); + + float lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Fresnel), index); + + // Enabled for difffuse lighting alpha component + if (lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::PrimaryAlpha || + lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { + diffuse_sum.a() *= lut_value; + } + + // Enabled for the specular lighting alpha component + if (lighting.config0.fresnel_selector == + LightingRegs::LightingFresnelSelector::SecondaryAlpha || + lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { + specular_sum.a() *= lut_value; + } + } + auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); From 80b6fc592e3a2f5821975e84b5df35f5dc4ae51a Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Jun 2017 15:24:28 -0500 Subject: [PATCH 005/195] SwRasterizer: Fixed the lighting lut lookup function. --- src/video_core/swrasterizer/rasterizer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 2d1daa24a9..2b85ac86c6 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -117,7 +117,9 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v float LookupLightingLut(size_t lut_index, float index) { - unsigned index_i = static_cast(MathUtil::Clamp(floor(index * 256), 0.0f, 1.0f)); + index *= 256; + + unsigned index_i = static_cast(MathUtil::Clamp(floor(index), 0.0f, 255.0f)); float index_f = index - index_i; @@ -126,7 +128,7 @@ float LookupLightingLut(size_t lut_index, float index) { float lut_value = g_state.lighting.luts[lut_index][index_i].ToFloat(); float lut_diff = g_state.lighting.luts[lut_index][index_i].DiffToFloat(); - return lut_value + lut_diff * index_f; + return lut_value + lut_diff * index_f / 256.f; } std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Quaternion& normquat, const Math::Vec3& view) { From f2d4d5c2191275bd91f2f42b880f3edf3bccfd63 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Jun 2017 17:33:25 -0500 Subject: [PATCH 006/195] SwRasterizer: Corrected the light LUT lookups. --- src/common/quaternion.h | 5 ++ src/video_core/swrasterizer/rasterizer.cpp | 76 ++++++++++++---------- 2 files changed, 48 insertions(+), 33 deletions(-) diff --git a/src/common/quaternion.h b/src/common/quaternion.h index 84ac82ed36..77f626bcb4 100644 --- a/src/common/quaternion.h +++ b/src/common/quaternion.h @@ -30,6 +30,11 @@ public: return {xyz * other.w + other.xyz * w + Cross(xyz, other.xyz), w * other.w - Dot(xyz, other.xyz)}; } + + Quaternion Normalized() const { + T length = std::sqrt(xyz.Length2() + w * w); + return {xyz / length, w / length}; + } }; template diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 2b85ac86c6..a9098e1f09 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -115,20 +115,14 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v return std::make_tuple(x / z * half + half, y / z * half + half, addr); } - -float LookupLightingLut(size_t lut_index, float index) { - index *= 256; - - unsigned index_i = static_cast(MathUtil::Clamp(floor(index), 0.0f, 255.0f)); - - float index_f = index - index_i; - +float LookupLightingLut(size_t lut_index, u8 index, float delta) { ASSERT_MSG(lut_index < g_state.lighting.luts.size(), "Out of range lut"); + ASSERT_MSG(index < g_state.lighting.luts[0].size(), "Out of range index"); - float lut_value = g_state.lighting.luts[lut_index][index_i].ToFloat(); - float lut_diff = g_state.lighting.luts[lut_index][index_i].DiffToFloat(); + float lut_value = g_state.lighting.luts[lut_index][index].ToFloat(); + float lut_diff = g_state.lighting.luts[lut_index][index].DiffToFloat(); - return lut_value + lut_diff * index_f / 256.f; + return lut_value + lut_diff * delta; } std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Quaternion& normquat, const Math::Vec3& view) { @@ -145,8 +139,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu UNIMPLEMENTED(); } - // TODO(Subv): Do we need to normalize the quaternion here? - auto normal = Math::QuaternionRotate(normquat, surface_normal); + // Use the normalized the quaternion when performing the rotation + auto normal = Math::QuaternionRotate(normquat.Normalized(), surface_normal); Math::Vec3 light_vector = {}; Math::Vec4 diffuse_sum = {0.f, 0.f, 0.f, 1.f}; @@ -182,7 +176,10 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu size_t lut = static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; float sample_loc = scale * distance + bias; - dist_atten = LookupLightingLut(lut, sample_loc); + + u8 lutindex = MathUtil::Clamp(floorf(sample_loc * 256.f), 0.0f, 255.0f); + float delta = sample_loc * 256 - lutindex; + dist_atten = LookupLightingLut(lut, lutindex, delta / 256.f); } float clamp_highlights = 1.0f; @@ -195,7 +192,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu } auto GetLutIndex = [&](unsigned num, LightingRegs::LightingLutInput input, - bool abs) -> float { + bool abs) -> std::tuple { Math::Vec3 norm_view = view.Normalized(); Math::Vec3 half_angle = (norm_view + light_vector).Normalized(); @@ -229,14 +226,15 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu result = std::abs(result); else result = std::max(result, 0.0f); + + u8 lutindex = MathUtil::Clamp(floorf(result * 256.f), 0.0f, 255.0f); + float delta = result * 256 - lutindex; + return { lutindex, delta / 256.f }; } else { - if (result < 0.f) - result += 2.f; - - result /= 2.f; + u8 tmpi = MathUtil::Clamp(floorf(result * 128.f), 0.0f, 127.0f); + float delta = result * 128.f - tmpi; + return { tmpi & 0xFF, delta / 128.f }; } - - return MathUtil::Clamp(result, 0.0f, 1.0f); }; // Specular 0 component @@ -246,11 +244,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu lighting.config0.config, LightingRegs::LightingSampler::Distribution0)) { // Lookup specular "distribution 0" LUT value - float index = GetLutIndex(num, lighting.lut_input.d0.Value(), lighting.abs_lut_input.disable_d0 == 0); + u8 index; + float delta; + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d0.Value(), lighting.abs_lut_input.disable_d0 == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d0); - d0_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution0), index); + d0_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution0), index, delta); } Math::Vec3 specular_0 = d0_lut_value * light_config.specular_0.ToVec3f(); @@ -260,11 +260,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::ReflectRed)) { - float index = GetLutIndex(num, lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0); + u8 index; + float delta; + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rr); - refl_value.x = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectRed), index); + refl_value.x = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectRed), index, delta); } else { refl_value.x = 1.0f; } @@ -274,11 +276,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::ReflectGreen)) { - float index = GetLutIndex(num, lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0); + u8 index; + float delta; + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rg); - refl_value.y = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectGreen), index); + refl_value.y = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectGreen), index, delta); } else { refl_value.y = refl_value.x; } @@ -288,11 +292,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::ReflectBlue)) { - float index = GetLutIndex(num, lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0); + u8 index; + float delta; + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rb); - refl_value.z = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectBlue), index); + refl_value.z = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectBlue), index, delta); } else { refl_value.z = refl_value.x; } @@ -303,11 +309,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu lighting.config0.config, LightingRegs::LightingSampler::Distribution1)) { // Lookup specular "distribution 1" LUT value - float index = GetLutIndex(num, lighting.lut_input.d1.Value(), lighting.abs_lut_input.disable_d1 == 0); + u8 index; + float delta; + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d1.Value(), lighting.abs_lut_input.disable_d1 == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d1); - d1_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution1), index); + d1_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution1), index, delta); } Math::Vec3 specular_1 = d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); @@ -317,11 +325,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu lighting.config0.config, LightingRegs::LightingSampler::Fresnel)) { // Lookup fresnel LUT value - float index = GetLutIndex(num, lighting.lut_input.fr.Value(), lighting.abs_lut_input.disable_fr == 0); + u8 index; + float delta; + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.fr.Value(), lighting.abs_lut_input.disable_fr == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.fr); - float lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Fresnel), index); + float lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Fresnel), index, delta); // Enabled for difffuse lighting alpha component if (lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::PrimaryAlpha || From 2a75837bc30ba08e2470f4b91078747a08c5213a Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Jun 2017 18:18:57 -0500 Subject: [PATCH 007/195] SwRasterizer: Corrected the light LUT lookups. --- src/video_core/swrasterizer/rasterizer.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index a9098e1f09..2c804b6e7f 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -177,9 +177,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu float sample_loc = scale * distance + bias; - u8 lutindex = MathUtil::Clamp(floorf(sample_loc * 256.f), 0.0f, 255.0f); + u8 lutindex = MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f); float delta = sample_loc * 256 - lutindex; - dist_atten = LookupLightingLut(lut, lutindex, delta / 256.f); + dist_atten = LookupLightingLut(lut, lutindex, delta); } float clamp_highlights = 1.0f; @@ -227,13 +227,14 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu else result = std::max(result, 0.0f); - u8 lutindex = MathUtil::Clamp(floorf(result * 256.f), 0.0f, 255.0f); + u8 lutindex = MathUtil::Clamp(std::floor(result * 256.f), 0.0f, 255.0f); float delta = result * 256 - lutindex; - return { lutindex, delta / 256.f }; + return { lutindex, delta }; } else { - u8 tmpi = MathUtil::Clamp(floorf(result * 128.f), 0.0f, 127.0f); + float flr = std::floor(result * 128.f); + s8 tmpi = MathUtil::Clamp(flr, -128.0f, 127.0f); float delta = result * 128.f - tmpi; - return { tmpi & 0xFF, delta / 128.f }; + return { tmpi & 0xFF, delta }; } }; From 73566ff7a990cdfe8d8f023997b57942dc785fc4 Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 11 Jun 2017 11:55:35 -0500 Subject: [PATCH 008/195] SwRasterizer: Flip the vertex quaternions before clipping (if necessary). --- src/common/vector_math.h | 2 +- src/video_core/swrasterizer/clipper.cpp | 11 ++++++++++ src/video_core/swrasterizer/rasterizer.cpp | 24 ++++------------------ 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/common/vector_math.h b/src/common/vector_math.h index c7a461a1ef..d0fe0e4057 100644 --- a/src/common/vector_math.h +++ b/src/common/vector_math.h @@ -462,7 +462,7 @@ public: z -= other.z; w -= other.w; } - template ::value>::type> + template Vec4 operator-() const { return MakeVec(-x, -y, -z, -w); } diff --git a/src/video_core/swrasterizer/clipper.cpp b/src/video_core/swrasterizer/clipper.cpp index 6fb9237564..7537689b7f 100644 --- a/src/video_core/swrasterizer/clipper.cpp +++ b/src/video_core/swrasterizer/clipper.cpp @@ -95,6 +95,17 @@ void ProcessTriangle(const OutputVertex& v0, const OutputVertex& v1, const Outpu static const size_t MAX_VERTICES = 9; static_vector buffer_a = {v0, v1, v2}; static_vector buffer_b; + + auto FlipQuaternionIfOpposite = [](auto& a, const auto& b) { + if (Math::Dot(a, b) < float24::Zero()) + a = -a; + }; + + // Flip the quaternions if they are opposite to prevent interpolating them over the wrong + // direction. + FlipQuaternionIfOpposite(buffer_a[1].quat, buffer_a[0].quat); + FlipQuaternionIfOpposite(buffer_a[2].quat, buffer_a[0].quat); + auto* output_list = &buffer_a; auto* input_list = &buffer_b; diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 2c804b6e7f..76f793c86a 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -362,13 +362,6 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu }; } -static bool AreQuaternionsOpposite(Math::Vec4 qa, Math::Vec4 qb) { - Math::Vec4f a{ qa.x.ToFloat32(), qa.y.ToFloat32(), qa.z.ToFloat32(), qa.w.ToFloat32() }; - Math::Vec4f b{ qb.x.ToFloat32(), qb.y.ToFloat32(), qb.z.ToFloat32(), qb.w.ToFloat32() }; - - return (Math::Dot(a, b) < 0.f); -} - MICROPROFILE_DEFINE(GPU_Rasterization, "GPU", "Rasterization", MP_RGB(50, 50, 240)); /** @@ -462,15 +455,6 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve int bias2 = IsRightSideOrFlatBottomEdge(vtxpos[2].xy(), vtxpos[0].xy(), vtxpos[1].xy()) ? -1 : 0; - // Flip the quaternions if they are opposite to prevent interpolating them over the wrong direction. - auto v1_quat = v1.quat; - auto v2_quat = v2.quat; - - if (AreQuaternionsOpposite(v0.quat, v1.quat)) - v1_quat = v1_quat * float24::FromFloat32(-1.0f); - if (AreQuaternionsOpposite(v0.quat, v2.quat)) - v2_quat = v2_quat * float24::FromFloat32(-1.0f); - auto w_inverse = Math::MakeVec(v0.pos.w, v1.pos.w, v2.pos.w); auto textures = regs.texturing.GetTextures(); @@ -571,11 +555,11 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve Math::Quaternion normquat{ { - GetInterpolatedAttribute(v0.quat.x, v1_quat.x, v2_quat.x).ToFloat32(), - GetInterpolatedAttribute(v0.quat.y, v1_quat.y, v2_quat.y).ToFloat32(), - GetInterpolatedAttribute(v0.quat.z, v1_quat.z, v2_quat.z).ToFloat32() + GetInterpolatedAttribute(v0.quat.x, v1.quat.x, v2.quat.x).ToFloat32(), + GetInterpolatedAttribute(v0.quat.y, v1.quat.y, v2.quat.y).ToFloat32(), + GetInterpolatedAttribute(v0.quat.z, v1.quat.z, v2.quat.z).ToFloat32() }, - GetInterpolatedAttribute(v0.quat.w, v1_quat.w, v2_quat.w).ToFloat32(), + GetInterpolatedAttribute(v0.quat.w, v1.quat.w, v2.quat.w).ToFloat32(), }; Math::Vec3 fragment_position{ From 2d69a9b8bf232fdd9e3bbb2a9c624ee9dd6ec637 Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 13 Jun 2017 12:31:28 -0500 Subject: [PATCH 009/195] SwRasterizer: Run clang-format --- src/video_core/swrasterizer/rasterizer.cpp | 128 +++++++++++++-------- 1 file changed, 83 insertions(+), 45 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 76f793c86a..382b5927b9 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -125,11 +125,12 @@ float LookupLightingLut(size_t lut_index, u8 index, float delta) { return lut_value + lut_diff * delta; } -std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Quaternion& normquat, const Math::Vec3& view) { +std::tuple, Math::Vec4> ComputeFragmentsColors( + const Math::Quaternion& normquat, const Math::Vec3& view) { const auto& lighting = g_state.regs.lighting; if (lighting.disable) - return {{}, {}}; + return {Math::MakeVec(0, 0, 0, 0), Math::MakeVec(0, 0, 0, 0)}; // TODO(Subv): Bump mapping Math::Vec3 surface_normal = {0.0f, 0.0f, 1.0f}; @@ -151,7 +152,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu unsigned num = lighting.light_enable.GetNum(light_index); const auto& light_config = g_state.regs.lighting.light[num]; - Math::Vec3 position = {float16::FromRaw(light_config.x).ToFloat32(), float16::FromRaw(light_config.y).ToFloat32(), float16::FromRaw(light_config.z).ToFloat32()}; + Math::Vec3 position = {float16::FromRaw(light_config.x).ToFloat32(), + float16::FromRaw(light_config.y).ToFloat32(), + float16::FromRaw(light_config.z).ToFloat32()}; if (light_config.config.directional) light_vector = position; @@ -173,11 +176,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu auto distance = (-view - position).Length(); float scale = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); float bias = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); - size_t lut = static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; + size_t lut = + static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; float sample_loc = scale * distance + bias; - u8 lutindex = MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f); + u8 lutindex = + static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f)); float delta = sample_loc * 256 - lutindex; dist_atten = LookupLightingLut(lut, lutindex, delta); } @@ -192,7 +197,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu } auto GetLutIndex = [&](unsigned num, LightingRegs::LightingLutInput input, - bool abs) -> std::tuple { + bool abs) -> std::tuple { Math::Vec3 norm_view = view.Normalized(); Math::Vec3 half_angle = (norm_view + light_vector).Normalized(); @@ -216,7 +221,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu break; default: - LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %d\n", (int)input); + LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %u\n", static_cast(input)); UNIMPLEMENTED(); result = 0.f; } @@ -227,14 +232,15 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu else result = std::max(result, 0.0f); - u8 lutindex = MathUtil::Clamp(std::floor(result * 256.f), 0.0f, 255.0f); + float flr = std::floor(result * 256.f); + u8 lutindex = static_cast(MathUtil::Clamp(flr, 0.0f, 255.0f)); float delta = result * 256 - lutindex; - return { lutindex, delta }; + return {lutindex, delta}; } else { float flr = std::floor(result * 128.f); - s8 tmpi = MathUtil::Clamp(flr, -128.0f, 127.0f); - float delta = result * 128.f - tmpi; - return { tmpi & 0xFF, delta }; + s8 lutindex = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); + float delta = result * 128.f - lutindex; + return {static_cast(lutindex), delta}; } }; @@ -247,11 +253,15 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu // Lookup specular "distribution 0" LUT value u8 index; float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d0.Value(), lighting.abs_lut_input.disable_d0 == 0); + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d0.Value(), + lighting.abs_lut_input.disable_d0 == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d0); - d0_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution0), index, delta); + d0_lut_value = + scale * + LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution0), + index, delta); } Math::Vec3 specular_0 = d0_lut_value * light_config.specular_0.ToVec3f(); @@ -263,11 +273,15 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu u8 index; float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0); + std::tie(index, delta) = + GetLutIndex(num, lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rr); - refl_value.x = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectRed), index, delta); + refl_value.x = + scale * + LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectRed), + index, delta); } else { refl_value.x = 1.0f; } @@ -279,11 +293,15 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu u8 index; float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0); + std::tie(index, delta) = + GetLutIndex(num, lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rg); - refl_value.y = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectGreen), index, delta); + refl_value.y = + scale * + LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectGreen), + index, delta); } else { refl_value.y = refl_value.x; } @@ -295,11 +313,15 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu u8 index; float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0); + std::tie(index, delta) = + GetLutIndex(num, lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rb); - refl_value.z = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectBlue), index, delta); + refl_value.z = + scale * + LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectBlue), + index, delta); } else { refl_value.z = refl_value.x; } @@ -312,54 +334,72 @@ std::tuple, Math::Vec4> ComputeFragmentsColors(const Math::Qu // Lookup specular "distribution 1" LUT value u8 index; float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d1.Value(), lighting.abs_lut_input.disable_d1 == 0); + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d1.Value(), + lighting.abs_lut_input.disable_d1 == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d1); - d1_lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution1), index, delta); + d1_lut_value = + scale * + LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution1), + index, delta); } - Math::Vec3 specular_1 = d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); + Math::Vec3 specular_1 = + d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); if (lighting.config1.disable_lut_fr == 0 && - LightingRegs::IsLightingSamplerSupported( - lighting.config0.config, LightingRegs::LightingSampler::Fresnel)) { + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::Fresnel)) { // Lookup fresnel LUT value u8 index; float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.fr.Value(), lighting.abs_lut_input.disable_fr == 0); + std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.fr.Value(), + lighting.abs_lut_input.disable_fr == 0); float scale = lighting.lut_scale.GetScale(lighting.lut_scale.fr); - float lut_value = scale * LookupLightingLut(static_cast(LightingRegs::LightingSampler::Fresnel), index, delta); + float lut_value = + scale * + LookupLightingLut(static_cast(LightingRegs::LightingSampler::Fresnel), + index, delta); - // Enabled for difffuse lighting alpha component - if (lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::PrimaryAlpha || + // Enabled for diffuse lighting alpha component + if (lighting.config0.fresnel_selector == + LightingRegs::LightingFresnelSelector::PrimaryAlpha || lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { diffuse_sum.a() *= lut_value; } // Enabled for the specular lighting alpha component if (lighting.config0.fresnel_selector == - LightingRegs::LightingFresnelSelector::SecondaryAlpha || + LightingRegs::LightingFresnelSelector::SecondaryAlpha || lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { specular_sum.a() *= lut_value; } } - - auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); + auto diffuse = + light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); - specular_sum += Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.f); + specular_sum += + Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.f); } diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); - return { - Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255).Cast(), - Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255).Cast() - }; + + return {Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255) + .Cast(), + Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255) + .Cast()}; } MICROPROFILE_DEFINE(GPU_Rasterization, "GPU", "Rasterization", MP_RGB(50, 50, 240)); @@ -554,19 +594,16 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve }; Math::Quaternion normquat{ - { - GetInterpolatedAttribute(v0.quat.x, v1.quat.x, v2.quat.x).ToFloat32(), - GetInterpolatedAttribute(v0.quat.y, v1.quat.y, v2.quat.y).ToFloat32(), - GetInterpolatedAttribute(v0.quat.z, v1.quat.z, v2.quat.z).ToFloat32() - }, + {GetInterpolatedAttribute(v0.quat.x, v1.quat.x, v2.quat.x).ToFloat32(), + GetInterpolatedAttribute(v0.quat.y, v1.quat.y, v2.quat.y).ToFloat32(), + GetInterpolatedAttribute(v0.quat.z, v1.quat.z, v2.quat.z).ToFloat32()}, GetInterpolatedAttribute(v0.quat.w, v1.quat.w, v2.quat.w).ToFloat32(), }; Math::Vec3 fragment_position{ GetInterpolatedAttribute(v0.view.x, v1.view.x, v2.view.x).ToFloat32(), GetInterpolatedAttribute(v0.view.y, v1.view.y, v2.view.y).ToFloat32(), - GetInterpolatedAttribute(v0.view.z, v1.view.z, v2.view.z).ToFloat32() - }; + GetInterpolatedAttribute(v0.view.z, v1.view.z, v2.view.z).ToFloat32()}; Math::Vec2 uv[3]; uv[0].u() = GetInterpolatedAttribute(v0.tc0.u(), v1.tc0.u(), v2.tc0.u()); @@ -685,7 +722,8 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve Math::Vec4 primary_fragment_color; Math::Vec4 secondary_fragment_color; - std::tie(primary_fragment_color, secondary_fragment_color) = ComputeFragmentsColors(normquat, fragment_position); + std::tie(primary_fragment_color, secondary_fragment_color) = + ComputeFragmentsColors(normquat, fragment_position); for (unsigned tev_stage_index = 0; tev_stage_index < tev_stages.size(); ++tev_stage_index) { From 6250f52e939c714ccb302003502ee78941c8221b Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 13 Jun 2017 12:36:45 -0500 Subject: [PATCH 010/195] SwRasterizer: Fixed a few conversion warnings and moved per-light values into the per-light loop. --- src/video_core/swrasterizer/rasterizer.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 382b5927b9..54af53bbdf 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -143,18 +143,18 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( // Use the normalized the quaternion when performing the rotation auto normal = Math::QuaternionRotate(normquat.Normalized(), surface_normal); - Math::Vec3 light_vector = {}; Math::Vec4 diffuse_sum = {0.f, 0.f, 0.f, 1.f}; Math::Vec4 specular_sum = {0.f, 0.f, 0.f, 1.f}; - Math::Vec3 refl_value = {}; for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { unsigned num = lighting.light_enable.GetNum(light_index); const auto& light_config = g_state.regs.lighting.light[num]; + Math::Vec3 refl_value = {}; Math::Vec3 position = {float16::FromRaw(light_config.x).ToFloat32(), float16::FromRaw(light_config.y).ToFloat32(), float16::FromRaw(light_config.z).ToFloat32()}; + Math::Vec3 light_vector; if (light_config.config.directional) light_vector = position; @@ -175,11 +175,12 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (!lighting.IsDistAttenDisabled(num)) { auto distance = (-view - position).Length(); float scale = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); - float bias = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); + float dist_aten_bias = + Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); size_t lut = static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; - float sample_loc = scale * distance + bias; + float sample_loc = scale * distance + dist_aten_bias; u8 lutindex = static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f)); @@ -238,7 +239,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( return {lutindex, delta}; } else { float flr = std::floor(result * 128.f); - s8 lutindex = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); + s8 lutindex = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); float delta = result * 128.f - lutindex; return {static_cast(lutindex), delta}; } From 37ac2b6657002e19d78cbc97841f8d3eee6ac5b8 Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 13 Jun 2017 12:53:50 -0500 Subject: [PATCH 011/195] SwRasterizer/Lighting: Fixed a bug where the distance attenuation bias was being set to the dist atten scale. --- src/video_core/swrasterizer/rasterizer.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 54af53bbdf..48ed8ccbf3 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -175,12 +175,11 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (!lighting.IsDistAttenDisabled(num)) { auto distance = (-view - position).Length(); float scale = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); - float dist_aten_bias = - Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); + float bias = Pica::float20::FromRaw(light_config.dist_atten_bias).ToFloat32(); size_t lut = static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; - float sample_loc = scale * distance + dist_aten_bias; + float sample_loc = scale * distance + bias; u8 lutindex = static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f)); From 7bc467e8725c6751eb44ea45ff2203af8692cda1 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 28 Jun 2017 12:34:16 -0500 Subject: [PATCH 012/195] SwRasterizer/Lighting: Do not use global state in LookupLightingLut. --- src/video_core/pica_state.h | 2 +- src/video_core/swrasterizer/rasterizer.cpp | 33 ++++++++++++++-------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/video_core/pica_state.h b/src/video_core/pica_state.h index 2d23d34e68..864a2c9e60 100644 --- a/src/video_core/pica_state.h +++ b/src/video_core/pica_state.h @@ -79,7 +79,7 @@ struct State { std::array color_diff_table; } proctex; - struct { + struct Lighting { union LutEntry { // Used for raw access u32 raw; diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 48ed8ccbf3..b69f7b692a 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -115,12 +115,15 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v return std::make_tuple(x / z * half + half, y / z * half + half, addr); } -float LookupLightingLut(size_t lut_index, u8 index, float delta) { - ASSERT_MSG(lut_index < g_state.lighting.luts.size(), "Out of range lut"); - ASSERT_MSG(index < g_state.lighting.luts[0].size(), "Out of range index"); +static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut_index, u8 index, + float delta) { + ASSERT_MSG(lut_index < lighting.luts.size(), "Out of range lut"); + ASSERT_MSG(index < lighting.luts[0].size(), "Out of range index"); - float lut_value = g_state.lighting.luts[lut_index][index].ToFloat(); - float lut_diff = g_state.lighting.luts[lut_index][index].DiffToFloat(); + const auto& lut = lighting.luts[lut_index][index]; + + float lut_value = lut.ToFloat(); + float lut_diff = lut.DiffToFloat(); return lut_value + lut_diff * delta; } @@ -184,7 +187,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( u8 lutindex = static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f)); float delta = sample_loc * 256 - lutindex; - dist_atten = LookupLightingLut(lut, lutindex, delta); + dist_atten = LookupLightingLut(g_state.lighting, lut, lutindex, delta); } float clamp_highlights = 1.0f; @@ -260,7 +263,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( d0_lut_value = scale * - LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution0), + LookupLightingLut(g_state.lighting, + static_cast(LightingRegs::LightingSampler::Distribution0), index, delta); } @@ -280,7 +284,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( refl_value.x = scale * - LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectRed), + LookupLightingLut(g_state.lighting, + static_cast(LightingRegs::LightingSampler::ReflectRed), index, delta); } else { refl_value.x = 1.0f; @@ -300,7 +305,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( refl_value.y = scale * - LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectGreen), + LookupLightingLut(g_state.lighting, + static_cast(LightingRegs::LightingSampler::ReflectGreen), index, delta); } else { refl_value.y = refl_value.x; @@ -320,7 +326,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( refl_value.z = scale * - LookupLightingLut(static_cast(LightingRegs::LightingSampler::ReflectBlue), + LookupLightingLut(g_state.lighting, + static_cast(LightingRegs::LightingSampler::ReflectBlue), index, delta); } else { refl_value.z = refl_value.x; @@ -341,7 +348,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( d1_lut_value = scale * - LookupLightingLut(static_cast(LightingRegs::LightingSampler::Distribution1), + LookupLightingLut(g_state.lighting, + static_cast(LightingRegs::LightingSampler::Distribution1), index, delta); } @@ -362,7 +370,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( float lut_value = scale * - LookupLightingLut(static_cast(LightingRegs::LightingSampler::Fresnel), + LookupLightingLut(g_state.lighting, + static_cast(LightingRegs::LightingSampler::Fresnel), index, delta); // Enabled for diffuse lighting alpha component From b8229a768434ab9b47123359669761c05ecdd6b0 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 28 Jun 2017 12:35:35 -0500 Subject: [PATCH 013/195] SwRasterizer/Lighting: Do not use global registers state in ComputeFragmentsColors. --- src/video_core/swrasterizer/rasterizer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index b69f7b692a..d2d77e8b06 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -129,8 +129,8 @@ static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut } std::tuple, Math::Vec4> ComputeFragmentsColors( - const Math::Quaternion& normquat, const Math::Vec3& view) { - const auto& lighting = g_state.regs.lighting; + const Pica::LightingRegs& lighting, const Math::Quaternion& normquat, + const Math::Vec3& view) { if (lighting.disable) return {Math::MakeVec(0, 0, 0, 0), Math::MakeVec(0, 0, 0, 0)}; @@ -732,7 +732,7 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve Math::Vec4 secondary_fragment_color; std::tie(primary_fragment_color, secondary_fragment_color) = - ComputeFragmentsColors(normquat, fragment_position); + ComputeFragmentsColors(g_state.regs.lighting, normquat, fragment_position); for (unsigned tev_stage_index = 0; tev_stage_index < tev_stages.size(); ++tev_stage_index) { From 7526af5e52ac1e24512faa1cd8f1a169407689fb Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 28 Jun 2017 12:37:14 -0500 Subject: [PATCH 014/195] SwRasterizer/Lighting: Move the lighting enable check outside the ComputeFragmentsColors function. --- src/video_core/swrasterizer/rasterizer.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index d2d77e8b06..b2d2b6ef21 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -132,9 +132,6 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( const Pica::LightingRegs& lighting, const Math::Quaternion& normquat, const Math::Vec3& view) { - if (lighting.disable) - return {Math::MakeVec(0, 0, 0, 0), Math::MakeVec(0, 0, 0, 0)}; - // TODO(Subv): Bump mapping Math::Vec3 surface_normal = {0.0f, 0.0f, 1.0f}; @@ -728,11 +725,13 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve regs.texturing.tev_combiner_buffer_color.a, }; - Math::Vec4 primary_fragment_color; - Math::Vec4 secondary_fragment_color; + Math::Vec4 primary_fragment_color = {0, 0, 0, 0}; + Math::Vec4 secondary_fragment_color = {0, 0, 0, 0}; - std::tie(primary_fragment_color, secondary_fragment_color) = - ComputeFragmentsColors(g_state.regs.lighting, normquat, fragment_position); + if (!g_state.regs.lighting.disable) { + std::tie(primary_fragment_color, secondary_fragment_color) = + ComputeFragmentsColors(g_state.regs.lighting, normquat, fragment_position); + } for (unsigned tev_stage_index = 0; tev_stage_index < tev_stages.size(); ++tev_stage_index) { From 9906feefbd37ebfd658fecc47e960f23adc6b190 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 28 Jun 2017 12:43:00 -0500 Subject: [PATCH 015/195] SwRasterizer/Lighting: Move the clamp highlight calculation to the end of the per-light loop body. --- src/video_core/swrasterizer/rasterizer.cpp | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index b2d2b6ef21..2c7a1a8156 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -163,14 +163,6 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( light_vector.Normalize(); - auto LV_N = Math::Dot(light_vector, normal); - auto dot_product = LV_N; - - if (light_config.config.two_sided_diffuse) - dot_product = std::abs(dot_product); - else - dot_product = std::max(dot_product, 0.0f); - float dist_atten = 1.0f; if (!lighting.IsDistAttenDisabled(num)) { auto distance = (-view - position).Length(); @@ -187,15 +179,6 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( dist_atten = LookupLightingLut(g_state.lighting, lut, lutindex, delta); } - float clamp_highlights = 1.0f; - - if (lighting.config0.clamp_highlights) { - if (LV_N <= 0.f) - clamp_highlights = 0.f; - else - clamp_highlights = 1.f; - } - auto GetLutIndex = [&](unsigned num, LightingRegs::LightingLutInput input, bool abs) -> std::tuple { @@ -386,6 +369,23 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( } } + auto dot_product = Math::Dot(light_vector, normal); + + // Calculate clamp highlights before applying the two-sided diffuse configuration to the dot + // product. + float clamp_highlights = 1.0f; + if (lighting.config0.clamp_highlights) { + if (dot_product <= 0.f) + clamp_highlights = 0.f; + else + clamp_highlights = 1.f; + } + + if (light_config.config.two_sided_diffuse) + dot_product = std::abs(dot_product); + else + dot_product = std::max(dot_product, 0.0f); + auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); From f3660ba9dd13f342c591aaa9901e94b6caee8d9a Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 19:51:29 +0300 Subject: [PATCH 016/195] vector_math: remove broken SFINAE stuff this was originally added to eliminate warnings on MSVC, but it doesn't work for custom types. --- src/common/vector_math.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/common/vector_math.h b/src/common/vector_math.h index d0fe0e4057..49ae87f6d1 100644 --- a/src/common/vector_math.h +++ b/src/common/vector_math.h @@ -31,7 +31,6 @@ #pragma once #include -#include namespace Math { @@ -90,7 +89,7 @@ public: x -= other.x; y -= other.y; } - template ::value>::type> + Vec2 operator-() const { return MakeVec(-x, -y); } @@ -247,7 +246,7 @@ public: y -= other.y; z -= other.z; } - template ::value>::type> + Vec3 operator-() const { return MakeVec(-x, -y, -z); } From efc655aec00d43d53c41b55d9a94d17ce81e5942 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 20:06:26 +0300 Subject: [PATCH 017/195] SwRasterizer/Lighting: pass lighting state as parameter --- src/video_core/swrasterizer/rasterizer.cpp | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 2c7a1a8156..b108a0f869 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -116,7 +116,7 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v } static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut_index, u8 index, - float delta) { + float delta) { ASSERT_MSG(lut_index < lighting.luts.size(), "Out of range lut"); ASSERT_MSG(index < lighting.luts[0].size(), "Out of range index"); @@ -129,8 +129,8 @@ static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut } std::tuple, Math::Vec4> ComputeFragmentsColors( - const Pica::LightingRegs& lighting, const Math::Quaternion& normquat, - const Math::Vec3& view) { + const Pica::LightingRegs& lighting, const Pica::State::Lighting& lighting_state, + const Math::Quaternion& normquat, const Math::Vec3& view) { // TODO(Subv): Bump mapping Math::Vec3 surface_normal = {0.0f, 0.0f, 1.0f}; @@ -148,7 +148,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { unsigned num = lighting.light_enable.GetNum(light_index); - const auto& light_config = g_state.regs.lighting.light[num]; + const auto& light_config = lighting.light[num]; Math::Vec3 refl_value = {}; Math::Vec3 position = {float16::FromRaw(light_config.x).ToFloat32(), @@ -176,7 +176,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( u8 lutindex = static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f)); float delta = sample_loc * 256 - lutindex; - dist_atten = LookupLightingLut(g_state.lighting, lut, lutindex, delta); + dist_atten = LookupLightingLut(lighting_state, lut, lutindex, delta); } auto GetLutIndex = [&](unsigned num, LightingRegs::LightingLutInput input, @@ -243,7 +243,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( d0_lut_value = scale * - LookupLightingLut(g_state.lighting, + LookupLightingLut(lighting_state, static_cast(LightingRegs::LightingSampler::Distribution0), index, delta); } @@ -264,7 +264,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( refl_value.x = scale * - LookupLightingLut(g_state.lighting, + LookupLightingLut(lighting_state, static_cast(LightingRegs::LightingSampler::ReflectRed), index, delta); } else { @@ -285,7 +285,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( refl_value.y = scale * - LookupLightingLut(g_state.lighting, + LookupLightingLut(lighting_state, static_cast(LightingRegs::LightingSampler::ReflectGreen), index, delta); } else { @@ -306,7 +306,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( refl_value.z = scale * - LookupLightingLut(g_state.lighting, + LookupLightingLut(lighting_state, static_cast(LightingRegs::LightingSampler::ReflectBlue), index, delta); } else { @@ -328,7 +328,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( d1_lut_value = scale * - LookupLightingLut(g_state.lighting, + LookupLightingLut(lighting_state, static_cast(LightingRegs::LightingSampler::Distribution1), index, delta); } @@ -350,7 +350,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( float lut_value = scale * - LookupLightingLut(g_state.lighting, + LookupLightingLut(lighting_state, static_cast(LightingRegs::LightingSampler::Fresnel), index, delta); @@ -729,8 +729,8 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve Math::Vec4 secondary_fragment_color = {0, 0, 0, 0}; if (!g_state.regs.lighting.disable) { - std::tie(primary_fragment_color, secondary_fragment_color) = - ComputeFragmentsColors(g_state.regs.lighting, normquat, fragment_position); + std::tie(primary_fragment_color, secondary_fragment_color) = ComputeFragmentsColors( + g_state.regs.lighting, g_state.lighting, normquat, fragment_position); } for (unsigned tev_stage_index = 0; tev_stage_index < tev_stages.size(); From fe44e843fe1e300491d3bcd9072948407a86e7e1 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 20:08:56 +0300 Subject: [PATCH 018/195] vector_math: remove dead template parameter --- src/common/vector_math.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/vector_math.h b/src/common/vector_math.h index 49ae87f6d1..6e2a5ad601 100644 --- a/src/common/vector_math.h +++ b/src/common/vector_math.h @@ -461,7 +461,7 @@ public: z -= other.z; w -= other.w; } - template + Vec4 operator-() const { return MakeVec(-x, -y, -z, -w); } From f13cf506e0b0e42e6c9b00b163aaabc3b63fb7ea Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 20:15:23 +0300 Subject: [PATCH 019/195] SwRasterizer: only interpolate quat and view when lighting is enabled --- src/video_core/swrasterizer/rasterizer.cpp | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index b108a0f869..5844c401c9 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -599,18 +599,6 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve 255), }; - Math::Quaternion normquat{ - {GetInterpolatedAttribute(v0.quat.x, v1.quat.x, v2.quat.x).ToFloat32(), - GetInterpolatedAttribute(v0.quat.y, v1.quat.y, v2.quat.y).ToFloat32(), - GetInterpolatedAttribute(v0.quat.z, v1.quat.z, v2.quat.z).ToFloat32()}, - GetInterpolatedAttribute(v0.quat.w, v1.quat.w, v2.quat.w).ToFloat32(), - }; - - Math::Vec3 fragment_position{ - GetInterpolatedAttribute(v0.view.x, v1.view.x, v2.view.x).ToFloat32(), - GetInterpolatedAttribute(v0.view.y, v1.view.y, v2.view.y).ToFloat32(), - GetInterpolatedAttribute(v0.view.z, v1.view.z, v2.view.z).ToFloat32()}; - Math::Vec2 uv[3]; uv[0].u() = GetInterpolatedAttribute(v0.tc0.u(), v1.tc0.u(), v2.tc0.u()); uv[0].v() = GetInterpolatedAttribute(v0.tc0.v(), v1.tc0.v(), v2.tc0.v()); @@ -729,8 +717,20 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve Math::Vec4 secondary_fragment_color = {0, 0, 0, 0}; if (!g_state.regs.lighting.disable) { - std::tie(primary_fragment_color, secondary_fragment_color) = ComputeFragmentsColors( - g_state.regs.lighting, g_state.lighting, normquat, fragment_position); + Math::Quaternion normquat{ + {GetInterpolatedAttribute(v0.quat.x, v1.quat.x, v2.quat.x).ToFloat32(), + GetInterpolatedAttribute(v0.quat.y, v1.quat.y, v2.quat.y).ToFloat32(), + GetInterpolatedAttribute(v0.quat.z, v1.quat.z, v2.quat.z).ToFloat32()}, + GetInterpolatedAttribute(v0.quat.w, v1.quat.w, v2.quat.w).ToFloat32(), + }; + + Math::Vec3 view{ + GetInterpolatedAttribute(v0.view.x, v1.view.x, v2.view.x).ToFloat32(), + GetInterpolatedAttribute(v0.view.y, v1.view.y, v2.view.y).ToFloat32(), + GetInterpolatedAttribute(v0.view.z, v1.view.z, v2.view.z).ToFloat32(), + }; + std::tie(primary_fragment_color, secondary_fragment_color) = + ComputeFragmentsColors(g_state.regs.lighting, g_state.lighting, normquat, view); } for (unsigned tev_stage_index = 0; tev_stage_index < tev_stages.size(); From c6d1472513394cc55b5d5a852d5f76b5e9a51f2b Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 21:36:19 +0300 Subject: [PATCH 020/195] SwRasterizer/Lighting: refactor GetLutValue into a function. merging similar pattern. Also makes the code more similar to the gl one --- src/video_core/swrasterizer/rasterizer.cpp | 110 +++++---------------- 1 file changed, 27 insertions(+), 83 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 5844c401c9..53c3bb585d 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -179,9 +179,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( dist_atten = LookupLightingLut(lighting_state, lut, lutindex, delta); } - auto GetLutIndex = [&](unsigned num, LightingRegs::LightingLutInput input, - bool abs) -> std::tuple { - + auto GetLutValue = [&](LightingRegs::LightingLutInput input, bool abs, + LightingRegs::LightingScale scale_enum, + LightingRegs::LightingSampler sampler) { Math::Vec3 norm_view = view.Normalized(); Math::Vec3 half_angle = (norm_view + light_vector).Normalized(); float result = 0.0f; @@ -209,6 +209,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( result = 0.f; } + u8 index; + float delta; + if (abs) { if (light_config.config.two_sided_diffuse) result = std::abs(result); @@ -216,15 +219,18 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( result = std::max(result, 0.0f); float flr = std::floor(result * 256.f); - u8 lutindex = static_cast(MathUtil::Clamp(flr, 0.0f, 255.0f)); - float delta = result * 256 - lutindex; - return {lutindex, delta}; + index = static_cast(MathUtil::Clamp(flr, 0.0f, 255.0f)); + delta = result * 256 - index; } else { float flr = std::floor(result * 128.f); - s8 lutindex = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); - float delta = result * 128.f - lutindex; - return {static_cast(lutindex), delta}; + s8 signed_index = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); + delta = result * 128.f - signed_index; + index = static_cast(signed_index); } + + float scale = lighting.lut_scale.GetScale(scale_enum); + return scale * + LookupLightingLut(lighting_state, static_cast(sampler), index, delta); }; // Specular 0 component @@ -232,20 +238,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (lighting.config1.disable_lut_d0 == 0 && LightingRegs::IsLightingSamplerSupported( lighting.config0.config, LightingRegs::LightingSampler::Distribution0)) { - - // Lookup specular "distribution 0" LUT value - u8 index; - float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d0.Value(), - lighting.abs_lut_input.disable_d0 == 0); - - float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d0); - d0_lut_value = - scale * - LookupLightingLut(lighting_state, - static_cast(LightingRegs::LightingSampler::Distribution0), - index, delta); + GetLutValue(lighting.lut_input.d0, lighting.abs_lut_input.disable_d0 == 0, + lighting.lut_scale.d0, LightingRegs::LightingSampler::Distribution0); } Math::Vec3 specular_0 = d0_lut_value * light_config.specular_0.ToVec3f(); @@ -254,19 +249,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (lighting.config1.disable_lut_rr == 0 && LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::ReflectRed)) { - - u8 index; - float delta; - std::tie(index, delta) = - GetLutIndex(num, lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0); - - float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rr); - refl_value.x = - scale * - LookupLightingLut(lighting_state, - static_cast(LightingRegs::LightingSampler::ReflectRed), - index, delta); + GetLutValue(lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0, + lighting.lut_scale.rr, LightingRegs::LightingSampler::ReflectRed); } else { refl_value.x = 1.0f; } @@ -275,19 +260,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (lighting.config1.disable_lut_rg == 0 && LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::ReflectGreen)) { - - u8 index; - float delta; - std::tie(index, delta) = - GetLutIndex(num, lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0); - - float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rg); - refl_value.y = - scale * - LookupLightingLut(lighting_state, - static_cast(LightingRegs::LightingSampler::ReflectGreen), - index, delta); + GetLutValue(lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0, + lighting.lut_scale.rg, LightingRegs::LightingSampler::ReflectGreen); } else { refl_value.y = refl_value.x; } @@ -296,19 +271,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (lighting.config1.disable_lut_rb == 0 && LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::ReflectBlue)) { - - u8 index; - float delta; - std::tie(index, delta) = - GetLutIndex(num, lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0); - - float scale = lighting.lut_scale.GetScale(lighting.lut_scale.rb); - refl_value.z = - scale * - LookupLightingLut(lighting_state, - static_cast(LightingRegs::LightingSampler::ReflectBlue), - index, delta); + GetLutValue(lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0, + lighting.lut_scale.rb, LightingRegs::LightingSampler::ReflectBlue); } else { refl_value.z = refl_value.x; } @@ -317,20 +282,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (lighting.config1.disable_lut_d1 == 0 && LightingRegs::IsLightingSamplerSupported( lighting.config0.config, LightingRegs::LightingSampler::Distribution1)) { - - // Lookup specular "distribution 1" LUT value - u8 index; - float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.d1.Value(), - lighting.abs_lut_input.disable_d1 == 0); - - float scale = lighting.lut_scale.GetScale(lighting.lut_scale.d1); - d1_lut_value = - scale * - LookupLightingLut(lighting_state, - static_cast(LightingRegs::LightingSampler::Distribution1), - index, delta); + GetLutValue(lighting.lut_input.d1, lighting.abs_lut_input.disable_d1 == 0, + lighting.lut_scale.d1, LightingRegs::LightingSampler::Distribution1); } Math::Vec3 specular_1 = @@ -340,19 +294,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::Fresnel)) { - // Lookup fresnel LUT value - u8 index; - float delta; - std::tie(index, delta) = GetLutIndex(num, lighting.lut_input.fr.Value(), - lighting.abs_lut_input.disable_fr == 0); - - float scale = lighting.lut_scale.GetScale(lighting.lut_scale.fr); - float lut_value = - scale * - LookupLightingLut(lighting_state, - static_cast(LightingRegs::LightingSampler::Fresnel), - index, delta); + GetLutValue(lighting.lut_input.fr, lighting.abs_lut_input.disable_fr == 0, + lighting.lut_scale.fr, LightingRegs::LightingSampler::Fresnel); // Enabled for diffuse lighting alpha component if (lighting.config0.fresnel_selector == From e415558a4fc471bc3ac2d22dd8052aeb63769c6e Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 21:47:55 +0300 Subject: [PATCH 021/195] SwRasterizer/Lighting: get rid of nested return --- src/video_core/swrasterizer/rasterizer.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 53c3bb585d..e46790f85c 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -340,16 +340,17 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); - return {Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, - MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, - MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, - MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255) - .Cast(), - Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, - MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, - MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, - MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255) - .Cast()}; + auto diffuse = Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255) + .Cast(); + auto specular = Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255) + .Cast(); + return {diffuse, specular}; } MICROPROFILE_DEFINE(GPU_Rasterization, "GPU", "Rasterization", MP_RGB(50, 50, 240)); From 56e5425e593e29aecf255c441791f2e24512f418 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 22:07:19 +0300 Subject: [PATCH 022/195] SwRasterizer/Lighting: unify float suffix --- src/video_core/swrasterizer/rasterizer.cpp | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index e46790f85c..c836806294 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -143,8 +143,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( // Use the normalized the quaternion when performing the rotation auto normal = Math::QuaternionRotate(normquat.Normalized(), surface_normal); - Math::Vec4 diffuse_sum = {0.f, 0.f, 0.f, 1.f}; - Math::Vec4 specular_sum = {0.f, 0.f, 0.f, 1.f}; + Math::Vec4 diffuse_sum = {0.0f, 0.0f, 0.0f, 1.0f}; + Math::Vec4 specular_sum = {0.0f, 0.0f, 0.0f, 1.0f}; for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { unsigned num = lighting.light_enable.GetNum(light_index); @@ -174,7 +174,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( float sample_loc = scale * distance + bias; u8 lutindex = - static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.f), 0.0f, 255.0f)); + static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.0f), 0.0f, 255.0f)); float delta = sample_loc * 256 - lutindex; dist_atten = LookupLightingLut(lighting_state, lut, lutindex, delta); } @@ -206,7 +206,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( default: LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %u\n", static_cast(input)); UNIMPLEMENTED(); - result = 0.f; + result = 0.0f; } u8 index; @@ -218,13 +218,13 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( else result = std::max(result, 0.0f); - float flr = std::floor(result * 256.f); + float flr = std::floor(result * 256.0f); index = static_cast(MathUtil::Clamp(flr, 0.0f, 255.0f)); delta = result * 256 - index; } else { - float flr = std::floor(result * 128.f); + float flr = std::floor(result * 128.0f); s8 signed_index = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); - delta = result * 128.f - signed_index; + delta = result * 128.0f - signed_index; index = static_cast(signed_index); } @@ -278,6 +278,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( refl_value.z = refl_value.x; } + // Specular 1 component float d1_lut_value = 1.0f; if (lighting.config1.disable_lut_d1 == 0 && LightingRegs::IsLightingSamplerSupported( @@ -290,6 +291,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( Math::Vec3 specular_1 = d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); + // Fresnel if (lighting.config1.disable_lut_fr == 0 && LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::Fresnel)) { @@ -319,10 +321,10 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( // product. float clamp_highlights = 1.0f; if (lighting.config0.clamp_highlights) { - if (dot_product <= 0.f) - clamp_highlights = 0.f; + if (dot_product <= 0.0f) + clamp_highlights = 0.0f; else - clamp_highlights = 1.f; + clamp_highlights = 1.0f; } if (light_config.config.two_sided_diffuse) @@ -335,7 +337,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); specular_sum += - Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.f); + Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.0f); } diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); From 4feff63ffaec4d62d5bdfc85968cc99298907767 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 11 Jul 2017 22:19:00 +0300 Subject: [PATCH 023/195] SwRasterizer/Lighting: dist atten lut input need to be clamp --- src/video_core/swrasterizer/rasterizer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index c836806294..37d1313cf8 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -171,7 +171,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( size_t lut = static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; - float sample_loc = scale * distance + bias; + float sample_loc = MathUtil::Clamp(scale * distance + bias, 0.0f, 1.0f); u8 lutindex = static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.0f), 0.0f, 255.0f)); From 98cd5164c508e7cc5eedee1d6541948e341f32a9 Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 20 Jul 2017 22:47:53 +0300 Subject: [PATCH 024/195] debugger/shader: fix inverted uniform flow control --- src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp index e3f3194dba..f8584dce7f 100644 --- a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp +++ b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp @@ -255,7 +255,7 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con output << '('; if (instr.flow_control.op != instr.flow_control.JustY) { - if (instr.flow_control.refx) + if (!instr.flow_control.refx) output << '!'; output << "cc.x"; } @@ -267,7 +267,7 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con } if (instr.flow_control.op != instr.flow_control.JustX) { - if (instr.flow_control.refy) + if (!instr.flow_control.refy) output << '!'; output << "cc.y"; } From 8375fd2aba3d700bf8b5269820f3b7cb93c56c8c Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 20 Jul 2017 22:58:38 +0300 Subject: [PATCH 025/195] debugger/shader: fix address register for reverted arithmetic op --- .../graphics/graphics_vertex_shader.cpp | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp index f8584dce7f..f6bd6bf613 100644 --- a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp +++ b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp @@ -183,23 +183,13 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con print_input(output, src1, swizzle.negate_src1, SelectorToString(swizzle.src1_selector)); AlignToColumn(kInputOperandColumnWidth); - if (src_is_inverted) { - print_input(output, src2, swizzle.negate_src2, - SelectorToString(swizzle.src2_selector)); - } else { - print_input(output, src2, swizzle.negate_src2, - SelectorToString(swizzle.src2_selector), true, - instr.mad.AddressRegisterName()); - } + print_input(output, src2, swizzle.negate_src2, + SelectorToString(swizzle.src2_selector), true, + src_is_inverted ? "" : instr.mad.AddressRegisterName()); AlignToColumn(kInputOperandColumnWidth); - if (src_is_inverted) { - print_input(output, src3, swizzle.negate_src3, - SelectorToString(swizzle.src3_selector), true, - instr.mad.AddressRegisterName()); - } else { - print_input(output, src3, swizzle.negate_src3, - SelectorToString(swizzle.src3_selector)); - } + print_input(output, src3, swizzle.negate_src3, + SelectorToString(swizzle.src3_selector), true, + src_is_inverted ? instr.mad.AddressRegisterName() : ""); AlignToColumn(kInputOperandColumnWidth); break; } @@ -222,16 +212,15 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con SourceRegister src1 = instr.common.GetSrc1(src_is_inverted); print_input(output, src1, swizzle.negate_src1, swizzle.SelectorToString(false), true, - instr.common.AddressRegisterName()); + src_is_inverted ? "" : instr.common.AddressRegisterName()); AlignToColumn(kInputOperandColumnWidth); } - // TODO: In some cases, the Address Register is used as an index for SRC2 - // instead of SRC1 if (opcode_info.subtype & OpCode::Info::Src2) { SourceRegister src2 = instr.common.GetSrc2(src_is_inverted); print_input(output, src2, swizzle.negate_src2, - swizzle.SelectorToString(true)); + swizzle.SelectorToString(true), true, + src_is_inverted ? instr.common.AddressRegisterName() : ""); AlignToColumn(kInputOperandColumnWidth); } break; From b5609e15781010a08afbd20778d34b1a8567995d Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 20 Jul 2017 23:18:07 +0300 Subject: [PATCH 026/195] debugger/shader: print the invert flag for JMPU --- src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp index f6bd6bf613..1301a3fedc 100644 --- a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp +++ b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp @@ -263,6 +263,10 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con output << ") "; } else if (opcode_info.subtype & OpCode::Info::HasUniformIndex) { + if (opcode.EffectiveOpCode() == OpCode::Id::JMPU && + (instr.flow_control.num_instructions & 1) == 1) { + output << '!'; + } output << 'b' << instr.flow_control.bool_uniform_id << ' '; } From 49602139c8cca0bf20e9c6f95ff8243751401578 Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 20 Jul 2017 23:30:34 +0300 Subject: [PATCH 027/195] debugger/shader: display LOOP --- src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp index 1301a3fedc..7f4ec0c52e 100644 --- a/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp +++ b/src/citra_qt/debugger/graphics/graphics_vertex_shader.cpp @@ -236,7 +236,9 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con switch (opcode.EffectiveOpCode()) { case OpCode::Id::LOOP: - output << "(unknown instruction format)"; + output << 'i' << instr.flow_control.int_uniform_id << " (end on 0x" + << std::setw(4) << std::right << std::setfill('0') << std::hex + << (4 * instr.flow_control.dest_offset) << ")"; break; default: From 5682608df76b614cadff6061cff35dcf100b944b Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 13:01:21 -0500 Subject: [PATCH 028/195] Services/APT: Use boost::optional for the APT parameter structure. --- src/core/hle/service/apt/apt.cpp | 46 ++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index df4b5cc3f7..e4068926a3 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include "common/common_paths.h" #include "common/file_util.h" #include "common/logging/log.h" @@ -44,7 +45,7 @@ static u8 unknown_ns_state_field; static ScreencapPostPermission screen_capture_post_permission; /// Parameter data to be returned in the next call to Glance/ReceiveParameter -static MessageParameter next_parameter; +static boost::optional next_parameter; void SendParameter(const MessageParameter& parameter) { next_parameter = parameter; @@ -227,18 +228,20 @@ void ReceiveParameter(Service::Interface* self) { buffer_size, static_buff_size); IPC::RequestBuilder rb = rp.MakeBuilder(4, 4); + rb.Push(RESULT_SUCCESS); // No error - rb.Push(next_parameter.sender_id); - rb.Push(next_parameter.signal); // Signal type - ASSERT_MSG(next_parameter.buffer.size() <= buffer_size, "Input static buffer is too small !"); - rb.Push(static_cast(next_parameter.buffer.size())); // Parameter buffer size + rb.Push(next_parameter->sender_id); + rb.Push(next_parameter->signal); // Signal type + ASSERT_MSG(next_parameter->buffer.size() <= buffer_size, "Input static buffer is too small !"); + rb.Push(static_cast(next_parameter->buffer.size())); // Parameter buffer size - rb.PushMoveHandles((next_parameter.object != nullptr) - ? Kernel::g_handle_table.Create(next_parameter.object).Unwrap() + rb.PushMoveHandles((next_parameter->object != nullptr) + ? Kernel::g_handle_table.Create(next_parameter->object).Unwrap() : 0); - rb.PushStaticBuffer(buffer, static_cast(next_parameter.buffer.size()), 0); - Memory::WriteBlock(buffer, next_parameter.buffer.data(), next_parameter.buffer.size()); + rb.PushStaticBuffer(buffer, static_cast(next_parameter->buffer.size()), 0); + + Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); LOG_WARNING(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); } @@ -258,17 +261,18 @@ void GlanceParameter(Service::Interface* self) { IPC::RequestBuilder rb = rp.MakeBuilder(4, 4); rb.Push(RESULT_SUCCESS); // No error - rb.Push(next_parameter.sender_id); - rb.Push(next_parameter.signal); // Signal type - ASSERT_MSG(next_parameter.buffer.size() <= buffer_size, "Input static buffer is too small !"); - rb.Push(static_cast(next_parameter.buffer.size())); // Parameter buffer size + rb.Push(next_parameter->sender_id); + rb.Push(next_parameter->signal); // Signal type + ASSERT_MSG(next_parameter->buffer.size() <= buffer_size, "Input static buffer is too small !"); + rb.Push(static_cast(next_parameter->buffer.size())); // Parameter buffer size - rb.PushCopyHandles((next_parameter.object != nullptr) - ? Kernel::g_handle_table.Create(next_parameter.object).Unwrap() + rb.PushMoveHandles((next_parameter->object != nullptr) + ? Kernel::g_handle_table.Create(next_parameter->object).Unwrap() : 0); - rb.PushStaticBuffer(buffer, static_cast(next_parameter.buffer.size()), 0); - Memory::WriteBlock(buffer, next_parameter.buffer.data(), next_parameter.buffer.size()); + rb.PushStaticBuffer(buffer, static_cast(next_parameter->buffer.size()), 0); + + Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); LOG_WARNING(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); } @@ -800,8 +804,10 @@ void Init() { notification_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT_U:Notification"); parameter_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT_U:Start"); - next_parameter.signal = static_cast(SignalType::Wakeup); - next_parameter.destination_id = 0x300; + // Initialize the parameter to wake up the application. + next_parameter.emplace(); + next_parameter->signal = static_cast(SignalType::Wakeup); + next_parameter->destination_id = static_cast(AppletId::Application); } void Shutdown() { @@ -812,7 +818,7 @@ void Shutdown() { notification_event = nullptr; parameter_event = nullptr; - next_parameter.object = nullptr; + next_parameter = boost::none; HLE::Applets::Shutdown(); } From 2dc720c355dad55a607c1f993fc823cc198bed08 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 13:02:40 -0500 Subject: [PATCH 029/195] Services/APT: Use the right error codes in ReceiveParameter and GlanceParameter when the parameter doesn't exist. --- src/core/hle/service/apt/apt.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index e4068926a3..b5748693f8 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -227,6 +227,20 @@ void ReceiveParameter(Service::Interface* self) { "buffer_size is bigger than the size in the buffer descriptor (0x%08X > 0x%08zX)", buffer_size, static_buff_size); + if (!next_parameter) { + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + rb.Push(ResultCode(ErrorDescription::NoData, ErrorModule::Applet, + ErrorSummary::InvalidState, ErrorLevel::Status)); + return; + } + + if (next_parameter->destination_id != app_id) { + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + rb.Push(ResultCode(ErrorDescription::NotFound, ErrorModule::Applet, ErrorSummary::NotFound, + ErrorLevel::Status)); + return; + } + IPC::RequestBuilder rb = rp.MakeBuilder(4, 4); rb.Push(RESULT_SUCCESS); // No error @@ -259,6 +273,20 @@ void GlanceParameter(Service::Interface* self) { "buffer_size is bigger than the size in the buffer descriptor (0x%08X > 0x%08zX)", buffer_size, static_buff_size); + if (!next_parameter) { + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + rb.Push(ResultCode(ErrorDescription::NoData, ErrorModule::Applet, + ErrorSummary::InvalidState, ErrorLevel::Status)); + return; + } + + if (next_parameter->destination_id != app_id) { + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + rb.Push(ResultCode(ErrorDescription::NotFound, ErrorModule::Applet, ErrorSummary::NotFound, + ErrorLevel::Status)); + return; + } + IPC::RequestBuilder rb = rp.MakeBuilder(4, 4); rb.Push(RESULT_SUCCESS); // No error rb.Push(next_parameter->sender_id); From e403638d9b2cbd7f7dbacd14c3c4bf9863bf7b34 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 13:03:28 -0500 Subject: [PATCH 030/195] Services/APT: Properly clear the apt parameter after a successful ReceiveParameter call. --- src/core/hle/service/apt/apt.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index b5748693f8..b6c013d43f 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -257,7 +257,9 @@ void ReceiveParameter(Service::Interface* self) { Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); - LOG_WARNING(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); + // Clear the parameter + next_parameter = boost::none; + LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); } void GlanceParameter(Service::Interface* self) { @@ -302,7 +304,11 @@ void GlanceParameter(Service::Interface* self) { Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); - LOG_WARNING(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); + // Note: The NS module always clears the DSPSleep and DSPWakeup signals even in GlanceParameter. + if (next_parameter->signal == static_cast(SignalType::DspSleep) || + next_parameter->signal == static_cast(SignalType::DspWakeup)) + next_parameter = boost::none; + LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); } void CancelParameter(Service::Interface* self) { From a9bc417f5948dc63f182d31e4ba271aa23efe84d Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 13:09:45 -0500 Subject: [PATCH 031/195] Services/APT: Reset the APT parameter inside CancelParameter if the conditions are met. --- src/core/hle/service/apt/apt.cpp | 33 ++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index b6c013d43f..9cfb7f71e4 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -314,17 +314,34 @@ void GlanceParameter(Service::Interface* self) { void CancelParameter(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0xF, 4, 0); // 0xF0100 - u32 check_sender = rp.Pop(); + bool check_sender = rp.Pop(); u32 sender_appid = rp.Pop(); - u32 check_receiver = rp.Pop(); + bool check_receiver = rp.Pop(); u32 receiver_appid = rp.Pop(); - IPC::RequestBuilder rb = rp.MakeBuilder(2, 0); - rb.Push(RESULT_SUCCESS); // No error - rb.Push(true); // Set to Success - LOG_WARNING(Service_APT, "(STUBBED) called check_sender=0x%08X, sender_appid=0x%08X, " - "check_receiver=0x%08X, receiver_appid=0x%08X", - check_sender, sender_appid, check_receiver, receiver_appid); + bool cancellation_success = true; + + if (!next_parameter) { + cancellation_success = false; + } else { + if (check_sender && next_parameter->sender_id != sender_appid) + cancellation_success = false; + + if (check_receiver && next_parameter->destination_id != receiver_appid) + cancellation_success = false; + } + + if (cancellation_success) + next_parameter = boost::none; + + IPC::RequestBuilder rb = rp.MakeBuilder(2, 0); + + rb.Push(RESULT_SUCCESS); // No error + rb.Push(cancellation_success); + + LOG_DEBUG(Service_APT, "called check_sender=%u, sender_appid=0x%08X, " + "check_receiver=%u, receiver_appid=0x%08X", + check_sender, sender_appid, check_receiver, receiver_appid); } void PrepareToStartApplication(Service::Interface* self) { From 68596a706860f37de876ca070f9de6e664df0d05 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 13:19:55 -0500 Subject: [PATCH 032/195] Services/APT: Return the proper error code when calling SendParameter with an outstanding parameter already in memory. --- src/core/hle/service/apt/apt.cpp | 15 +++++++++++---- src/core/hle/service/apt/apt.h | 6 ++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 9cfb7f71e4..987fb0992f 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -192,6 +192,13 @@ void SendParameter(Service::Interface* self) { IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + // A new parameter can not be sent if the previous one hasn't been consumed yet + if (next_parameter) { + rb.Push(ResultCode(ErrCodes::ParameterPresent, ErrorModule::Applet, + ErrorSummary::InvalidState, ErrorLevel::Status)); + return; + } + if (dest_applet == nullptr) { LOG_ERROR(Service_APT, "Unknown applet id=0x%08X", dst_app_id); rb.Push(-1); // TODO(Subv): Find the right error code @@ -208,10 +215,10 @@ void SendParameter(Service::Interface* self) { rb.Push(dest_applet->ReceiveParameter(param)); - LOG_WARNING(Service_APT, - "(STUBBED) called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X," - "buffer_size=0x%08X, handle=0x%08X, size=0x%08zX, in_param_buffer_ptr=0x%08X", - src_app_id, dst_app_id, signal_type, buffer_size, handle, size, buffer); + LOG_DEBUG(Service_APT, + "called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X," + "buffer_size=0x%08X, handle=0x%08X, size=0x%08zX, in_param_buffer_ptr=0x%08X", + src_app_id, dst_app_id, signal_type, buffer_size, handle, size, buffer); } void ReceiveParameter(Service::Interface* self) { diff --git a/src/core/hle/service/apt/apt.h b/src/core/hle/service/apt/apt.h index ee80926d21..1067548534 100644 --- a/src/core/hle/service/apt/apt.h +++ b/src/core/hle/service/apt/apt.h @@ -116,6 +116,12 @@ enum class ScreencapPostPermission : u32 { DisableScreenshotPostingToMiiverse = 3 }; +namespace ErrCodes { +enum { + ParameterPresent = 2, +}; +} + /// Send a parameter to the currently-running application, which will read it via ReceiveParameter void SendParameter(const MessageParameter& parameter); From e59ab7c1d695e3eb303c5dd37cd0fde814657f53 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 15:03:06 -0500 Subject: [PATCH 033/195] Service/APT: Log Send/Cancel/Receive/GlanceParameter calls even if they return an error. --- src/core/hle/service/apt/apt.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 987fb0992f..aad23e900e 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -190,6 +190,11 @@ void SendParameter(Service::Interface* self) { std::shared_ptr dest_applet = HLE::Applets::Applet::Get(static_cast(dst_app_id)); + LOG_DEBUG(Service_APT, + "called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X," + "buffer_size=0x%08X, handle=0x%08X, size=0x%08zX, in_param_buffer_ptr=0x%08X", + src_app_id, dst_app_id, signal_type, buffer_size, handle, size, buffer); + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); // A new parameter can not be sent if the previous one hasn't been consumed yet @@ -214,11 +219,6 @@ void SendParameter(Service::Interface* self) { Memory::ReadBlock(buffer, param.buffer.data(), param.buffer.size()); rb.Push(dest_applet->ReceiveParameter(param)); - - LOG_DEBUG(Service_APT, - "called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X," - "buffer_size=0x%08X, handle=0x%08X, size=0x%08zX, in_param_buffer_ptr=0x%08X", - src_app_id, dst_app_id, signal_type, buffer_size, handle, size, buffer); } void ReceiveParameter(Service::Interface* self) { @@ -234,6 +234,8 @@ void ReceiveParameter(Service::Interface* self) { "buffer_size is bigger than the size in the buffer descriptor (0x%08X > 0x%08zX)", buffer_size, static_buff_size); + LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); + if (!next_parameter) { IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); rb.Push(ResultCode(ErrorDescription::NoData, ErrorModule::Applet, @@ -266,7 +268,6 @@ void ReceiveParameter(Service::Interface* self) { // Clear the parameter next_parameter = boost::none; - LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); } void GlanceParameter(Service::Interface* self) { @@ -282,6 +283,8 @@ void GlanceParameter(Service::Interface* self) { "buffer_size is bigger than the size in the buffer descriptor (0x%08X > 0x%08zX)", buffer_size, static_buff_size); + LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); + if (!next_parameter) { IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); rb.Push(ResultCode(ErrorDescription::NoData, ErrorModule::Applet, @@ -315,7 +318,6 @@ void GlanceParameter(Service::Interface* self) { if (next_parameter->signal == static_cast(SignalType::DspSleep) || next_parameter->signal == static_cast(SignalType::DspWakeup)) next_parameter = boost::none; - LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); } void CancelParameter(Service::Interface* self) { From 567c3a2ee7162e0e62d5ecd511e6d137a6b217c2 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Mon, 1 May 2017 20:55:45 +0100 Subject: [PATCH 034/195] tests: Arm testing framework --- src/tests/CMakeLists.txt | 2 + src/tests/core/arm/arm_test_common.cpp | 123 +++++++++++++++++++++++++ src/tests/core/arm/arm_test_common.h | 83 +++++++++++++++++ 3 files changed, 208 insertions(+) create mode 100644 src/tests/core/arm/arm_test_common.cpp create mode 100644 src/tests/core/arm/arm_test_common.h diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index a14df325a8..5882960bc4 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -1,5 +1,6 @@ set(SRCS common/param_package.cpp + core/arm/arm_test_common.cpp core/file_sys/path_parser.cpp core/hle/kernel/hle_ipc.cpp glad.cpp @@ -7,6 +8,7 @@ set(SRCS ) set(HEADERS + core/arm/arm_test_common.h ) create_directory_groups(${SRCS} ${HEADERS}) diff --git a/src/tests/core/arm/arm_test_common.cpp b/src/tests/core/arm/arm_test_common.cpp new file mode 100644 index 0000000000..1d41e3376c --- /dev/null +++ b/src/tests/core/arm/arm_test_common.cpp @@ -0,0 +1,123 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/core.h" +#include "core/memory_setup.h" +#include "tests/core/arm/arm_test_common.h" + +namespace ArmTests { + +TestEnvironment::TestEnvironment(bool mutable_memory_) + : mutable_memory(mutable_memory_), test_memory(std::make_shared(this)) { + Memory::MapIoRegion(0x00000000, 0x80000000, test_memory); + Memory::MapIoRegion(0x80000000, 0x80000000, test_memory); +} + +TestEnvironment::~TestEnvironment() { + Memory::UnmapRegion(0x80000000, 0x80000000); + Memory::UnmapRegion(0x00000000, 0x80000000); +} + +void TestEnvironment::SetMemory64(VAddr vaddr, u64 value) { + SetMemory32(vaddr + 0, static_cast(value)); + SetMemory32(vaddr + 4, static_cast(value >> 32)); +} + +void TestEnvironment::SetMemory32(VAddr vaddr, u32 value) { + SetMemory16(vaddr + 0, static_cast(value)); + SetMemory16(vaddr + 2, static_cast(value >> 16)); +} + +void TestEnvironment::SetMemory16(VAddr vaddr, u16 value) { + SetMemory8(vaddr + 0, static_cast(value)); + SetMemory8(vaddr + 1, static_cast(value >> 8)); +} + +void TestEnvironment::SetMemory8(VAddr vaddr, u8 value) { + test_memory->data[vaddr] = value; +} + +std::vector TestEnvironment::GetWriteRecords() const { + return write_records; +} + +void TestEnvironment::ClearWriteRecords() { + write_records.clear(); +} + +TestEnvironment::TestMemory::~TestMemory() {} + +bool TestEnvironment::TestMemory::IsValidAddress(VAddr addr) { + return true; +} + +u8 TestEnvironment::TestMemory::Read8(VAddr addr) { + auto iter = data.find(addr); + if (iter == data.end()) { + return addr; // Some arbitrary data + } + return iter->second; +} + +u16 TestEnvironment::TestMemory::Read16(VAddr addr) { + return Read8(addr) | static_cast(Read8(addr + 1)) << 8; +} + +u32 TestEnvironment::TestMemory::Read32(VAddr addr) { + return Read16(addr) | static_cast(Read16(addr + 2)) << 16; +} + +u64 TestEnvironment::TestMemory::Read64(VAddr addr) { + return Read32(addr) | static_cast(Read32(addr + 4)) << 32; +} + +bool TestEnvironment::TestMemory::ReadBlock(VAddr src_addr, void* dest_buffer, size_t size) { + VAddr addr = src_addr; + u8* data = static_cast(dest_buffer); + + for (size_t i = 0; i < size; i++, addr++, data++) { + *data = Read8(addr); + } + + return true; +} + +void TestEnvironment::TestMemory::Write8(VAddr addr, u8 data) { + env->write_records.emplace_back(8, addr, data); + if (env->mutable_memory) + env->SetMemory8(addr, data); +} + +void TestEnvironment::TestMemory::Write16(VAddr addr, u16 data) { + env->write_records.emplace_back(16, addr, data); + if (env->mutable_memory) + env->SetMemory16(addr, data); +} + +void TestEnvironment::TestMemory::Write32(VAddr addr, u32 data) { + env->write_records.emplace_back(32, addr, data); + if (env->mutable_memory) + env->SetMemory32(addr, data); +} + +void TestEnvironment::TestMemory::Write64(VAddr addr, u64 data) { + env->write_records.emplace_back(64, addr, data); + if (env->mutable_memory) + env->SetMemory64(addr, data); +} + +bool TestEnvironment::TestMemory::WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size) { + VAddr addr = dest_addr; + const u8* data = static_cast(src_buffer); + + for (size_t i = 0; i < size; i++, addr++, data++) { + env->write_records.emplace_back(8, addr, *data); + if (env->mutable_memory) + env->SetMemory8(addr, *data); + } + + return true; +} + +} // namespace ArmTests diff --git a/src/tests/core/arm/arm_test_common.h b/src/tests/core/arm/arm_test_common.h new file mode 100644 index 0000000000..af747f8c98 --- /dev/null +++ b/src/tests/core/arm/arm_test_common.h @@ -0,0 +1,83 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include +#include + +#include "common/common_types.h" +#include "core/mmio.h" + +namespace ArmTests { + +struct WriteRecord { + WriteRecord(size_t size, VAddr addr, u64 data) : size(size), addr(addr), data(data) {} + size_t size; + VAddr addr; + u64 data; + bool operator==(const WriteRecord& o) const { + return std::tie(size, addr, data) == std::tie(o.size, o.addr, o.data); + } +}; + +class TestEnvironment final { +public: + /* + * Inititalise test environment + * @param mutable_memory If false, writes to memory can never be read back. (Memory is immutable.) + */ + explicit TestEnvironment(bool mutable_memory = false); + + /// Shutdown test environment + ~TestEnvironment(); + + /// Sets value at memory location vaddr. + void SetMemory8(VAddr vaddr, u8 value); + void SetMemory16(VAddr vaddr, u16 value); + void SetMemory32(VAddr vaddr, u32 value); + void SetMemory64(VAddr vaddr, u64 value); + + /** + * Whenever Memory::Write{8,16,32,64} is called within the test environment, + * a new write-record is made. + * @returns A vector of write records made since they were last cleared. + */ + std::vector GetWriteRecords() const; + + /// Empties the internal write-record store. + void ClearWriteRecords(); + +private: + friend struct TestMemory; + struct TestMemory final : Memory::MMIORegion { + explicit TestMemory(TestEnvironment* env_) : env(env_) {} + TestEnvironment* env; + + ~TestMemory() override; + + bool IsValidAddress(VAddr addr) override; + + u8 Read8(VAddr addr) override; + u16 Read16(VAddr addr) override; + u32 Read32(VAddr addr) override; + u64 Read64(VAddr addr) override; + + bool ReadBlock(VAddr src_addr, void* dest_buffer, size_t size) override; + + void Write8(VAddr addr, u8 data) override; + void Write16(VAddr addr, u16 data) override; + void Write32(VAddr addr, u32 data) override; + void Write64(VAddr addr, u64 data) override; + + bool WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size) override; + + std::unordered_map data; + }; + + bool mutable_memory; + std::shared_ptr test_memory; + std::vector write_records; +}; + +} // namespace ArmTests From a08edd67eb1c5ed3a348f38f0fd5f9ebc280f5a9 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Mon, 1 May 2017 22:11:06 +0100 Subject: [PATCH 035/195] tests: Add tests for vadd --- CMakeLists.txt | 2 +- src/tests/CMakeLists.txt | 1 + src/tests/core/arm/arm_test_common.cpp | 2 +- src/tests/core/arm/arm_test_common.h | 3 +- .../core/arm/dyncom/arm_dyncom_vfp_tests.cpp | 50 + src/tests/core/arm/dyncom/vfp_vadd_f32.inc | 13456 ++++++++++++++++ 6 files changed, 13511 insertions(+), 3 deletions(-) create mode 100644 src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp create mode 100644 src/tests/core/arm/dyncom/vfp_vadd_f32.inc diff --git a/CMakeLists.txt b/CMakeLists.txt index 9151ff7861..79d8046d9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -301,9 +301,9 @@ get_git_head_revision(GIT_REF_SPEC GIT_REV) git_describe(GIT_DESC --always --long --dirty) git_branch_name(GIT_BRANCH) +enable_testing() add_subdirectory(externals) add_subdirectory(src) -enable_testing() # Installation instructions diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 5882960bc4..5e9c4c2bff 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -1,6 +1,7 @@ set(SRCS common/param_package.cpp core/arm/arm_test_common.cpp + core/arm/dyncom/arm_dyncom_vfp_tests.cpp core/file_sys/path_parser.cpp core/hle/kernel/hle_ipc.cpp glad.cpp diff --git a/src/tests/core/arm/arm_test_common.cpp b/src/tests/core/arm/arm_test_common.cpp index 1d41e3376c..1df6c56773 100644 --- a/src/tests/core/arm/arm_test_common.cpp +++ b/src/tests/core/arm/arm_test_common.cpp @@ -9,7 +9,7 @@ namespace ArmTests { TestEnvironment::TestEnvironment(bool mutable_memory_) - : mutable_memory(mutable_memory_), test_memory(std::make_shared(this)) { + : mutable_memory(mutable_memory_), test_memory(std::make_shared(this)) { Memory::MapIoRegion(0x00000000, 0x80000000, test_memory); Memory::MapIoRegion(0x80000000, 0x80000000, test_memory); } diff --git a/src/tests/core/arm/arm_test_common.h b/src/tests/core/arm/arm_test_common.h index af747f8c98..592c28594f 100644 --- a/src/tests/core/arm/arm_test_common.h +++ b/src/tests/core/arm/arm_test_common.h @@ -25,7 +25,8 @@ class TestEnvironment final { public: /* * Inititalise test environment - * @param mutable_memory If false, writes to memory can never be read back. (Memory is immutable.) + * @param mutable_memory If false, writes to memory can never be read back. + * (Memory is immutable.) */ explicit TestEnvironment(bool mutable_memory = false); diff --git a/src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp b/src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp new file mode 100644 index 0000000000..86de41773c --- /dev/null +++ b/src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp @@ -0,0 +1,50 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include + +#include "core/arm/dyncom/arm_dyncom.h" +#include "tests/core/arm/arm_test_common.h" + +namespace ArmTests { + +struct VfpTestCase { + u32 initial_fpscr; + u32 a; + u32 b; + u32 result; + u32 final_fpscr; +}; + +TEST_CASE("ARM_DynCom (vfp): vadd", "[arm_dyncom]") { + TestEnvironment test_env(false); + test_env.SetMemory32(0, 0xEE321A03); // vadd.f32 s2, s4, s6 + test_env.SetMemory32(4, 0xEAFFFFFE); // b +#0 + + ARM_DynCom dyncom(USER32MODE); + + std::vector test_cases{{ +#include "vfp_vadd_f32.inc" + }}; + + for (const auto& test_case : test_cases) { + dyncom.down_count = 1000; // Ensure that CoreTimeing will not be called. + dyncom.SetPC(0); + dyncom.SetVFPSystemReg(VFP_FPSCR, test_case.initial_fpscr); + dyncom.SetVFPReg(4, test_case.a); + dyncom.SetVFPReg(6, test_case.b); + dyncom.ExecuteInstructions(1); + if (dyncom.GetVFPReg(2) != test_case.result || + dyncom.GetVFPSystemReg(VFP_FPSCR) != test_case.final_fpscr) { + printf("f: %x\n", test_case.initial_fpscr); + printf("a: %x\n", test_case.a); + printf("b: %x\n", test_case.b); + printf("c: %x (%x)\n", dyncom.GetVFPReg(2), test_case.result); + printf("f: %x (%x)\n", dyncom.GetVFPSystemReg(VFP_FPSCR), test_case.final_fpscr); + FAIL(); + } + } +} + +} // namespace ArmTests \ No newline at end of file diff --git a/src/tests/core/arm/dyncom/vfp_vadd_f32.inc b/src/tests/core/arm/dyncom/vfp_vadd_f32.inc new file mode 100644 index 0000000000..d0032c2e65 --- /dev/null +++ b/src/tests/core/arm/dyncom/vfp_vadd_f32.inc @@ -0,0 +1,13456 @@ +{0x3c00000, 0x0, 0x0, 0x0, 0x3c00000}, +{0x3c00000, 0x0, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x800000, 0x800000, 0x3c00000}, +{0x3c00000, 0x0, 0x800002, 0x800002, 0x3c00000}, +{0x3c00000, 0x0, 0x1398437, 0x1398437, 0x3c00000}, +{0x3c00000, 0x0, 0xba98d27, 0xba98d27, 0x3c00000}, +{0x3c00000, 0x0, 0xba98d7a, 0xba98d7a, 0x3c00000}, +{0x3c00000, 0x0, 0x751f853a, 0x751f853a, 0x3c00000}, +{0x3c00000, 0x0, 0x7f7ffff0, 0x7f7ffff0, 0x3c00000}, +{0x3c00000, 0x0, 0x7f7fffff, 0x7f7fffff, 0x3c00000}, +{0x3c00000, 0x0, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x0, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x0, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x0, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x0, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x0, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x0, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x0, 0x80000000, 0x0, 0x3c00000}, +{0x3c00000, 0x0, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x0, 0x80800000, 0x80800000, 0x3c00000}, +{0x3c00000, 0x0, 0x80800002, 0x80800002, 0x3c00000}, +{0x3c00000, 0x0, 0x81398437, 0x81398437, 0x3c00000}, +{0x3c00000, 0x0, 0x8ba98d27, 0x8ba98d27, 0x3c00000}, +{0x3c00000, 0x0, 0x8ba98d7a, 0x8ba98d7a, 0x3c00000}, +{0x3c00000, 0x0, 0xf51f853a, 0xf51f853a, 0x3c00000}, +{0x3c00000, 0x0, 0xff7ffff0, 0xff7ffff0, 0x3c00000}, +{0x3c00000, 0x0, 0xff7fffff, 0xff7fffff, 0x3c00000}, +{0x3c00000, 0x0, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x0, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x0, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x0, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x0, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x0, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x0, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x0, 0x4f3495cb, 0x4f3495cb, 0x3c00000}, +{0x3c00000, 0x0, 0xe73a5134, 0xe73a5134, 0x3c00000}, +{0x3c00000, 0x0, 0x7c994e9e, 0x7c994e9e, 0x3c00000}, +{0x3c00000, 0x0, 0x6164bd6c, 0x6164bd6c, 0x3c00000}, +{0x3c00000, 0x0, 0x9503366, 0x9503366, 0x3c00000}, +{0x3c00000, 0x0, 0xbf5a97c9, 0xbf5a97c9, 0x3c00000}, +{0x3c00000, 0x0, 0xe6ff1a14, 0xe6ff1a14, 0x3c00000}, +{0x3c00000, 0x0, 0x77f31e2f, 0x77f31e2f, 0x3c00000}, +{0x3c00000, 0x0, 0xaab4d7d8, 0xaab4d7d8, 0x3c00000}, +{0x3c00000, 0x0, 0x966320b, 0x966320b, 0x3c00000}, +{0x3c00000, 0x0, 0xb26bddee, 0xb26bddee, 0x3c00000}, +{0x3c00000, 0x0, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00000}, +{0x3c00000, 0x0, 0x317285d3, 0x317285d3, 0x3c00000}, +{0x3c00000, 0x0, 0x3c9623b1, 0x3c9623b1, 0x3c00000}, +{0x3c00000, 0x0, 0x51fd2c7c, 0x51fd2c7c, 0x3c00000}, +{0x3c00000, 0x0, 0x7b906a6c, 0x7b906a6c, 0x3c00000}, +{0x3c00000, 0x1, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x1, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x1, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x1, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x1, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x1, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x1, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x1, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x1, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x1, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x1, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x1, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x1, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x1, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x1, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x1, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x1, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x1, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x1, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x1, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x1, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x1, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x1, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x1, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x1, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x1, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x1, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x1, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x1, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x1, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x1, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x1, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x1, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x1, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x1, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x1, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x1, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x1, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x1, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x1, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x1, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x1, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x1, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x1, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x1, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x1, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x76, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x76, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x76, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x76, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x76, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x76, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x76, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x76, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x76, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x76, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x76, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x76, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x76, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x76, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x76, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x76, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x76, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x76, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x76, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x76, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x76, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x76, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x76, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x76, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x76, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x76, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x76, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x76, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x76, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x76, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x76, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x76, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x76, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x76, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x76, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x76, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x76, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x76, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x76, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x76, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x76, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x76, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x76, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x76, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x76, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x76, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x76, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x2b94, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x2b94, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x2b94, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x2b94, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x2b94, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x2b94, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x2b94, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x2b94, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x2b94, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x2b94, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x2b94, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x2b94, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x2b94, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x2b94, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x2b94, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x2b94, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x2b94, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x2b94, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x2b94, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x2b94, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x2b94, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x2b94, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x2b94, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x2b94, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x2b94, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x2b94, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x2b94, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x2b94, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x2b94, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x2b94, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x2b94, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x2b94, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x2b94, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x2b94, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x2b94, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x2b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x2b94, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x2b94, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x2b94, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x2b94, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x636d24, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x636d24, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x636d24, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x636d24, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x636d24, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x636d24, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x636d24, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x636d24, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x636d24, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x636d24, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x636d24, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x636d24, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x636d24, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x636d24, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x636d24, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x636d24, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x636d24, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x636d24, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x636d24, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x636d24, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x636d24, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x636d24, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x636d24, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x636d24, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x636d24, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x636d24, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x636d24, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x636d24, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x636d24, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x636d24, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x636d24, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x636d24, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x636d24, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x636d24, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fffff, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fffff, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fffff, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fffff, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fffff, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fffff, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x7fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x7fffff, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x800000, 0x0, 0x800000, 0x3c00000}, +{0x3c00000, 0x800000, 0x1, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x76, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x2b94, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x636d24, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x7fffff, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x800000, 0x1000000, 0x3c00000}, +{0x3c00000, 0x800000, 0x800002, 0x1000001, 0x3c00000}, +{0x3c00000, 0x800000, 0x1398437, 0x1798437, 0x3c00000}, +{0x3c00000, 0x800000, 0xba98d27, 0xba98d29, 0x3c00000}, +{0x3c00000, 0x800000, 0xba98d7a, 0xba98d7c, 0x3c00000}, +{0x3c00000, 0x800000, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x800000, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x800000, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x800000, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x800000, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800000, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800000, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800000, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800000, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800000, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800000, 0x80000000, 0x800000, 0x3c00000}, +{0x3c00000, 0x800000, 0x80000001, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x80000076, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x80002b94, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x80636d24, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x807fffff, 0x800000, 0x3c00080}, +{0x3c00000, 0x800000, 0x80800000, 0x0, 0x3c00000}, +{0x3c00000, 0x800000, 0x80800002, 0x0, 0x3c00008}, +{0x3c00000, 0x800000, 0x81398437, 0x80f3086e, 0x3c00000}, +{0x3c00000, 0x800000, 0x8ba98d27, 0x8ba98d25, 0x3c00000}, +{0x3c00000, 0x800000, 0x8ba98d7a, 0x8ba98d78, 0x3c00000}, +{0x3c00000, 0x800000, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x800000, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x800000, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x800000, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x800000, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800000, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800000, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800000, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800000, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800000, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800000, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x800000, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x800000, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x800000, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x800000, 0x9503366, 0x95033a6, 0x3c00000}, +{0x3c00000, 0x800000, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0x800000, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x800000, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x800000, 0xaab4d7d8, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0x800000, 0x966320b, 0x966324b, 0x3c00000}, +{0x3c00000, 0x800000, 0xb26bddee, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0x800000, 0xb5c8e5d3, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0x800000, 0x317285d3, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x800000, 0x3c9623b1, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x800000, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x800000, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x800002, 0x0, 0x800002, 0x3c00000}, +{0x3c00000, 0x800002, 0x1, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x76, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x2b94, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x636d24, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x7fffff, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x800000, 0x1000001, 0x3c00000}, +{0x3c00000, 0x800002, 0x800002, 0x1000002, 0x3c00000}, +{0x3c00000, 0x800002, 0x1398437, 0x1798438, 0x3c00000}, +{0x3c00000, 0x800002, 0xba98d27, 0xba98d29, 0x3c00010}, +{0x3c00000, 0x800002, 0xba98d7a, 0xba98d7c, 0x3c00010}, +{0x3c00000, 0x800002, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x800002, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x800002, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x800002, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x800002, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800002, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800002, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800002, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800002, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800002, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800002, 0x80000000, 0x800002, 0x3c00000}, +{0x3c00000, 0x800002, 0x80000001, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x80000076, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x80002b94, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x80636d24, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x807fffff, 0x800002, 0x3c00080}, +{0x3c00000, 0x800002, 0x80800000, 0x0, 0x3c00008}, +{0x3c00000, 0x800002, 0x80800002, 0x0, 0x3c00000}, +{0x3c00000, 0x800002, 0x81398437, 0x80f3086c, 0x3c00000}, +{0x3c00000, 0x800002, 0x8ba98d27, 0x8ba98d24, 0x3c00010}, +{0x3c00000, 0x800002, 0x8ba98d7a, 0x8ba98d77, 0x3c00010}, +{0x3c00000, 0x800002, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x800002, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x800002, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x800002, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x800002, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800002, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800002, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x800002, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800002, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800002, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x800002, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x800002, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x800002, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x800002, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x800002, 0x9503366, 0x95033a6, 0x3c00010}, +{0x3c00000, 0x800002, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0x800002, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x800002, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x800002, 0xaab4d7d8, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0x800002, 0x966320b, 0x966324b, 0x3c00010}, +{0x3c00000, 0x800002, 0xb26bddee, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0x800002, 0xb5c8e5d3, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0x800002, 0x317285d3, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x800002, 0x3c9623b1, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x800002, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x800002, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x1398437, 0x0, 0x1398437, 0x3c00000}, +{0x3c00000, 0x1398437, 0x1, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x76, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x2b94, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x636d24, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x7fffff, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x800000, 0x1798437, 0x3c00000}, +{0x3c00000, 0x1398437, 0x800002, 0x1798438, 0x3c00000}, +{0x3c00000, 0x1398437, 0x1398437, 0x1b98437, 0x3c00000}, +{0x3c00000, 0x1398437, 0xba98d27, 0xba98d2c, 0x3c00010}, +{0x3c00000, 0x1398437, 0xba98d7a, 0xba98d7f, 0x3c00010}, +{0x3c00000, 0x1398437, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x1398437, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x1398437, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x1398437, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x1398437, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x1398437, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x1398437, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x1398437, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x1398437, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x1398437, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x1398437, 0x80000000, 0x1398437, 0x3c00000}, +{0x3c00000, 0x1398437, 0x80000001, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x80000076, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x80002b94, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x80636d24, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x807fffff, 0x1398437, 0x3c00080}, +{0x3c00000, 0x1398437, 0x80800000, 0xf3086e, 0x3c00000}, +{0x3c00000, 0x1398437, 0x80800002, 0xf3086c, 0x3c00000}, +{0x3c00000, 0x1398437, 0x81398437, 0x0, 0x3c00000}, +{0x3c00000, 0x1398437, 0x8ba98d27, 0x8ba98d21, 0x3c00010}, +{0x3c00000, 0x1398437, 0x8ba98d7a, 0x8ba98d74, 0x3c00010}, +{0x3c00000, 0x1398437, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x1398437, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x1398437, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x1398437, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x1398437, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x1398437, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x1398437, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x1398437, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x1398437, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x1398437, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x1398437, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x1398437, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x1398437, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x1398437, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x1398437, 0x9503366, 0x950341f, 0x3c00010}, +{0x3c00000, 0x1398437, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0x1398437, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x1398437, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x1398437, 0xaab4d7d8, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0x1398437, 0x966320b, 0x96632c4, 0x3c00010}, +{0x3c00000, 0x1398437, 0xb26bddee, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0x1398437, 0xb5c8e5d3, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0x1398437, 0x317285d3, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x1398437, 0x3c9623b1, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x1398437, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x1398437, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x0, 0xba98d27, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x1, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x76, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x2b94, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x636d24, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x7fffff, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x800000, 0xba98d29, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x800002, 0xba98d29, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x1398437, 0xba98d2c, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xba98d27, 0xc298d27, 0x3c00000}, +{0x3c00000, 0xba98d27, 0xba98d7a, 0xc298d50, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d27, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d27, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d27, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x80000000, 0xba98d27, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x80000001, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x80000076, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x80002b94, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x80636d24, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x807fffff, 0xba98d27, 0x3c00080}, +{0x3c00000, 0xba98d27, 0x80800000, 0xba98d25, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x80800002, 0xba98d24, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x81398437, 0xba98d21, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x8ba98d27, 0x0, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x8ba98d7a, 0x83260000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d27, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d27, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d27, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d27, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x9503366, 0xbb00ec2, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xaab4d7d8, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x966320b, 0xbb0beb7, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xb26bddee, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xba98d27, 0xb5c8e5d3, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x317285d3, 0x317285d3, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x3c9623b1, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0xba98d27, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x0, 0xba98d7a, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x1, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x76, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x2b94, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x636d24, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x7fffff, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x800000, 0xba98d7c, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x800002, 0xba98d7c, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x1398437, 0xba98d7f, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xba98d27, 0xc298d50, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xba98d7a, 0xc298d7a, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d7a, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d7a, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d7a, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x80000000, 0xba98d7a, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x80000001, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x80000076, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x80002b94, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x80636d24, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x807fffff, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0xba98d7a, 0x80800000, 0xba98d78, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x80800002, 0xba98d77, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x81398437, 0xba98d74, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x8ba98d27, 0x3260000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x8ba98d7a, 0x0, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d7a, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d7a, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xba98d7a, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xba98d7a, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x9503366, 0xbb00f15, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xaab4d7d8, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x966320b, 0xbb0bf0a, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xb26bddee, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0xb5c8e5d3, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x317285d3, 0x317285d3, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x3c9623b1, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0xba98d7a, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x0, 0x751f853a, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x1, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x76, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x2b94, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x636d24, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x7fffff, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x800000, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x800002, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x1398437, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xba98d27, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xba98d7a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x751f853a, 0x759f853a, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x7f7ffff0, 0x7f7ffff9, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x7f7fffff, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x751f853a, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x751f853a, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x751f853a, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x751f853a, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x80000000, 0x751f853a, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x80000001, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x80000076, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x80002b94, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x80636d24, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x807fffff, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x751f853a, 0x80800000, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x80800002, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x81398437, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x8ba98d27, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x8ba98d7a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xf51f853a, 0x0, 0x3c00000}, +{0x3c00000, 0x751f853a, 0xff7ffff0, 0xff7fffe6, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xff7fffff, 0xff7ffff5, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x751f853a, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x751f853a, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x751f853a, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x751f853a, 0x4f3495cb, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xe73a5134, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x7c994e9e, 0x7c994fdd, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x6164bd6c, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x9503366, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xbf5a97c9, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xe6ff1a14, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x77f31e2f, 0x77f81a58, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xaab4d7d8, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x966320b, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xb26bddee, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0xb5c8e5d3, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x317285d3, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x3c9623b1, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x51fd2c7c, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x751f853a, 0x7b906a6c, 0x7b906f68, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x0, 0x7f7ffff0, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0x1, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x76, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x2b94, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x636d24, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x7fffff, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x800000, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x800002, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x1398437, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xba98d27, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xba98d7a, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x751f853a, 0x7f7ffff9, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x7f7ffff0, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7ffff0, 0x7f7fffff, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7ffff0, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7ffff0, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7ffff0, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7ffff0, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0x80000000, 0x7f7ffff0, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0x80000001, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x80000076, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x80002b94, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x80636d24, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x807fffff, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x7f7ffff0, 0x80800000, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x80800002, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x81398437, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x8ba98d27, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x8ba98d7a, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xf51f853a, 0x7f7fffe6, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xff7ffff0, 0x0, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0xff7fffff, 0xf5700000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7ffff0, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7ffff0, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7ffff0, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7ffff0, 0x4f3495cb, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xe73a5134, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x7c994e9e, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7ffff0, 0x6164bd6c, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x9503366, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xbf5a97c9, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xe6ff1a14, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x77f31e2f, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7ffff0, 0xaab4d7d8, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x966320b, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xb26bddee, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0xb5c8e5d3, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x317285d3, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x3c9623b1, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x51fd2c7c, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x7f7ffff0, 0x7b906a6c, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7fffff, 0x0, 0x7f7fffff, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0x1, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x76, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x2b94, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x636d24, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x800000, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x800002, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x1398437, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xba98d27, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xba98d7a, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x751f853a, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7fffff, 0x7f7ffff0, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7fffff, 0x7f7fffff, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7fffff, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7fffff, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7fffff, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7fffff, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0x80000000, 0x7f7fffff, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0x80000001, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x80000076, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x80002b94, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x80636d24, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x807fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x7f7fffff, 0x80800000, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x80800002, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x81398437, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x8ba98d27, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x8ba98d7a, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xf51f853a, 0x7f7ffff5, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xff7ffff0, 0x75700000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0xff7fffff, 0x0, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7fffff, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7fffff, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f7fffff, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f7fffff, 0x4f3495cb, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xe73a5134, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x7c994e9e, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7fffff, 0x6164bd6c, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x9503366, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xbf5a97c9, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xe6ff1a14, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x77f31e2f, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f7fffff, 0xaab4d7d8, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x966320b, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xb26bddee, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0xb5c8e5d3, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x317285d3, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x3c9623b1, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x51fd2c7c, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x7f7fffff, 0x7b906a6c, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7f800000, 0x0, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x1, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x76, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x2b94, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x636d24, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x7fffff, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x800002, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x1398437, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xba98d27, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xba98d7a, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x751f853a, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7f7ffff0, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7f7fffff, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800000, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800000, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800000, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x80000000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x80000001, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x80000076, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x80002b94, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x80636d24, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x807fffff, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x7f800000, 0x80800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x80800002, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x81398437, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x8ba98d27, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x8ba98d7a, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xf51f853a, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xff7ffff0, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xff7fffff, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xff800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800000, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800000, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800000, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800000, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x4f3495cb, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xe73a5134, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7c994e9e, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x6164bd6c, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x9503366, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xbf5a97c9, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xe6ff1a14, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x77f31e2f, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xaab4d7d8, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x966320b, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xb26bddee, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0xb5c8e5d3, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x317285d3, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x3c9623b1, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x51fd2c7c, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800000, 0x7b906a6c, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7f800001, 0x0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x1, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x76, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x2b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x7fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x1398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x751f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7f7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7f7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7f800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7fc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7fd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7fffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x80000000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x80000001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x80000076, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x80002b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x80636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x807fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f800001, 0x80800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x80800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x81398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x8ba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x8ba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xf51f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xff7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xff7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xff800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xffc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xffd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xffffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x4f3495cb, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xe73a5134, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7c994e9e, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x6164bd6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x9503366, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xbf5a97c9, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xe6ff1a14, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x77f31e2f, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xaab4d7d8, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x966320b, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xb26bddee, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0xb5c8e5d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x317285d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x3c9623b1, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x51fd2c7c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f800001, 0x7b906a6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x1, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x76, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x2b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x7fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x1398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x751f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7f7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7f7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7f800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7fc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7fd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7fffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x80000000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x80000001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x80000076, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x80002b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x80636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x807fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7f984a37, 0x80800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x80800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x81398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x8ba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x8ba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xf51f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xff7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xff7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xff800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xffc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xffd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xffffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x4f3495cb, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xe73a5134, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7c994e9e, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x6164bd6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x9503366, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xbf5a97c9, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xe6ff1a14, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x77f31e2f, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xaab4d7d8, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x966320b, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xb26bddee, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0xb5c8e5d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x317285d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x3c9623b1, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x51fd2c7c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7f984a37, 0x7b906a6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x1, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x76, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x2b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x7fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x1398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x751f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7f7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7f7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7f800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7fc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7fd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7fffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x80000000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x80000001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x80000076, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x80002b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x80636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x807fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x7fbfffff, 0x80800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x80800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x81398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x8ba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x8ba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xf51f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xff7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xff7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xff800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xffc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xffd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xffffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x4f3495cb, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xe73a5134, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7c994e9e, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x6164bd6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x9503366, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xbf5a97c9, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xe6ff1a14, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x77f31e2f, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xaab4d7d8, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x966320b, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xb26bddee, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x317285d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x3c9623b1, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x51fd2c7c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fbfffff, 0x7b906a6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fc00000, 0x0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x1, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x76, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x2b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x7fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x1398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x751f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7f7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7f7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7f800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fc00000, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fc00000, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fc00000, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x80000000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x80000001, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x80000076, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x80002b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x80636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x807fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fc00000, 0x80800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x80800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x81398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x8ba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x8ba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xf51f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xff7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xff7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xff800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fc00000, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fc00000, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fc00000, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x4f3495cb, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xe73a5134, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7c994e9e, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x6164bd6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x9503366, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xbf5a97c9, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xe6ff1a14, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x77f31e2f, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xaab4d7d8, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x966320b, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xb26bddee, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0xb5c8e5d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x317285d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x3c9623b1, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x51fd2c7c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fc00000, 0x7b906a6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x1, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x76, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x2b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x7fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x1398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x751f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7f7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7f800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fd9ba98, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fd9ba98, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fd9ba98, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x80000000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x80000001, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x80000076, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x80002b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x80636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x807fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fd9ba98, 0x80800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x80800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x81398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x8ba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xf51f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xff7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xff7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xff800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fd9ba98, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fd9ba98, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fd9ba98, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x4f3495cb, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xe73a5134, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7c994e9e, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x6164bd6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x9503366, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x77f31e2f, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x966320b, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xb26bddee, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x317285d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x3c9623b1, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fd9ba98, 0x7b906a6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x1, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x76, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x2b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x7fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x1398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x751f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7f7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7f7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7f800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fffffff, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fffffff, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fffffff, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x80000000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x80000001, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x80000076, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x80002b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x80636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x807fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x7fffffff, 0x80800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x80800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x81398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x8ba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x8ba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xf51f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xff7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xff7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xff800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fffffff, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fffffff, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7fffffff, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x4f3495cb, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xe73a5134, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7c994e9e, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x6164bd6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x9503366, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xbf5a97c9, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xe6ff1a14, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x77f31e2f, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xaab4d7d8, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x966320b, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xb26bddee, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0xb5c8e5d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x317285d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x3c9623b1, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x51fd2c7c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7fffffff, 0x7b906a6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x0, 0x0, 0x3c00000}, +{0x3c00000, 0x80000000, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x800000, 0x800000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x800002, 0x800002, 0x3c00000}, +{0x3c00000, 0x80000000, 0x1398437, 0x1398437, 0x3c00000}, +{0x3c00000, 0x80000000, 0xba98d27, 0xba98d27, 0x3c00000}, +{0x3c00000, 0x80000000, 0xba98d7a, 0xba98d7a, 0x3c00000}, +{0x3c00000, 0x80000000, 0x751f853a, 0x751f853a, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7f7ffff0, 0x7f7ffff0, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7f7fffff, 0x7f7fffff, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80000000, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80000000, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80000000, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x80000000, 0x80000000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80000000, 0x80800000, 0x80800000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x80800002, 0x80800002, 0x3c00000}, +{0x3c00000, 0x80000000, 0x81398437, 0x81398437, 0x3c00000}, +{0x3c00000, 0x80000000, 0x8ba98d27, 0x8ba98d27, 0x3c00000}, +{0x3c00000, 0x80000000, 0x8ba98d7a, 0x8ba98d7a, 0x3c00000}, +{0x3c00000, 0x80000000, 0xf51f853a, 0xf51f853a, 0x3c00000}, +{0x3c00000, 0x80000000, 0xff7ffff0, 0xff7ffff0, 0x3c00000}, +{0x3c00000, 0x80000000, 0xff7fffff, 0xff7fffff, 0x3c00000}, +{0x3c00000, 0x80000000, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x80000000, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80000000, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80000000, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80000000, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80000000, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80000000, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80000000, 0x4f3495cb, 0x4f3495cb, 0x3c00000}, +{0x3c00000, 0x80000000, 0xe73a5134, 0xe73a5134, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7c994e9e, 0x7c994e9e, 0x3c00000}, +{0x3c00000, 0x80000000, 0x6164bd6c, 0x6164bd6c, 0x3c00000}, +{0x3c00000, 0x80000000, 0x9503366, 0x9503366, 0x3c00000}, +{0x3c00000, 0x80000000, 0xbf5a97c9, 0xbf5a97c9, 0x3c00000}, +{0x3c00000, 0x80000000, 0xe6ff1a14, 0xe6ff1a14, 0x3c00000}, +{0x3c00000, 0x80000000, 0x77f31e2f, 0x77f31e2f, 0x3c00000}, +{0x3c00000, 0x80000000, 0xaab4d7d8, 0xaab4d7d8, 0x3c00000}, +{0x3c00000, 0x80000000, 0x966320b, 0x966320b, 0x3c00000}, +{0x3c00000, 0x80000000, 0xb26bddee, 0xb26bddee, 0x3c00000}, +{0x3c00000, 0x80000000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00000}, +{0x3c00000, 0x80000000, 0x317285d3, 0x317285d3, 0x3c00000}, +{0x3c00000, 0x80000000, 0x3c9623b1, 0x3c9623b1, 0x3c00000}, +{0x3c00000, 0x80000000, 0x51fd2c7c, 0x51fd2c7c, 0x3c00000}, +{0x3c00000, 0x80000000, 0x7b906a6c, 0x7b906a6c, 0x3c00000}, +{0x3c00000, 0x80000001, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x80000001, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x80000001, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x80000001, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x80000001, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x80000001, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000001, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000001, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000001, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000001, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80000001, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80000001, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80000001, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x80000001, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x80000001, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x80000001, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x80000001, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x80000001, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x80000001, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x80000001, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000001, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000001, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000001, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000001, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000001, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000001, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x80000001, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x80000001, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x80000001, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x80000001, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x80000001, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x80000001, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x80000001, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x80000001, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x80000001, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x80000001, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x80000001, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x80000001, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x80000001, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x80000001, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x80000076, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x80000076, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x80000076, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x80000076, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x80000076, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x80000076, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000076, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000076, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000076, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000076, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80000076, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80000076, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80000076, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x80000076, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x80000076, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x80000076, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x80000076, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x80000076, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x80000076, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x80000076, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000076, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000076, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80000076, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000076, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000076, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80000076, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x80000076, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x80000076, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x80000076, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x80000076, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x80000076, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x80000076, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x80000076, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x80000076, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x80000076, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x80000076, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x80000076, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x80000076, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x80000076, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x80000076, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80002b94, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80002b94, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80002b94, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80002b94, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80002b94, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80002b94, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x80002b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x80002b94, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80636d24, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80636d24, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80636d24, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80636d24, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80636d24, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x80636d24, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x80636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x80636d24, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x0, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x1, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x76, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x2b94, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x800000, 0x800000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x800002, 0x800002, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x1398437, 0x1398437, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xba98d27, 0xba98d27, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xba98d7a, 0xba98d7a, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x751f853a, 0x751f853a, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7f7fffff, 0x7f7fffff, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7f800000, 0x7f800000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7f800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x807fffff, 0x7f984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x807fffff, 0x7fbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x807fffff, 0x7fc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7fd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7fffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x80000000, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x80000001, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x80000076, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x80002b94, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x80636d24, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x807fffff, 0x0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x80800000, 0x80800000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x80800002, 0x80800002, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x81398437, 0x81398437, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x8ba98d27, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xf51f853a, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xff7ffff0, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xff7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xff800000, 0xff800000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xff800001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x807fffff, 0xff984a37, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x807fffff, 0xffbfffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0x807fffff, 0xffc00000, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xffd9ba98, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xffffffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x4f3495cb, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xe73a5134, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7c994e9e, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x6164bd6c, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x9503366, 0x9503366, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x77f31e2f, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x966320b, 0x966320b, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xb26bddee, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0x807fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x317285d3, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x3c9623b1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x807fffff, 0x7b906a6c, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x80800000, 0x0, 0x80800000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x1, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x76, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x2b94, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x636d24, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x7fffff, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x800000, 0x0, 0x3c00000}, +{0x3c00000, 0x80800000, 0x800002, 0x0, 0x3c00008}, +{0x3c00000, 0x80800000, 0x1398437, 0xf3086e, 0x3c00000}, +{0x3c00000, 0x80800000, 0xba98d27, 0xba98d25, 0x3c00000}, +{0x3c00000, 0x80800000, 0xba98d7a, 0xba98d78, 0x3c00000}, +{0x3c00000, 0x80800000, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x80800000, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x80800000, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x80800000, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800000, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800000, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800000, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x80000000, 0x80800000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x80000001, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x80000076, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x80002b94, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x80636d24, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x807fffff, 0x80800000, 0x3c00080}, +{0x3c00000, 0x80800000, 0x80800000, 0x81000000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x80800002, 0x81000001, 0x3c00000}, +{0x3c00000, 0x80800000, 0x81398437, 0x81798437, 0x3c00000}, +{0x3c00000, 0x80800000, 0x8ba98d27, 0x8ba98d29, 0x3c00000}, +{0x3c00000, 0x80800000, 0x8ba98d7a, 0x8ba98d7c, 0x3c00000}, +{0x3c00000, 0x80800000, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0x80800000, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0x80800000, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0x80800000, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x80800000, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800000, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800000, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800000, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800000, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800000, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800000, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x80800000, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0x80800000, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x80800000, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x80800000, 0x9503366, 0x9503326, 0x3c00000}, +{0x3c00000, 0x80800000, 0xbf5a97c9, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0x80800000, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0x80800000, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x80800000, 0xaab4d7d8, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0x80800000, 0x966320b, 0x96631cb, 0x3c00000}, +{0x3c00000, 0x80800000, 0xb26bddee, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0x80800000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0x80800000, 0x317285d3, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x80800000, 0x3c9623b1, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x80800000, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x80800000, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x80800002, 0x0, 0x80800002, 0x3c00000}, +{0x3c00000, 0x80800002, 0x1, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x76, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x2b94, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x636d24, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x7fffff, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x800000, 0x0, 0x3c00008}, +{0x3c00000, 0x80800002, 0x800002, 0x0, 0x3c00000}, +{0x3c00000, 0x80800002, 0x1398437, 0xf3086c, 0x3c00000}, +{0x3c00000, 0x80800002, 0xba98d27, 0xba98d24, 0x3c00010}, +{0x3c00000, 0x80800002, 0xba98d7a, 0xba98d77, 0x3c00010}, +{0x3c00000, 0x80800002, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x80800002, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x80800002, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x80800002, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x80800002, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800002, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800002, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800002, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800002, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800002, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800002, 0x80000000, 0x80800002, 0x3c00000}, +{0x3c00000, 0x80800002, 0x80000001, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x80000076, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x80002b94, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x80636d24, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x807fffff, 0x80800002, 0x3c00080}, +{0x3c00000, 0x80800002, 0x80800000, 0x81000001, 0x3c00000}, +{0x3c00000, 0x80800002, 0x80800002, 0x81000002, 0x3c00000}, +{0x3c00000, 0x80800002, 0x81398437, 0x81798438, 0x3c00000}, +{0x3c00000, 0x80800002, 0x8ba98d27, 0x8ba98d29, 0x3c00010}, +{0x3c00000, 0x80800002, 0x8ba98d7a, 0x8ba98d7c, 0x3c00010}, +{0x3c00000, 0x80800002, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0x80800002, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0x80800002, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0x80800002, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x80800002, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800002, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800002, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x80800002, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800002, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800002, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x80800002, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x80800002, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0x80800002, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x80800002, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x80800002, 0x9503366, 0x9503325, 0x3c00010}, +{0x3c00000, 0x80800002, 0xbf5a97c9, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0x80800002, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0x80800002, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x80800002, 0xaab4d7d8, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0x80800002, 0x966320b, 0x96631ca, 0x3c00010}, +{0x3c00000, 0x80800002, 0xb26bddee, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0x80800002, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0x80800002, 0x317285d3, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x80800002, 0x3c9623b1, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x80800002, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x80800002, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x81398437, 0x0, 0x81398437, 0x3c00000}, +{0x3c00000, 0x81398437, 0x1, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x76, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x2b94, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x636d24, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x7fffff, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x800000, 0x80f3086e, 0x3c00000}, +{0x3c00000, 0x81398437, 0x800002, 0x80f3086c, 0x3c00000}, +{0x3c00000, 0x81398437, 0x1398437, 0x0, 0x3c00000}, +{0x3c00000, 0x81398437, 0xba98d27, 0xba98d21, 0x3c00010}, +{0x3c00000, 0x81398437, 0xba98d7a, 0xba98d74, 0x3c00010}, +{0x3c00000, 0x81398437, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x81398437, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x81398437, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x81398437, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x81398437, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x81398437, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x81398437, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x81398437, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x81398437, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x81398437, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x81398437, 0x80000000, 0x81398437, 0x3c00000}, +{0x3c00000, 0x81398437, 0x80000001, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x80000076, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x80002b94, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x80636d24, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x807fffff, 0x81398437, 0x3c00080}, +{0x3c00000, 0x81398437, 0x80800000, 0x81798437, 0x3c00000}, +{0x3c00000, 0x81398437, 0x80800002, 0x81798438, 0x3c00000}, +{0x3c00000, 0x81398437, 0x81398437, 0x81b98437, 0x3c00000}, +{0x3c00000, 0x81398437, 0x8ba98d27, 0x8ba98d2c, 0x3c00010}, +{0x3c00000, 0x81398437, 0x8ba98d7a, 0x8ba98d7f, 0x3c00010}, +{0x3c00000, 0x81398437, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0x81398437, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0x81398437, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0x81398437, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x81398437, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x81398437, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x81398437, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x81398437, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x81398437, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x81398437, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x81398437, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x81398437, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0x81398437, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x81398437, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x81398437, 0x9503366, 0x95032ac, 0x3c00010}, +{0x3c00000, 0x81398437, 0xbf5a97c9, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0x81398437, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0x81398437, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x81398437, 0xaab4d7d8, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0x81398437, 0x966320b, 0x9663151, 0x3c00010}, +{0x3c00000, 0x81398437, 0xb26bddee, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0x81398437, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0x81398437, 0x317285d3, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x81398437, 0x3c9623b1, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x81398437, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x81398437, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x0, 0x8ba98d27, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x1, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x76, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x2b94, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x636d24, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x7fffff, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x800000, 0x8ba98d25, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x800002, 0x8ba98d24, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x1398437, 0x8ba98d21, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xba98d27, 0x0, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0xba98d7a, 0x3260000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d27, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d27, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d27, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x80000000, 0x8ba98d27, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x80000001, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x80000076, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x80002b94, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x80636d24, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x807fffff, 0x8ba98d27, 0x3c00080}, +{0x3c00000, 0x8ba98d27, 0x80800000, 0x8ba98d29, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x80800002, 0x8ba98d29, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x81398437, 0x8ba98d2c, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x8ba98d27, 0x8c298d27, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x8ba98d7a, 0x8c298d50, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d27, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d27, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d27, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d27, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x9503366, 0x8ba30b8b, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xbf5a97c9, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xaab4d7d8, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x966320b, 0x8ba25b96, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xb26bddee, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x317285d3, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x3c9623b1, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x8ba98d27, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x0, 0x8ba98d7a, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x1, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x76, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x2b94, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x636d24, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x7fffff, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x800000, 0x8ba98d78, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x800002, 0x8ba98d77, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x1398437, 0x8ba98d74, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xba98d27, 0x83260000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0xba98d7a, 0x0, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d7a, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d7a, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d7a, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x80000000, 0x8ba98d7a, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x80000001, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x80000076, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x80002b94, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x80636d24, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x807fffff, 0x8ba98d7a, 0x3c00080}, +{0x3c00000, 0x8ba98d7a, 0x80800000, 0x8ba98d7c, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x80800002, 0x8ba98d7c, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x81398437, 0x8ba98d7f, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x8ba98d27, 0x8c298d50, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x8ba98d7a, 0x8c298d7a, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d7a, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d7a, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x8ba98d7a, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x8ba98d7a, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x9503366, 0x8ba30bde, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xbf5a97c9, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xaab4d7d8, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x966320b, 0x8ba25be9, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xb26bddee, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0xb5c8e5d3, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x317285d3, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x3c9623b1, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x8ba98d7a, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x0, 0xf51f853a, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x1, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x76, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x2b94, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x636d24, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x7fffff, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x800000, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x800002, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x1398437, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xba98d27, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xba98d7a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x751f853a, 0x0, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x7f7ffff0, 0x7f7fffe6, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x7f7fffff, 0x7f7ffff5, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xf51f853a, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xf51f853a, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xf51f853a, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x80000000, 0xf51f853a, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x80000001, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x80000076, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x80002b94, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x80636d24, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x807fffff, 0xf51f853a, 0x3c00080}, +{0x3c00000, 0xf51f853a, 0x80800000, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x80800002, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x81398437, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x8ba98d27, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x8ba98d7a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xf51f853a, 0xf59f853a, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0xff7ffff0, 0xff7ffff9, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xff7fffff, 0xff7fffff, 0x3c00014}, +{0x3c00000, 0xf51f853a, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xf51f853a, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xf51f853a, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xf51f853a, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xf51f853a, 0x4f3495cb, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xe73a5134, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x7c994e9e, 0x7c994d5e, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x6164bd6c, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x9503366, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xbf5a97c9, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xe6ff1a14, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x77f31e2f, 0x77ee2205, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xaab4d7d8, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x966320b, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xb26bddee, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0xb5c8e5d3, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x317285d3, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x3c9623b1, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x51fd2c7c, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0xf51f853a, 0x7b906a6c, 0x7b90656f, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x0, 0xff7ffff0, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x1, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x76, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x2b94, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x636d24, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x7fffff, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x800000, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x800002, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x1398437, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xba98d27, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xba98d7a, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x751f853a, 0xff7fffe6, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x7f7ffff0, 0x0, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x7f7fffff, 0x75700000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7ffff0, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7ffff0, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7ffff0, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x80000000, 0xff7ffff0, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x80000001, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x80000076, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x80002b94, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x80636d24, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x807fffff, 0xff7ffff0, 0x3c00080}, +{0x3c00000, 0xff7ffff0, 0x80800000, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x80800002, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x81398437, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x8ba98d27, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x8ba98d7a, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xf51f853a, 0xff7ffff9, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xff7ffff0, 0xff7fffff, 0x3c00014}, +{0x3c00000, 0xff7ffff0, 0xff7fffff, 0xff7fffff, 0x3c00014}, +{0x3c00000, 0xff7ffff0, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7ffff0, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7ffff0, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7ffff0, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7ffff0, 0x4f3495cb, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xe73a5134, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x7c994e9e, 0xff7b357b, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x6164bd6c, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x9503366, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xbf5a97c9, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xe6ff1a14, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x77f31e2f, 0xff7ffe09, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xaab4d7d8, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x966320b, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xb26bddee, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0xb5c8e5d3, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x317285d3, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x3c9623b1, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x51fd2c7c, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0xff7ffff0, 0x7b906a6c, 0xff7edf1b, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x0, 0xff7fffff, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x1, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x76, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x2b94, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x636d24, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x7fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x800000, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x800002, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x1398437, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xba98d27, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xba98d7a, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x751f853a, 0xff7ffff5, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x7f7ffff0, 0xf5700000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x7f7fffff, 0x0, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7fffff, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7fffff, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7fffff, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x80000000, 0xff7fffff, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x80000001, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x80000076, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x80002b94, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x80636d24, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x807fffff, 0xff7fffff, 0x3c00080}, +{0x3c00000, 0xff7fffff, 0x80800000, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x80800002, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x81398437, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x8ba98d27, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x8ba98d7a, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xf51f853a, 0xff7fffff, 0x3c00014}, +{0x3c00000, 0xff7fffff, 0xff7ffff0, 0xff7fffff, 0x3c00014}, +{0x3c00000, 0xff7fffff, 0xff7fffff, 0xff7fffff, 0x3c00014}, +{0x3c00000, 0xff7fffff, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7fffff, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7fffff, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff7fffff, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff7fffff, 0x4f3495cb, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xe73a5134, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x7c994e9e, 0xff7b358a, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x6164bd6c, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x9503366, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xbf5a97c9, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xe6ff1a14, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x77f31e2f, 0xff7ffe18, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xaab4d7d8, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x966320b, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xb26bddee, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0xb5c8e5d3, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x317285d3, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x3c9623b1, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x51fd2c7c, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0xff7fffff, 0x7b906a6c, 0xff7edf2a, 0x3c00010}, +{0x3c00000, 0xff800000, 0x0, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x1, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x76, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x2b94, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x636d24, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x7fffff, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x800002, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x1398437, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xba98d27, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xba98d7a, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x751f853a, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x7f7ffff0, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x7f7fffff, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x7f800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800000, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800000, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800000, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800000, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x80000000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x80000001, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x80000076, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x80002b94, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x80636d24, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x807fffff, 0xff800000, 0x3c00080}, +{0x3c00000, 0xff800000, 0x80800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x80800002, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x81398437, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x8ba98d27, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x8ba98d7a, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xf51f853a, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xff7ffff0, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xff7fffff, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800000, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800000, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800000, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x4f3495cb, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xe73a5134, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x7c994e9e, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x6164bd6c, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x9503366, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xbf5a97c9, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xe6ff1a14, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x77f31e2f, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xaab4d7d8, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x966320b, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xb26bddee, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0xb5c8e5d3, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x317285d3, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x3c9623b1, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x51fd2c7c, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800000, 0x7b906a6c, 0xff800000, 0x3c00000}, +{0x3c00000, 0xff800001, 0x0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x1, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x76, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x2b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x7fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x1398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x751f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7f7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7f7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7f800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7fc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7fd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7fffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x80000000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x80000001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x80000076, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x80002b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x80636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x807fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff800001, 0x80800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x80800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x81398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x8ba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x8ba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xf51f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xff7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xff7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xff800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xffc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xffd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xffffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x4f3495cb, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xe73a5134, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7c994e9e, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x6164bd6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x9503366, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xbf5a97c9, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xe6ff1a14, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x77f31e2f, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xaab4d7d8, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x966320b, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xb26bddee, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0xb5c8e5d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x317285d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x3c9623b1, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x51fd2c7c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff800001, 0x7b906a6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x1, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x76, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x2b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x7fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x1398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x751f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7f7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7f7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7f800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7fc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7fd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7fffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x80000000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x80000001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x80000076, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x80002b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x80636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x807fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xff984a37, 0x80800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x80800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x81398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x8ba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x8ba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xf51f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xff7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xff7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xff800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xffc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xffd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xffffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x4f3495cb, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xe73a5134, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7c994e9e, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x6164bd6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x9503366, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xbf5a97c9, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xe6ff1a14, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x77f31e2f, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xaab4d7d8, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x966320b, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xb26bddee, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0xb5c8e5d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x317285d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x3c9623b1, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x51fd2c7c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xff984a37, 0x7b906a6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x1, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x76, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x2b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x7fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x1398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x751f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7f7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7f7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7f800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7fc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7fd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7fffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x80000000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x80000001, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x80000076, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x80002b94, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x80636d24, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x807fffff, 0x7fc00000, 0x3c00081}, +{0x3c00000, 0xffbfffff, 0x80800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x80800002, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x81398437, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x8ba98d27, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x8ba98d7a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xf51f853a, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xff7ffff0, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xff7fffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xff800000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xffc00000, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xffd9ba98, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xffffffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x4f3495cb, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xe73a5134, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7c994e9e, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x6164bd6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x9503366, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xbf5a97c9, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xe6ff1a14, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x77f31e2f, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xaab4d7d8, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x966320b, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xb26bddee, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x317285d3, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x3c9623b1, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x51fd2c7c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffbfffff, 0x7b906a6c, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffc00000, 0x0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x1, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x76, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x2b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x7fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x1398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x751f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7f7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7f7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7f800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffc00000, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffc00000, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffc00000, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x80000000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x80000001, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x80000076, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x80002b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x80636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x807fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffc00000, 0x80800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x80800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x81398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x8ba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x8ba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xf51f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xff7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xff7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xff800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffc00000, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffc00000, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffc00000, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x4f3495cb, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xe73a5134, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7c994e9e, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x6164bd6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x9503366, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xbf5a97c9, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xe6ff1a14, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x77f31e2f, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xaab4d7d8, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x966320b, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xb26bddee, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0xb5c8e5d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x317285d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x3c9623b1, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x51fd2c7c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffc00000, 0x7b906a6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x1, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x76, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x2b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x7fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x1398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x751f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7f7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7f800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffd9ba98, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffd9ba98, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffd9ba98, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x80000000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x80000001, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x80000076, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x80002b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x80636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x807fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffd9ba98, 0x80800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x80800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x81398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x8ba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xf51f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xff7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xff7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xff800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffd9ba98, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffd9ba98, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffd9ba98, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x4f3495cb, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xe73a5134, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7c994e9e, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x6164bd6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x9503366, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x77f31e2f, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x966320b, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xb26bddee, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x317285d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x3c9623b1, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffd9ba98, 0x7b906a6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x1, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x76, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x2b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x7fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x1398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x751f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7f7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7f7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7f800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffffffff, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffffffff, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffffffff, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x80000000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x80000001, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x80000076, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x80002b94, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x80636d24, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x807fffff, 0x7fc00000, 0x3c00080}, +{0x3c00000, 0xffffffff, 0x80800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x80800002, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x81398437, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x8ba98d27, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x8ba98d7a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xf51f853a, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xff7ffff0, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xff7fffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xff800000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffffffff, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffffffff, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xffffffff, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x4f3495cb, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xe73a5134, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7c994e9e, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x6164bd6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x9503366, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xbf5a97c9, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xe6ff1a14, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x77f31e2f, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xaab4d7d8, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x966320b, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xb26bddee, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0xb5c8e5d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x317285d3, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x3c9623b1, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x51fd2c7c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xffffffff, 0x7b906a6c, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x0, 0x4f3495cb, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x1, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x76, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x2b94, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x636d24, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x7fffff, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x800000, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x800002, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x1398437, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xba98d27, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xba98d7a, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x4f3495cb, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x4f3495cb, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x4f3495cb, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x80000000, 0x4f3495cb, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x80000001, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x80000076, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x80002b94, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x80636d24, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x807fffff, 0x4f3495cb, 0x3c00080}, +{0x3c00000, 0x4f3495cb, 0x80800000, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x80800002, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x81398437, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x8ba98d27, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x8ba98d7a, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x4f3495cb, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x4f3495cb, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x4f3495cb, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0x4f3495cb, 0x4fb495cb, 0x3c00000}, +{0x3c00000, 0x4f3495cb, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x9503366, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xbf5a97c9, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xaab4d7d8, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x966320b, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xb26bddee, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0xb5c8e5d3, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x317285d3, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x3c9623b1, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x51fd2c7c, 0x52016895, 0x3c00010}, +{0x3c00000, 0x4f3495cb, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x0, 0xe73a5134, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x1, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x76, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x2b94, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x636d24, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x7fffff, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x800000, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x800002, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x1398437, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xba98d27, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xba98d7a, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe73a5134, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe73a5134, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe73a5134, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x80000000, 0xe73a5134, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x80000001, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x80000076, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x80002b94, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x80636d24, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x807fffff, 0xe73a5134, 0x3c00080}, +{0x3c00000, 0xe73a5134, 0x80800000, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x80800002, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x81398437, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x8ba98d27, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x8ba98d7a, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe73a5134, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe73a5134, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe73a5134, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x4f3495cb, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xe73a5134, 0xe7ba5134, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x6164bd6c, 0xe73a42e8, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x9503366, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xbf5a97c9, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xe6ff1a14, 0xe79cef1f, 0x3c00000}, +{0x3c00000, 0xe73a5134, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xaab4d7d8, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x966320b, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xb26bddee, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0xb5c8e5d3, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x317285d3, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x3c9623b1, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x51fd2c7c, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0xe73a5134, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x0, 0x7c994e9e, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x1, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x76, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x2b94, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x636d24, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x7fffff, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x800000, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x800002, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x1398437, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xba98d27, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xba98d7a, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x751f853a, 0x7c994fdd, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x7f7ffff0, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7c994e9e, 0x7f7fffff, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7c994e9e, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7c994e9e, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7c994e9e, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7c994e9e, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x80000000, 0x7c994e9e, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x80000001, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x80000076, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x80002b94, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x80636d24, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x807fffff, 0x7c994e9e, 0x3c00080}, +{0x3c00000, 0x7c994e9e, 0x80800000, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x80800002, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x81398437, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x8ba98d27, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x8ba98d7a, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xf51f853a, 0x7c994d5e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xff7ffff0, 0xff7b357b, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xff7fffff, 0xff7b358a, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7c994e9e, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7c994e9e, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7c994e9e, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x4f3495cb, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xe73a5134, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x7c994e9e, 0x7d194e9e, 0x3c00000}, +{0x3c00000, 0x7c994e9e, 0x6164bd6c, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x9503366, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xbf5a97c9, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xe6ff1a14, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x77f31e2f, 0x7c998b65, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xaab4d7d8, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x966320b, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xb26bddee, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0xb5c8e5d3, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x317285d3, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x3c9623b1, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x51fd2c7c, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x7c994e9e, 0x7b906a6c, 0x7cbd6939, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x0, 0x6164bd6c, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x1, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x76, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x2b94, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x636d24, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x7fffff, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x800000, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x800002, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x1398437, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xba98d27, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xba98d7a, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x6164bd6c, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x6164bd6c, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x6164bd6c, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x80000000, 0x6164bd6c, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x80000001, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x80000076, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x80002b94, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x80636d24, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x807fffff, 0x6164bd6c, 0x3c00080}, +{0x3c00000, 0x6164bd6c, 0x80800000, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x80800002, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x81398437, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x8ba98d27, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x8ba98d7a, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x6164bd6c, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x6164bd6c, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x6164bd6c, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x4f3495cb, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xe73a5134, 0xe73a42e8, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x6164bd6c, 0x61e4bd6c, 0x3c00000}, +{0x3c00000, 0x6164bd6c, 0x9503366, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xbf5a97c9, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xe6ff1a14, 0xe6fefd7c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xaab4d7d8, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x966320b, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xb26bddee, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0xb5c8e5d3, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x317285d3, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x3c9623b1, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x51fd2c7c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x6164bd6c, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x9503366, 0x0, 0x9503366, 0x3c00000}, +{0x3c00000, 0x9503366, 0x1, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x76, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x2b94, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x636d24, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x7fffff, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x800000, 0x95033a6, 0x3c00000}, +{0x3c00000, 0x9503366, 0x800002, 0x95033a6, 0x3c00010}, +{0x3c00000, 0x9503366, 0x1398437, 0x950341f, 0x3c00010}, +{0x3c00000, 0x9503366, 0xba98d27, 0xbb00ec2, 0x3c00010}, +{0x3c00000, 0x9503366, 0xba98d7a, 0xbb00f15, 0x3c00010}, +{0x3c00000, 0x9503366, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x9503366, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x9503366, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x9503366, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x9503366, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x9503366, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x9503366, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x9503366, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x9503366, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x9503366, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x9503366, 0x80000000, 0x9503366, 0x3c00000}, +{0x3c00000, 0x9503366, 0x80000001, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x80000076, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x80002b94, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x80636d24, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x807fffff, 0x9503366, 0x3c00080}, +{0x3c00000, 0x9503366, 0x80800000, 0x9503326, 0x3c00000}, +{0x3c00000, 0x9503366, 0x80800002, 0x9503325, 0x3c00010}, +{0x3c00000, 0x9503366, 0x81398437, 0x95032ac, 0x3c00010}, +{0x3c00000, 0x9503366, 0x8ba98d27, 0x8ba30b8b, 0x3c00010}, +{0x3c00000, 0x9503366, 0x8ba98d7a, 0x8ba30bde, 0x3c00010}, +{0x3c00000, 0x9503366, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x9503366, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x9503366, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x9503366, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x9503366, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x9503366, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x9503366, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x9503366, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x9503366, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x9503366, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x9503366, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x9503366, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x9503366, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x9503366, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x9503366, 0x9503366, 0x9d03366, 0x3c00000}, +{0x3c00000, 0x9503366, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0x9503366, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x9503366, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x9503366, 0xaab4d7d8, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0x9503366, 0x966320b, 0x9db32b8, 0x3c00010}, +{0x3c00000, 0x9503366, 0xb26bddee, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0x9503366, 0xb5c8e5d3, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0x9503366, 0x317285d3, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x9503366, 0x3c9623b1, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x9503366, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x9503366, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x0, 0xbf5a97c9, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0x1, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x76, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x2b94, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x636d24, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x7fffff, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x800000, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x800002, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x1398437, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xba98d27, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xba98d7a, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xbf5a97c9, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xbf5a97c9, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xbf5a97c9, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0x80000000, 0xbf5a97c9, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0x80000001, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x80000076, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x80002b94, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x80636d24, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x807fffff, 0xbf5a97c9, 0x3c00080}, +{0x3c00000, 0xbf5a97c9, 0x80800000, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x80800002, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x81398437, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x8ba98d27, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x8ba98d7a, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xbf5a97c9, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xbf5a97c9, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xbf5a97c9, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x9503366, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xbf5a97c9, 0xbfda97c9, 0x3c00000}, +{0x3c00000, 0xbf5a97c9, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xaab4d7d8, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x966320b, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xb26bddee, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0xb5c8e5d3, 0xbf5a97e2, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x317285d3, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x3c9623b1, 0xbf55e6ab, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0xbf5a97c9, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x0, 0xe6ff1a14, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x1, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x76, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x2b94, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x636d24, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x7fffff, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x800000, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x800002, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x1398437, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xba98d27, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xba98d7a, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe6ff1a14, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe6ff1a14, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe6ff1a14, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x80000000, 0xe6ff1a14, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x80000001, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x80000076, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x80002b94, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x80636d24, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x807fffff, 0xe6ff1a14, 0x3c00080}, +{0x3c00000, 0xe6ff1a14, 0x80800000, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x80800002, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x81398437, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x8ba98d27, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x8ba98d7a, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe6ff1a14, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe6ff1a14, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xe6ff1a14, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x4f3495cb, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xe73a5134, 0xe79cef1f, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x6164bd6c, 0xe6fefd7c, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x9503366, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xbf5a97c9, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xe6ff1a14, 0xe77f1a14, 0x3c00000}, +{0x3c00000, 0xe6ff1a14, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xaab4d7d8, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x966320b, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xb26bddee, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0xb5c8e5d3, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x317285d3, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x3c9623b1, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x51fd2c7c, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0xe6ff1a14, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x0, 0x77f31e2f, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0x1, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x76, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x2b94, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x636d24, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x7fffff, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x800000, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x800002, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x1398437, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xba98d27, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xba98d7a, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x751f853a, 0x77f81a58, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x7f7ffff0, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x77f31e2f, 0x7f7fffff, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x77f31e2f, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x77f31e2f, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x77f31e2f, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x77f31e2f, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0x80000000, 0x77f31e2f, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0x80000001, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x80000076, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x80002b94, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x80636d24, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x807fffff, 0x77f31e2f, 0x3c00080}, +{0x3c00000, 0x77f31e2f, 0x80800000, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x80800002, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x81398437, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x8ba98d27, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x8ba98d7a, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xf51f853a, 0x77ee2205, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xff7ffff0, 0xff7ffe09, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xff7fffff, 0xff7ffe18, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x77f31e2f, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x77f31e2f, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x77f31e2f, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0x4f3495cb, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xe73a5134, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x7c994e9e, 0x7c998b65, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x6164bd6c, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x9503366, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xbf5a97c9, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xe6ff1a14, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x77f31e2f, 0x78731e2f, 0x3c00000}, +{0x3c00000, 0x77f31e2f, 0xaab4d7d8, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x966320b, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xb26bddee, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0xb5c8e5d3, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x317285d3, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x3c9623b1, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x51fd2c7c, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x77f31e2f, 0x7b906a6c, 0x7b915d8a, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x0, 0xaab4d7d8, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x1, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x76, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x2b94, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x636d24, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x7fffff, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x800000, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x800002, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x1398437, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xba98d27, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xba98d7a, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xaab4d7d8, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xaab4d7d8, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xaab4d7d8, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x80000000, 0xaab4d7d8, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x80000001, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x80000076, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x80002b94, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x80636d24, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x807fffff, 0xaab4d7d8, 0x3c00080}, +{0x3c00000, 0xaab4d7d8, 0x80800000, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x80800002, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x81398437, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x8ba98d27, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x8ba98d7a, 0xaab4d7d8, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xaab4d7d8, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xaab4d7d8, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xaab4d7d8, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x9503366, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xbf5a97c9, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xaab4d7d8, 0xab34d7d8, 0x3c00000}, +{0x3c00000, 0xaab4d7d8, 0x966320b, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xb26bddee, 0xb26bdf57, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0xb5c8e5d3, 0xb5c8e5d5, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x317285d3, 0x3172802c, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x3c9623b1, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0xaab4d7d8, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x966320b, 0x0, 0x966320b, 0x3c00000}, +{0x3c00000, 0x966320b, 0x1, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x76, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x2b94, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x636d24, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x7fffff, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x800000, 0x966324b, 0x3c00000}, +{0x3c00000, 0x966320b, 0x800002, 0x966324b, 0x3c00010}, +{0x3c00000, 0x966320b, 0x1398437, 0x96632c4, 0x3c00010}, +{0x3c00000, 0x966320b, 0xba98d27, 0xbb0beb7, 0x3c00010}, +{0x3c00000, 0x966320b, 0xba98d7a, 0xbb0bf0a, 0x3c00010}, +{0x3c00000, 0x966320b, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x966320b, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x966320b, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x966320b, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x966320b, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x966320b, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x966320b, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x966320b, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x966320b, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x966320b, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x966320b, 0x80000000, 0x966320b, 0x3c00000}, +{0x3c00000, 0x966320b, 0x80000001, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x80000076, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x80002b94, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x80636d24, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x807fffff, 0x966320b, 0x3c00080}, +{0x3c00000, 0x966320b, 0x80800000, 0x96631cb, 0x3c00000}, +{0x3c00000, 0x966320b, 0x80800002, 0x96631ca, 0x3c00010}, +{0x3c00000, 0x966320b, 0x81398437, 0x9663151, 0x3c00010}, +{0x3c00000, 0x966320b, 0x8ba98d27, 0x8ba25b96, 0x3c00010}, +{0x3c00000, 0x966320b, 0x8ba98d7a, 0x8ba25be9, 0x3c00010}, +{0x3c00000, 0x966320b, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x966320b, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x966320b, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x966320b, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x966320b, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x966320b, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x966320b, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x966320b, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x966320b, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x966320b, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x966320b, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x966320b, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x966320b, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x966320b, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x966320b, 0x9503366, 0x9db32b8, 0x3c00010}, +{0x3c00000, 0x966320b, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0x966320b, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x966320b, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x966320b, 0xaab4d7d8, 0xaab4d7d7, 0x3c00010}, +{0x3c00000, 0x966320b, 0x966320b, 0x9e6320b, 0x3c00000}, +{0x3c00000, 0x966320b, 0xb26bddee, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0x966320b, 0xb5c8e5d3, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0x966320b, 0x317285d3, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x966320b, 0x3c9623b1, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x966320b, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x966320b, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x0, 0xb26bddee, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0x1, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x76, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x2b94, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x636d24, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x7fffff, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x800000, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x800002, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x1398437, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xba98d27, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xba98d7a, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb26bddee, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb26bddee, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb26bddee, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0x80000000, 0xb26bddee, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0x80000001, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x80000076, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x80002b94, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x80636d24, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x807fffff, 0xb26bddee, 0x3c00080}, +{0x3c00000, 0xb26bddee, 0x80800000, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x80800002, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x81398437, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x8ba98d27, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x8ba98d7a, 0xb26bddee, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb26bddee, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb26bddee, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb26bddee, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x9503366, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xbf5a97c9, 0xbf5a97c9, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xaab4d7d8, 0xb26bdf57, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x966320b, 0xb26bdded, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0xb26bddee, 0xb2ebddee, 0x3c00000}, +{0x3c00000, 0xb26bddee, 0xb5c8e5d3, 0xb5cabd8e, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x317285d3, 0xb22f3c79, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x3c9623b1, 0x3c9623a9, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0xb26bddee, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x0, 0xb5c8e5d3, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x1, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x76, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x2b94, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x636d24, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x7fffff, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x800000, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x800002, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x1398437, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xba98d27, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xba98d7a, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x751f853a, 0x751f8539, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x7f7ffff0, 0x7f7fffef, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x7f7fffff, 0x7f7ffffe, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb5c8e5d3, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb5c8e5d3, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb5c8e5d3, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x80000000, 0xb5c8e5d3, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x80000001, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x80000076, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x80002b94, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x80636d24, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x807fffff, 0xb5c8e5d3, 0x3c00080}, +{0x3c00000, 0xb5c8e5d3, 0x80800000, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x80800002, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x81398437, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x8ba98d27, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x8ba98d7a, 0xb5c8e5d3, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xf51f853a, 0xf51f853a, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xff7ffff0, 0xff7ffff0, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xff7fffff, 0xff7fffff, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb5c8e5d3, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb5c8e5d3, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0xb5c8e5d3, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x4f3495cb, 0x4f3495ca, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xe73a5134, 0xe73a5134, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x7c994e9e, 0x7c994e9d, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x6164bd6c, 0x6164bd6b, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x9503366, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xbf5a97c9, 0xbf5a97e2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xe6ff1a14, 0xe6ff1a14, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x77f31e2f, 0x77f31e2e, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xaab4d7d8, 0xb5c8e5d5, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x966320b, 0xb5c8e5d2, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xb26bddee, 0xb5cabd8e, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0xb5c8e5d3, 0xb648e5d3, 0x3c00000}, +{0x3c00000, 0xb5c8e5d3, 0x317285d3, 0xb5c86c90, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x3c9623b1, 0x3c96208d, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x51fd2c7c, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0xb5c8e5d3, 0x7b906a6c, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x0, 0x317285d3, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x1, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x76, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x2b94, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x636d24, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x7fffff, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x800000, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x800002, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x1398437, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xba98d27, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xba98d7a, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x317285d3, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x317285d3, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x317285d3, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x80000000, 0x317285d3, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x80000001, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x80000076, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x80002b94, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x80636d24, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x807fffff, 0x317285d3, 0x3c00080}, +{0x3c00000, 0x317285d3, 0x80800000, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x80800002, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x81398437, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x8ba98d27, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x8ba98d7a, 0x317285d2, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x317285d3, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x317285d3, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x317285d3, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x9503366, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xbf5a97c9, 0xbf5a97c8, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xaab4d7d8, 0x3172802c, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x966320b, 0x317285d3, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xb26bddee, 0xb22f3c79, 0x3c00010}, +{0x3c00000, 0x317285d3, 0xb5c8e5d3, 0xb5c86c90, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x317285d3, 0x31f285d3, 0x3c00000}, +{0x3c00000, 0x317285d3, 0x3c9623b1, 0x3c9623b2, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x317285d3, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x0, 0x3c9623b1, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x1, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x76, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x2b94, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x636d24, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x7fffff, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x800000, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x800002, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x1398437, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xba98d27, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xba98d7a, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x3c9623b1, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x3c9623b1, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x3c9623b1, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x80000000, 0x3c9623b1, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x80000001, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x80000076, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x80002b94, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x80636d24, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x807fffff, 0x3c9623b1, 0x3c00080}, +{0x3c00000, 0x3c9623b1, 0x80800000, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x80800002, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x81398437, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x8ba98d27, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x8ba98d7a, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x3c9623b1, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x3c9623b1, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x3c9623b1, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x4f3495cb, 0x4f3495cb, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x9503366, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xbf5a97c9, 0xbf55e6ab, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xaab4d7d8, 0x3c9623b0, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x966320b, 0x3c9623b1, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xb26bddee, 0x3c9623a9, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0xb5c8e5d3, 0x3c96208d, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x317285d3, 0x3c9623b2, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x3c9623b1, 0x3d1623b1, 0x3c00000}, +{0x3c00000, 0x3c9623b1, 0x51fd2c7c, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x3c9623b1, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x0, 0x51fd2c7c, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x1, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x76, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x2b94, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x636d24, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x7fffff, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x800000, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x800002, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x1398437, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xba98d27, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xba98d7a, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x751f853a, 0x751f853a, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x7f7ffff0, 0x7f7ffff0, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x7f7fffff, 0x7f7fffff, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x51fd2c7c, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x51fd2c7c, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x51fd2c7c, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x80000000, 0x51fd2c7c, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x80000001, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x80000076, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x80002b94, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x80636d24, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x807fffff, 0x51fd2c7c, 0x3c00080}, +{0x3c00000, 0x51fd2c7c, 0x80800000, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x80800002, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x81398437, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x8ba98d27, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x8ba98d7a, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xf51f853a, 0xf51f8539, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xff7ffff0, 0xff7fffef, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xff7fffff, 0xff7ffffe, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x51fd2c7c, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x51fd2c7c, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x51fd2c7c, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x4f3495cb, 0x52016895, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xe73a5134, 0xe73a5133, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x7c994e9e, 0x7c994e9e, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x6164bd6c, 0x6164bd6c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x9503366, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xbf5a97c9, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xe6ff1a14, 0xe6ff1a13, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x77f31e2f, 0x77f31e2f, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xaab4d7d8, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x966320b, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xb26bddee, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0xb5c8e5d3, 0x51fd2c7b, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x317285d3, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x3c9623b1, 0x51fd2c7c, 0x3c00010}, +{0x3c00000, 0x51fd2c7c, 0x51fd2c7c, 0x527d2c7c, 0x3c00000}, +{0x3c00000, 0x51fd2c7c, 0x7b906a6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x0, 0x7b906a6c, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x1, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x76, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x2b94, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x636d24, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x7fffff, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x800000, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x800002, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x1398437, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xba98d27, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xba98d7a, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x751f853a, 0x7b906f68, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x7f7ffff0, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7b906a6c, 0x7f7fffff, 0x7f7fffff, 0x3c00014}, +{0x3c00000, 0x7b906a6c, 0x7f800000, 0x7f800000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x7f800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7b906a6c, 0x7f984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7b906a6c, 0x7fbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7b906a6c, 0x7fc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x7fd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x7fffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x80000000, 0x7b906a6c, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x80000001, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x80000076, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x80002b94, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x80636d24, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x807fffff, 0x7b906a6c, 0x3c00080}, +{0x3c00000, 0x7b906a6c, 0x80800000, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x80800002, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x81398437, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x8ba98d27, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x8ba98d7a, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xf51f853a, 0x7b90656f, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xff7ffff0, 0xff7edf1b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xff7fffff, 0xff7edf2a, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xff800000, 0xff800000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0xff800001, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7b906a6c, 0xff984a37, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7b906a6c, 0xffbfffff, 0x7fc00000, 0x3c00001}, +{0x3c00000, 0x7b906a6c, 0xffc00000, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0xffd9ba98, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0xffffffff, 0x7fc00000, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x4f3495cb, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xe73a5134, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x7c994e9e, 0x7cbd6939, 0x3c00000}, +{0x3c00000, 0x7b906a6c, 0x6164bd6c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x9503366, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xbf5a97c9, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xe6ff1a14, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x77f31e2f, 0x7b915d8a, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xaab4d7d8, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x966320b, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xb26bddee, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0xb5c8e5d3, 0x7b906a6b, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x317285d3, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x3c9623b1, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x51fd2c7c, 0x7b906a6c, 0x3c00010}, +{0x3c00000, 0x7b906a6c, 0x7b906a6c, 0x7c106a6c, 0x3c00000}, +{0x3800000, 0x0, 0x0, 0x0, 0x3800000}, +{0x3800000, 0x0, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x800000, 0x800000, 0x3800000}, +{0x3800000, 0x0, 0x800002, 0x800002, 0x3800000}, +{0x3800000, 0x0, 0x1398437, 0x1398437, 0x3800000}, +{0x3800000, 0x0, 0xba98d27, 0xba98d27, 0x3800000}, +{0x3800000, 0x0, 0xba98d7a, 0xba98d7a, 0x3800000}, +{0x3800000, 0x0, 0x751f853a, 0x751f853a, 0x3800000}, +{0x3800000, 0x0, 0x7f7ffff0, 0x7f7ffff0, 0x3800000}, +{0x3800000, 0x0, 0x7f7fffff, 0x7f7fffff, 0x3800000}, +{0x3800000, 0x0, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x0, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x0, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x0, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x0, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x0, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x0, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x0, 0x80000000, 0x80000000, 0x3800000}, +{0x3800000, 0x0, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x0, 0x80800000, 0x80800000, 0x3800000}, +{0x3800000, 0x0, 0x80800002, 0x80800002, 0x3800000}, +{0x3800000, 0x0, 0x81398437, 0x81398437, 0x3800000}, +{0x3800000, 0x0, 0x8ba98d27, 0x8ba98d27, 0x3800000}, +{0x3800000, 0x0, 0x8ba98d7a, 0x8ba98d7a, 0x3800000}, +{0x3800000, 0x0, 0xf51f853a, 0xf51f853a, 0x3800000}, +{0x3800000, 0x0, 0xff7ffff0, 0xff7ffff0, 0x3800000}, +{0x3800000, 0x0, 0xff7fffff, 0xff7fffff, 0x3800000}, +{0x3800000, 0x0, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x0, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x0, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x0, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x0, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x0, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x0, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x0, 0x4f3495cb, 0x4f3495cb, 0x3800000}, +{0x3800000, 0x0, 0xe73a5134, 0xe73a5134, 0x3800000}, +{0x3800000, 0x0, 0x7c994e9e, 0x7c994e9e, 0x3800000}, +{0x3800000, 0x0, 0x6164bd6c, 0x6164bd6c, 0x3800000}, +{0x3800000, 0x0, 0x9503366, 0x9503366, 0x3800000}, +{0x3800000, 0x0, 0xbf5a97c9, 0xbf5a97c9, 0x3800000}, +{0x3800000, 0x0, 0xe6ff1a14, 0xe6ff1a14, 0x3800000}, +{0x3800000, 0x0, 0x77f31e2f, 0x77f31e2f, 0x3800000}, +{0x3800000, 0x0, 0xaab4d7d8, 0xaab4d7d8, 0x3800000}, +{0x3800000, 0x0, 0x966320b, 0x966320b, 0x3800000}, +{0x3800000, 0x0, 0xb26bddee, 0xb26bddee, 0x3800000}, +{0x3800000, 0x0, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800000}, +{0x3800000, 0x0, 0x317285d3, 0x317285d3, 0x3800000}, +{0x3800000, 0x0, 0x3c9623b1, 0x3c9623b1, 0x3800000}, +{0x3800000, 0x0, 0x51fd2c7c, 0x51fd2c7c, 0x3800000}, +{0x3800000, 0x0, 0x7b906a6c, 0x7b906a6c, 0x3800000}, +{0x3800000, 0x1, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x1, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x1, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x1, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x1, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x1, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x1, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x1, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x1, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x1, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x1, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x1, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x1, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x1, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x1, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x1, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x1, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x1, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x1, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x1, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x1, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x1, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x1, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x1, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x1, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x1, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x1, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x1, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x1, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x1, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x1, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x1, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x1, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x1, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x1, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x1, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x1, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x1, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x1, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x1, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x1, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x1, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x1, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x1, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x1, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x1, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x1, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x1, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x76, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x76, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x76, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x76, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x76, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x76, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x76, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x76, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x76, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x76, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x76, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x76, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x76, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x76, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x76, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x76, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x76, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x76, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x76, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x76, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x76, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x76, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x76, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x76, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x76, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x76, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x76, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x76, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x76, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x76, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x76, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x76, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x76, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x76, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x76, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x76, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x76, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x76, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x76, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x76, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x76, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x76, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x76, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x76, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x76, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x76, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x76, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x76, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x2b94, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x2b94, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x2b94, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x2b94, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x2b94, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x2b94, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x2b94, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x2b94, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x2b94, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x2b94, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x2b94, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x2b94, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x2b94, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x2b94, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x2b94, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x2b94, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x2b94, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x2b94, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x2b94, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x2b94, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x2b94, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x2b94, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x2b94, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x2b94, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x2b94, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x2b94, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x2b94, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x2b94, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x2b94, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x2b94, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x2b94, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x2b94, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x2b94, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x2b94, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x2b94, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x2b94, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x2b94, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x2b94, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x2b94, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x2b94, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x2b94, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x2b94, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x2b94, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x2b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x2b94, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x2b94, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x2b94, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x2b94, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x636d24, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x636d24, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x636d24, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x636d24, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x636d24, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x636d24, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x636d24, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x636d24, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x636d24, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x636d24, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x636d24, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x636d24, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x636d24, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x636d24, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x636d24, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x636d24, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x636d24, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x636d24, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x636d24, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x636d24, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x636d24, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x636d24, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x636d24, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x636d24, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x636d24, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x636d24, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x636d24, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x636d24, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x636d24, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x636d24, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x636d24, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x636d24, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x636d24, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x636d24, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x636d24, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x636d24, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x636d24, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x636d24, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x636d24, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x636d24, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x636d24, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7fffff, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x7fffff, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x7fffff, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x7fffff, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x7fffff, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x7fffff, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x7fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7fffff, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7fffff, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x7fffff, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fffff, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fffff, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fffff, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffff, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffff, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffff, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x7fffff, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x7fffff, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x7fffff, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x7fffff, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x7fffff, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x7fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x7fffff, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x7fffff, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x7fffff, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x7fffff, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x7fffff, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fffff, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fffff, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fffff, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffff, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffff, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffff, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x7fffff, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x7fffff, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7fffff, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x7fffff, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x7fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x7fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x7fffff, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x7fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x7fffff, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x7fffff, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x7fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x7fffff, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x7fffff, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x7fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x7fffff, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x800000, 0x0, 0x800000, 0x3800000}, +{0x3800000, 0x800000, 0x1, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x76, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x2b94, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x636d24, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x7fffff, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x800000, 0x1000000, 0x3800000}, +{0x3800000, 0x800000, 0x800002, 0x1000001, 0x3800000}, +{0x3800000, 0x800000, 0x1398437, 0x1798437, 0x3800000}, +{0x3800000, 0x800000, 0xba98d27, 0xba98d29, 0x3800000}, +{0x3800000, 0x800000, 0xba98d7a, 0xba98d7c, 0x3800000}, +{0x3800000, 0x800000, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x800000, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x800000, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x800000, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x800000, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800000, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800000, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800000, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800000, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800000, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800000, 0x80000000, 0x800000, 0x3800000}, +{0x3800000, 0x800000, 0x80000001, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x80000076, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x80002b94, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x80636d24, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x807fffff, 0x800000, 0x3800080}, +{0x3800000, 0x800000, 0x80800000, 0x80000000, 0x3800000}, +{0x3800000, 0x800000, 0x80800002, 0x0, 0x3800008}, +{0x3800000, 0x800000, 0x81398437, 0x80f3086e, 0x3800000}, +{0x3800000, 0x800000, 0x8ba98d27, 0x8ba98d25, 0x3800000}, +{0x3800000, 0x800000, 0x8ba98d7a, 0x8ba98d78, 0x3800000}, +{0x3800000, 0x800000, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x800000, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x800000, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x800000, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x800000, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800000, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800000, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800000, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800000, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800000, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800000, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x800000, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x800000, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x800000, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x800000, 0x9503366, 0x95033a6, 0x3800000}, +{0x3800000, 0x800000, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0x800000, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x800000, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x800000, 0xaab4d7d8, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0x800000, 0x966320b, 0x966324b, 0x3800000}, +{0x3800000, 0x800000, 0xb26bddee, 0xb26bddee, 0x3800010}, +{0x3800000, 0x800000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0x800000, 0x317285d3, 0x317285d3, 0x3800010}, +{0x3800000, 0x800000, 0x3c9623b1, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x800000, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x800000, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x800002, 0x0, 0x800002, 0x3800000}, +{0x3800000, 0x800002, 0x1, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x76, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x2b94, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x636d24, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x7fffff, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x800000, 0x1000001, 0x3800000}, +{0x3800000, 0x800002, 0x800002, 0x1000002, 0x3800000}, +{0x3800000, 0x800002, 0x1398437, 0x1798438, 0x3800000}, +{0x3800000, 0x800002, 0xba98d27, 0xba98d29, 0x3800010}, +{0x3800000, 0x800002, 0xba98d7a, 0xba98d7c, 0x3800010}, +{0x3800000, 0x800002, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x800002, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x800002, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x800002, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x800002, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800002, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800002, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800002, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800002, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800002, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800002, 0x80000000, 0x800002, 0x3800000}, +{0x3800000, 0x800002, 0x80000001, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x80000076, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x80002b94, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x80636d24, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x807fffff, 0x800002, 0x3800080}, +{0x3800000, 0x800002, 0x80800000, 0x0, 0x3800008}, +{0x3800000, 0x800002, 0x80800002, 0x80000000, 0x3800000}, +{0x3800000, 0x800002, 0x81398437, 0x80f3086c, 0x3800000}, +{0x3800000, 0x800002, 0x8ba98d27, 0x8ba98d25, 0x3800010}, +{0x3800000, 0x800002, 0x8ba98d7a, 0x8ba98d78, 0x3800010}, +{0x3800000, 0x800002, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x800002, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x800002, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x800002, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x800002, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800002, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800002, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x800002, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800002, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800002, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x800002, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x800002, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x800002, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x800002, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x800002, 0x9503366, 0x95033a6, 0x3800010}, +{0x3800000, 0x800002, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0x800002, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x800002, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x800002, 0xaab4d7d8, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0x800002, 0x966320b, 0x966324b, 0x3800010}, +{0x3800000, 0x800002, 0xb26bddee, 0xb26bddee, 0x3800010}, +{0x3800000, 0x800002, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0x800002, 0x317285d3, 0x317285d3, 0x3800010}, +{0x3800000, 0x800002, 0x3c9623b1, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x800002, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x800002, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x1398437, 0x0, 0x1398437, 0x3800000}, +{0x3800000, 0x1398437, 0x1, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x76, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x2b94, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x636d24, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x7fffff, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x800000, 0x1798437, 0x3800000}, +{0x3800000, 0x1398437, 0x800002, 0x1798438, 0x3800000}, +{0x3800000, 0x1398437, 0x1398437, 0x1b98437, 0x3800000}, +{0x3800000, 0x1398437, 0xba98d27, 0xba98d2c, 0x3800010}, +{0x3800000, 0x1398437, 0xba98d7a, 0xba98d7f, 0x3800010}, +{0x3800000, 0x1398437, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x1398437, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x1398437, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x1398437, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x1398437, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x1398437, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x1398437, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x1398437, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x1398437, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x1398437, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x1398437, 0x80000000, 0x1398437, 0x3800000}, +{0x3800000, 0x1398437, 0x80000001, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x80000076, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x80002b94, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x80636d24, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x807fffff, 0x1398437, 0x3800080}, +{0x3800000, 0x1398437, 0x80800000, 0xf3086e, 0x3800000}, +{0x3800000, 0x1398437, 0x80800002, 0xf3086c, 0x3800000}, +{0x3800000, 0x1398437, 0x81398437, 0x80000000, 0x3800000}, +{0x3800000, 0x1398437, 0x8ba98d27, 0x8ba98d22, 0x3800010}, +{0x3800000, 0x1398437, 0x8ba98d7a, 0x8ba98d75, 0x3800010}, +{0x3800000, 0x1398437, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x1398437, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x1398437, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x1398437, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x1398437, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x1398437, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x1398437, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x1398437, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x1398437, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x1398437, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x1398437, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x1398437, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x1398437, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x1398437, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x1398437, 0x9503366, 0x950341f, 0x3800010}, +{0x3800000, 0x1398437, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0x1398437, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x1398437, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x1398437, 0xaab4d7d8, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0x1398437, 0x966320b, 0x96632c4, 0x3800010}, +{0x3800000, 0x1398437, 0xb26bddee, 0xb26bddee, 0x3800010}, +{0x3800000, 0x1398437, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0x1398437, 0x317285d3, 0x317285d3, 0x3800010}, +{0x3800000, 0x1398437, 0x3c9623b1, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x1398437, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x1398437, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0xba98d27, 0x0, 0xba98d27, 0x3800000}, +{0x3800000, 0xba98d27, 0x1, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x76, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x2b94, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x636d24, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x7fffff, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x800000, 0xba98d29, 0x3800000}, +{0x3800000, 0xba98d27, 0x800002, 0xba98d29, 0x3800010}, +{0x3800000, 0xba98d27, 0x1398437, 0xba98d2c, 0x3800010}, +{0x3800000, 0xba98d27, 0xba98d27, 0xc298d27, 0x3800000}, +{0x3800000, 0xba98d27, 0xba98d7a, 0xc298d50, 0x3800010}, +{0x3800000, 0xba98d27, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0xba98d27, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0xba98d27, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0xba98d27, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xba98d27, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d27, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d27, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d27, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d27, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d27, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d27, 0x80000000, 0xba98d27, 0x3800000}, +{0x3800000, 0xba98d27, 0x80000001, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x80000076, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x80002b94, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x80636d24, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x807fffff, 0xba98d27, 0x3800080}, +{0x3800000, 0xba98d27, 0x80800000, 0xba98d25, 0x3800000}, +{0x3800000, 0xba98d27, 0x80800002, 0xba98d24, 0x3800010}, +{0x3800000, 0xba98d27, 0x81398437, 0xba98d21, 0x3800010}, +{0x3800000, 0xba98d27, 0x8ba98d27, 0x80000000, 0x3800000}, +{0x3800000, 0xba98d27, 0x8ba98d7a, 0x83260000, 0x3800000}, +{0x3800000, 0xba98d27, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0xba98d27, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xba98d27, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0xba98d27, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xba98d27, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d27, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d27, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d27, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d27, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d27, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d27, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0xba98d27, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0xba98d27, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0xba98d27, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0xba98d27, 0x9503366, 0xbb00ec2, 0x3800010}, +{0x3800000, 0xba98d27, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xba98d27, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xba98d27, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0xba98d27, 0xaab4d7d8, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xba98d27, 0x966320b, 0xbb0beb7, 0x3800010}, +{0x3800000, 0xba98d27, 0xb26bddee, 0xb26bddee, 0x3800010}, +{0x3800000, 0xba98d27, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xba98d27, 0x317285d3, 0x317285d3, 0x3800010}, +{0x3800000, 0xba98d27, 0x3c9623b1, 0x3c9623b1, 0x3800010}, +{0x3800000, 0xba98d27, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0xba98d27, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0xba98d7a, 0x0, 0xba98d7a, 0x3800000}, +{0x3800000, 0xba98d7a, 0x1, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x76, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x2b94, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x636d24, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x7fffff, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x800000, 0xba98d7c, 0x3800000}, +{0x3800000, 0xba98d7a, 0x800002, 0xba98d7c, 0x3800010}, +{0x3800000, 0xba98d7a, 0x1398437, 0xba98d7f, 0x3800010}, +{0x3800000, 0xba98d7a, 0xba98d27, 0xc298d50, 0x3800010}, +{0x3800000, 0xba98d7a, 0xba98d7a, 0xc298d7a, 0x3800000}, +{0x3800000, 0xba98d7a, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0xba98d7a, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0xba98d7a, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0xba98d7a, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xba98d7a, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d7a, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d7a, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d7a, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d7a, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d7a, 0x80000000, 0xba98d7a, 0x3800000}, +{0x3800000, 0xba98d7a, 0x80000001, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x80000076, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x80002b94, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x80636d24, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x807fffff, 0xba98d7a, 0x3800080}, +{0x3800000, 0xba98d7a, 0x80800000, 0xba98d78, 0x3800000}, +{0x3800000, 0xba98d7a, 0x80800002, 0xba98d77, 0x3800010}, +{0x3800000, 0xba98d7a, 0x81398437, 0xba98d74, 0x3800010}, +{0x3800000, 0xba98d7a, 0x8ba98d27, 0x3260000, 0x3800000}, +{0x3800000, 0xba98d7a, 0x8ba98d7a, 0x80000000, 0x3800000}, +{0x3800000, 0xba98d7a, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0xba98d7a, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xba98d7a, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0xba98d7a, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xba98d7a, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d7a, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d7a, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xba98d7a, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d7a, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d7a, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xba98d7a, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0xba98d7a, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0xba98d7a, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0xba98d7a, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0xba98d7a, 0x9503366, 0xbb00f15, 0x3800010}, +{0x3800000, 0xba98d7a, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xba98d7a, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xba98d7a, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0xba98d7a, 0xaab4d7d8, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xba98d7a, 0x966320b, 0xbb0bf0a, 0x3800010}, +{0x3800000, 0xba98d7a, 0xb26bddee, 0xb26bddee, 0x3800010}, +{0x3800000, 0xba98d7a, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xba98d7a, 0x317285d3, 0x317285d3, 0x3800010}, +{0x3800000, 0xba98d7a, 0x3c9623b1, 0x3c9623b1, 0x3800010}, +{0x3800000, 0xba98d7a, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0xba98d7a, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x751f853a, 0x0, 0x751f853a, 0x3800000}, +{0x3800000, 0x751f853a, 0x1, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x76, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x2b94, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x636d24, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x7fffff, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x800000, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0x800002, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0x1398437, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0xba98d27, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0xba98d7a, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0x751f853a, 0x759f853a, 0x3800000}, +{0x3800000, 0x751f853a, 0x7f7ffff0, 0x7f7ffff9, 0x3800010}, +{0x3800000, 0x751f853a, 0x7f7fffff, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x751f853a, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x751f853a, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x751f853a, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x751f853a, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x751f853a, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x751f853a, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x751f853a, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x751f853a, 0x80000000, 0x751f853a, 0x3800000}, +{0x3800000, 0x751f853a, 0x80000001, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x80000076, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x80002b94, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x80636d24, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x807fffff, 0x751f853a, 0x3800080}, +{0x3800000, 0x751f853a, 0x80800000, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x80800002, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x81398437, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x8ba98d27, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x8ba98d7a, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0xf51f853a, 0x80000000, 0x3800000}, +{0x3800000, 0x751f853a, 0xff7ffff0, 0xff7fffe7, 0x3800010}, +{0x3800000, 0x751f853a, 0xff7fffff, 0xff7ffff6, 0x3800010}, +{0x3800000, 0x751f853a, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x751f853a, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x751f853a, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x751f853a, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x751f853a, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x751f853a, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x751f853a, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x751f853a, 0x4f3495cb, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0xe73a5134, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x7c994e9e, 0x7c994fdd, 0x3800010}, +{0x3800000, 0x751f853a, 0x6164bd6c, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0x9503366, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0xbf5a97c9, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0xe6ff1a14, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x77f31e2f, 0x77f81a58, 0x3800010}, +{0x3800000, 0x751f853a, 0xaab4d7d8, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x966320b, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0xb26bddee, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0xb5c8e5d3, 0x751f8539, 0x3800010}, +{0x3800000, 0x751f853a, 0x317285d3, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0x3c9623b1, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0x51fd2c7c, 0x751f853a, 0x3800010}, +{0x3800000, 0x751f853a, 0x7b906a6c, 0x7b906f68, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x0, 0x7f7ffff0, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0x1, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x76, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x2b94, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x636d24, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x7fffff, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x800000, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x800002, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x1398437, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xba98d27, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xba98d7a, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x751f853a, 0x7f7ffff9, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x7f7ffff0, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7ffff0, 0x7f7fffff, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7ffff0, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7ffff0, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7ffff0, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7ffff0, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0x80000000, 0x7f7ffff0, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0x80000001, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x80000076, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x80002b94, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x80636d24, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x807fffff, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x7f7ffff0, 0x80800000, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x80800002, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x81398437, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x8ba98d27, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x8ba98d7a, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xf51f853a, 0x7f7fffe6, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xff7ffff0, 0x80000000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0xff7fffff, 0xf5700000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7ffff0, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7ffff0, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7ffff0, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7ffff0, 0x4f3495cb, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xe73a5134, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x7c994e9e, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7ffff0, 0x6164bd6c, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x9503366, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xbf5a97c9, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xe6ff1a14, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x77f31e2f, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7ffff0, 0xaab4d7d8, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x966320b, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xb26bddee, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0xb5c8e5d3, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x317285d3, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x3c9623b1, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x51fd2c7c, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x7f7ffff0, 0x7b906a6c, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7fffff, 0x0, 0x7f7fffff, 0x3800000}, +{0x3800000, 0x7f7fffff, 0x1, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x76, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x2b94, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x636d24, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x800000, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x800002, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x1398437, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xba98d27, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xba98d7a, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x751f853a, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7fffff, 0x7f7ffff0, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7fffff, 0x7f7fffff, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7fffff, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7fffff, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7fffff, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7fffff, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0x80000000, 0x7f7fffff, 0x3800000}, +{0x3800000, 0x7f7fffff, 0x80000001, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x80000076, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x80002b94, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x80636d24, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x807fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x7f7fffff, 0x80800000, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x80800002, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x81398437, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x8ba98d27, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x8ba98d7a, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xf51f853a, 0x7f7ffff5, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xff7ffff0, 0x75700000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0xff7fffff, 0x80000000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7fffff, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7fffff, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f7fffff, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f7fffff, 0x4f3495cb, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xe73a5134, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x7c994e9e, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7fffff, 0x6164bd6c, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x9503366, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xbf5a97c9, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xe6ff1a14, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x77f31e2f, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f7fffff, 0xaab4d7d8, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x966320b, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xb26bddee, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0xb5c8e5d3, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x317285d3, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x3c9623b1, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x51fd2c7c, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x7f7fffff, 0x7b906a6c, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7f800000, 0x0, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x1, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x76, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x2b94, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x636d24, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x7fffff, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x800002, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x1398437, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xba98d27, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xba98d7a, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x751f853a, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7f7ffff0, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7f7fffff, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800000, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800000, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800000, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f800000, 0x80000000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x80000001, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x80000076, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x80002b94, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x80636d24, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x807fffff, 0x7f800000, 0x3800080}, +{0x3800000, 0x7f800000, 0x80800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x80800002, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x81398437, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x8ba98d27, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x8ba98d7a, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xf51f853a, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xff7ffff0, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xff7fffff, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xff800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800000, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800000, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800000, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800000, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f800000, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f800000, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7f800000, 0x4f3495cb, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xe73a5134, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7c994e9e, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x6164bd6c, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x9503366, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xbf5a97c9, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xe6ff1a14, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x77f31e2f, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xaab4d7d8, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x966320b, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xb26bddee, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0xb5c8e5d3, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x317285d3, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x3c9623b1, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x51fd2c7c, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800000, 0x7b906a6c, 0x7f800000, 0x3800000}, +{0x3800000, 0x7f800001, 0x0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x1, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x76, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x2b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x7fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x1398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x751f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7f7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7f7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7f800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7fc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7fd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7fffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x80000000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x80000001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x80000076, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x80002b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x80636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x807fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f800001, 0x80800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x80800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x81398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x8ba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x8ba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xf51f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xff7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xff7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xff800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xffc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xffd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xffffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x4f3495cb, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xe73a5134, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7c994e9e, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x6164bd6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x9503366, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xbf5a97c9, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xe6ff1a14, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x77f31e2f, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xaab4d7d8, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x966320b, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xb26bddee, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0xb5c8e5d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x317285d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x3c9623b1, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x51fd2c7c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f800001, 0x7b906a6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x1, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x76, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x2b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x7fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x1398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x751f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7f7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7f7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7f800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7fc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7fd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7fffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x80000000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x80000001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x80000076, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x80002b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x80636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x807fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7f984a37, 0x80800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x80800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x81398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x8ba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x8ba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xf51f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xff7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xff7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xff800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xffc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xffd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xffffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x4f3495cb, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xe73a5134, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7c994e9e, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x6164bd6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x9503366, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xbf5a97c9, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xe6ff1a14, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x77f31e2f, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xaab4d7d8, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x966320b, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xb26bddee, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0xb5c8e5d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x317285d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x3c9623b1, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x51fd2c7c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7f984a37, 0x7b906a6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x1, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x76, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x2b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x7fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x1398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x751f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7f7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7f7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7f800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7fc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7fd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7fffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x80000000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x80000001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x80000076, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x80002b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x80636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x807fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x7fbfffff, 0x80800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x80800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x81398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x8ba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x8ba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xf51f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xff7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xff7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xff800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xffc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xffd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xffffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x4f3495cb, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xe73a5134, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7c994e9e, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x6164bd6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x9503366, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xbf5a97c9, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xe6ff1a14, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x77f31e2f, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xaab4d7d8, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x966320b, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xb26bddee, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x317285d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x3c9623b1, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x51fd2c7c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fbfffff, 0x7b906a6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fc00000, 0x0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x1, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x76, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x2b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x7fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x1398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x751f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7f7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7f7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7f800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fc00000, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fc00000, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fc00000, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x80000000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x80000001, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x80000076, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x80002b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x80636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x807fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fc00000, 0x80800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x80800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x81398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x8ba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x8ba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xf51f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xff7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xff7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xff800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fc00000, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fc00000, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fc00000, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x4f3495cb, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xe73a5134, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7c994e9e, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x6164bd6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x9503366, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xbf5a97c9, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xe6ff1a14, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x77f31e2f, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xaab4d7d8, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x966320b, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xb26bddee, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0xb5c8e5d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x317285d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x3c9623b1, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x51fd2c7c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fc00000, 0x7b906a6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x1, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x76, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x2b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x7fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x1398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x751f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7f7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7f800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fd9ba98, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fd9ba98, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fd9ba98, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x80000000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x80000001, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x80000076, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x80002b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x80636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x807fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fd9ba98, 0x80800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x80800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x81398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x8ba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xf51f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xff7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xff7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xff800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fd9ba98, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fd9ba98, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fd9ba98, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x4f3495cb, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xe73a5134, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7c994e9e, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x6164bd6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x9503366, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x77f31e2f, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x966320b, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xb26bddee, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x317285d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x3c9623b1, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fd9ba98, 0x7b906a6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x1, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x76, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x2b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x7fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x1398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x751f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7f7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7f7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7f800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fffffff, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fffffff, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fffffff, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x80000000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x80000001, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x80000076, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x80002b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x80636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x807fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x7fffffff, 0x80800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x80800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x81398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x8ba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x8ba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xf51f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xff7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xff7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xff800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fffffff, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fffffff, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7fffffff, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x4f3495cb, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xe73a5134, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7c994e9e, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x6164bd6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x9503366, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xbf5a97c9, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xe6ff1a14, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x77f31e2f, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xaab4d7d8, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x966320b, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xb26bddee, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0xb5c8e5d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x317285d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x3c9623b1, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x51fd2c7c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7fffffff, 0x7b906a6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80000000, 0x0, 0x80000000, 0x3800000}, +{0x3800000, 0x80000000, 0x1, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x76, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x2b94, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x636d24, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x7fffff, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x800000, 0x800000, 0x3800000}, +{0x3800000, 0x80000000, 0x800002, 0x800002, 0x3800000}, +{0x3800000, 0x80000000, 0x1398437, 0x1398437, 0x3800000}, +{0x3800000, 0x80000000, 0xba98d27, 0xba98d27, 0x3800000}, +{0x3800000, 0x80000000, 0xba98d7a, 0xba98d7a, 0x3800000}, +{0x3800000, 0x80000000, 0x751f853a, 0x751f853a, 0x3800000}, +{0x3800000, 0x80000000, 0x7f7ffff0, 0x7f7ffff0, 0x3800000}, +{0x3800000, 0x80000000, 0x7f7fffff, 0x7f7fffff, 0x3800000}, +{0x3800000, 0x80000000, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x80000000, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80000000, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80000000, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80000000, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80000000, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80000000, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80000000, 0x80000000, 0x80000000, 0x3800000}, +{0x3800000, 0x80000000, 0x80000001, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x80000076, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x80002b94, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x80636d24, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x807fffff, 0x80000000, 0x3800080}, +{0x3800000, 0x80000000, 0x80800000, 0x80800000, 0x3800000}, +{0x3800000, 0x80000000, 0x80800002, 0x80800002, 0x3800000}, +{0x3800000, 0x80000000, 0x81398437, 0x81398437, 0x3800000}, +{0x3800000, 0x80000000, 0x8ba98d27, 0x8ba98d27, 0x3800000}, +{0x3800000, 0x80000000, 0x8ba98d7a, 0x8ba98d7a, 0x3800000}, +{0x3800000, 0x80000000, 0xf51f853a, 0xf51f853a, 0x3800000}, +{0x3800000, 0x80000000, 0xff7ffff0, 0xff7ffff0, 0x3800000}, +{0x3800000, 0x80000000, 0xff7fffff, 0xff7fffff, 0x3800000}, +{0x3800000, 0x80000000, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x80000000, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80000000, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80000000, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80000000, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80000000, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80000000, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80000000, 0x4f3495cb, 0x4f3495cb, 0x3800000}, +{0x3800000, 0x80000000, 0xe73a5134, 0xe73a5134, 0x3800000}, +{0x3800000, 0x80000000, 0x7c994e9e, 0x7c994e9e, 0x3800000}, +{0x3800000, 0x80000000, 0x6164bd6c, 0x6164bd6c, 0x3800000}, +{0x3800000, 0x80000000, 0x9503366, 0x9503366, 0x3800000}, +{0x3800000, 0x80000000, 0xbf5a97c9, 0xbf5a97c9, 0x3800000}, +{0x3800000, 0x80000000, 0xe6ff1a14, 0xe6ff1a14, 0x3800000}, +{0x3800000, 0x80000000, 0x77f31e2f, 0x77f31e2f, 0x3800000}, +{0x3800000, 0x80000000, 0xaab4d7d8, 0xaab4d7d8, 0x3800000}, +{0x3800000, 0x80000000, 0x966320b, 0x966320b, 0x3800000}, +{0x3800000, 0x80000000, 0xb26bddee, 0xb26bddee, 0x3800000}, +{0x3800000, 0x80000000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800000}, +{0x3800000, 0x80000000, 0x317285d3, 0x317285d3, 0x3800000}, +{0x3800000, 0x80000000, 0x3c9623b1, 0x3c9623b1, 0x3800000}, +{0x3800000, 0x80000000, 0x51fd2c7c, 0x51fd2c7c, 0x3800000}, +{0x3800000, 0x80000000, 0x7b906a6c, 0x7b906a6c, 0x3800000}, +{0x3800000, 0x80000001, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x80000001, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x80000001, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x80000001, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x80000001, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x80000001, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x80000001, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x80000001, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x80000001, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x80000001, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000001, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000001, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000001, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000001, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000001, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000001, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x80000001, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x80000001, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x80000001, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x80000001, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x80000001, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x80000001, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x80000001, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x80000001, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x80000001, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x80000001, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x80000001, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000001, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000001, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000001, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000001, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000001, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000001, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x80000001, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x80000001, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x80000001, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x80000001, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x80000001, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x80000001, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x80000001, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x80000001, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x80000001, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x80000001, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x80000001, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x80000001, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x80000001, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x80000001, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x80000001, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x80000076, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x80000076, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x80000076, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x80000076, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x80000076, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x80000076, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x80000076, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x80000076, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x80000076, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x80000076, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000076, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000076, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000076, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000076, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000076, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000076, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x80000076, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x80000076, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x80000076, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x80000076, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x80000076, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x80000076, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x80000076, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x80000076, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x80000076, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x80000076, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x80000076, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000076, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000076, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80000076, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000076, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000076, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80000076, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x80000076, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x80000076, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x80000076, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x80000076, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x80000076, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x80000076, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x80000076, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x80000076, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x80000076, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x80000076, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x80000076, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x80000076, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x80000076, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x80000076, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x80000076, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x80002b94, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x80002b94, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x80002b94, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x80002b94, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x80002b94, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x80002b94, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x80002b94, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x80002b94, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x80002b94, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x80002b94, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80002b94, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80002b94, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80002b94, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80002b94, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80002b94, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80002b94, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x80002b94, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x80002b94, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x80002b94, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x80002b94, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x80002b94, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x80002b94, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x80002b94, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x80002b94, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x80002b94, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x80002b94, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x80002b94, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80002b94, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80002b94, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80002b94, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80002b94, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80002b94, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80002b94, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x80002b94, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x80002b94, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x80002b94, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x80002b94, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x80002b94, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x80002b94, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x80002b94, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x80002b94, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x80002b94, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x80002b94, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x80002b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x80002b94, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x80002b94, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x80002b94, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x80002b94, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x80636d24, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x80636d24, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x80636d24, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x80636d24, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x80636d24, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x80636d24, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x80636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x80636d24, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x80636d24, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x80636d24, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80636d24, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80636d24, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80636d24, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80636d24, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80636d24, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80636d24, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x80636d24, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x80636d24, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x80636d24, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x80636d24, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x80636d24, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x80636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x80636d24, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x80636d24, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x80636d24, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x80636d24, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x80636d24, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80636d24, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80636d24, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x80636d24, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80636d24, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80636d24, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x80636d24, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x80636d24, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x80636d24, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x80636d24, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x80636d24, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x80636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x80636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x80636d24, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x80636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x80636d24, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x80636d24, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x80636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x80636d24, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x80636d24, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x80636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x80636d24, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x807fffff, 0x0, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x1, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x76, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x2b94, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x636d24, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x7fffff, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x800000, 0x800000, 0x3800080}, +{0x3800000, 0x807fffff, 0x800002, 0x800002, 0x3800080}, +{0x3800000, 0x807fffff, 0x1398437, 0x1398437, 0x3800080}, +{0x3800000, 0x807fffff, 0xba98d27, 0xba98d27, 0x3800080}, +{0x3800000, 0x807fffff, 0xba98d7a, 0xba98d7a, 0x3800080}, +{0x3800000, 0x807fffff, 0x751f853a, 0x751f853a, 0x3800080}, +{0x3800000, 0x807fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3800080}, +{0x3800000, 0x807fffff, 0x7f7fffff, 0x7f7fffff, 0x3800080}, +{0x3800000, 0x807fffff, 0x7f800000, 0x7f800000, 0x3800080}, +{0x3800000, 0x807fffff, 0x7f800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x807fffff, 0x7f984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x807fffff, 0x7fbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x807fffff, 0x7fc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x807fffff, 0x7fd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x807fffff, 0x7fffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x807fffff, 0x80000000, 0x80000000, 0x3800080}, +{0x3800000, 0x807fffff, 0x80000001, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x80000076, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x80002b94, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x80636d24, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x807fffff, 0x0, 0x3800080}, +{0x3800000, 0x807fffff, 0x80800000, 0x80800000, 0x3800080}, +{0x3800000, 0x807fffff, 0x80800002, 0x80800002, 0x3800080}, +{0x3800000, 0x807fffff, 0x81398437, 0x81398437, 0x3800080}, +{0x3800000, 0x807fffff, 0x8ba98d27, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x807fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x807fffff, 0xf51f853a, 0xf51f853a, 0x3800080}, +{0x3800000, 0x807fffff, 0xff7ffff0, 0xff7ffff0, 0x3800080}, +{0x3800000, 0x807fffff, 0xff7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0x807fffff, 0xff800000, 0xff800000, 0x3800080}, +{0x3800000, 0x807fffff, 0xff800001, 0x7fc00000, 0x3800081}, +{0x3800000, 0x807fffff, 0xff984a37, 0x7fc00000, 0x3800081}, +{0x3800000, 0x807fffff, 0xffbfffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0x807fffff, 0xffc00000, 0x7fc00000, 0x3800080}, +{0x3800000, 0x807fffff, 0xffd9ba98, 0x7fc00000, 0x3800080}, +{0x3800000, 0x807fffff, 0xffffffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0x807fffff, 0x4f3495cb, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x807fffff, 0xe73a5134, 0xe73a5134, 0x3800080}, +{0x3800000, 0x807fffff, 0x7c994e9e, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x807fffff, 0x6164bd6c, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x807fffff, 0x9503366, 0x9503366, 0x3800080}, +{0x3800000, 0x807fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0x807fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0x807fffff, 0x77f31e2f, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x807fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0x807fffff, 0x966320b, 0x966320b, 0x3800080}, +{0x3800000, 0x807fffff, 0xb26bddee, 0xb26bddee, 0x3800080}, +{0x3800000, 0x807fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0x807fffff, 0x317285d3, 0x317285d3, 0x3800080}, +{0x3800000, 0x807fffff, 0x3c9623b1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x807fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x807fffff, 0x7b906a6c, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x80800000, 0x0, 0x80800000, 0x3800000}, +{0x3800000, 0x80800000, 0x1, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x76, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x2b94, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x636d24, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x7fffff, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x800000, 0x80000000, 0x3800000}, +{0x3800000, 0x80800000, 0x800002, 0x0, 0x3800008}, +{0x3800000, 0x80800000, 0x1398437, 0xf3086e, 0x3800000}, +{0x3800000, 0x80800000, 0xba98d27, 0xba98d25, 0x3800000}, +{0x3800000, 0x80800000, 0xba98d7a, 0xba98d78, 0x3800000}, +{0x3800000, 0x80800000, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0x80800000, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x80800000, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x80800000, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x80800000, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800000, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800000, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800000, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800000, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800000, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800000, 0x80000000, 0x80800000, 0x3800000}, +{0x3800000, 0x80800000, 0x80000001, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x80000076, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x80002b94, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x80636d24, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x807fffff, 0x80800000, 0x3800080}, +{0x3800000, 0x80800000, 0x80800000, 0x81000000, 0x3800000}, +{0x3800000, 0x80800000, 0x80800002, 0x81000001, 0x3800000}, +{0x3800000, 0x80800000, 0x81398437, 0x81798437, 0x3800000}, +{0x3800000, 0x80800000, 0x8ba98d27, 0x8ba98d29, 0x3800000}, +{0x3800000, 0x80800000, 0x8ba98d7a, 0x8ba98d7c, 0x3800000}, +{0x3800000, 0x80800000, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0x80800000, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0x80800000, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0x80800000, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x80800000, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800000, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800000, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800000, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800000, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800000, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800000, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x80800000, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0x80800000, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x80800000, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x80800000, 0x9503366, 0x9503326, 0x3800000}, +{0x3800000, 0x80800000, 0xbf5a97c9, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0x80800000, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0x80800000, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x80800000, 0xaab4d7d8, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0x80800000, 0x966320b, 0x96631cb, 0x3800000}, +{0x3800000, 0x80800000, 0xb26bddee, 0xb26bddef, 0x3800010}, +{0x3800000, 0x80800000, 0xb5c8e5d3, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0x80800000, 0x317285d3, 0x317285d2, 0x3800010}, +{0x3800000, 0x80800000, 0x3c9623b1, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x80800000, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x80800000, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x80800002, 0x0, 0x80800002, 0x3800000}, +{0x3800000, 0x80800002, 0x1, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x76, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x2b94, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x636d24, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x7fffff, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x800000, 0x0, 0x3800008}, +{0x3800000, 0x80800002, 0x800002, 0x80000000, 0x3800000}, +{0x3800000, 0x80800002, 0x1398437, 0xf3086c, 0x3800000}, +{0x3800000, 0x80800002, 0xba98d27, 0xba98d24, 0x3800010}, +{0x3800000, 0x80800002, 0xba98d7a, 0xba98d77, 0x3800010}, +{0x3800000, 0x80800002, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0x80800002, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x80800002, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x80800002, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x80800002, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800002, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800002, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800002, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800002, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800002, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800002, 0x80000000, 0x80800002, 0x3800000}, +{0x3800000, 0x80800002, 0x80000001, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x80000076, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x80002b94, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x80636d24, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x807fffff, 0x80800002, 0x3800080}, +{0x3800000, 0x80800002, 0x80800000, 0x81000001, 0x3800000}, +{0x3800000, 0x80800002, 0x80800002, 0x81000002, 0x3800000}, +{0x3800000, 0x80800002, 0x81398437, 0x81798438, 0x3800000}, +{0x3800000, 0x80800002, 0x8ba98d27, 0x8ba98d2a, 0x3800010}, +{0x3800000, 0x80800002, 0x8ba98d7a, 0x8ba98d7d, 0x3800010}, +{0x3800000, 0x80800002, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0x80800002, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0x80800002, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0x80800002, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x80800002, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800002, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800002, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x80800002, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800002, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800002, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x80800002, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x80800002, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0x80800002, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x80800002, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x80800002, 0x9503366, 0x9503325, 0x3800010}, +{0x3800000, 0x80800002, 0xbf5a97c9, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0x80800002, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0x80800002, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x80800002, 0xaab4d7d8, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0x80800002, 0x966320b, 0x96631ca, 0x3800010}, +{0x3800000, 0x80800002, 0xb26bddee, 0xb26bddef, 0x3800010}, +{0x3800000, 0x80800002, 0xb5c8e5d3, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0x80800002, 0x317285d3, 0x317285d2, 0x3800010}, +{0x3800000, 0x80800002, 0x3c9623b1, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x80800002, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x80800002, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x81398437, 0x0, 0x81398437, 0x3800000}, +{0x3800000, 0x81398437, 0x1, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x76, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x2b94, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x636d24, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x7fffff, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x800000, 0x80f3086e, 0x3800000}, +{0x3800000, 0x81398437, 0x800002, 0x80f3086c, 0x3800000}, +{0x3800000, 0x81398437, 0x1398437, 0x80000000, 0x3800000}, +{0x3800000, 0x81398437, 0xba98d27, 0xba98d21, 0x3800010}, +{0x3800000, 0x81398437, 0xba98d7a, 0xba98d74, 0x3800010}, +{0x3800000, 0x81398437, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0x81398437, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x81398437, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x81398437, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x81398437, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x81398437, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x81398437, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x81398437, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x81398437, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x81398437, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x81398437, 0x80000000, 0x81398437, 0x3800000}, +{0x3800000, 0x81398437, 0x80000001, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x80000076, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x80002b94, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x80636d24, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x807fffff, 0x81398437, 0x3800080}, +{0x3800000, 0x81398437, 0x80800000, 0x81798437, 0x3800000}, +{0x3800000, 0x81398437, 0x80800002, 0x81798438, 0x3800000}, +{0x3800000, 0x81398437, 0x81398437, 0x81b98437, 0x3800000}, +{0x3800000, 0x81398437, 0x8ba98d27, 0x8ba98d2d, 0x3800010}, +{0x3800000, 0x81398437, 0x8ba98d7a, 0x8ba98d80, 0x3800010}, +{0x3800000, 0x81398437, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0x81398437, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0x81398437, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0x81398437, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x81398437, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x81398437, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x81398437, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x81398437, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x81398437, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x81398437, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x81398437, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x81398437, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0x81398437, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x81398437, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x81398437, 0x9503366, 0x95032ac, 0x3800010}, +{0x3800000, 0x81398437, 0xbf5a97c9, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0x81398437, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0x81398437, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x81398437, 0xaab4d7d8, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0x81398437, 0x966320b, 0x9663151, 0x3800010}, +{0x3800000, 0x81398437, 0xb26bddee, 0xb26bddef, 0x3800010}, +{0x3800000, 0x81398437, 0xb5c8e5d3, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0x81398437, 0x317285d3, 0x317285d2, 0x3800010}, +{0x3800000, 0x81398437, 0x3c9623b1, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x81398437, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x81398437, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x0, 0x8ba98d27, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x1, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x76, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x2b94, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x636d24, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x7fffff, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x800000, 0x8ba98d25, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x800002, 0x8ba98d25, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x1398437, 0x8ba98d22, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xba98d27, 0x80000000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0xba98d7a, 0x3260000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d27, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d27, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d27, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x80000000, 0x8ba98d27, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x80000001, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x80000076, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x80002b94, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x80636d24, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x807fffff, 0x8ba98d27, 0x3800080}, +{0x3800000, 0x8ba98d27, 0x80800000, 0x8ba98d29, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x80800002, 0x8ba98d2a, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x81398437, 0x8ba98d2d, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x8ba98d27, 0x8c298d27, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x8ba98d7a, 0x8c298d51, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0x8ba98d27, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d27, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d27, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d27, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d27, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x9503366, 0x8ba30b8c, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xbf5a97c9, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xaab4d7d8, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x966320b, 0x8ba25b97, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xb26bddee, 0xb26bddef, 0x3800010}, +{0x3800000, 0x8ba98d27, 0xb5c8e5d3, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x317285d3, 0x317285d2, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x3c9623b1, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x8ba98d27, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x0, 0x8ba98d7a, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x1, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x76, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x2b94, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x636d24, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x7fffff, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x800000, 0x8ba98d78, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x800002, 0x8ba98d78, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x1398437, 0x8ba98d75, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xba98d27, 0x83260000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0xba98d7a, 0x80000000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d7a, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d7a, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d7a, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x80000000, 0x8ba98d7a, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x80000001, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x80000076, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x80002b94, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x80636d24, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x807fffff, 0x8ba98d7a, 0x3800080}, +{0x3800000, 0x8ba98d7a, 0x80800000, 0x8ba98d7c, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x80800002, 0x8ba98d7d, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x81398437, 0x8ba98d80, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x8ba98d27, 0x8c298d51, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x8ba98d7a, 0x8c298d7a, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0x8ba98d7a, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d7a, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d7a, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x8ba98d7a, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x8ba98d7a, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x9503366, 0x8ba30bdf, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xbf5a97c9, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xaab4d7d8, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x966320b, 0x8ba25bea, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xb26bddee, 0xb26bddef, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0xb5c8e5d3, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x317285d3, 0x317285d2, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x3c9623b1, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x8ba98d7a, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x0, 0xf51f853a, 0x3800000}, +{0x3800000, 0xf51f853a, 0x1, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x76, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x2b94, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x636d24, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x7fffff, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x800000, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0x800002, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0x1398437, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0xba98d27, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0xba98d7a, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0x751f853a, 0x80000000, 0x3800000}, +{0x3800000, 0xf51f853a, 0x7f7ffff0, 0x7f7fffe6, 0x3800010}, +{0x3800000, 0xf51f853a, 0x7f7fffff, 0x7f7ffff5, 0x3800010}, +{0x3800000, 0xf51f853a, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xf51f853a, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xf51f853a, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xf51f853a, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xf51f853a, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xf51f853a, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xf51f853a, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xf51f853a, 0x80000000, 0xf51f853a, 0x3800000}, +{0x3800000, 0xf51f853a, 0x80000001, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x80000076, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x80002b94, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x80636d24, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x807fffff, 0xf51f853a, 0x3800080}, +{0x3800000, 0xf51f853a, 0x80800000, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x80800002, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x81398437, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x8ba98d27, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x8ba98d7a, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0xf51f853a, 0xf59f853a, 0x3800000}, +{0x3800000, 0xf51f853a, 0xff7ffff0, 0xff7ffffa, 0x3800010}, +{0x3800000, 0xf51f853a, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xf51f853a, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xf51f853a, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xf51f853a, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xf51f853a, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xf51f853a, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xf51f853a, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xf51f853a, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xf51f853a, 0x4f3495cb, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0xe73a5134, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x7c994e9e, 0x7c994d5e, 0x3800010}, +{0x3800000, 0xf51f853a, 0x6164bd6c, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0x9503366, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0xbf5a97c9, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0xe6ff1a14, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x77f31e2f, 0x77ee2205, 0x3800010}, +{0x3800000, 0xf51f853a, 0xaab4d7d8, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x966320b, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0xb26bddee, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0xb5c8e5d3, 0xf51f853b, 0x3800010}, +{0x3800000, 0xf51f853a, 0x317285d3, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0x3c9623b1, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0x51fd2c7c, 0xf51f853a, 0x3800010}, +{0x3800000, 0xf51f853a, 0x7b906a6c, 0x7b90656f, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x0, 0xff7ffff0, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x1, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x76, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x2b94, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x636d24, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x7fffff, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x800000, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x800002, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x1398437, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xba98d27, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xba98d7a, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x751f853a, 0xff7fffe7, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x7f7ffff0, 0x80000000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x7f7fffff, 0x75700000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7ffff0, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7ffff0, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7ffff0, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x80000000, 0xff7ffff0, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x80000001, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x80000076, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x80002b94, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x80636d24, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x807fffff, 0xff7ffff0, 0x3800080}, +{0x3800000, 0xff7ffff0, 0x80800000, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x80800002, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x81398437, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x8ba98d27, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x8ba98d7a, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xf51f853a, 0xff7ffffa, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xff7ffff0, 0xff800000, 0x3800014}, +{0x3800000, 0xff7ffff0, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xff7ffff0, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7ffff0, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7ffff0, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7ffff0, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7ffff0, 0x4f3495cb, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xe73a5134, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x7c994e9e, 0xff7b357c, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x6164bd6c, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x9503366, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xbf5a97c9, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xe6ff1a14, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x77f31e2f, 0xff7ffe0a, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xaab4d7d8, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x966320b, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xb26bddee, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0xb5c8e5d3, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x317285d3, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x3c9623b1, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x51fd2c7c, 0xff7ffff0, 0x3800010}, +{0x3800000, 0xff7ffff0, 0x7b906a6c, 0xff7edf1c, 0x3800010}, +{0x3800000, 0xff7fffff, 0x0, 0xff7fffff, 0x3800000}, +{0x3800000, 0xff7fffff, 0x1, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x76, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x2b94, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x636d24, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x7fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x800000, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0x800002, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0x1398437, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0xba98d27, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0xba98d7a, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0x751f853a, 0xff7ffff6, 0x3800010}, +{0x3800000, 0xff7fffff, 0x7f7ffff0, 0xf5700000, 0x3800000}, +{0x3800000, 0xff7fffff, 0x7f7fffff, 0x80000000, 0x3800000}, +{0x3800000, 0xff7fffff, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xff7fffff, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7fffff, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7fffff, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7fffff, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7fffff, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7fffff, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7fffff, 0x80000000, 0xff7fffff, 0x3800000}, +{0x3800000, 0xff7fffff, 0x80000001, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x80000076, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x80002b94, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x80636d24, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x807fffff, 0xff7fffff, 0x3800080}, +{0x3800000, 0xff7fffff, 0x80800000, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x80800002, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x81398437, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x8ba98d27, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x8ba98d7a, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0xf51f853a, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0xff7ffff0, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xff7fffff, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7fffff, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7fffff, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff7fffff, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7fffff, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7fffff, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff7fffff, 0x4f3495cb, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0xe73a5134, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x7c994e9e, 0xff7b358b, 0x3800010}, +{0x3800000, 0xff7fffff, 0x6164bd6c, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0x9503366, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0xbf5a97c9, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0xe6ff1a14, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x77f31e2f, 0xff7ffe19, 0x3800010}, +{0x3800000, 0xff7fffff, 0xaab4d7d8, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x966320b, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0xb26bddee, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0xb5c8e5d3, 0xff800000, 0x3800014}, +{0x3800000, 0xff7fffff, 0x317285d3, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0x3c9623b1, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0x51fd2c7c, 0xff7fffff, 0x3800010}, +{0x3800000, 0xff7fffff, 0x7b906a6c, 0xff7edf2b, 0x3800010}, +{0x3800000, 0xff800000, 0x0, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x1, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x76, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x2b94, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x636d24, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x7fffff, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x800000, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x800002, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x1398437, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xba98d27, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xba98d7a, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x751f853a, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x7f7ffff0, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x7f7fffff, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x7f800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800000, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800000, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800000, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800000, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff800000, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff800000, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff800000, 0x80000000, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x80000001, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x80000076, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x80002b94, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x80636d24, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x807fffff, 0xff800000, 0x3800080}, +{0x3800000, 0xff800000, 0x80800000, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x80800002, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x81398437, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x8ba98d27, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x8ba98d7a, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xf51f853a, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xff7ffff0, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xff7fffff, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800000, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800000, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800000, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff800000, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff800000, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xff800000, 0x4f3495cb, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xe73a5134, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x7c994e9e, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x6164bd6c, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x9503366, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xbf5a97c9, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xe6ff1a14, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x77f31e2f, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xaab4d7d8, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x966320b, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xb26bddee, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0xb5c8e5d3, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x317285d3, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x3c9623b1, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x51fd2c7c, 0xff800000, 0x3800000}, +{0x3800000, 0xff800000, 0x7b906a6c, 0xff800000, 0x3800000}, +{0x3800000, 0xff800001, 0x0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x1, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x76, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x2b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x7fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x1398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x751f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7f7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7f7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7f800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7fc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7fd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7fffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x80000000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x80000001, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x80000076, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x80002b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x80636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x807fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff800001, 0x80800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x80800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x81398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x8ba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x8ba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xf51f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xff7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xff7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xff800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xffc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xffd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xffffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x4f3495cb, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xe73a5134, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7c994e9e, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x6164bd6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x9503366, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xbf5a97c9, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xe6ff1a14, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x77f31e2f, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xaab4d7d8, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x966320b, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xb26bddee, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0xb5c8e5d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x317285d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x3c9623b1, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x51fd2c7c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff800001, 0x7b906a6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x1, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x76, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x2b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x7fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x1398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x751f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7f7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7f7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7f800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7fc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7fd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7fffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x80000000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x80000001, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x80000076, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x80002b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x80636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x807fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0xff984a37, 0x80800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x80800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x81398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x8ba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x8ba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xf51f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xff7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xff7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xff800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xffc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xffd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xffffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x4f3495cb, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xe73a5134, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7c994e9e, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x6164bd6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x9503366, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xbf5a97c9, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xe6ff1a14, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x77f31e2f, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xaab4d7d8, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x966320b, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xb26bddee, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0xb5c8e5d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x317285d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x3c9623b1, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x51fd2c7c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xff984a37, 0x7b906a6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x1, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x76, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x2b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x7fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x1398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x751f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7f7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7f7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7f800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7fc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7fd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7fffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x80000000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x80000001, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x80000076, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x80002b94, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x80636d24, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x807fffff, 0x7fc00000, 0x3800081}, +{0x3800000, 0xffbfffff, 0x80800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x80800002, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x81398437, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x8ba98d27, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x8ba98d7a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xf51f853a, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xff7ffff0, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xff7fffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xff800000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xffc00000, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xffd9ba98, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xffffffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x4f3495cb, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xe73a5134, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7c994e9e, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x6164bd6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x9503366, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xbf5a97c9, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xe6ff1a14, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x77f31e2f, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xaab4d7d8, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x966320b, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xb26bddee, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x317285d3, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x3c9623b1, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x51fd2c7c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffbfffff, 0x7b906a6c, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffc00000, 0x0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x1, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x76, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x2b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x7fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x1398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x751f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7f7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7f7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7f800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffc00000, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffc00000, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffc00000, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x80000000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x80000001, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x80000076, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x80002b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x80636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x807fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffc00000, 0x80800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x80800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x81398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x8ba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x8ba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xf51f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xff7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xff7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xff800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffc00000, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffc00000, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffc00000, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x4f3495cb, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xe73a5134, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7c994e9e, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x6164bd6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x9503366, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xbf5a97c9, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xe6ff1a14, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x77f31e2f, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xaab4d7d8, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x966320b, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xb26bddee, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0xb5c8e5d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x317285d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x3c9623b1, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x51fd2c7c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffc00000, 0x7b906a6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x1, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x76, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x2b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x7fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x1398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x751f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7f7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7f800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffd9ba98, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffd9ba98, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffd9ba98, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x80000000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x80000001, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x80000076, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x80002b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x80636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x807fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffd9ba98, 0x80800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x80800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x81398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x8ba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xf51f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xff7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xff7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xff800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffd9ba98, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffd9ba98, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffd9ba98, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x4f3495cb, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xe73a5134, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7c994e9e, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x6164bd6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x9503366, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x77f31e2f, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x966320b, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xb26bddee, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x317285d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x3c9623b1, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffd9ba98, 0x7b906a6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x1, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x76, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x2b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x7fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x1398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x751f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7f7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7f7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7f800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffffffff, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffffffff, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffffffff, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x80000000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x80000001, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x80000076, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x80002b94, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x80636d24, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x807fffff, 0x7fc00000, 0x3800080}, +{0x3800000, 0xffffffff, 0x80800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x80800002, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x81398437, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x8ba98d27, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x8ba98d7a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xf51f853a, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xff7ffff0, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xff7fffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xff800000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffffffff, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffffffff, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xffffffff, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x4f3495cb, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xe73a5134, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7c994e9e, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x6164bd6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x9503366, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xbf5a97c9, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xe6ff1a14, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x77f31e2f, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xaab4d7d8, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x966320b, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xb26bddee, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0xb5c8e5d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x317285d3, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x3c9623b1, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x51fd2c7c, 0x7fc00000, 0x3800000}, +{0x3800000, 0xffffffff, 0x7b906a6c, 0x7fc00000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x0, 0x4f3495cb, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x1, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x76, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x2b94, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x636d24, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x7fffff, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x800000, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x800002, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x1398437, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xba98d27, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xba98d7a, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x4f3495cb, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x4f3495cb, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x4f3495cb, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x80000000, 0x4f3495cb, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x80000001, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x80000076, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x80002b94, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x80636d24, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x807fffff, 0x4f3495cb, 0x3800080}, +{0x3800000, 0x4f3495cb, 0x80800000, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x80800002, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x81398437, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x8ba98d27, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x8ba98d7a, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x4f3495cb, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x4f3495cb, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x4f3495cb, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x4f3495cb, 0x4f3495cb, 0x4fb495cb, 0x3800000}, +{0x3800000, 0x4f3495cb, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x9503366, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xbf5a97c9, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xaab4d7d8, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x966320b, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xb26bddee, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0xb5c8e5d3, 0x4f3495ca, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x317285d3, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x3c9623b1, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x51fd2c7c, 0x52016895, 0x3800010}, +{0x3800000, 0x4f3495cb, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0xe73a5134, 0x0, 0xe73a5134, 0x3800000}, +{0x3800000, 0xe73a5134, 0x1, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x76, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x2b94, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x636d24, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x7fffff, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x800000, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0x800002, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0x1398437, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0xba98d27, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0xba98d7a, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0xe73a5134, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0xe73a5134, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0xe73a5134, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xe73a5134, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe73a5134, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe73a5134, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe73a5134, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe73a5134, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe73a5134, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe73a5134, 0x80000000, 0xe73a5134, 0x3800000}, +{0x3800000, 0xe73a5134, 0x80000001, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x80000076, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x80002b94, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x80636d24, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x807fffff, 0xe73a5134, 0x3800080}, +{0x3800000, 0xe73a5134, 0x80800000, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0x80800002, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0x81398437, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0x8ba98d27, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0x8ba98d7a, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0xe73a5134, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xe73a5134, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xe73a5134, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xe73a5134, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe73a5134, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe73a5134, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe73a5134, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe73a5134, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe73a5134, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe73a5134, 0x4f3495cb, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0xe73a5134, 0xe7ba5134, 0x3800000}, +{0x3800000, 0xe73a5134, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0xe73a5134, 0x6164bd6c, 0xe73a42e9, 0x3800010}, +{0x3800000, 0xe73a5134, 0x9503366, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0xbf5a97c9, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0xe6ff1a14, 0xe79cef1f, 0x3800000}, +{0x3800000, 0xe73a5134, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0xe73a5134, 0xaab4d7d8, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0x966320b, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0xb26bddee, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0xb5c8e5d3, 0xe73a5135, 0x3800010}, +{0x3800000, 0xe73a5134, 0x317285d3, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0x3c9623b1, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0x51fd2c7c, 0xe73a5134, 0x3800010}, +{0x3800000, 0xe73a5134, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x0, 0x7c994e9e, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x1, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x76, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x2b94, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x636d24, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x7fffff, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x800000, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x800002, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x1398437, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xba98d27, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xba98d7a, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x751f853a, 0x7c994fdd, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x7f7ffff0, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7c994e9e, 0x7f7fffff, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7c994e9e, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7c994e9e, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7c994e9e, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7c994e9e, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x80000000, 0x7c994e9e, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x80000001, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x80000076, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x80002b94, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x80636d24, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x807fffff, 0x7c994e9e, 0x3800080}, +{0x3800000, 0x7c994e9e, 0x80800000, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x80800002, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x81398437, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x8ba98d27, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x8ba98d7a, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xf51f853a, 0x7c994d5e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xff7ffff0, 0xff7b357c, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xff7fffff, 0xff7b358b, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7c994e9e, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7c994e9e, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7c994e9e, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x4f3495cb, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xe73a5134, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x7c994e9e, 0x7d194e9e, 0x3800000}, +{0x3800000, 0x7c994e9e, 0x6164bd6c, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x9503366, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xbf5a97c9, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xe6ff1a14, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x77f31e2f, 0x7c998b65, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xaab4d7d8, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x966320b, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xb26bddee, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0xb5c8e5d3, 0x7c994e9d, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x317285d3, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x3c9623b1, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x51fd2c7c, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x7c994e9e, 0x7b906a6c, 0x7cbd6939, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x0, 0x6164bd6c, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x1, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x76, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x2b94, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x636d24, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x7fffff, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x800000, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x800002, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x1398437, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xba98d27, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xba98d7a, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x6164bd6c, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x6164bd6c, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x6164bd6c, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x80000000, 0x6164bd6c, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x80000001, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x80000076, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x80002b94, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x80636d24, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x807fffff, 0x6164bd6c, 0x3800080}, +{0x3800000, 0x6164bd6c, 0x80800000, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x80800002, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x81398437, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x8ba98d27, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x8ba98d7a, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x6164bd6c, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x6164bd6c, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x6164bd6c, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x4f3495cb, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xe73a5134, 0xe73a42e9, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x6164bd6c, 0x61e4bd6c, 0x3800000}, +{0x3800000, 0x6164bd6c, 0x9503366, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xbf5a97c9, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xe6ff1a14, 0xe6fefd7d, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xaab4d7d8, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x966320b, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xb26bddee, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0xb5c8e5d3, 0x6164bd6b, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x317285d3, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x3c9623b1, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x51fd2c7c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x6164bd6c, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x9503366, 0x0, 0x9503366, 0x3800000}, +{0x3800000, 0x9503366, 0x1, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x76, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x2b94, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x636d24, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x7fffff, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x800000, 0x95033a6, 0x3800000}, +{0x3800000, 0x9503366, 0x800002, 0x95033a6, 0x3800010}, +{0x3800000, 0x9503366, 0x1398437, 0x950341f, 0x3800010}, +{0x3800000, 0x9503366, 0xba98d27, 0xbb00ec2, 0x3800010}, +{0x3800000, 0x9503366, 0xba98d7a, 0xbb00f15, 0x3800010}, +{0x3800000, 0x9503366, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x9503366, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x9503366, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x9503366, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x9503366, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x9503366, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x9503366, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x9503366, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x9503366, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x9503366, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x9503366, 0x80000000, 0x9503366, 0x3800000}, +{0x3800000, 0x9503366, 0x80000001, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x80000076, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x80002b94, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x80636d24, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x807fffff, 0x9503366, 0x3800080}, +{0x3800000, 0x9503366, 0x80800000, 0x9503326, 0x3800000}, +{0x3800000, 0x9503366, 0x80800002, 0x9503325, 0x3800010}, +{0x3800000, 0x9503366, 0x81398437, 0x95032ac, 0x3800010}, +{0x3800000, 0x9503366, 0x8ba98d27, 0x8ba30b8c, 0x3800010}, +{0x3800000, 0x9503366, 0x8ba98d7a, 0x8ba30bdf, 0x3800010}, +{0x3800000, 0x9503366, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x9503366, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x9503366, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x9503366, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x9503366, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x9503366, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x9503366, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x9503366, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x9503366, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x9503366, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x9503366, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x9503366, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x9503366, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x9503366, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x9503366, 0x9503366, 0x9d03366, 0x3800000}, +{0x3800000, 0x9503366, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0x9503366, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x9503366, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x9503366, 0xaab4d7d8, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0x9503366, 0x966320b, 0x9db32b8, 0x3800010}, +{0x3800000, 0x9503366, 0xb26bddee, 0xb26bddee, 0x3800010}, +{0x3800000, 0x9503366, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0x9503366, 0x317285d3, 0x317285d3, 0x3800010}, +{0x3800000, 0x9503366, 0x3c9623b1, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x9503366, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x9503366, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x0, 0xbf5a97c9, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0x1, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x76, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x2b94, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x636d24, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x7fffff, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x800000, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x800002, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x1398437, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xba98d27, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xba98d7a, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xbf5a97c9, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xbf5a97c9, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xbf5a97c9, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0x80000000, 0xbf5a97c9, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0x80000001, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x80000076, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x80002b94, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x80636d24, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x807fffff, 0xbf5a97c9, 0x3800080}, +{0x3800000, 0xbf5a97c9, 0x80800000, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x80800002, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x81398437, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x8ba98d27, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x8ba98d7a, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xbf5a97c9, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xbf5a97c9, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xbf5a97c9, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xbf5a97c9, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x9503366, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xbf5a97c9, 0xbfda97c9, 0x3800000}, +{0x3800000, 0xbf5a97c9, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xaab4d7d8, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x966320b, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xb26bddee, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0xb5c8e5d3, 0xbf5a97e3, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x317285d3, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x3c9623b1, 0xbf55e6ac, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0xbf5a97c9, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x0, 0xe6ff1a14, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x1, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x76, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x2b94, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x636d24, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x7fffff, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x800000, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x800002, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x1398437, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xba98d27, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xba98d7a, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe6ff1a14, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe6ff1a14, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe6ff1a14, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x80000000, 0xe6ff1a14, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x80000001, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x80000076, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x80002b94, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x80636d24, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x807fffff, 0xe6ff1a14, 0x3800080}, +{0x3800000, 0xe6ff1a14, 0x80800000, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x80800002, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x81398437, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x8ba98d27, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x8ba98d7a, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xe6ff1a14, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe6ff1a14, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe6ff1a14, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xe6ff1a14, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x4f3495cb, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xe73a5134, 0xe79cef1f, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x6164bd6c, 0xe6fefd7d, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x9503366, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xbf5a97c9, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xe6ff1a14, 0xe77f1a14, 0x3800000}, +{0x3800000, 0xe6ff1a14, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xaab4d7d8, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x966320b, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xb26bddee, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0xb5c8e5d3, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x317285d3, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x3c9623b1, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x51fd2c7c, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0xe6ff1a14, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x0, 0x77f31e2f, 0x3800000}, +{0x3800000, 0x77f31e2f, 0x1, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x76, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x2b94, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x636d24, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x7fffff, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x800000, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x800002, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x1398437, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xba98d27, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xba98d7a, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x751f853a, 0x77f81a58, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x7f7ffff0, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x77f31e2f, 0x7f7fffff, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x77f31e2f, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x77f31e2f, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x77f31e2f, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x77f31e2f, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0x80000000, 0x77f31e2f, 0x3800000}, +{0x3800000, 0x77f31e2f, 0x80000001, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x80000076, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x80002b94, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x80636d24, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x807fffff, 0x77f31e2f, 0x3800080}, +{0x3800000, 0x77f31e2f, 0x80800000, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x80800002, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x81398437, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x8ba98d27, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x8ba98d7a, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xf51f853a, 0x77ee2205, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xff7ffff0, 0xff7ffe0a, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xff7fffff, 0xff7ffe19, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x77f31e2f, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x77f31e2f, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x77f31e2f, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x77f31e2f, 0x4f3495cb, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xe73a5134, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x7c994e9e, 0x7c998b65, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x6164bd6c, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x9503366, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xbf5a97c9, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xe6ff1a14, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x77f31e2f, 0x78731e2f, 0x3800000}, +{0x3800000, 0x77f31e2f, 0xaab4d7d8, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x966320b, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xb26bddee, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0xb5c8e5d3, 0x77f31e2e, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x317285d3, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x3c9623b1, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x51fd2c7c, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x77f31e2f, 0x7b906a6c, 0x7b915d8a, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x0, 0xaab4d7d8, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x1, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x76, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x2b94, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x636d24, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x7fffff, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x800000, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x800002, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x1398437, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xba98d27, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xba98d7a, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xaab4d7d8, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xaab4d7d8, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xaab4d7d8, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x80000000, 0xaab4d7d8, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x80000001, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x80000076, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x80002b94, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x80636d24, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x807fffff, 0xaab4d7d8, 0x3800080}, +{0x3800000, 0xaab4d7d8, 0x80800000, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x80800002, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x81398437, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x8ba98d27, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x8ba98d7a, 0xaab4d7d9, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xaab4d7d8, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xaab4d7d8, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xaab4d7d8, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xaab4d7d8, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x9503366, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xbf5a97c9, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xaab4d7d8, 0xab34d7d8, 0x3800000}, +{0x3800000, 0xaab4d7d8, 0x966320b, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xb26bddee, 0xb26bdf58, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0xb5c8e5d3, 0xb5c8e5d6, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x317285d3, 0x3172802c, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x3c9623b1, 0x3c9623b0, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0xaab4d7d8, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x966320b, 0x0, 0x966320b, 0x3800000}, +{0x3800000, 0x966320b, 0x1, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x76, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x2b94, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x636d24, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x7fffff, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x800000, 0x966324b, 0x3800000}, +{0x3800000, 0x966320b, 0x800002, 0x966324b, 0x3800010}, +{0x3800000, 0x966320b, 0x1398437, 0x96632c4, 0x3800010}, +{0x3800000, 0x966320b, 0xba98d27, 0xbb0beb7, 0x3800010}, +{0x3800000, 0x966320b, 0xba98d7a, 0xbb0bf0a, 0x3800010}, +{0x3800000, 0x966320b, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x966320b, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x966320b, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x966320b, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x966320b, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x966320b, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x966320b, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x966320b, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x966320b, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x966320b, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x966320b, 0x80000000, 0x966320b, 0x3800000}, +{0x3800000, 0x966320b, 0x80000001, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x80000076, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x80002b94, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x80636d24, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x807fffff, 0x966320b, 0x3800080}, +{0x3800000, 0x966320b, 0x80800000, 0x96631cb, 0x3800000}, +{0x3800000, 0x966320b, 0x80800002, 0x96631ca, 0x3800010}, +{0x3800000, 0x966320b, 0x81398437, 0x9663151, 0x3800010}, +{0x3800000, 0x966320b, 0x8ba98d27, 0x8ba25b97, 0x3800010}, +{0x3800000, 0x966320b, 0x8ba98d7a, 0x8ba25bea, 0x3800010}, +{0x3800000, 0x966320b, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x966320b, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x966320b, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x966320b, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x966320b, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x966320b, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x966320b, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x966320b, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x966320b, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x966320b, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x966320b, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x966320b, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x966320b, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x966320b, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x966320b, 0x9503366, 0x9db32b8, 0x3800010}, +{0x3800000, 0x966320b, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0x966320b, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x966320b, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x966320b, 0xaab4d7d8, 0xaab4d7d8, 0x3800010}, +{0x3800000, 0x966320b, 0x966320b, 0x9e6320b, 0x3800000}, +{0x3800000, 0x966320b, 0xb26bddee, 0xb26bddee, 0x3800010}, +{0x3800000, 0x966320b, 0xb5c8e5d3, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0x966320b, 0x317285d3, 0x317285d3, 0x3800010}, +{0x3800000, 0x966320b, 0x3c9623b1, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x966320b, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x966320b, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0xb26bddee, 0x0, 0xb26bddee, 0x3800000}, +{0x3800000, 0xb26bddee, 0x1, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x76, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x2b94, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x636d24, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x7fffff, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x800000, 0xb26bddee, 0x3800010}, +{0x3800000, 0xb26bddee, 0x800002, 0xb26bddee, 0x3800010}, +{0x3800000, 0xb26bddee, 0x1398437, 0xb26bddee, 0x3800010}, +{0x3800000, 0xb26bddee, 0xba98d27, 0xb26bddee, 0x3800010}, +{0x3800000, 0xb26bddee, 0xba98d7a, 0xb26bddee, 0x3800010}, +{0x3800000, 0xb26bddee, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0xb26bddee, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0xb26bddee, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0xb26bddee, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xb26bddee, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb26bddee, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb26bddee, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb26bddee, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb26bddee, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb26bddee, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb26bddee, 0x80000000, 0xb26bddee, 0x3800000}, +{0x3800000, 0xb26bddee, 0x80000001, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x80000076, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x80002b94, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x80636d24, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x807fffff, 0xb26bddee, 0x3800080}, +{0x3800000, 0xb26bddee, 0x80800000, 0xb26bddef, 0x3800010}, +{0x3800000, 0xb26bddee, 0x80800002, 0xb26bddef, 0x3800010}, +{0x3800000, 0xb26bddee, 0x81398437, 0xb26bddef, 0x3800010}, +{0x3800000, 0xb26bddee, 0x8ba98d27, 0xb26bddef, 0x3800010}, +{0x3800000, 0xb26bddee, 0x8ba98d7a, 0xb26bddef, 0x3800010}, +{0x3800000, 0xb26bddee, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0xb26bddee, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xb26bddee, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xb26bddee, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xb26bddee, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb26bddee, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb26bddee, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb26bddee, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb26bddee, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb26bddee, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb26bddee, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0xb26bddee, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0xb26bddee, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0xb26bddee, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0xb26bddee, 0x9503366, 0xb26bddee, 0x3800010}, +{0x3800000, 0xb26bddee, 0xbf5a97c9, 0xbf5a97ca, 0x3800010}, +{0x3800000, 0xb26bddee, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xb26bddee, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0xb26bddee, 0xaab4d7d8, 0xb26bdf58, 0x3800010}, +{0x3800000, 0xb26bddee, 0x966320b, 0xb26bddee, 0x3800010}, +{0x3800000, 0xb26bddee, 0xb26bddee, 0xb2ebddee, 0x3800000}, +{0x3800000, 0xb26bddee, 0xb5c8e5d3, 0xb5cabd8f, 0x3800010}, +{0x3800000, 0xb26bddee, 0x317285d3, 0xb22f3c7a, 0x3800010}, +{0x3800000, 0xb26bddee, 0x3c9623b1, 0x3c9623a9, 0x3800010}, +{0x3800000, 0xb26bddee, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0xb26bddee, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x0, 0xb5c8e5d3, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x1, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x76, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x2b94, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x636d24, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x7fffff, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x800000, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x800002, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x1398437, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xba98d27, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xba98d7a, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x751f853a, 0x751f8539, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x7f7ffff0, 0x7f7fffef, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x7f7fffff, 0x7f7ffffe, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb5c8e5d3, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb5c8e5d3, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb5c8e5d3, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x80000000, 0xb5c8e5d3, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x80000001, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x80000076, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x80002b94, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x80636d24, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x807fffff, 0xb5c8e5d3, 0x3800080}, +{0x3800000, 0xb5c8e5d3, 0x80800000, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x80800002, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x81398437, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x8ba98d27, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x8ba98d7a, 0xb5c8e5d4, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xf51f853a, 0xf51f853b, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xff7ffff0, 0xff7ffff1, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xff7fffff, 0xff800000, 0x3800014}, +{0x3800000, 0xb5c8e5d3, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb5c8e5d3, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb5c8e5d3, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0xb5c8e5d3, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x4f3495cb, 0x4f3495ca, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xe73a5134, 0xe73a5135, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x7c994e9e, 0x7c994e9d, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x6164bd6c, 0x6164bd6b, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x9503366, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xbf5a97c9, 0xbf5a97e3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xe6ff1a14, 0xe6ff1a15, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x77f31e2f, 0x77f31e2e, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xaab4d7d8, 0xb5c8e5d6, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x966320b, 0xb5c8e5d3, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xb26bddee, 0xb5cabd8f, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0xb5c8e5d3, 0xb648e5d3, 0x3800000}, +{0x3800000, 0xb5c8e5d3, 0x317285d3, 0xb5c86c91, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x3c9623b1, 0x3c96208d, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x51fd2c7c, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0xb5c8e5d3, 0x7b906a6c, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x317285d3, 0x0, 0x317285d3, 0x3800000}, +{0x3800000, 0x317285d3, 0x1, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x76, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x2b94, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x636d24, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x7fffff, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x800000, 0x317285d3, 0x3800010}, +{0x3800000, 0x317285d3, 0x800002, 0x317285d3, 0x3800010}, +{0x3800000, 0x317285d3, 0x1398437, 0x317285d3, 0x3800010}, +{0x3800000, 0x317285d3, 0xba98d27, 0x317285d3, 0x3800010}, +{0x3800000, 0x317285d3, 0xba98d7a, 0x317285d3, 0x3800010}, +{0x3800000, 0x317285d3, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x317285d3, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x317285d3, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x317285d3, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x317285d3, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x317285d3, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x317285d3, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x317285d3, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x317285d3, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x317285d3, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x317285d3, 0x80000000, 0x317285d3, 0x3800000}, +{0x3800000, 0x317285d3, 0x80000001, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x80000076, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x80002b94, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x80636d24, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x807fffff, 0x317285d3, 0x3800080}, +{0x3800000, 0x317285d3, 0x80800000, 0x317285d2, 0x3800010}, +{0x3800000, 0x317285d3, 0x80800002, 0x317285d2, 0x3800010}, +{0x3800000, 0x317285d3, 0x81398437, 0x317285d2, 0x3800010}, +{0x3800000, 0x317285d3, 0x8ba98d27, 0x317285d2, 0x3800010}, +{0x3800000, 0x317285d3, 0x8ba98d7a, 0x317285d2, 0x3800010}, +{0x3800000, 0x317285d3, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x317285d3, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x317285d3, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x317285d3, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x317285d3, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x317285d3, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x317285d3, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x317285d3, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x317285d3, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x317285d3, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x317285d3, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x317285d3, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x317285d3, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x317285d3, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x317285d3, 0x9503366, 0x317285d3, 0x3800010}, +{0x3800000, 0x317285d3, 0xbf5a97c9, 0xbf5a97c9, 0x3800010}, +{0x3800000, 0x317285d3, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x317285d3, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x317285d3, 0xaab4d7d8, 0x3172802c, 0x3800010}, +{0x3800000, 0x317285d3, 0x966320b, 0x317285d3, 0x3800010}, +{0x3800000, 0x317285d3, 0xb26bddee, 0xb22f3c7a, 0x3800010}, +{0x3800000, 0x317285d3, 0xb5c8e5d3, 0xb5c86c91, 0x3800010}, +{0x3800000, 0x317285d3, 0x317285d3, 0x31f285d3, 0x3800000}, +{0x3800000, 0x317285d3, 0x3c9623b1, 0x3c9623b2, 0x3800010}, +{0x3800000, 0x317285d3, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x317285d3, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x0, 0x3c9623b1, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x1, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x76, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x2b94, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x636d24, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x7fffff, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x800000, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x800002, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x1398437, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xba98d27, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xba98d7a, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x3c9623b1, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x3c9623b1, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x3c9623b1, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x80000000, 0x3c9623b1, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x80000001, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x80000076, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x80002b94, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x80636d24, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x807fffff, 0x3c9623b1, 0x3800080}, +{0x3800000, 0x3c9623b1, 0x80800000, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x80800002, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x81398437, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x8ba98d27, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x8ba98d7a, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x3c9623b1, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x3c9623b1, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x3c9623b1, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x4f3495cb, 0x4f3495cb, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x9503366, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xbf5a97c9, 0xbf55e6ac, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xaab4d7d8, 0x3c9623b0, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x966320b, 0x3c9623b1, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xb26bddee, 0x3c9623a9, 0x3800010}, +{0x3800000, 0x3c9623b1, 0xb5c8e5d3, 0x3c96208d, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x317285d3, 0x3c9623b2, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x3c9623b1, 0x3d1623b1, 0x3800000}, +{0x3800000, 0x3c9623b1, 0x51fd2c7c, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x3c9623b1, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x0, 0x51fd2c7c, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x1, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x76, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x2b94, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x636d24, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x7fffff, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x800000, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x800002, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x1398437, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xba98d27, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xba98d7a, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x751f853a, 0x751f853a, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x7f7ffff0, 0x7f7ffff0, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x7f7fffff, 0x7f7fffff, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x51fd2c7c, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x51fd2c7c, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x51fd2c7c, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x80000000, 0x51fd2c7c, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x80000001, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x80000076, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x80002b94, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x80636d24, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x807fffff, 0x51fd2c7c, 0x3800080}, +{0x3800000, 0x51fd2c7c, 0x80800000, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x80800002, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x81398437, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x8ba98d27, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x8ba98d7a, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xf51f853a, 0xf51f853a, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xff7ffff0, 0xff7ffff0, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xff7fffff, 0xff7fffff, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x51fd2c7c, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x51fd2c7c, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x51fd2c7c, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x4f3495cb, 0x52016895, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xe73a5134, 0xe73a5134, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x7c994e9e, 0x7c994e9e, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x6164bd6c, 0x6164bd6c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x9503366, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xbf5a97c9, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xe6ff1a14, 0xe6ff1a14, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x77f31e2f, 0x77f31e2f, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xaab4d7d8, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x966320b, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xb26bddee, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0xb5c8e5d3, 0x51fd2c7b, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x317285d3, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x3c9623b1, 0x51fd2c7c, 0x3800010}, +{0x3800000, 0x51fd2c7c, 0x51fd2c7c, 0x527d2c7c, 0x3800000}, +{0x3800000, 0x51fd2c7c, 0x7b906a6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x0, 0x7b906a6c, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x1, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x76, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x2b94, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x636d24, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x7fffff, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x800000, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x800002, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x1398437, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xba98d27, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xba98d7a, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x751f853a, 0x7b906f68, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x7f7ffff0, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7b906a6c, 0x7f7fffff, 0x7f7fffff, 0x3800014}, +{0x3800000, 0x7b906a6c, 0x7f800000, 0x7f800000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x7f800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7b906a6c, 0x7f984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7b906a6c, 0x7fbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7b906a6c, 0x7fc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x7fd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x7fffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x80000000, 0x7b906a6c, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x80000001, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x80000076, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x80002b94, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x80636d24, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x807fffff, 0x7b906a6c, 0x3800080}, +{0x3800000, 0x7b906a6c, 0x80800000, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x80800002, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x81398437, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x8ba98d27, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x8ba98d7a, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xf51f853a, 0x7b90656f, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xff7ffff0, 0xff7edf1c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xff7fffff, 0xff7edf2b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xff800000, 0xff800000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0xff800001, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7b906a6c, 0xff984a37, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7b906a6c, 0xffbfffff, 0x7fc00000, 0x3800001}, +{0x3800000, 0x7b906a6c, 0xffc00000, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0xffd9ba98, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0xffffffff, 0x7fc00000, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x4f3495cb, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xe73a5134, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x7c994e9e, 0x7cbd6939, 0x3800000}, +{0x3800000, 0x7b906a6c, 0x6164bd6c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x9503366, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xbf5a97c9, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xe6ff1a14, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x77f31e2f, 0x7b915d8a, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xaab4d7d8, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x966320b, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xb26bddee, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0xb5c8e5d3, 0x7b906a6b, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x317285d3, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x3c9623b1, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x51fd2c7c, 0x7b906a6c, 0x3800010}, +{0x3800000, 0x7b906a6c, 0x7b906a6c, 0x7c106a6c, 0x3800000}, +{0x3400000, 0x0, 0x0, 0x0, 0x3400000}, +{0x3400000, 0x0, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x800000, 0x800000, 0x3400000}, +{0x3400000, 0x0, 0x800002, 0x800002, 0x3400000}, +{0x3400000, 0x0, 0x1398437, 0x1398437, 0x3400000}, +{0x3400000, 0x0, 0xba98d27, 0xba98d27, 0x3400000}, +{0x3400000, 0x0, 0xba98d7a, 0xba98d7a, 0x3400000}, +{0x3400000, 0x0, 0x751f853a, 0x751f853a, 0x3400000}, +{0x3400000, 0x0, 0x7f7ffff0, 0x7f7ffff0, 0x3400000}, +{0x3400000, 0x0, 0x7f7fffff, 0x7f7fffff, 0x3400000}, +{0x3400000, 0x0, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x0, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x0, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x0, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x0, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x0, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x0, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x0, 0x80000000, 0x0, 0x3400000}, +{0x3400000, 0x0, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x0, 0x80800000, 0x80800000, 0x3400000}, +{0x3400000, 0x0, 0x80800002, 0x80800002, 0x3400000}, +{0x3400000, 0x0, 0x81398437, 0x81398437, 0x3400000}, +{0x3400000, 0x0, 0x8ba98d27, 0x8ba98d27, 0x3400000}, +{0x3400000, 0x0, 0x8ba98d7a, 0x8ba98d7a, 0x3400000}, +{0x3400000, 0x0, 0xf51f853a, 0xf51f853a, 0x3400000}, +{0x3400000, 0x0, 0xff7ffff0, 0xff7ffff0, 0x3400000}, +{0x3400000, 0x0, 0xff7fffff, 0xff7fffff, 0x3400000}, +{0x3400000, 0x0, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x0, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x0, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x0, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x0, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x0, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x0, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x0, 0x4f3495cb, 0x4f3495cb, 0x3400000}, +{0x3400000, 0x0, 0xe73a5134, 0xe73a5134, 0x3400000}, +{0x3400000, 0x0, 0x7c994e9e, 0x7c994e9e, 0x3400000}, +{0x3400000, 0x0, 0x6164bd6c, 0x6164bd6c, 0x3400000}, +{0x3400000, 0x0, 0x9503366, 0x9503366, 0x3400000}, +{0x3400000, 0x0, 0xbf5a97c9, 0xbf5a97c9, 0x3400000}, +{0x3400000, 0x0, 0xe6ff1a14, 0xe6ff1a14, 0x3400000}, +{0x3400000, 0x0, 0x77f31e2f, 0x77f31e2f, 0x3400000}, +{0x3400000, 0x0, 0xaab4d7d8, 0xaab4d7d8, 0x3400000}, +{0x3400000, 0x0, 0x966320b, 0x966320b, 0x3400000}, +{0x3400000, 0x0, 0xb26bddee, 0xb26bddee, 0x3400000}, +{0x3400000, 0x0, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400000}, +{0x3400000, 0x0, 0x317285d3, 0x317285d3, 0x3400000}, +{0x3400000, 0x0, 0x3c9623b1, 0x3c9623b1, 0x3400000}, +{0x3400000, 0x0, 0x51fd2c7c, 0x51fd2c7c, 0x3400000}, +{0x3400000, 0x0, 0x7b906a6c, 0x7b906a6c, 0x3400000}, +{0x3400000, 0x1, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x1, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x1, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x1, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x1, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x1, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x1, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x1, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x1, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x1, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x1, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x1, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x1, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x1, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x1, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x1, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x1, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x1, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x1, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x1, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x1, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x1, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x1, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x1, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x1, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x1, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x1, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x1, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x1, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x1, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x1, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x1, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x1, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x1, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x1, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x1, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x1, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x1, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x1, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x1, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x1, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x1, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x1, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x1, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x1, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x1, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x1, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x76, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x76, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x76, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x76, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x76, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x76, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x76, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x76, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x76, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x76, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x76, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x76, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x76, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x76, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x76, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x76, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x76, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x76, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x76, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x76, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x76, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x76, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x76, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x76, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x76, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x76, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x76, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x76, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x76, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x76, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x76, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x76, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x76, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x76, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x76, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x76, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x76, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x76, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x76, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x76, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x76, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x76, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x76, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x76, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x76, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x76, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x76, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x2b94, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x2b94, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x2b94, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x2b94, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x2b94, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x2b94, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x2b94, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x2b94, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x2b94, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x2b94, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x2b94, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x2b94, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x2b94, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x2b94, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x2b94, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x2b94, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x2b94, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x2b94, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x2b94, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x2b94, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x2b94, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x2b94, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x2b94, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x2b94, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x2b94, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x2b94, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x2b94, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x2b94, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x2b94, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x2b94, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x2b94, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x2b94, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x2b94, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x2b94, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x2b94, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x2b94, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x2b94, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x2b94, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x2b94, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x2b94, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x2b94, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x2b94, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x2b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x2b94, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x2b94, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x2b94, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x2b94, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x636d24, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x636d24, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x636d24, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x636d24, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x636d24, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x636d24, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x636d24, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x636d24, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x636d24, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x636d24, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x636d24, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x636d24, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x636d24, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x636d24, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x636d24, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x636d24, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x636d24, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x636d24, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x636d24, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x636d24, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x636d24, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x636d24, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x636d24, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x636d24, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x636d24, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x636d24, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x636d24, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x636d24, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x636d24, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x636d24, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x636d24, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x636d24, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x636d24, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x636d24, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x636d24, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x636d24, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x636d24, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x636d24, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x636d24, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x636d24, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7fffff, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x7fffff, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x7fffff, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x7fffff, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x7fffff, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x7fffff, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x7fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7fffff, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7fffff, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x7fffff, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fffff, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fffff, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fffff, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffff, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffff, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffff, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x7fffff, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x7fffff, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x7fffff, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x7fffff, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x7fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x7fffff, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x7fffff, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x7fffff, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x7fffff, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x7fffff, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fffff, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fffff, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fffff, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffff, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffff, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffff, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x7fffff, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x7fffff, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7fffff, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x7fffff, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x7fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x7fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x7fffff, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x7fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x7fffff, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x7fffff, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x7fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x7fffff, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x7fffff, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x7fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x7fffff, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x800000, 0x0, 0x800000, 0x3400000}, +{0x3400000, 0x800000, 0x1, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x76, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x2b94, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x636d24, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x7fffff, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x800000, 0x1000000, 0x3400000}, +{0x3400000, 0x800000, 0x800002, 0x1000001, 0x3400000}, +{0x3400000, 0x800000, 0x1398437, 0x1798437, 0x3400000}, +{0x3400000, 0x800000, 0xba98d27, 0xba98d29, 0x3400000}, +{0x3400000, 0x800000, 0xba98d7a, 0xba98d7c, 0x3400000}, +{0x3400000, 0x800000, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x800000, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x800000, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x800000, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x800000, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800000, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800000, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800000, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800000, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800000, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800000, 0x80000000, 0x800000, 0x3400000}, +{0x3400000, 0x800000, 0x80000001, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x80000076, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x80002b94, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x80636d24, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x807fffff, 0x800000, 0x3400080}, +{0x3400000, 0x800000, 0x80800000, 0x0, 0x3400000}, +{0x3400000, 0x800000, 0x80800002, 0x0, 0x3400008}, +{0x3400000, 0x800000, 0x81398437, 0x80f3086e, 0x3400000}, +{0x3400000, 0x800000, 0x8ba98d27, 0x8ba98d25, 0x3400000}, +{0x3400000, 0x800000, 0x8ba98d7a, 0x8ba98d78, 0x3400000}, +{0x3400000, 0x800000, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x800000, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x800000, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x800000, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x800000, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800000, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800000, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800000, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800000, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800000, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800000, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x800000, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x800000, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x800000, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x800000, 0x9503366, 0x95033a6, 0x3400000}, +{0x3400000, 0x800000, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0x800000, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x800000, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x800000, 0xaab4d7d8, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0x800000, 0x966320b, 0x966324b, 0x3400000}, +{0x3400000, 0x800000, 0xb26bddee, 0xb26bdded, 0x3400010}, +{0x3400000, 0x800000, 0xb5c8e5d3, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0x800000, 0x317285d3, 0x317285d4, 0x3400010}, +{0x3400000, 0x800000, 0x3c9623b1, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x800000, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x800000, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x800002, 0x0, 0x800002, 0x3400000}, +{0x3400000, 0x800002, 0x1, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x76, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x2b94, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x636d24, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x7fffff, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x800000, 0x1000001, 0x3400000}, +{0x3400000, 0x800002, 0x800002, 0x1000002, 0x3400000}, +{0x3400000, 0x800002, 0x1398437, 0x1798438, 0x3400000}, +{0x3400000, 0x800002, 0xba98d27, 0xba98d2a, 0x3400010}, +{0x3400000, 0x800002, 0xba98d7a, 0xba98d7d, 0x3400010}, +{0x3400000, 0x800002, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x800002, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x800002, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x800002, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x800002, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800002, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800002, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800002, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800002, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800002, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800002, 0x80000000, 0x800002, 0x3400000}, +{0x3400000, 0x800002, 0x80000001, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x80000076, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x80002b94, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x80636d24, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x807fffff, 0x800002, 0x3400080}, +{0x3400000, 0x800002, 0x80800000, 0x0, 0x3400008}, +{0x3400000, 0x800002, 0x80800002, 0x0, 0x3400000}, +{0x3400000, 0x800002, 0x81398437, 0x80f3086c, 0x3400000}, +{0x3400000, 0x800002, 0x8ba98d27, 0x8ba98d24, 0x3400010}, +{0x3400000, 0x800002, 0x8ba98d7a, 0x8ba98d77, 0x3400010}, +{0x3400000, 0x800002, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x800002, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x800002, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x800002, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x800002, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800002, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800002, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x800002, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800002, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800002, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x800002, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x800002, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x800002, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x800002, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x800002, 0x9503366, 0x95033a7, 0x3400010}, +{0x3400000, 0x800002, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0x800002, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x800002, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x800002, 0xaab4d7d8, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0x800002, 0x966320b, 0x966324c, 0x3400010}, +{0x3400000, 0x800002, 0xb26bddee, 0xb26bdded, 0x3400010}, +{0x3400000, 0x800002, 0xb5c8e5d3, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0x800002, 0x317285d3, 0x317285d4, 0x3400010}, +{0x3400000, 0x800002, 0x3c9623b1, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x800002, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x800002, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x1398437, 0x0, 0x1398437, 0x3400000}, +{0x3400000, 0x1398437, 0x1, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x76, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x2b94, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x636d24, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x7fffff, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x800000, 0x1798437, 0x3400000}, +{0x3400000, 0x1398437, 0x800002, 0x1798438, 0x3400000}, +{0x3400000, 0x1398437, 0x1398437, 0x1b98437, 0x3400000}, +{0x3400000, 0x1398437, 0xba98d27, 0xba98d2d, 0x3400010}, +{0x3400000, 0x1398437, 0xba98d7a, 0xba98d80, 0x3400010}, +{0x3400000, 0x1398437, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x1398437, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x1398437, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x1398437, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x1398437, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x1398437, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x1398437, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x1398437, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x1398437, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x1398437, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x1398437, 0x80000000, 0x1398437, 0x3400000}, +{0x3400000, 0x1398437, 0x80000001, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x80000076, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x80002b94, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x80636d24, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x807fffff, 0x1398437, 0x3400080}, +{0x3400000, 0x1398437, 0x80800000, 0xf3086e, 0x3400000}, +{0x3400000, 0x1398437, 0x80800002, 0xf3086c, 0x3400000}, +{0x3400000, 0x1398437, 0x81398437, 0x0, 0x3400000}, +{0x3400000, 0x1398437, 0x8ba98d27, 0x8ba98d21, 0x3400010}, +{0x3400000, 0x1398437, 0x8ba98d7a, 0x8ba98d74, 0x3400010}, +{0x3400000, 0x1398437, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x1398437, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x1398437, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x1398437, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x1398437, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x1398437, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x1398437, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x1398437, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x1398437, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x1398437, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x1398437, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x1398437, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x1398437, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x1398437, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x1398437, 0x9503366, 0x9503420, 0x3400010}, +{0x3400000, 0x1398437, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0x1398437, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x1398437, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x1398437, 0xaab4d7d8, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0x1398437, 0x966320b, 0x96632c5, 0x3400010}, +{0x3400000, 0x1398437, 0xb26bddee, 0xb26bdded, 0x3400010}, +{0x3400000, 0x1398437, 0xb5c8e5d3, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0x1398437, 0x317285d3, 0x317285d4, 0x3400010}, +{0x3400000, 0x1398437, 0x3c9623b1, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x1398437, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x1398437, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0xba98d27, 0x0, 0xba98d27, 0x3400000}, +{0x3400000, 0xba98d27, 0x1, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x76, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x2b94, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x636d24, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x7fffff, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x800000, 0xba98d29, 0x3400000}, +{0x3400000, 0xba98d27, 0x800002, 0xba98d2a, 0x3400010}, +{0x3400000, 0xba98d27, 0x1398437, 0xba98d2d, 0x3400010}, +{0x3400000, 0xba98d27, 0xba98d27, 0xc298d27, 0x3400000}, +{0x3400000, 0xba98d27, 0xba98d7a, 0xc298d51, 0x3400010}, +{0x3400000, 0xba98d27, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0xba98d27, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0xba98d27, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0xba98d27, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xba98d27, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d27, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d27, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d27, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d27, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d27, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d27, 0x80000000, 0xba98d27, 0x3400000}, +{0x3400000, 0xba98d27, 0x80000001, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x80000076, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x80002b94, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x80636d24, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x807fffff, 0xba98d27, 0x3400080}, +{0x3400000, 0xba98d27, 0x80800000, 0xba98d25, 0x3400000}, +{0x3400000, 0xba98d27, 0x80800002, 0xba98d25, 0x3400010}, +{0x3400000, 0xba98d27, 0x81398437, 0xba98d22, 0x3400010}, +{0x3400000, 0xba98d27, 0x8ba98d27, 0x0, 0x3400000}, +{0x3400000, 0xba98d27, 0x8ba98d7a, 0x83260000, 0x3400000}, +{0x3400000, 0xba98d27, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0xba98d27, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0xba98d27, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xba98d27, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xba98d27, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d27, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d27, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d27, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d27, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d27, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d27, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0xba98d27, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0xba98d27, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0xba98d27, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0xba98d27, 0x9503366, 0xbb00ec3, 0x3400010}, +{0x3400000, 0xba98d27, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xba98d27, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xba98d27, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0xba98d27, 0xaab4d7d8, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xba98d27, 0x966320b, 0xbb0beb8, 0x3400010}, +{0x3400000, 0xba98d27, 0xb26bddee, 0xb26bdded, 0x3400010}, +{0x3400000, 0xba98d27, 0xb5c8e5d3, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xba98d27, 0x317285d3, 0x317285d4, 0x3400010}, +{0x3400000, 0xba98d27, 0x3c9623b1, 0x3c9623b2, 0x3400010}, +{0x3400000, 0xba98d27, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0xba98d27, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0xba98d7a, 0x0, 0xba98d7a, 0x3400000}, +{0x3400000, 0xba98d7a, 0x1, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x76, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x2b94, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x636d24, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x7fffff, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x800000, 0xba98d7c, 0x3400000}, +{0x3400000, 0xba98d7a, 0x800002, 0xba98d7d, 0x3400010}, +{0x3400000, 0xba98d7a, 0x1398437, 0xba98d80, 0x3400010}, +{0x3400000, 0xba98d7a, 0xba98d27, 0xc298d51, 0x3400010}, +{0x3400000, 0xba98d7a, 0xba98d7a, 0xc298d7a, 0x3400000}, +{0x3400000, 0xba98d7a, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0xba98d7a, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0xba98d7a, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0xba98d7a, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xba98d7a, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d7a, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d7a, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d7a, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d7a, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d7a, 0x80000000, 0xba98d7a, 0x3400000}, +{0x3400000, 0xba98d7a, 0x80000001, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x80000076, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x80002b94, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x80636d24, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x807fffff, 0xba98d7a, 0x3400080}, +{0x3400000, 0xba98d7a, 0x80800000, 0xba98d78, 0x3400000}, +{0x3400000, 0xba98d7a, 0x80800002, 0xba98d78, 0x3400010}, +{0x3400000, 0xba98d7a, 0x81398437, 0xba98d75, 0x3400010}, +{0x3400000, 0xba98d7a, 0x8ba98d27, 0x3260000, 0x3400000}, +{0x3400000, 0xba98d7a, 0x8ba98d7a, 0x0, 0x3400000}, +{0x3400000, 0xba98d7a, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0xba98d7a, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0xba98d7a, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xba98d7a, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xba98d7a, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d7a, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d7a, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xba98d7a, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d7a, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d7a, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xba98d7a, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0xba98d7a, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0xba98d7a, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0xba98d7a, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0xba98d7a, 0x9503366, 0xbb00f16, 0x3400010}, +{0x3400000, 0xba98d7a, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xba98d7a, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xba98d7a, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0xba98d7a, 0xaab4d7d8, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xba98d7a, 0x966320b, 0xbb0bf0b, 0x3400010}, +{0x3400000, 0xba98d7a, 0xb26bddee, 0xb26bdded, 0x3400010}, +{0x3400000, 0xba98d7a, 0xb5c8e5d3, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xba98d7a, 0x317285d3, 0x317285d4, 0x3400010}, +{0x3400000, 0xba98d7a, 0x3c9623b1, 0x3c9623b2, 0x3400010}, +{0x3400000, 0xba98d7a, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0xba98d7a, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x751f853a, 0x0, 0x751f853a, 0x3400000}, +{0x3400000, 0x751f853a, 0x1, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x76, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x2b94, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x636d24, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x7fffff, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x800000, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0x800002, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0x1398437, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0xba98d27, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0xba98d7a, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0x751f853a, 0x759f853a, 0x3400000}, +{0x3400000, 0x751f853a, 0x7f7ffff0, 0x7f7ffffa, 0x3400010}, +{0x3400000, 0x751f853a, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x751f853a, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x751f853a, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x751f853a, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x751f853a, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x751f853a, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x751f853a, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x751f853a, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x751f853a, 0x80000000, 0x751f853a, 0x3400000}, +{0x3400000, 0x751f853a, 0x80000001, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x80000076, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x80002b94, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x80636d24, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x807fffff, 0x751f853a, 0x3400080}, +{0x3400000, 0x751f853a, 0x80800000, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x80800002, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x81398437, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x8ba98d27, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x8ba98d7a, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0xf51f853a, 0x0, 0x3400000}, +{0x3400000, 0x751f853a, 0xff7ffff0, 0xff7fffe6, 0x3400010}, +{0x3400000, 0x751f853a, 0xff7fffff, 0xff7ffff5, 0x3400010}, +{0x3400000, 0x751f853a, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x751f853a, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x751f853a, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x751f853a, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x751f853a, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x751f853a, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x751f853a, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x751f853a, 0x4f3495cb, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0xe73a5134, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x7c994e9e, 0x7c994fde, 0x3400010}, +{0x3400000, 0x751f853a, 0x6164bd6c, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0x9503366, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0xbf5a97c9, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0xe6ff1a14, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x77f31e2f, 0x77f81a59, 0x3400010}, +{0x3400000, 0x751f853a, 0xaab4d7d8, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x966320b, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0xb26bddee, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0xb5c8e5d3, 0x751f853a, 0x3400010}, +{0x3400000, 0x751f853a, 0x317285d3, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0x3c9623b1, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0x51fd2c7c, 0x751f853b, 0x3400010}, +{0x3400000, 0x751f853a, 0x7b906a6c, 0x7b906f69, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x0, 0x7f7ffff0, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0x1, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x76, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x2b94, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x636d24, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x7fffff, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x800000, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x800002, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x1398437, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xba98d27, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xba98d7a, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x751f853a, 0x7f7ffffa, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x7f7ffff0, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7ffff0, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7ffff0, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7ffff0, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7ffff0, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7ffff0, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0x80000000, 0x7f7ffff0, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0x80000001, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x80000076, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x80002b94, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x80636d24, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x807fffff, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x7f7ffff0, 0x80800000, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x80800002, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x81398437, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x8ba98d27, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x8ba98d7a, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xf51f853a, 0x7f7fffe7, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xff7ffff0, 0x0, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0xff7fffff, 0xf5700000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7ffff0, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7ffff0, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7ffff0, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7ffff0, 0x4f3495cb, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xe73a5134, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x7c994e9e, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7ffff0, 0x6164bd6c, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x9503366, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xbf5a97c9, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xe6ff1a14, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x77f31e2f, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7ffff0, 0xaab4d7d8, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x966320b, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xb26bddee, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0xb5c8e5d3, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x317285d3, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x3c9623b1, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x51fd2c7c, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x7f7ffff0, 0x7b906a6c, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x0, 0x7f7fffff, 0x3400000}, +{0x3400000, 0x7f7fffff, 0x1, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x76, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x2b94, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x636d24, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x800000, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x800002, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x1398437, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0xba98d27, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0xba98d7a, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x751f853a, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x7f7ffff0, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7fffff, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7fffff, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7fffff, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0x80000000, 0x7f7fffff, 0x3400000}, +{0x3400000, 0x7f7fffff, 0x80000001, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x80000076, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x80002b94, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x80636d24, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x807fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x7f7fffff, 0x80800000, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x80800002, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x81398437, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x8ba98d27, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x8ba98d7a, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0xf51f853a, 0x7f7ffff6, 0x3400010}, +{0x3400000, 0x7f7fffff, 0xff7ffff0, 0x75700000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0xff7fffff, 0x0, 0x3400000}, +{0x3400000, 0x7f7fffff, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7fffff, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7fffff, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f7fffff, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f7fffff, 0x4f3495cb, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0xe73a5134, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x7c994e9e, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x6164bd6c, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x9503366, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0xbf5a97c9, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0xe6ff1a14, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x77f31e2f, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0xaab4d7d8, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x966320b, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0xb26bddee, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0xb5c8e5d3, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x7f7fffff, 0x317285d3, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x3c9623b1, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x51fd2c7c, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f7fffff, 0x7b906a6c, 0x7f800000, 0x3400014}, +{0x3400000, 0x7f800000, 0x0, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x1, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x76, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x2b94, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x636d24, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x7fffff, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x800002, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x1398437, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xba98d27, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xba98d7a, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x751f853a, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7f7ffff0, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7f7fffff, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800000, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800000, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800000, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f800000, 0x80000000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x80000001, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x80000076, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x80002b94, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x80636d24, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x807fffff, 0x7f800000, 0x3400080}, +{0x3400000, 0x7f800000, 0x80800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x80800002, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x81398437, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x8ba98d27, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x8ba98d7a, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xf51f853a, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xff7ffff0, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xff7fffff, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xff800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800000, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800000, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800000, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800000, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f800000, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f800000, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7f800000, 0x4f3495cb, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xe73a5134, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7c994e9e, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x6164bd6c, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x9503366, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xbf5a97c9, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xe6ff1a14, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x77f31e2f, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xaab4d7d8, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x966320b, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xb26bddee, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0xb5c8e5d3, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x317285d3, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x3c9623b1, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x51fd2c7c, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800000, 0x7b906a6c, 0x7f800000, 0x3400000}, +{0x3400000, 0x7f800001, 0x0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x1, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x76, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x2b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x7fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x1398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x751f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7f7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7f7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7f800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7fc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7fd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7fffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x80000000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x80000001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x80000076, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x80002b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x80636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x807fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f800001, 0x80800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x80800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x81398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x8ba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x8ba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xf51f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xff7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xff7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xff800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xffc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xffd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xffffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x4f3495cb, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xe73a5134, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7c994e9e, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x6164bd6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x9503366, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xbf5a97c9, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xe6ff1a14, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x77f31e2f, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xaab4d7d8, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x966320b, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xb26bddee, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0xb5c8e5d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x317285d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x3c9623b1, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x51fd2c7c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f800001, 0x7b906a6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x1, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x76, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x2b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x7fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x1398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x751f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7f7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7f7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7f800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7fc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7fd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7fffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x80000000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x80000001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x80000076, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x80002b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x80636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x807fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7f984a37, 0x80800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x80800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x81398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x8ba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x8ba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xf51f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xff7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xff7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xff800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xffc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xffd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xffffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x4f3495cb, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xe73a5134, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7c994e9e, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x6164bd6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x9503366, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xbf5a97c9, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xe6ff1a14, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x77f31e2f, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xaab4d7d8, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x966320b, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xb26bddee, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0xb5c8e5d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x317285d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x3c9623b1, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x51fd2c7c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7f984a37, 0x7b906a6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x1, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x76, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x2b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x7fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x1398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x751f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7f7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7f7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7f800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7fc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7fd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7fffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x80000000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x80000001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x80000076, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x80002b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x80636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x807fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x7fbfffff, 0x80800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x80800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x81398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x8ba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x8ba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xf51f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xff7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xff7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xff800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xffc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xffd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xffffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x4f3495cb, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xe73a5134, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7c994e9e, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x6164bd6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x9503366, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xbf5a97c9, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xe6ff1a14, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x77f31e2f, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xaab4d7d8, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x966320b, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xb26bddee, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x317285d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x3c9623b1, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x51fd2c7c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fbfffff, 0x7b906a6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fc00000, 0x0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x1, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x76, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x2b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x7fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x1398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x751f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7f7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7f7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7f800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fc00000, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fc00000, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fc00000, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x80000000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x80000001, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x80000076, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x80002b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x80636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x807fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fc00000, 0x80800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x80800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x81398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x8ba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x8ba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xf51f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xff7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xff7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xff800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fc00000, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fc00000, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fc00000, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x4f3495cb, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xe73a5134, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7c994e9e, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x6164bd6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x9503366, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xbf5a97c9, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xe6ff1a14, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x77f31e2f, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xaab4d7d8, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x966320b, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xb26bddee, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0xb5c8e5d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x317285d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x3c9623b1, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x51fd2c7c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fc00000, 0x7b906a6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x1, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x76, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x2b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x7fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x1398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x751f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7f7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7f800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fd9ba98, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fd9ba98, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fd9ba98, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x80000000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x80000001, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x80000076, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x80002b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x80636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x807fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fd9ba98, 0x80800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x80800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x81398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x8ba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xf51f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xff7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xff7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xff800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fd9ba98, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fd9ba98, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fd9ba98, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x4f3495cb, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xe73a5134, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7c994e9e, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x6164bd6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x9503366, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x77f31e2f, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x966320b, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xb26bddee, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x317285d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x3c9623b1, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fd9ba98, 0x7b906a6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x1, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x76, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x2b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x7fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x1398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x751f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7f7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7f7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7f800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fffffff, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fffffff, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fffffff, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x80000000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x80000001, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x80000076, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x80002b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x80636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x807fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x7fffffff, 0x80800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x80800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x81398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x8ba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x8ba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xf51f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xff7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xff7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xff800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fffffff, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fffffff, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7fffffff, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x4f3495cb, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xe73a5134, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7c994e9e, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x6164bd6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x9503366, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xbf5a97c9, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xe6ff1a14, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x77f31e2f, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xaab4d7d8, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x966320b, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xb26bddee, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0xb5c8e5d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x317285d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x3c9623b1, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x51fd2c7c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7fffffff, 0x7b906a6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80000000, 0x0, 0x0, 0x3400000}, +{0x3400000, 0x80000000, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x800000, 0x800000, 0x3400000}, +{0x3400000, 0x80000000, 0x800002, 0x800002, 0x3400000}, +{0x3400000, 0x80000000, 0x1398437, 0x1398437, 0x3400000}, +{0x3400000, 0x80000000, 0xba98d27, 0xba98d27, 0x3400000}, +{0x3400000, 0x80000000, 0xba98d7a, 0xba98d7a, 0x3400000}, +{0x3400000, 0x80000000, 0x751f853a, 0x751f853a, 0x3400000}, +{0x3400000, 0x80000000, 0x7f7ffff0, 0x7f7ffff0, 0x3400000}, +{0x3400000, 0x80000000, 0x7f7fffff, 0x7f7fffff, 0x3400000}, +{0x3400000, 0x80000000, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x80000000, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80000000, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80000000, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80000000, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80000000, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80000000, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80000000, 0x80000000, 0x80000000, 0x3400000}, +{0x3400000, 0x80000000, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x80000000, 0x80800000, 0x80800000, 0x3400000}, +{0x3400000, 0x80000000, 0x80800002, 0x80800002, 0x3400000}, +{0x3400000, 0x80000000, 0x81398437, 0x81398437, 0x3400000}, +{0x3400000, 0x80000000, 0x8ba98d27, 0x8ba98d27, 0x3400000}, +{0x3400000, 0x80000000, 0x8ba98d7a, 0x8ba98d7a, 0x3400000}, +{0x3400000, 0x80000000, 0xf51f853a, 0xf51f853a, 0x3400000}, +{0x3400000, 0x80000000, 0xff7ffff0, 0xff7ffff0, 0x3400000}, +{0x3400000, 0x80000000, 0xff7fffff, 0xff7fffff, 0x3400000}, +{0x3400000, 0x80000000, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x80000000, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80000000, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80000000, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80000000, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80000000, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80000000, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80000000, 0x4f3495cb, 0x4f3495cb, 0x3400000}, +{0x3400000, 0x80000000, 0xe73a5134, 0xe73a5134, 0x3400000}, +{0x3400000, 0x80000000, 0x7c994e9e, 0x7c994e9e, 0x3400000}, +{0x3400000, 0x80000000, 0x6164bd6c, 0x6164bd6c, 0x3400000}, +{0x3400000, 0x80000000, 0x9503366, 0x9503366, 0x3400000}, +{0x3400000, 0x80000000, 0xbf5a97c9, 0xbf5a97c9, 0x3400000}, +{0x3400000, 0x80000000, 0xe6ff1a14, 0xe6ff1a14, 0x3400000}, +{0x3400000, 0x80000000, 0x77f31e2f, 0x77f31e2f, 0x3400000}, +{0x3400000, 0x80000000, 0xaab4d7d8, 0xaab4d7d8, 0x3400000}, +{0x3400000, 0x80000000, 0x966320b, 0x966320b, 0x3400000}, +{0x3400000, 0x80000000, 0xb26bddee, 0xb26bddee, 0x3400000}, +{0x3400000, 0x80000000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400000}, +{0x3400000, 0x80000000, 0x317285d3, 0x317285d3, 0x3400000}, +{0x3400000, 0x80000000, 0x3c9623b1, 0x3c9623b1, 0x3400000}, +{0x3400000, 0x80000000, 0x51fd2c7c, 0x51fd2c7c, 0x3400000}, +{0x3400000, 0x80000000, 0x7b906a6c, 0x7b906a6c, 0x3400000}, +{0x3400000, 0x80000001, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x80000001, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x80000001, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x80000001, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x80000001, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x80000001, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x80000001, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x80000001, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x80000001, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x80000001, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000001, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000001, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000001, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000001, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000001, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000001, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x80000001, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x80000001, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x80000001, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x80000001, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x80000001, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x80000001, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x80000001, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x80000001, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x80000001, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x80000001, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000001, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000001, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000001, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000001, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000001, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000001, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x80000001, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x80000001, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x80000001, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x80000001, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x80000001, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x80000001, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x80000001, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x80000001, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x80000001, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x80000001, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x80000001, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x80000001, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x80000001, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x80000001, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x80000001, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x80000076, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x80000076, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x80000076, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x80000076, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x80000076, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x80000076, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x80000076, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x80000076, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x80000076, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x80000076, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000076, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000076, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000076, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000076, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000076, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000076, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x80000076, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x80000076, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x80000076, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x80000076, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x80000076, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x80000076, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x80000076, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x80000076, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x80000076, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x80000076, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000076, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000076, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80000076, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000076, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000076, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80000076, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x80000076, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x80000076, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x80000076, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x80000076, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x80000076, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x80000076, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x80000076, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x80000076, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x80000076, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x80000076, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x80000076, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x80000076, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x80000076, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x80000076, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x80000076, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x80002b94, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x80002b94, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x80002b94, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x80002b94, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x80002b94, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x80002b94, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x80002b94, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x80002b94, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x80002b94, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x80002b94, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80002b94, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80002b94, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80002b94, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80002b94, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80002b94, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80002b94, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x80002b94, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x80002b94, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x80002b94, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x80002b94, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x80002b94, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x80002b94, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x80002b94, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x80002b94, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x80002b94, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x80002b94, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80002b94, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80002b94, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80002b94, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80002b94, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80002b94, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80002b94, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x80002b94, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x80002b94, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x80002b94, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x80002b94, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x80002b94, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x80002b94, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x80002b94, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x80002b94, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x80002b94, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x80002b94, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x80002b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x80002b94, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x80002b94, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x80002b94, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x80002b94, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x80636d24, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x80636d24, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x80636d24, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x80636d24, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x80636d24, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x80636d24, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x80636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x80636d24, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x80636d24, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x80636d24, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80636d24, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80636d24, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80636d24, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80636d24, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80636d24, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80636d24, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x80636d24, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x80636d24, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x80636d24, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x80636d24, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x80636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x80636d24, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x80636d24, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x80636d24, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x80636d24, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x80636d24, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80636d24, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80636d24, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x80636d24, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80636d24, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80636d24, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x80636d24, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x80636d24, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x80636d24, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x80636d24, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x80636d24, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x80636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x80636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x80636d24, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x80636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x80636d24, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x80636d24, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x80636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x80636d24, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x80636d24, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x80636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x80636d24, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x807fffff, 0x0, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x1, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x76, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x2b94, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x636d24, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x7fffff, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x800000, 0x800000, 0x3400080}, +{0x3400000, 0x807fffff, 0x800002, 0x800002, 0x3400080}, +{0x3400000, 0x807fffff, 0x1398437, 0x1398437, 0x3400080}, +{0x3400000, 0x807fffff, 0xba98d27, 0xba98d27, 0x3400080}, +{0x3400000, 0x807fffff, 0xba98d7a, 0xba98d7a, 0x3400080}, +{0x3400000, 0x807fffff, 0x751f853a, 0x751f853a, 0x3400080}, +{0x3400000, 0x807fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3400080}, +{0x3400000, 0x807fffff, 0x7f7fffff, 0x7f7fffff, 0x3400080}, +{0x3400000, 0x807fffff, 0x7f800000, 0x7f800000, 0x3400080}, +{0x3400000, 0x807fffff, 0x7f800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x807fffff, 0x7f984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x807fffff, 0x7fbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x807fffff, 0x7fc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x807fffff, 0x7fd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x807fffff, 0x7fffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x807fffff, 0x80000000, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x80000001, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x80000076, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x80002b94, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x80636d24, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x807fffff, 0x0, 0x3400080}, +{0x3400000, 0x807fffff, 0x80800000, 0x80800000, 0x3400080}, +{0x3400000, 0x807fffff, 0x80800002, 0x80800002, 0x3400080}, +{0x3400000, 0x807fffff, 0x81398437, 0x81398437, 0x3400080}, +{0x3400000, 0x807fffff, 0x8ba98d27, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x807fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x807fffff, 0xf51f853a, 0xf51f853a, 0x3400080}, +{0x3400000, 0x807fffff, 0xff7ffff0, 0xff7ffff0, 0x3400080}, +{0x3400000, 0x807fffff, 0xff7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0x807fffff, 0xff800000, 0xff800000, 0x3400080}, +{0x3400000, 0x807fffff, 0xff800001, 0x7fc00000, 0x3400081}, +{0x3400000, 0x807fffff, 0xff984a37, 0x7fc00000, 0x3400081}, +{0x3400000, 0x807fffff, 0xffbfffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0x807fffff, 0xffc00000, 0x7fc00000, 0x3400080}, +{0x3400000, 0x807fffff, 0xffd9ba98, 0x7fc00000, 0x3400080}, +{0x3400000, 0x807fffff, 0xffffffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0x807fffff, 0x4f3495cb, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x807fffff, 0xe73a5134, 0xe73a5134, 0x3400080}, +{0x3400000, 0x807fffff, 0x7c994e9e, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x807fffff, 0x6164bd6c, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x807fffff, 0x9503366, 0x9503366, 0x3400080}, +{0x3400000, 0x807fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0x807fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0x807fffff, 0x77f31e2f, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x807fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0x807fffff, 0x966320b, 0x966320b, 0x3400080}, +{0x3400000, 0x807fffff, 0xb26bddee, 0xb26bddee, 0x3400080}, +{0x3400000, 0x807fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0x807fffff, 0x317285d3, 0x317285d3, 0x3400080}, +{0x3400000, 0x807fffff, 0x3c9623b1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x807fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x807fffff, 0x7b906a6c, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x80800000, 0x0, 0x80800000, 0x3400000}, +{0x3400000, 0x80800000, 0x1, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x76, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x2b94, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x636d24, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x7fffff, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x800000, 0x0, 0x3400000}, +{0x3400000, 0x80800000, 0x800002, 0x0, 0x3400008}, +{0x3400000, 0x80800000, 0x1398437, 0xf3086e, 0x3400000}, +{0x3400000, 0x80800000, 0xba98d27, 0xba98d25, 0x3400000}, +{0x3400000, 0x80800000, 0xba98d7a, 0xba98d78, 0x3400000}, +{0x3400000, 0x80800000, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0x80800000, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x80800000, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x80800000, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x80800000, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800000, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800000, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800000, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800000, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800000, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800000, 0x80000000, 0x80800000, 0x3400000}, +{0x3400000, 0x80800000, 0x80000001, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x80000076, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x80002b94, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x80636d24, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x807fffff, 0x80800000, 0x3400080}, +{0x3400000, 0x80800000, 0x80800000, 0x81000000, 0x3400000}, +{0x3400000, 0x80800000, 0x80800002, 0x81000001, 0x3400000}, +{0x3400000, 0x80800000, 0x81398437, 0x81798437, 0x3400000}, +{0x3400000, 0x80800000, 0x8ba98d27, 0x8ba98d29, 0x3400000}, +{0x3400000, 0x80800000, 0x8ba98d7a, 0x8ba98d7c, 0x3400000}, +{0x3400000, 0x80800000, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0x80800000, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0x80800000, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0x80800000, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x80800000, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800000, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800000, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800000, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800000, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800000, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800000, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x80800000, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0x80800000, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x80800000, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x80800000, 0x9503366, 0x9503326, 0x3400000}, +{0x3400000, 0x80800000, 0xbf5a97c9, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0x80800000, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0x80800000, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x80800000, 0xaab4d7d8, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0x80800000, 0x966320b, 0x96631cb, 0x3400000}, +{0x3400000, 0x80800000, 0xb26bddee, 0xb26bddee, 0x3400010}, +{0x3400000, 0x80800000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0x80800000, 0x317285d3, 0x317285d3, 0x3400010}, +{0x3400000, 0x80800000, 0x3c9623b1, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x80800000, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x80800000, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x80800002, 0x0, 0x80800002, 0x3400000}, +{0x3400000, 0x80800002, 0x1, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x76, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x2b94, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x636d24, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x7fffff, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x800000, 0x0, 0x3400008}, +{0x3400000, 0x80800002, 0x800002, 0x0, 0x3400000}, +{0x3400000, 0x80800002, 0x1398437, 0xf3086c, 0x3400000}, +{0x3400000, 0x80800002, 0xba98d27, 0xba98d25, 0x3400010}, +{0x3400000, 0x80800002, 0xba98d7a, 0xba98d78, 0x3400010}, +{0x3400000, 0x80800002, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0x80800002, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x80800002, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x80800002, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x80800002, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800002, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800002, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800002, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800002, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800002, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800002, 0x80000000, 0x80800002, 0x3400000}, +{0x3400000, 0x80800002, 0x80000001, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x80000076, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x80002b94, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x80636d24, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x807fffff, 0x80800002, 0x3400080}, +{0x3400000, 0x80800002, 0x80800000, 0x81000001, 0x3400000}, +{0x3400000, 0x80800002, 0x80800002, 0x81000002, 0x3400000}, +{0x3400000, 0x80800002, 0x81398437, 0x81798438, 0x3400000}, +{0x3400000, 0x80800002, 0x8ba98d27, 0x8ba98d29, 0x3400010}, +{0x3400000, 0x80800002, 0x8ba98d7a, 0x8ba98d7c, 0x3400010}, +{0x3400000, 0x80800002, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0x80800002, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0x80800002, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0x80800002, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x80800002, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800002, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800002, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x80800002, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800002, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800002, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x80800002, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x80800002, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0x80800002, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x80800002, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x80800002, 0x9503366, 0x9503326, 0x3400010}, +{0x3400000, 0x80800002, 0xbf5a97c9, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0x80800002, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0x80800002, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x80800002, 0xaab4d7d8, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0x80800002, 0x966320b, 0x96631cb, 0x3400010}, +{0x3400000, 0x80800002, 0xb26bddee, 0xb26bddee, 0x3400010}, +{0x3400000, 0x80800002, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0x80800002, 0x317285d3, 0x317285d3, 0x3400010}, +{0x3400000, 0x80800002, 0x3c9623b1, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x80800002, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x80800002, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x81398437, 0x0, 0x81398437, 0x3400000}, +{0x3400000, 0x81398437, 0x1, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x76, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x2b94, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x636d24, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x7fffff, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x800000, 0x80f3086e, 0x3400000}, +{0x3400000, 0x81398437, 0x800002, 0x80f3086c, 0x3400000}, +{0x3400000, 0x81398437, 0x1398437, 0x0, 0x3400000}, +{0x3400000, 0x81398437, 0xba98d27, 0xba98d22, 0x3400010}, +{0x3400000, 0x81398437, 0xba98d7a, 0xba98d75, 0x3400010}, +{0x3400000, 0x81398437, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0x81398437, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x81398437, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x81398437, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x81398437, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x81398437, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x81398437, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x81398437, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x81398437, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x81398437, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x81398437, 0x80000000, 0x81398437, 0x3400000}, +{0x3400000, 0x81398437, 0x80000001, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x80000076, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x80002b94, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x80636d24, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x807fffff, 0x81398437, 0x3400080}, +{0x3400000, 0x81398437, 0x80800000, 0x81798437, 0x3400000}, +{0x3400000, 0x81398437, 0x80800002, 0x81798438, 0x3400000}, +{0x3400000, 0x81398437, 0x81398437, 0x81b98437, 0x3400000}, +{0x3400000, 0x81398437, 0x8ba98d27, 0x8ba98d2c, 0x3400010}, +{0x3400000, 0x81398437, 0x8ba98d7a, 0x8ba98d7f, 0x3400010}, +{0x3400000, 0x81398437, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0x81398437, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0x81398437, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0x81398437, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x81398437, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x81398437, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x81398437, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x81398437, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x81398437, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x81398437, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x81398437, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x81398437, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0x81398437, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x81398437, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x81398437, 0x9503366, 0x95032ad, 0x3400010}, +{0x3400000, 0x81398437, 0xbf5a97c9, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0x81398437, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0x81398437, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x81398437, 0xaab4d7d8, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0x81398437, 0x966320b, 0x9663152, 0x3400010}, +{0x3400000, 0x81398437, 0xb26bddee, 0xb26bddee, 0x3400010}, +{0x3400000, 0x81398437, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0x81398437, 0x317285d3, 0x317285d3, 0x3400010}, +{0x3400000, 0x81398437, 0x3c9623b1, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x81398437, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x81398437, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x0, 0x8ba98d27, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x1, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x76, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x2b94, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x636d24, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x7fffff, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x800000, 0x8ba98d25, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x800002, 0x8ba98d24, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x1398437, 0x8ba98d21, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xba98d27, 0x0, 0x3400000}, +{0x3400000, 0x8ba98d27, 0xba98d7a, 0x3260000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d27, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d27, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d27, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x80000000, 0x8ba98d27, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x80000001, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x80000076, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x80002b94, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x80636d24, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x807fffff, 0x8ba98d27, 0x3400080}, +{0x3400000, 0x8ba98d27, 0x80800000, 0x8ba98d29, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x80800002, 0x8ba98d29, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x81398437, 0x8ba98d2c, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x8ba98d27, 0x8c298d27, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x8ba98d7a, 0x8c298d50, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d27, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d27, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d27, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d27, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x9503366, 0x8ba30b8b, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xbf5a97c9, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xaab4d7d8, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x966320b, 0x8ba25b96, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xb26bddee, 0xb26bddee, 0x3400010}, +{0x3400000, 0x8ba98d27, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x317285d3, 0x317285d3, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x3c9623b1, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x8ba98d27, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x0, 0x8ba98d7a, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x1, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x76, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x2b94, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x636d24, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x7fffff, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x800000, 0x8ba98d78, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x800002, 0x8ba98d77, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x1398437, 0x8ba98d74, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xba98d27, 0x83260000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0xba98d7a, 0x0, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d7a, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d7a, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d7a, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x80000000, 0x8ba98d7a, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x80000001, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x80000076, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x80002b94, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x80636d24, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x807fffff, 0x8ba98d7a, 0x3400080}, +{0x3400000, 0x8ba98d7a, 0x80800000, 0x8ba98d7c, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x80800002, 0x8ba98d7c, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x81398437, 0x8ba98d7f, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x8ba98d27, 0x8c298d50, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x8ba98d7a, 0x8c298d7a, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d7a, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d7a, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x8ba98d7a, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x8ba98d7a, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x9503366, 0x8ba30bde, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xbf5a97c9, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xaab4d7d8, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x966320b, 0x8ba25be9, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xb26bddee, 0xb26bddee, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0xb5c8e5d3, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x317285d3, 0x317285d3, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x3c9623b1, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x8ba98d7a, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0xf51f853a, 0x0, 0xf51f853a, 0x3400000}, +{0x3400000, 0xf51f853a, 0x1, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x76, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x2b94, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x636d24, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x7fffff, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x800000, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0x800002, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0x1398437, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0xba98d27, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0xba98d7a, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0x751f853a, 0x0, 0x3400000}, +{0x3400000, 0xf51f853a, 0x7f7ffff0, 0x7f7fffe7, 0x3400010}, +{0x3400000, 0xf51f853a, 0x7f7fffff, 0x7f7ffff6, 0x3400010}, +{0x3400000, 0xf51f853a, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xf51f853a, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xf51f853a, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xf51f853a, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xf51f853a, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xf51f853a, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xf51f853a, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xf51f853a, 0x80000000, 0xf51f853a, 0x3400000}, +{0x3400000, 0xf51f853a, 0x80000001, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x80000076, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x80002b94, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x80636d24, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x807fffff, 0xf51f853a, 0x3400080}, +{0x3400000, 0xf51f853a, 0x80800000, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x80800002, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x81398437, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x8ba98d27, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x8ba98d7a, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0xf51f853a, 0xf59f853a, 0x3400000}, +{0x3400000, 0xf51f853a, 0xff7ffff0, 0xff7ffff9, 0x3400010}, +{0x3400000, 0xf51f853a, 0xff7fffff, 0xff7fffff, 0x3400014}, +{0x3400000, 0xf51f853a, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xf51f853a, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xf51f853a, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xf51f853a, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xf51f853a, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xf51f853a, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xf51f853a, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xf51f853a, 0x4f3495cb, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0xe73a5134, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x7c994e9e, 0x7c994d5f, 0x3400010}, +{0x3400000, 0xf51f853a, 0x6164bd6c, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0x9503366, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0xbf5a97c9, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0xe6ff1a14, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x77f31e2f, 0x77ee2206, 0x3400010}, +{0x3400000, 0xf51f853a, 0xaab4d7d8, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x966320b, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0xb26bddee, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0xb5c8e5d3, 0xf51f853a, 0x3400010}, +{0x3400000, 0xf51f853a, 0x317285d3, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0x3c9623b1, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0x51fd2c7c, 0xf51f8539, 0x3400010}, +{0x3400000, 0xf51f853a, 0x7b906a6c, 0x7b906570, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x0, 0xff7ffff0, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x1, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x76, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x2b94, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x636d24, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x7fffff, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x800000, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x800002, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x1398437, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xba98d27, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xba98d7a, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x751f853a, 0xff7fffe6, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x7f7ffff0, 0x0, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x7f7fffff, 0x75700000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7ffff0, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7ffff0, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7ffff0, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x80000000, 0xff7ffff0, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x80000001, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x80000076, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x80002b94, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x80636d24, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x807fffff, 0xff7ffff0, 0x3400080}, +{0x3400000, 0xff7ffff0, 0x80800000, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x80800002, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x81398437, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x8ba98d27, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x8ba98d7a, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xf51f853a, 0xff7ffff9, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xff7ffff0, 0xff7fffff, 0x3400014}, +{0x3400000, 0xff7ffff0, 0xff7fffff, 0xff7fffff, 0x3400014}, +{0x3400000, 0xff7ffff0, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7ffff0, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7ffff0, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7ffff0, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7ffff0, 0x4f3495cb, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xe73a5134, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x7c994e9e, 0xff7b357b, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x6164bd6c, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x9503366, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xbf5a97c9, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xe6ff1a14, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x77f31e2f, 0xff7ffe09, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xaab4d7d8, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x966320b, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xb26bddee, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0xb5c8e5d3, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x317285d3, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x3c9623b1, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x51fd2c7c, 0xff7fffef, 0x3400010}, +{0x3400000, 0xff7ffff0, 0x7b906a6c, 0xff7edf1b, 0x3400010}, +{0x3400000, 0xff7fffff, 0x0, 0xff7fffff, 0x3400000}, +{0x3400000, 0xff7fffff, 0x1, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x76, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x2b94, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x636d24, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x7fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x800000, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0x800002, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0x1398437, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0xba98d27, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0xba98d7a, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0x751f853a, 0xff7ffff5, 0x3400010}, +{0x3400000, 0xff7fffff, 0x7f7ffff0, 0xf5700000, 0x3400000}, +{0x3400000, 0xff7fffff, 0x7f7fffff, 0x0, 0x3400000}, +{0x3400000, 0xff7fffff, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xff7fffff, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7fffff, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7fffff, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7fffff, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7fffff, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7fffff, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7fffff, 0x80000000, 0xff7fffff, 0x3400000}, +{0x3400000, 0xff7fffff, 0x80000001, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x80000076, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x80002b94, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x80636d24, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x807fffff, 0xff7fffff, 0x3400080}, +{0x3400000, 0xff7fffff, 0x80800000, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x80800002, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x81398437, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x8ba98d27, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x8ba98d7a, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0xf51f853a, 0xff7fffff, 0x3400014}, +{0x3400000, 0xff7fffff, 0xff7ffff0, 0xff7fffff, 0x3400014}, +{0x3400000, 0xff7fffff, 0xff7fffff, 0xff7fffff, 0x3400014}, +{0x3400000, 0xff7fffff, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xff7fffff, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7fffff, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7fffff, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff7fffff, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7fffff, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7fffff, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff7fffff, 0x4f3495cb, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0xe73a5134, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x7c994e9e, 0xff7b358a, 0x3400010}, +{0x3400000, 0xff7fffff, 0x6164bd6c, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0x9503366, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0xbf5a97c9, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0xe6ff1a14, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x77f31e2f, 0xff7ffe18, 0x3400010}, +{0x3400000, 0xff7fffff, 0xaab4d7d8, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x966320b, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0xb26bddee, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0xb5c8e5d3, 0xff7fffff, 0x3400010}, +{0x3400000, 0xff7fffff, 0x317285d3, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0x3c9623b1, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0x51fd2c7c, 0xff7ffffe, 0x3400010}, +{0x3400000, 0xff7fffff, 0x7b906a6c, 0xff7edf2a, 0x3400010}, +{0x3400000, 0xff800000, 0x0, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x1, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x76, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x2b94, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x636d24, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x7fffff, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x800000, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x800002, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x1398437, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xba98d27, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xba98d7a, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x751f853a, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x7f7ffff0, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x7f7fffff, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x7f800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800000, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800000, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800000, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800000, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff800000, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff800000, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff800000, 0x80000000, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x80000001, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x80000076, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x80002b94, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x80636d24, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x807fffff, 0xff800000, 0x3400080}, +{0x3400000, 0xff800000, 0x80800000, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x80800002, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x81398437, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x8ba98d27, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x8ba98d7a, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xf51f853a, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xff7ffff0, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xff7fffff, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800000, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800000, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800000, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff800000, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff800000, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xff800000, 0x4f3495cb, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xe73a5134, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x7c994e9e, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x6164bd6c, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x9503366, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xbf5a97c9, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xe6ff1a14, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x77f31e2f, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xaab4d7d8, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x966320b, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xb26bddee, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0xb5c8e5d3, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x317285d3, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x3c9623b1, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x51fd2c7c, 0xff800000, 0x3400000}, +{0x3400000, 0xff800000, 0x7b906a6c, 0xff800000, 0x3400000}, +{0x3400000, 0xff800001, 0x0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x1, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x76, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x2b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x7fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x1398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x751f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7f7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7f7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7f800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7fc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7fd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7fffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x80000000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x80000001, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x80000076, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x80002b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x80636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x807fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff800001, 0x80800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x80800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x81398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x8ba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x8ba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xf51f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xff7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xff7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xff800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xffc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xffd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xffffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x4f3495cb, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xe73a5134, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7c994e9e, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x6164bd6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x9503366, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xbf5a97c9, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xe6ff1a14, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x77f31e2f, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xaab4d7d8, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x966320b, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xb26bddee, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0xb5c8e5d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x317285d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x3c9623b1, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x51fd2c7c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff800001, 0x7b906a6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x1, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x76, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x2b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x7fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x1398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x751f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7f7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7f7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7f800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7fc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7fd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7fffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x80000000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x80000001, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x80000076, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x80002b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x80636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x807fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0xff984a37, 0x80800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x80800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x81398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x8ba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x8ba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xf51f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xff7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xff7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xff800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xffc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xffd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xffffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x4f3495cb, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xe73a5134, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7c994e9e, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x6164bd6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x9503366, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xbf5a97c9, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xe6ff1a14, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x77f31e2f, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xaab4d7d8, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x966320b, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xb26bddee, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0xb5c8e5d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x317285d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x3c9623b1, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x51fd2c7c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xff984a37, 0x7b906a6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x1, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x76, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x2b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x7fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x1398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x751f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7f7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7f7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7f800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7fc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7fd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7fffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x80000000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x80000001, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x80000076, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x80002b94, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x80636d24, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x807fffff, 0x7fc00000, 0x3400081}, +{0x3400000, 0xffbfffff, 0x80800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x80800002, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x81398437, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x8ba98d27, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x8ba98d7a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xf51f853a, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xff7ffff0, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xff7fffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xff800000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xffc00000, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xffd9ba98, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xffffffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x4f3495cb, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xe73a5134, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7c994e9e, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x6164bd6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x9503366, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xbf5a97c9, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xe6ff1a14, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x77f31e2f, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xaab4d7d8, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x966320b, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xb26bddee, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x317285d3, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x3c9623b1, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x51fd2c7c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffbfffff, 0x7b906a6c, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffc00000, 0x0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x1, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x76, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x2b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x7fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x1398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x751f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7f7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7f7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7f800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffc00000, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffc00000, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffc00000, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x80000000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x80000001, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x80000076, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x80002b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x80636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x807fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffc00000, 0x80800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x80800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x81398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x8ba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x8ba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xf51f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xff7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xff7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xff800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffc00000, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffc00000, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffc00000, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x4f3495cb, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xe73a5134, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7c994e9e, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x6164bd6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x9503366, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xbf5a97c9, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xe6ff1a14, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x77f31e2f, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xaab4d7d8, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x966320b, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xb26bddee, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0xb5c8e5d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x317285d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x3c9623b1, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x51fd2c7c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffc00000, 0x7b906a6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x1, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x76, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x2b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x7fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x1398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x751f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7f7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7f800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffd9ba98, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffd9ba98, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffd9ba98, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x80000000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x80000001, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x80000076, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x80002b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x80636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x807fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffd9ba98, 0x80800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x80800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x81398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x8ba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xf51f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xff7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xff7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xff800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffd9ba98, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffd9ba98, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffd9ba98, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x4f3495cb, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xe73a5134, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7c994e9e, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x6164bd6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x9503366, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x77f31e2f, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x966320b, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xb26bddee, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x317285d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x3c9623b1, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffd9ba98, 0x7b906a6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x1, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x76, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x2b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x7fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x1398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x751f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7f7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7f7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7f800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffffffff, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffffffff, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffffffff, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x80000000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x80000001, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x80000076, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x80002b94, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x80636d24, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x807fffff, 0x7fc00000, 0x3400080}, +{0x3400000, 0xffffffff, 0x80800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x80800002, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x81398437, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x8ba98d27, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x8ba98d7a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xf51f853a, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xff7ffff0, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xff7fffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xff800000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffffffff, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffffffff, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xffffffff, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x4f3495cb, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xe73a5134, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7c994e9e, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x6164bd6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x9503366, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xbf5a97c9, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xe6ff1a14, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x77f31e2f, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xaab4d7d8, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x966320b, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xb26bddee, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0xb5c8e5d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x317285d3, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x3c9623b1, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x51fd2c7c, 0x7fc00000, 0x3400000}, +{0x3400000, 0xffffffff, 0x7b906a6c, 0x7fc00000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x0, 0x4f3495cb, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x1, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x76, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x2b94, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x636d24, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x7fffff, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x800000, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x800002, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x1398437, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xba98d27, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xba98d7a, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x4f3495cb, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x4f3495cb, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x4f3495cb, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x4f3495cb, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x80000000, 0x4f3495cb, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x80000001, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x80000076, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x80002b94, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x80636d24, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x807fffff, 0x4f3495cb, 0x3400080}, +{0x3400000, 0x4f3495cb, 0x80800000, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x80800002, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x81398437, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x8ba98d27, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x8ba98d7a, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x4f3495cb, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x4f3495cb, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x4f3495cb, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x4f3495cb, 0x4f3495cb, 0x4fb495cb, 0x3400000}, +{0x3400000, 0x4f3495cb, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x9503366, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xbf5a97c9, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xaab4d7d8, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x966320b, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xb26bddee, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0xb5c8e5d3, 0x4f3495cb, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x317285d3, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x3c9623b1, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x51fd2c7c, 0x52016896, 0x3400010}, +{0x3400000, 0x4f3495cb, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0xe73a5134, 0x0, 0xe73a5134, 0x3400000}, +{0x3400000, 0xe73a5134, 0x1, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x76, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x2b94, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x636d24, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x7fffff, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x800000, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0x800002, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0x1398437, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0xba98d27, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0xba98d7a, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0xe73a5134, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0xe73a5134, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0xe73a5134, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xe73a5134, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe73a5134, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe73a5134, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe73a5134, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe73a5134, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe73a5134, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe73a5134, 0x80000000, 0xe73a5134, 0x3400000}, +{0x3400000, 0xe73a5134, 0x80000001, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x80000076, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x80002b94, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x80636d24, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x807fffff, 0xe73a5134, 0x3400080}, +{0x3400000, 0xe73a5134, 0x80800000, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0x80800002, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0x81398437, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0x8ba98d27, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0x8ba98d7a, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0xe73a5134, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xe73a5134, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0xe73a5134, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xe73a5134, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe73a5134, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe73a5134, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe73a5134, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe73a5134, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe73a5134, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe73a5134, 0x4f3495cb, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0xe73a5134, 0xe7ba5134, 0x3400000}, +{0x3400000, 0xe73a5134, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0xe73a5134, 0x6164bd6c, 0xe73a42e8, 0x3400010}, +{0x3400000, 0xe73a5134, 0x9503366, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0xbf5a97c9, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0xe6ff1a14, 0xe79cef1f, 0x3400000}, +{0x3400000, 0xe73a5134, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0xe73a5134, 0xaab4d7d8, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0x966320b, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0xb26bddee, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0xb5c8e5d3, 0xe73a5134, 0x3400010}, +{0x3400000, 0xe73a5134, 0x317285d3, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0x3c9623b1, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0x51fd2c7c, 0xe73a5133, 0x3400010}, +{0x3400000, 0xe73a5134, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x0, 0x7c994e9e, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x1, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x76, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x2b94, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x636d24, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x7fffff, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x800000, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x800002, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x1398437, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xba98d27, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xba98d7a, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x751f853a, 0x7c994fde, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x7f7ffff0, 0x7f800000, 0x3400014}, +{0x3400000, 0x7c994e9e, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x7c994e9e, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7c994e9e, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7c994e9e, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7c994e9e, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x80000000, 0x7c994e9e, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x80000001, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x80000076, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x80002b94, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x80636d24, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x807fffff, 0x7c994e9e, 0x3400080}, +{0x3400000, 0x7c994e9e, 0x80800000, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x80800002, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x81398437, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x8ba98d27, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x8ba98d7a, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xf51f853a, 0x7c994d5f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xff7ffff0, 0xff7b357b, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xff7fffff, 0xff7b358a, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7c994e9e, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7c994e9e, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7c994e9e, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x4f3495cb, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xe73a5134, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x7c994e9e, 0x7d194e9e, 0x3400000}, +{0x3400000, 0x7c994e9e, 0x6164bd6c, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x9503366, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xbf5a97c9, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xe6ff1a14, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x77f31e2f, 0x7c998b66, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xaab4d7d8, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x966320b, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xb26bddee, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0xb5c8e5d3, 0x7c994e9e, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x317285d3, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x3c9623b1, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x51fd2c7c, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x7c994e9e, 0x7b906a6c, 0x7cbd6939, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x0, 0x6164bd6c, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x1, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x76, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x2b94, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x636d24, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x7fffff, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x800000, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x800002, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x1398437, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xba98d27, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xba98d7a, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x6164bd6c, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x6164bd6c, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x6164bd6c, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x6164bd6c, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x80000000, 0x6164bd6c, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x80000001, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x80000076, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x80002b94, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x80636d24, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x807fffff, 0x6164bd6c, 0x3400080}, +{0x3400000, 0x6164bd6c, 0x80800000, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x80800002, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x81398437, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x8ba98d27, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x8ba98d7a, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x6164bd6c, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x6164bd6c, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x6164bd6c, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x4f3495cb, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xe73a5134, 0xe73a42e8, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x6164bd6c, 0x61e4bd6c, 0x3400000}, +{0x3400000, 0x6164bd6c, 0x9503366, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xbf5a97c9, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xe6ff1a14, 0xe6fefd7c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xaab4d7d8, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x966320b, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xb26bddee, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0xb5c8e5d3, 0x6164bd6c, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x317285d3, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x3c9623b1, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x51fd2c7c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x6164bd6c, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x9503366, 0x0, 0x9503366, 0x3400000}, +{0x3400000, 0x9503366, 0x1, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x76, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x2b94, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x636d24, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x7fffff, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x800000, 0x95033a6, 0x3400000}, +{0x3400000, 0x9503366, 0x800002, 0x95033a7, 0x3400010}, +{0x3400000, 0x9503366, 0x1398437, 0x9503420, 0x3400010}, +{0x3400000, 0x9503366, 0xba98d27, 0xbb00ec3, 0x3400010}, +{0x3400000, 0x9503366, 0xba98d7a, 0xbb00f16, 0x3400010}, +{0x3400000, 0x9503366, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x9503366, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x9503366, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x9503366, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x9503366, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x9503366, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x9503366, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x9503366, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x9503366, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x9503366, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x9503366, 0x80000000, 0x9503366, 0x3400000}, +{0x3400000, 0x9503366, 0x80000001, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x80000076, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x80002b94, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x80636d24, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x807fffff, 0x9503366, 0x3400080}, +{0x3400000, 0x9503366, 0x80800000, 0x9503326, 0x3400000}, +{0x3400000, 0x9503366, 0x80800002, 0x9503326, 0x3400010}, +{0x3400000, 0x9503366, 0x81398437, 0x95032ad, 0x3400010}, +{0x3400000, 0x9503366, 0x8ba98d27, 0x8ba30b8b, 0x3400010}, +{0x3400000, 0x9503366, 0x8ba98d7a, 0x8ba30bde, 0x3400010}, +{0x3400000, 0x9503366, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x9503366, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x9503366, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x9503366, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x9503366, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x9503366, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x9503366, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x9503366, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x9503366, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x9503366, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x9503366, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x9503366, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x9503366, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x9503366, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x9503366, 0x9503366, 0x9d03366, 0x3400000}, +{0x3400000, 0x9503366, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0x9503366, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x9503366, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x9503366, 0xaab4d7d8, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0x9503366, 0x966320b, 0x9db32b9, 0x3400010}, +{0x3400000, 0x9503366, 0xb26bddee, 0xb26bdded, 0x3400010}, +{0x3400000, 0x9503366, 0xb5c8e5d3, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0x9503366, 0x317285d3, 0x317285d4, 0x3400010}, +{0x3400000, 0x9503366, 0x3c9623b1, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x9503366, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x9503366, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x0, 0xbf5a97c9, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0x1, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x76, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x2b94, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x636d24, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x7fffff, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x800000, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x800002, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x1398437, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xba98d27, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xba98d7a, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xbf5a97c9, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xbf5a97c9, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xbf5a97c9, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0x80000000, 0xbf5a97c9, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0x80000001, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x80000076, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x80002b94, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x80636d24, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x807fffff, 0xbf5a97c9, 0x3400080}, +{0x3400000, 0xbf5a97c9, 0x80800000, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x80800002, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x81398437, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x8ba98d27, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x8ba98d7a, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xbf5a97c9, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xbf5a97c9, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xbf5a97c9, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x9503366, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xbf5a97c9, 0xbfda97c9, 0x3400000}, +{0x3400000, 0xbf5a97c9, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xaab4d7d8, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x966320b, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xb26bddee, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0xb5c8e5d3, 0xbf5a97e2, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x317285d3, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x3c9623b1, 0xbf55e6ab, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0xbf5a97c9, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x0, 0xe6ff1a14, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x1, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x76, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x2b94, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x636d24, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x7fffff, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x800000, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x800002, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x1398437, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xba98d27, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xba98d7a, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe6ff1a14, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe6ff1a14, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe6ff1a14, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x80000000, 0xe6ff1a14, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x80000001, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x80000076, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x80002b94, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x80636d24, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x807fffff, 0xe6ff1a14, 0x3400080}, +{0x3400000, 0xe6ff1a14, 0x80800000, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x80800002, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x81398437, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x8ba98d27, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x8ba98d7a, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe6ff1a14, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe6ff1a14, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xe6ff1a14, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x4f3495cb, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xe73a5134, 0xe79cef1f, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x6164bd6c, 0xe6fefd7c, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x9503366, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xbf5a97c9, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xe6ff1a14, 0xe77f1a14, 0x3400000}, +{0x3400000, 0xe6ff1a14, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xaab4d7d8, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x966320b, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xb26bddee, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0xb5c8e5d3, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x317285d3, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x3c9623b1, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x51fd2c7c, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0xe6ff1a14, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x0, 0x77f31e2f, 0x3400000}, +{0x3400000, 0x77f31e2f, 0x1, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x76, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x2b94, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x636d24, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x7fffff, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x800000, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x800002, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x1398437, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xba98d27, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xba98d7a, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x751f853a, 0x77f81a59, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x7f7ffff0, 0x7f800000, 0x3400014}, +{0x3400000, 0x77f31e2f, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x77f31e2f, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x77f31e2f, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x77f31e2f, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x77f31e2f, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0x80000000, 0x77f31e2f, 0x3400000}, +{0x3400000, 0x77f31e2f, 0x80000001, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x80000076, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x80002b94, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x80636d24, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x807fffff, 0x77f31e2f, 0x3400080}, +{0x3400000, 0x77f31e2f, 0x80800000, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x80800002, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x81398437, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x8ba98d27, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x8ba98d7a, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xf51f853a, 0x77ee2206, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xff7ffff0, 0xff7ffe09, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xff7fffff, 0xff7ffe18, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x77f31e2f, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x77f31e2f, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x77f31e2f, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x77f31e2f, 0x4f3495cb, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xe73a5134, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x7c994e9e, 0x7c998b66, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x6164bd6c, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x9503366, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xbf5a97c9, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xe6ff1a14, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x77f31e2f, 0x78731e2f, 0x3400000}, +{0x3400000, 0x77f31e2f, 0xaab4d7d8, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x966320b, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xb26bddee, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0xb5c8e5d3, 0x77f31e2f, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x317285d3, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x3c9623b1, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x51fd2c7c, 0x77f31e30, 0x3400010}, +{0x3400000, 0x77f31e2f, 0x7b906a6c, 0x7b915d8b, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x0, 0xaab4d7d8, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x1, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x76, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x2b94, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x636d24, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x7fffff, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x800000, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x800002, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x1398437, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xba98d27, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xba98d7a, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xaab4d7d8, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xaab4d7d8, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xaab4d7d8, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x80000000, 0xaab4d7d8, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x80000001, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x80000076, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x80002b94, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x80636d24, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x807fffff, 0xaab4d7d8, 0x3400080}, +{0x3400000, 0xaab4d7d8, 0x80800000, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x80800002, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x81398437, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x8ba98d27, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x8ba98d7a, 0xaab4d7d8, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xaab4d7d8, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xaab4d7d8, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xaab4d7d8, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x9503366, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xbf5a97c9, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xaab4d7d8, 0xab34d7d8, 0x3400000}, +{0x3400000, 0xaab4d7d8, 0x966320b, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xb26bddee, 0xb26bdf57, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0xb5c8e5d3, 0xb5c8e5d5, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x317285d3, 0x3172802d, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x3c9623b1, 0x3c9623b1, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0xaab4d7d8, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x966320b, 0x0, 0x966320b, 0x3400000}, +{0x3400000, 0x966320b, 0x1, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x76, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x2b94, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x636d24, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x7fffff, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x800000, 0x966324b, 0x3400000}, +{0x3400000, 0x966320b, 0x800002, 0x966324c, 0x3400010}, +{0x3400000, 0x966320b, 0x1398437, 0x96632c5, 0x3400010}, +{0x3400000, 0x966320b, 0xba98d27, 0xbb0beb8, 0x3400010}, +{0x3400000, 0x966320b, 0xba98d7a, 0xbb0bf0b, 0x3400010}, +{0x3400000, 0x966320b, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x966320b, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x966320b, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x966320b, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x966320b, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x966320b, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x966320b, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x966320b, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x966320b, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x966320b, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x966320b, 0x80000000, 0x966320b, 0x3400000}, +{0x3400000, 0x966320b, 0x80000001, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x80000076, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x80002b94, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x80636d24, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x807fffff, 0x966320b, 0x3400080}, +{0x3400000, 0x966320b, 0x80800000, 0x96631cb, 0x3400000}, +{0x3400000, 0x966320b, 0x80800002, 0x96631cb, 0x3400010}, +{0x3400000, 0x966320b, 0x81398437, 0x9663152, 0x3400010}, +{0x3400000, 0x966320b, 0x8ba98d27, 0x8ba25b96, 0x3400010}, +{0x3400000, 0x966320b, 0x8ba98d7a, 0x8ba25be9, 0x3400010}, +{0x3400000, 0x966320b, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x966320b, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x966320b, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x966320b, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x966320b, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x966320b, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x966320b, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x966320b, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x966320b, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x966320b, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x966320b, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x966320b, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x966320b, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x966320b, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x966320b, 0x9503366, 0x9db32b9, 0x3400010}, +{0x3400000, 0x966320b, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0x966320b, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x966320b, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x966320b, 0xaab4d7d8, 0xaab4d7d7, 0x3400010}, +{0x3400000, 0x966320b, 0x966320b, 0x9e6320b, 0x3400000}, +{0x3400000, 0x966320b, 0xb26bddee, 0xb26bdded, 0x3400010}, +{0x3400000, 0x966320b, 0xb5c8e5d3, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0x966320b, 0x317285d3, 0x317285d4, 0x3400010}, +{0x3400000, 0x966320b, 0x3c9623b1, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x966320b, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x966320b, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0xb26bddee, 0x0, 0xb26bddee, 0x3400000}, +{0x3400000, 0xb26bddee, 0x1, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x76, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x2b94, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x636d24, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x7fffff, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x800000, 0xb26bdded, 0x3400010}, +{0x3400000, 0xb26bddee, 0x800002, 0xb26bdded, 0x3400010}, +{0x3400000, 0xb26bddee, 0x1398437, 0xb26bdded, 0x3400010}, +{0x3400000, 0xb26bddee, 0xba98d27, 0xb26bdded, 0x3400010}, +{0x3400000, 0xb26bddee, 0xba98d7a, 0xb26bdded, 0x3400010}, +{0x3400000, 0xb26bddee, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0xb26bddee, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0xb26bddee, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0xb26bddee, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xb26bddee, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb26bddee, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb26bddee, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb26bddee, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb26bddee, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb26bddee, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb26bddee, 0x80000000, 0xb26bddee, 0x3400000}, +{0x3400000, 0xb26bddee, 0x80000001, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x80000076, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x80002b94, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x80636d24, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x807fffff, 0xb26bddee, 0x3400080}, +{0x3400000, 0xb26bddee, 0x80800000, 0xb26bddee, 0x3400010}, +{0x3400000, 0xb26bddee, 0x80800002, 0xb26bddee, 0x3400010}, +{0x3400000, 0xb26bddee, 0x81398437, 0xb26bddee, 0x3400010}, +{0x3400000, 0xb26bddee, 0x8ba98d27, 0xb26bddee, 0x3400010}, +{0x3400000, 0xb26bddee, 0x8ba98d7a, 0xb26bddee, 0x3400010}, +{0x3400000, 0xb26bddee, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0xb26bddee, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xb26bddee, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0xb26bddee, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xb26bddee, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb26bddee, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb26bddee, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb26bddee, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb26bddee, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb26bddee, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb26bddee, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0xb26bddee, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0xb26bddee, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0xb26bddee, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0xb26bddee, 0x9503366, 0xb26bdded, 0x3400010}, +{0x3400000, 0xb26bddee, 0xbf5a97c9, 0xbf5a97c9, 0x3400010}, +{0x3400000, 0xb26bddee, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xb26bddee, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0xb26bddee, 0xaab4d7d8, 0xb26bdf57, 0x3400010}, +{0x3400000, 0xb26bddee, 0x966320b, 0xb26bdded, 0x3400010}, +{0x3400000, 0xb26bddee, 0xb26bddee, 0xb2ebddee, 0x3400000}, +{0x3400000, 0xb26bddee, 0xb5c8e5d3, 0xb5cabd8e, 0x3400010}, +{0x3400000, 0xb26bddee, 0x317285d3, 0xb22f3c79, 0x3400010}, +{0x3400000, 0xb26bddee, 0x3c9623b1, 0x3c9623aa, 0x3400010}, +{0x3400000, 0xb26bddee, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0xb26bddee, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x0, 0xb5c8e5d3, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x1, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x76, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x2b94, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x636d24, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x7fffff, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x800000, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x800002, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x1398437, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xba98d27, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xba98d7a, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x751f853a, 0x751f853a, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x7f7ffff0, 0x7f7ffff0, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x7f7fffff, 0x7f7fffff, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb5c8e5d3, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb5c8e5d3, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb5c8e5d3, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x80000000, 0xb5c8e5d3, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x80000001, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x80000076, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x80002b94, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x80636d24, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x807fffff, 0xb5c8e5d3, 0x3400080}, +{0x3400000, 0xb5c8e5d3, 0x80800000, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x80800002, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x81398437, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x8ba98d27, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x8ba98d7a, 0xb5c8e5d3, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xf51f853a, 0xf51f853a, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xff7ffff0, 0xff7ffff0, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xff7fffff, 0xff7fffff, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb5c8e5d3, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb5c8e5d3, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0xb5c8e5d3, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x4f3495cb, 0x4f3495cb, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xe73a5134, 0xe73a5134, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x7c994e9e, 0x7c994e9e, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x6164bd6c, 0x6164bd6c, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x9503366, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xbf5a97c9, 0xbf5a97e2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xe6ff1a14, 0xe6ff1a14, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x77f31e2f, 0x77f31e2f, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xaab4d7d8, 0xb5c8e5d5, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x966320b, 0xb5c8e5d2, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xb26bddee, 0xb5cabd8e, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0xb5c8e5d3, 0xb648e5d3, 0x3400000}, +{0x3400000, 0xb5c8e5d3, 0x317285d3, 0xb5c86c90, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x3c9623b1, 0x3c96208e, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x51fd2c7c, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0xb5c8e5d3, 0x7b906a6c, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x317285d3, 0x0, 0x317285d3, 0x3400000}, +{0x3400000, 0x317285d3, 0x1, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x76, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x2b94, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x636d24, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x7fffff, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x800000, 0x317285d4, 0x3400010}, +{0x3400000, 0x317285d3, 0x800002, 0x317285d4, 0x3400010}, +{0x3400000, 0x317285d3, 0x1398437, 0x317285d4, 0x3400010}, +{0x3400000, 0x317285d3, 0xba98d27, 0x317285d4, 0x3400010}, +{0x3400000, 0x317285d3, 0xba98d7a, 0x317285d4, 0x3400010}, +{0x3400000, 0x317285d3, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x317285d3, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x317285d3, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x317285d3, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x317285d3, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x317285d3, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x317285d3, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x317285d3, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x317285d3, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x317285d3, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x317285d3, 0x80000000, 0x317285d3, 0x3400000}, +{0x3400000, 0x317285d3, 0x80000001, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x80000076, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x80002b94, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x80636d24, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x807fffff, 0x317285d3, 0x3400080}, +{0x3400000, 0x317285d3, 0x80800000, 0x317285d3, 0x3400010}, +{0x3400000, 0x317285d3, 0x80800002, 0x317285d3, 0x3400010}, +{0x3400000, 0x317285d3, 0x81398437, 0x317285d3, 0x3400010}, +{0x3400000, 0x317285d3, 0x8ba98d27, 0x317285d3, 0x3400010}, +{0x3400000, 0x317285d3, 0x8ba98d7a, 0x317285d3, 0x3400010}, +{0x3400000, 0x317285d3, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x317285d3, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x317285d3, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x317285d3, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x317285d3, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x317285d3, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x317285d3, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x317285d3, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x317285d3, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x317285d3, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x317285d3, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x317285d3, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x317285d3, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x317285d3, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x317285d3, 0x9503366, 0x317285d4, 0x3400010}, +{0x3400000, 0x317285d3, 0xbf5a97c9, 0xbf5a97c8, 0x3400010}, +{0x3400000, 0x317285d3, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x317285d3, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x317285d3, 0xaab4d7d8, 0x3172802d, 0x3400010}, +{0x3400000, 0x317285d3, 0x966320b, 0x317285d4, 0x3400010}, +{0x3400000, 0x317285d3, 0xb26bddee, 0xb22f3c79, 0x3400010}, +{0x3400000, 0x317285d3, 0xb5c8e5d3, 0xb5c86c90, 0x3400010}, +{0x3400000, 0x317285d3, 0x317285d3, 0x31f285d3, 0x3400000}, +{0x3400000, 0x317285d3, 0x3c9623b1, 0x3c9623b3, 0x3400010}, +{0x3400000, 0x317285d3, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x317285d3, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x0, 0x3c9623b1, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x1, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x76, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x2b94, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x636d24, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x7fffff, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x800000, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x800002, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x1398437, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xba98d27, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xba98d7a, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x3c9623b1, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x3c9623b1, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x3c9623b1, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x3c9623b1, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x80000000, 0x3c9623b1, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x80000001, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x80000076, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x80002b94, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x80636d24, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x807fffff, 0x3c9623b1, 0x3400080}, +{0x3400000, 0x3c9623b1, 0x80800000, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x80800002, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x81398437, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x8ba98d27, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x8ba98d7a, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x3c9623b1, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x3c9623b1, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x3c9623b1, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x4f3495cb, 0x4f3495cc, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x9503366, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xbf5a97c9, 0xbf55e6ab, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xaab4d7d8, 0x3c9623b1, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x966320b, 0x3c9623b2, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xb26bddee, 0x3c9623aa, 0x3400010}, +{0x3400000, 0x3c9623b1, 0xb5c8e5d3, 0x3c96208e, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x317285d3, 0x3c9623b3, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x3c9623b1, 0x3d1623b1, 0x3400000}, +{0x3400000, 0x3c9623b1, 0x51fd2c7c, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x3c9623b1, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x0, 0x51fd2c7c, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x1, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x76, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x2b94, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x636d24, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x7fffff, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x800000, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x800002, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x1398437, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xba98d27, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xba98d7a, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x751f853a, 0x751f853b, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x7f7ffff0, 0x7f7ffff1, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x51fd2c7c, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x51fd2c7c, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x51fd2c7c, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x51fd2c7c, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x80000000, 0x51fd2c7c, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x80000001, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x80000076, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x80002b94, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x80636d24, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x807fffff, 0x51fd2c7c, 0x3400080}, +{0x3400000, 0x51fd2c7c, 0x80800000, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x80800002, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x81398437, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x8ba98d27, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x8ba98d7a, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xf51f853a, 0xf51f8539, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xff7ffff0, 0xff7fffef, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xff7fffff, 0xff7ffffe, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x51fd2c7c, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x51fd2c7c, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x51fd2c7c, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x4f3495cb, 0x52016896, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xe73a5134, 0xe73a5133, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x7c994e9e, 0x7c994e9f, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x6164bd6c, 0x6164bd6d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x9503366, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xbf5a97c9, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xe6ff1a14, 0xe6ff1a13, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x77f31e2f, 0x77f31e30, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xaab4d7d8, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x966320b, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xb26bddee, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0xb5c8e5d3, 0x51fd2c7c, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x317285d3, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x3c9623b1, 0x51fd2c7d, 0x3400010}, +{0x3400000, 0x51fd2c7c, 0x51fd2c7c, 0x527d2c7c, 0x3400000}, +{0x3400000, 0x51fd2c7c, 0x7b906a6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x0, 0x7b906a6c, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x1, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x76, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x2b94, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x636d24, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x7fffff, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x800000, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x800002, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x1398437, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xba98d27, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xba98d7a, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x751f853a, 0x7b906f69, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x7f7ffff0, 0x7f800000, 0x3400014}, +{0x3400000, 0x7b906a6c, 0x7f7fffff, 0x7f800000, 0x3400014}, +{0x3400000, 0x7b906a6c, 0x7f800000, 0x7f800000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x7f800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7b906a6c, 0x7f984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7b906a6c, 0x7fbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7b906a6c, 0x7fc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x7fd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x7fffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x80000000, 0x7b906a6c, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x80000001, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x80000076, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x80002b94, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x80636d24, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x807fffff, 0x7b906a6c, 0x3400080}, +{0x3400000, 0x7b906a6c, 0x80800000, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x80800002, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x81398437, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x8ba98d27, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x8ba98d7a, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xf51f853a, 0x7b906570, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xff7ffff0, 0xff7edf1b, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xff7fffff, 0xff7edf2a, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xff800000, 0xff800000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0xff800001, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7b906a6c, 0xff984a37, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7b906a6c, 0xffbfffff, 0x7fc00000, 0x3400001}, +{0x3400000, 0x7b906a6c, 0xffc00000, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0xffd9ba98, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0xffffffff, 0x7fc00000, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x4f3495cb, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xe73a5134, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x7c994e9e, 0x7cbd6939, 0x3400000}, +{0x3400000, 0x7b906a6c, 0x6164bd6c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x9503366, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xbf5a97c9, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xe6ff1a14, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x77f31e2f, 0x7b915d8b, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xaab4d7d8, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x966320b, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xb26bddee, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0xb5c8e5d3, 0x7b906a6c, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x317285d3, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x3c9623b1, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x51fd2c7c, 0x7b906a6d, 0x3400010}, +{0x3400000, 0x7b906a6c, 0x7b906a6c, 0x7c106a6c, 0x3400000}, +{0x3000000, 0x0, 0x0, 0x0, 0x3000000}, +{0x3000000, 0x0, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x800000, 0x800000, 0x3000000}, +{0x3000000, 0x0, 0x800002, 0x800002, 0x3000000}, +{0x3000000, 0x0, 0x1398437, 0x1398437, 0x3000000}, +{0x3000000, 0x0, 0xba98d27, 0xba98d27, 0x3000000}, +{0x3000000, 0x0, 0xba98d7a, 0xba98d7a, 0x3000000}, +{0x3000000, 0x0, 0x751f853a, 0x751f853a, 0x3000000}, +{0x3000000, 0x0, 0x7f7ffff0, 0x7f7ffff0, 0x3000000}, +{0x3000000, 0x0, 0x7f7fffff, 0x7f7fffff, 0x3000000}, +{0x3000000, 0x0, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x0, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x0, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x0, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x0, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x0, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x0, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x0, 0x80000000, 0x0, 0x3000000}, +{0x3000000, 0x0, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x0, 0x80800000, 0x80800000, 0x3000000}, +{0x3000000, 0x0, 0x80800002, 0x80800002, 0x3000000}, +{0x3000000, 0x0, 0x81398437, 0x81398437, 0x3000000}, +{0x3000000, 0x0, 0x8ba98d27, 0x8ba98d27, 0x3000000}, +{0x3000000, 0x0, 0x8ba98d7a, 0x8ba98d7a, 0x3000000}, +{0x3000000, 0x0, 0xf51f853a, 0xf51f853a, 0x3000000}, +{0x3000000, 0x0, 0xff7ffff0, 0xff7ffff0, 0x3000000}, +{0x3000000, 0x0, 0xff7fffff, 0xff7fffff, 0x3000000}, +{0x3000000, 0x0, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x0, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x0, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x0, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x0, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x0, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x0, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x0, 0x4f3495cb, 0x4f3495cb, 0x3000000}, +{0x3000000, 0x0, 0xe73a5134, 0xe73a5134, 0x3000000}, +{0x3000000, 0x0, 0x7c994e9e, 0x7c994e9e, 0x3000000}, +{0x3000000, 0x0, 0x6164bd6c, 0x6164bd6c, 0x3000000}, +{0x3000000, 0x0, 0x9503366, 0x9503366, 0x3000000}, +{0x3000000, 0x0, 0xbf5a97c9, 0xbf5a97c9, 0x3000000}, +{0x3000000, 0x0, 0xe6ff1a14, 0xe6ff1a14, 0x3000000}, +{0x3000000, 0x0, 0x77f31e2f, 0x77f31e2f, 0x3000000}, +{0x3000000, 0x0, 0xaab4d7d8, 0xaab4d7d8, 0x3000000}, +{0x3000000, 0x0, 0x966320b, 0x966320b, 0x3000000}, +{0x3000000, 0x0, 0xb26bddee, 0xb26bddee, 0x3000000}, +{0x3000000, 0x0, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000000}, +{0x3000000, 0x0, 0x317285d3, 0x317285d3, 0x3000000}, +{0x3000000, 0x0, 0x3c9623b1, 0x3c9623b1, 0x3000000}, +{0x3000000, 0x0, 0x51fd2c7c, 0x51fd2c7c, 0x3000000}, +{0x3000000, 0x0, 0x7b906a6c, 0x7b906a6c, 0x3000000}, +{0x3000000, 0x1, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x1, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x1, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x1, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x1, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x1, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x1, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x1, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x1, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x1, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x1, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x1, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x1, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x1, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x1, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x1, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x1, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x1, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x1, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x1, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x1, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x1, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x1, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x1, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x1, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x1, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x1, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x1, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x1, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x1, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x1, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x1, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x1, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x1, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x1, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x1, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x1, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x1, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x1, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x1, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x1, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x1, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x1, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x1, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x1, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x1, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x1, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x76, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x76, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x76, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x76, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x76, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x76, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x76, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x76, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x76, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x76, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x76, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x76, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x76, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x76, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x76, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x76, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x76, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x76, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x76, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x76, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x76, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x76, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x76, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x76, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x76, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x76, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x76, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x76, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x76, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x76, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x76, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x76, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x76, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x76, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x76, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x76, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x76, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x76, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x76, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x76, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x76, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x76, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x76, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x76, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x76, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x76, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x76, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x2b94, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x2b94, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x2b94, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x2b94, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x2b94, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x2b94, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x2b94, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x2b94, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x2b94, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x2b94, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x2b94, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x2b94, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x2b94, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x2b94, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x2b94, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x2b94, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x2b94, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x2b94, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x2b94, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x2b94, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x2b94, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x2b94, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x2b94, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x2b94, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x2b94, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x2b94, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x2b94, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x2b94, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x2b94, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x2b94, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x2b94, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x2b94, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x2b94, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x2b94, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x2b94, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x2b94, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x2b94, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x2b94, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x2b94, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x2b94, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x2b94, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x2b94, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x2b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x2b94, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x2b94, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x2b94, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x2b94, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x636d24, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x636d24, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x636d24, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x636d24, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x636d24, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x636d24, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x636d24, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x636d24, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x636d24, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x636d24, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x636d24, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x636d24, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x636d24, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x636d24, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x636d24, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x636d24, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x636d24, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x636d24, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x636d24, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x636d24, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x636d24, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x636d24, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x636d24, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x636d24, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x636d24, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x636d24, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x636d24, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x636d24, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x636d24, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x636d24, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x636d24, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x636d24, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x636d24, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x636d24, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x636d24, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x636d24, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x636d24, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x636d24, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x636d24, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x636d24, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7fffff, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x7fffff, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x7fffff, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x7fffff, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x7fffff, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x7fffff, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x7fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7fffff, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7fffff, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x7fffff, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fffff, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fffff, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fffff, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffff, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffff, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffff, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x7fffff, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x7fffff, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x7fffff, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x7fffff, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x7fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x7fffff, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x7fffff, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x7fffff, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x7fffff, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x7fffff, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fffff, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fffff, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fffff, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffff, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffff, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffff, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x7fffff, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x7fffff, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7fffff, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x7fffff, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x7fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x7fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x7fffff, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x7fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x7fffff, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x7fffff, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x7fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x7fffff, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x7fffff, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x7fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x7fffff, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x800000, 0x0, 0x800000, 0x3000000}, +{0x3000000, 0x800000, 0x1, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x76, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x2b94, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x636d24, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x7fffff, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x800000, 0x1000000, 0x3000000}, +{0x3000000, 0x800000, 0x800002, 0x1000001, 0x3000000}, +{0x3000000, 0x800000, 0x1398437, 0x1798437, 0x3000000}, +{0x3000000, 0x800000, 0xba98d27, 0xba98d29, 0x3000000}, +{0x3000000, 0x800000, 0xba98d7a, 0xba98d7c, 0x3000000}, +{0x3000000, 0x800000, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x800000, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x800000, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x800000, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x800000, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800000, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800000, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800000, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800000, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800000, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800000, 0x80000000, 0x800000, 0x3000000}, +{0x3000000, 0x800000, 0x80000001, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x80000076, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x80002b94, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x80636d24, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x807fffff, 0x800000, 0x3000080}, +{0x3000000, 0x800000, 0x80800000, 0x0, 0x3000000}, +{0x3000000, 0x800000, 0x80800002, 0x0, 0x3000008}, +{0x3000000, 0x800000, 0x81398437, 0x80f3086e, 0x3000000}, +{0x3000000, 0x800000, 0x8ba98d27, 0x8ba98d25, 0x3000000}, +{0x3000000, 0x800000, 0x8ba98d7a, 0x8ba98d78, 0x3000000}, +{0x3000000, 0x800000, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x800000, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x800000, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x800000, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x800000, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800000, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800000, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800000, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800000, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800000, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800000, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x800000, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x800000, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x800000, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x800000, 0x9503366, 0x95033a6, 0x3000000}, +{0x3000000, 0x800000, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x800000, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x800000, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x800000, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x800000, 0x966320b, 0x966324b, 0x3000000}, +{0x3000000, 0x800000, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x800000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x800000, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x800000, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x800000, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x800000, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x800002, 0x0, 0x800002, 0x3000000}, +{0x3000000, 0x800002, 0x1, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x76, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x2b94, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x636d24, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x7fffff, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x800000, 0x1000001, 0x3000000}, +{0x3000000, 0x800002, 0x800002, 0x1000002, 0x3000000}, +{0x3000000, 0x800002, 0x1398437, 0x1798438, 0x3000000}, +{0x3000000, 0x800002, 0xba98d27, 0xba98d29, 0x3000010}, +{0x3000000, 0x800002, 0xba98d7a, 0xba98d7c, 0x3000010}, +{0x3000000, 0x800002, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x800002, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x800002, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x800002, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x800002, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800002, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800002, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800002, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800002, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800002, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800002, 0x80000000, 0x800002, 0x3000000}, +{0x3000000, 0x800002, 0x80000001, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x80000076, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x80002b94, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x80636d24, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x807fffff, 0x800002, 0x3000080}, +{0x3000000, 0x800002, 0x80800000, 0x0, 0x3000008}, +{0x3000000, 0x800002, 0x80800002, 0x0, 0x3000000}, +{0x3000000, 0x800002, 0x81398437, 0x80f3086c, 0x3000000}, +{0x3000000, 0x800002, 0x8ba98d27, 0x8ba98d25, 0x3000010}, +{0x3000000, 0x800002, 0x8ba98d7a, 0x8ba98d78, 0x3000010}, +{0x3000000, 0x800002, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x800002, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x800002, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x800002, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x800002, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800002, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800002, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x800002, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800002, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800002, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x800002, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x800002, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x800002, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x800002, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x800002, 0x9503366, 0x95033a6, 0x3000010}, +{0x3000000, 0x800002, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x800002, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x800002, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x800002, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x800002, 0x966320b, 0x966324b, 0x3000010}, +{0x3000000, 0x800002, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x800002, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x800002, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x800002, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x800002, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x800002, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x1398437, 0x0, 0x1398437, 0x3000000}, +{0x3000000, 0x1398437, 0x1, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x76, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x2b94, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x636d24, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x7fffff, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x800000, 0x1798437, 0x3000000}, +{0x3000000, 0x1398437, 0x800002, 0x1798438, 0x3000000}, +{0x3000000, 0x1398437, 0x1398437, 0x1b98437, 0x3000000}, +{0x3000000, 0x1398437, 0xba98d27, 0xba98d2d, 0x3000010}, +{0x3000000, 0x1398437, 0xba98d7a, 0xba98d80, 0x3000010}, +{0x3000000, 0x1398437, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x1398437, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x1398437, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x1398437, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x1398437, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x1398437, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x1398437, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x1398437, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x1398437, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x1398437, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x1398437, 0x80000000, 0x1398437, 0x3000000}, +{0x3000000, 0x1398437, 0x80000001, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x80000076, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x80002b94, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x80636d24, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x807fffff, 0x1398437, 0x3000080}, +{0x3000000, 0x1398437, 0x80800000, 0xf3086e, 0x3000000}, +{0x3000000, 0x1398437, 0x80800002, 0xf3086c, 0x3000000}, +{0x3000000, 0x1398437, 0x81398437, 0x0, 0x3000000}, +{0x3000000, 0x1398437, 0x8ba98d27, 0x8ba98d21, 0x3000010}, +{0x3000000, 0x1398437, 0x8ba98d7a, 0x8ba98d74, 0x3000010}, +{0x3000000, 0x1398437, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x1398437, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x1398437, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x1398437, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x1398437, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x1398437, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x1398437, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x1398437, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x1398437, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x1398437, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x1398437, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x1398437, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x1398437, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x1398437, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x1398437, 0x9503366, 0x9503420, 0x3000010}, +{0x3000000, 0x1398437, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x1398437, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x1398437, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x1398437, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x1398437, 0x966320b, 0x96632c5, 0x3000010}, +{0x3000000, 0x1398437, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x1398437, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x1398437, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x1398437, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x1398437, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x1398437, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xba98d27, 0x0, 0xba98d27, 0x3000000}, +{0x3000000, 0xba98d27, 0x1, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x76, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x2b94, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x636d24, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x7fffff, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x800000, 0xba98d29, 0x3000000}, +{0x3000000, 0xba98d27, 0x800002, 0xba98d29, 0x3000010}, +{0x3000000, 0xba98d27, 0x1398437, 0xba98d2d, 0x3000010}, +{0x3000000, 0xba98d27, 0xba98d27, 0xc298d27, 0x3000000}, +{0x3000000, 0xba98d27, 0xba98d7a, 0xc298d50, 0x3000010}, +{0x3000000, 0xba98d27, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xba98d27, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xba98d27, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xba98d27, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xba98d27, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d27, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d27, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d27, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d27, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d27, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d27, 0x80000000, 0xba98d27, 0x3000000}, +{0x3000000, 0xba98d27, 0x80000001, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x80000076, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x80002b94, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x80636d24, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x807fffff, 0xba98d27, 0x3000080}, +{0x3000000, 0xba98d27, 0x80800000, 0xba98d25, 0x3000000}, +{0x3000000, 0xba98d27, 0x80800002, 0xba98d25, 0x3000010}, +{0x3000000, 0xba98d27, 0x81398437, 0xba98d21, 0x3000010}, +{0x3000000, 0xba98d27, 0x8ba98d27, 0x0, 0x3000000}, +{0x3000000, 0xba98d27, 0x8ba98d7a, 0x83260000, 0x3000000}, +{0x3000000, 0xba98d27, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xba98d27, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xba98d27, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xba98d27, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xba98d27, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d27, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d27, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d27, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d27, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d27, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d27, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0xba98d27, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0xba98d27, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xba98d27, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0xba98d27, 0x9503366, 0xbb00ec2, 0x3000010}, +{0x3000000, 0xba98d27, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xba98d27, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xba98d27, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xba98d27, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xba98d27, 0x966320b, 0xbb0beb7, 0x3000010}, +{0x3000000, 0xba98d27, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0xba98d27, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xba98d27, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0xba98d27, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0xba98d27, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0xba98d27, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xba98d7a, 0x0, 0xba98d7a, 0x3000000}, +{0x3000000, 0xba98d7a, 0x1, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x76, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x2b94, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x636d24, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x7fffff, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x800000, 0xba98d7c, 0x3000000}, +{0x3000000, 0xba98d7a, 0x800002, 0xba98d7c, 0x3000010}, +{0x3000000, 0xba98d7a, 0x1398437, 0xba98d80, 0x3000010}, +{0x3000000, 0xba98d7a, 0xba98d27, 0xc298d50, 0x3000010}, +{0x3000000, 0xba98d7a, 0xba98d7a, 0xc298d7a, 0x3000000}, +{0x3000000, 0xba98d7a, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xba98d7a, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xba98d7a, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xba98d7a, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xba98d7a, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d7a, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d7a, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d7a, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d7a, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d7a, 0x80000000, 0xba98d7a, 0x3000000}, +{0x3000000, 0xba98d7a, 0x80000001, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x80000076, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x80002b94, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x80636d24, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x807fffff, 0xba98d7a, 0x3000080}, +{0x3000000, 0xba98d7a, 0x80800000, 0xba98d78, 0x3000000}, +{0x3000000, 0xba98d7a, 0x80800002, 0xba98d78, 0x3000010}, +{0x3000000, 0xba98d7a, 0x81398437, 0xba98d74, 0x3000010}, +{0x3000000, 0xba98d7a, 0x8ba98d27, 0x3260000, 0x3000000}, +{0x3000000, 0xba98d7a, 0x8ba98d7a, 0x0, 0x3000000}, +{0x3000000, 0xba98d7a, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xba98d7a, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xba98d7a, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xba98d7a, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xba98d7a, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d7a, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d7a, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xba98d7a, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d7a, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d7a, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xba98d7a, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0xba98d7a, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0xba98d7a, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xba98d7a, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0xba98d7a, 0x9503366, 0xbb00f15, 0x3000010}, +{0x3000000, 0xba98d7a, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xba98d7a, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xba98d7a, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xba98d7a, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xba98d7a, 0x966320b, 0xbb0bf0a, 0x3000010}, +{0x3000000, 0xba98d7a, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0xba98d7a, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xba98d7a, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0xba98d7a, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0xba98d7a, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0xba98d7a, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x751f853a, 0x0, 0x751f853a, 0x3000000}, +{0x3000000, 0x751f853a, 0x1, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x76, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x2b94, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x636d24, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x7fffff, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x800000, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x800002, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x1398437, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xba98d27, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xba98d7a, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x751f853a, 0x759f853a, 0x3000000}, +{0x3000000, 0x751f853a, 0x7f7ffff0, 0x7f7ffffa, 0x3000010}, +{0x3000000, 0x751f853a, 0x7f7fffff, 0x7f800000, 0x3000014}, +{0x3000000, 0x751f853a, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x751f853a, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x751f853a, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x751f853a, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x751f853a, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x751f853a, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x751f853a, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x751f853a, 0x80000000, 0x751f853a, 0x3000000}, +{0x3000000, 0x751f853a, 0x80000001, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x80000076, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x80002b94, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x80636d24, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x807fffff, 0x751f853a, 0x3000080}, +{0x3000000, 0x751f853a, 0x80800000, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x80800002, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x81398437, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x8ba98d27, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x8ba98d7a, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xf51f853a, 0x0, 0x3000000}, +{0x3000000, 0x751f853a, 0xff7ffff0, 0xff7fffe6, 0x3000010}, +{0x3000000, 0x751f853a, 0xff7fffff, 0xff7ffff5, 0x3000010}, +{0x3000000, 0x751f853a, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x751f853a, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x751f853a, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x751f853a, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x751f853a, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x751f853a, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x751f853a, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x751f853a, 0x4f3495cb, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xe73a5134, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x7c994e9e, 0x7c994fdd, 0x3000010}, +{0x3000000, 0x751f853a, 0x6164bd6c, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x9503366, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xbf5a97c9, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xe6ff1a14, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x77f31e2f, 0x77f81a59, 0x3000010}, +{0x3000000, 0x751f853a, 0xaab4d7d8, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x966320b, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xb26bddee, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0xb5c8e5d3, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x317285d3, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x3c9623b1, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x51fd2c7c, 0x751f853a, 0x3000010}, +{0x3000000, 0x751f853a, 0x7b906a6c, 0x7b906f68, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x0, 0x7f7ffff0, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0x1, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x76, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x2b94, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x636d24, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x7fffff, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x800000, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x800002, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x1398437, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xba98d27, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xba98d7a, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x751f853a, 0x7f7ffffa, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x7f7ffff0, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7ffff0, 0x7f7fffff, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7ffff0, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7ffff0, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7ffff0, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7ffff0, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0x80000000, 0x7f7ffff0, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0x80000001, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x80000076, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x80002b94, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x80636d24, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x807fffff, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x7f7ffff0, 0x80800000, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x80800002, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x81398437, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x8ba98d27, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x8ba98d7a, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xf51f853a, 0x7f7fffe6, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xff7ffff0, 0x0, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0xff7fffff, 0xf5700000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7ffff0, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7ffff0, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7ffff0, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7ffff0, 0x4f3495cb, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xe73a5134, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x7c994e9e, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7ffff0, 0x6164bd6c, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x9503366, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xbf5a97c9, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xe6ff1a14, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x77f31e2f, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7ffff0, 0xaab4d7d8, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x966320b, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xb26bddee, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0xb5c8e5d3, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x317285d3, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x3c9623b1, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x51fd2c7c, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x7f7ffff0, 0x7b906a6c, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7fffff, 0x0, 0x7f7fffff, 0x3000000}, +{0x3000000, 0x7f7fffff, 0x1, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x76, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x2b94, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x636d24, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x800000, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x800002, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x1398437, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xba98d27, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xba98d7a, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x751f853a, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7fffff, 0x7f7ffff0, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7fffff, 0x7f7fffff, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7fffff, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7fffff, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7fffff, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7fffff, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0x80000000, 0x7f7fffff, 0x3000000}, +{0x3000000, 0x7f7fffff, 0x80000001, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x80000076, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x80002b94, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x80636d24, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x807fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x7f7fffff, 0x80800000, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x80800002, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x81398437, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x8ba98d27, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x8ba98d7a, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xf51f853a, 0x7f7ffff5, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xff7ffff0, 0x75700000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0xff7fffff, 0x0, 0x3000000}, +{0x3000000, 0x7f7fffff, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7fffff, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7fffff, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f7fffff, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f7fffff, 0x4f3495cb, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xe73a5134, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x7c994e9e, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7fffff, 0x6164bd6c, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x9503366, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xbf5a97c9, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xe6ff1a14, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x77f31e2f, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f7fffff, 0xaab4d7d8, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x966320b, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xb26bddee, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0xb5c8e5d3, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x317285d3, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x3c9623b1, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x51fd2c7c, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x7f7fffff, 0x7b906a6c, 0x7f800000, 0x3000014}, +{0x3000000, 0x7f800000, 0x0, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x1, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x76, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x2b94, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x636d24, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x7fffff, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x800002, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x1398437, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xba98d27, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xba98d7a, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x751f853a, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7f7ffff0, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7f7fffff, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800000, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800000, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800000, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f800000, 0x80000000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x80000001, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x80000076, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x80002b94, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x80636d24, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x807fffff, 0x7f800000, 0x3000080}, +{0x3000000, 0x7f800000, 0x80800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x80800002, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x81398437, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x8ba98d27, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x8ba98d7a, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xf51f853a, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xff7ffff0, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xff7fffff, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xff800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800000, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800000, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800000, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800000, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f800000, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f800000, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7f800000, 0x4f3495cb, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xe73a5134, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7c994e9e, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x6164bd6c, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x9503366, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xbf5a97c9, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xe6ff1a14, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x77f31e2f, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xaab4d7d8, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x966320b, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xb26bddee, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0xb5c8e5d3, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x317285d3, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x3c9623b1, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x51fd2c7c, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800000, 0x7b906a6c, 0x7f800000, 0x3000000}, +{0x3000000, 0x7f800001, 0x0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x1, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x76, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x2b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x7fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x1398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x751f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7f7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7f7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7f800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7fc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7fd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7fffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x80000000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x80000001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x80000076, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x80002b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x80636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x807fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f800001, 0x80800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x80800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x81398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x8ba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x8ba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xf51f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xff7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xff7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xff800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xffc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xffd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xffffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x4f3495cb, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xe73a5134, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7c994e9e, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x6164bd6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x9503366, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xbf5a97c9, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xe6ff1a14, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x77f31e2f, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xaab4d7d8, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x966320b, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xb26bddee, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0xb5c8e5d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x317285d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x3c9623b1, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x51fd2c7c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f800001, 0x7b906a6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x1, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x76, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x2b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x7fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x1398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x751f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7f7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7f7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7f800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7fc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7fd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7fffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x80000000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x80000001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x80000076, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x80002b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x80636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x807fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7f984a37, 0x80800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x80800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x81398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x8ba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x8ba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xf51f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xff7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xff7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xff800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xffc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xffd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xffffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x4f3495cb, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xe73a5134, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7c994e9e, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x6164bd6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x9503366, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xbf5a97c9, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xe6ff1a14, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x77f31e2f, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xaab4d7d8, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x966320b, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xb26bddee, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0xb5c8e5d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x317285d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x3c9623b1, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x51fd2c7c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7f984a37, 0x7b906a6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x1, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x76, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x2b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x7fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x1398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x751f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7f7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7f7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7f800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7fc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7fd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7fffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x80000000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x80000001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x80000076, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x80002b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x80636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x807fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x7fbfffff, 0x80800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x80800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x81398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x8ba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x8ba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xf51f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xff7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xff7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xff800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xffc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xffd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xffffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x4f3495cb, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xe73a5134, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7c994e9e, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x6164bd6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x9503366, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xbf5a97c9, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xe6ff1a14, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x77f31e2f, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xaab4d7d8, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x966320b, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xb26bddee, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x317285d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x3c9623b1, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x51fd2c7c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fbfffff, 0x7b906a6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fc00000, 0x0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x1, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x76, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x2b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x7fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x1398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x751f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7f7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7f7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7f800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fc00000, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fc00000, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fc00000, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x80000000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x80000001, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x80000076, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x80002b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x80636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x807fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fc00000, 0x80800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x80800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x81398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x8ba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x8ba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xf51f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xff7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xff7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xff800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fc00000, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fc00000, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fc00000, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x4f3495cb, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xe73a5134, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7c994e9e, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x6164bd6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x9503366, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xbf5a97c9, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xe6ff1a14, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x77f31e2f, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xaab4d7d8, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x966320b, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xb26bddee, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0xb5c8e5d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x317285d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x3c9623b1, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x51fd2c7c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fc00000, 0x7b906a6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x1, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x76, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x2b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x7fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x1398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x751f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7f7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7f800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fd9ba98, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fd9ba98, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fd9ba98, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x80000000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x80000001, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x80000076, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x80002b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x80636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x807fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fd9ba98, 0x80800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x80800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x81398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x8ba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xf51f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xff7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xff7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xff800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fd9ba98, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fd9ba98, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fd9ba98, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x4f3495cb, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xe73a5134, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7c994e9e, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x6164bd6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x9503366, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x77f31e2f, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x966320b, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xb26bddee, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x317285d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x3c9623b1, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fd9ba98, 0x7b906a6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x1, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x76, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x2b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x7fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x1398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x751f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7f7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7f7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7f800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fffffff, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fffffff, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fffffff, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x80000000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x80000001, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x80000076, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x80002b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x80636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x807fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x7fffffff, 0x80800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x80800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x81398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x8ba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x8ba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xf51f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xff7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xff7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xff800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fffffff, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fffffff, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7fffffff, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x4f3495cb, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xe73a5134, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7c994e9e, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x6164bd6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x9503366, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xbf5a97c9, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xe6ff1a14, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x77f31e2f, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xaab4d7d8, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x966320b, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xb26bddee, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0xb5c8e5d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x317285d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x3c9623b1, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x51fd2c7c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7fffffff, 0x7b906a6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80000000, 0x0, 0x0, 0x3000000}, +{0x3000000, 0x80000000, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x800000, 0x800000, 0x3000000}, +{0x3000000, 0x80000000, 0x800002, 0x800002, 0x3000000}, +{0x3000000, 0x80000000, 0x1398437, 0x1398437, 0x3000000}, +{0x3000000, 0x80000000, 0xba98d27, 0xba98d27, 0x3000000}, +{0x3000000, 0x80000000, 0xba98d7a, 0xba98d7a, 0x3000000}, +{0x3000000, 0x80000000, 0x751f853a, 0x751f853a, 0x3000000}, +{0x3000000, 0x80000000, 0x7f7ffff0, 0x7f7ffff0, 0x3000000}, +{0x3000000, 0x80000000, 0x7f7fffff, 0x7f7fffff, 0x3000000}, +{0x3000000, 0x80000000, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x80000000, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80000000, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80000000, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80000000, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80000000, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80000000, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80000000, 0x80000000, 0x80000000, 0x3000000}, +{0x3000000, 0x80000000, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x80000000, 0x80800000, 0x80800000, 0x3000000}, +{0x3000000, 0x80000000, 0x80800002, 0x80800002, 0x3000000}, +{0x3000000, 0x80000000, 0x81398437, 0x81398437, 0x3000000}, +{0x3000000, 0x80000000, 0x8ba98d27, 0x8ba98d27, 0x3000000}, +{0x3000000, 0x80000000, 0x8ba98d7a, 0x8ba98d7a, 0x3000000}, +{0x3000000, 0x80000000, 0xf51f853a, 0xf51f853a, 0x3000000}, +{0x3000000, 0x80000000, 0xff7ffff0, 0xff7ffff0, 0x3000000}, +{0x3000000, 0x80000000, 0xff7fffff, 0xff7fffff, 0x3000000}, +{0x3000000, 0x80000000, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x80000000, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80000000, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80000000, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80000000, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80000000, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80000000, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80000000, 0x4f3495cb, 0x4f3495cb, 0x3000000}, +{0x3000000, 0x80000000, 0xe73a5134, 0xe73a5134, 0x3000000}, +{0x3000000, 0x80000000, 0x7c994e9e, 0x7c994e9e, 0x3000000}, +{0x3000000, 0x80000000, 0x6164bd6c, 0x6164bd6c, 0x3000000}, +{0x3000000, 0x80000000, 0x9503366, 0x9503366, 0x3000000}, +{0x3000000, 0x80000000, 0xbf5a97c9, 0xbf5a97c9, 0x3000000}, +{0x3000000, 0x80000000, 0xe6ff1a14, 0xe6ff1a14, 0x3000000}, +{0x3000000, 0x80000000, 0x77f31e2f, 0x77f31e2f, 0x3000000}, +{0x3000000, 0x80000000, 0xaab4d7d8, 0xaab4d7d8, 0x3000000}, +{0x3000000, 0x80000000, 0x966320b, 0x966320b, 0x3000000}, +{0x3000000, 0x80000000, 0xb26bddee, 0xb26bddee, 0x3000000}, +{0x3000000, 0x80000000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000000}, +{0x3000000, 0x80000000, 0x317285d3, 0x317285d3, 0x3000000}, +{0x3000000, 0x80000000, 0x3c9623b1, 0x3c9623b1, 0x3000000}, +{0x3000000, 0x80000000, 0x51fd2c7c, 0x51fd2c7c, 0x3000000}, +{0x3000000, 0x80000000, 0x7b906a6c, 0x7b906a6c, 0x3000000}, +{0x3000000, 0x80000001, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x80000001, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x80000001, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x80000001, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x80000001, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x80000001, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x80000001, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x80000001, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x80000001, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x80000001, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000001, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000001, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000001, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000001, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000001, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000001, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x80000001, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x80000001, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x80000001, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x80000001, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x80000001, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x80000001, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x80000001, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x80000001, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x80000001, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x80000001, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000001, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000001, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000001, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000001, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000001, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000001, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x80000001, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x80000001, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x80000001, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x80000001, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x80000001, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x80000001, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x80000001, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x80000001, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x80000001, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x80000001, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x80000001, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x80000001, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x80000001, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x80000001, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x80000001, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x80000076, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x80000076, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x80000076, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x80000076, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x80000076, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x80000076, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x80000076, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x80000076, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x80000076, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x80000076, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000076, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000076, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000076, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000076, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000076, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000076, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x80000076, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x80000076, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x80000076, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x80000076, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x80000076, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x80000076, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x80000076, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x80000076, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x80000076, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x80000076, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000076, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000076, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80000076, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000076, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000076, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80000076, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x80000076, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x80000076, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x80000076, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x80000076, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x80000076, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x80000076, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x80000076, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x80000076, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x80000076, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x80000076, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x80000076, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x80000076, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x80000076, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x80000076, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x80000076, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x80002b94, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x80002b94, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x80002b94, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x80002b94, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x80002b94, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x80002b94, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x80002b94, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x80002b94, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x80002b94, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x80002b94, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80002b94, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80002b94, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80002b94, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80002b94, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80002b94, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80002b94, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x80002b94, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x80002b94, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x80002b94, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x80002b94, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x80002b94, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x80002b94, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x80002b94, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x80002b94, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x80002b94, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x80002b94, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80002b94, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80002b94, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80002b94, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80002b94, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80002b94, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80002b94, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x80002b94, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x80002b94, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x80002b94, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x80002b94, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x80002b94, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x80002b94, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x80002b94, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x80002b94, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x80002b94, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x80002b94, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x80002b94, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x80002b94, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x80002b94, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x80002b94, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x80002b94, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x80636d24, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x80636d24, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x80636d24, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x80636d24, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x80636d24, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x80636d24, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x80636d24, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x80636d24, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x80636d24, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x80636d24, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80636d24, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80636d24, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80636d24, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80636d24, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80636d24, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80636d24, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x80636d24, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x80636d24, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x80636d24, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x80636d24, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x80636d24, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x80636d24, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x80636d24, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x80636d24, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x80636d24, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x80636d24, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80636d24, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80636d24, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x80636d24, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80636d24, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80636d24, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x80636d24, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x80636d24, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x80636d24, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x80636d24, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x80636d24, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x80636d24, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x80636d24, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x80636d24, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x80636d24, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x80636d24, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x80636d24, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x80636d24, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x80636d24, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x80636d24, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x80636d24, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x80636d24, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x807fffff, 0x0, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x1, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x76, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x2b94, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x636d24, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x7fffff, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x800000, 0x800000, 0x3000080}, +{0x3000000, 0x807fffff, 0x800002, 0x800002, 0x3000080}, +{0x3000000, 0x807fffff, 0x1398437, 0x1398437, 0x3000080}, +{0x3000000, 0x807fffff, 0xba98d27, 0xba98d27, 0x3000080}, +{0x3000000, 0x807fffff, 0xba98d7a, 0xba98d7a, 0x3000080}, +{0x3000000, 0x807fffff, 0x751f853a, 0x751f853a, 0x3000080}, +{0x3000000, 0x807fffff, 0x7f7ffff0, 0x7f7ffff0, 0x3000080}, +{0x3000000, 0x807fffff, 0x7f7fffff, 0x7f7fffff, 0x3000080}, +{0x3000000, 0x807fffff, 0x7f800000, 0x7f800000, 0x3000080}, +{0x3000000, 0x807fffff, 0x7f800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x807fffff, 0x7f984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x807fffff, 0x7fbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x807fffff, 0x7fc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x807fffff, 0x7fd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x807fffff, 0x7fffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x807fffff, 0x80000000, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x80000001, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x80000076, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x80002b94, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x80636d24, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x807fffff, 0x0, 0x3000080}, +{0x3000000, 0x807fffff, 0x80800000, 0x80800000, 0x3000080}, +{0x3000000, 0x807fffff, 0x80800002, 0x80800002, 0x3000080}, +{0x3000000, 0x807fffff, 0x81398437, 0x81398437, 0x3000080}, +{0x3000000, 0x807fffff, 0x8ba98d27, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x807fffff, 0x8ba98d7a, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x807fffff, 0xf51f853a, 0xf51f853a, 0x3000080}, +{0x3000000, 0x807fffff, 0xff7ffff0, 0xff7ffff0, 0x3000080}, +{0x3000000, 0x807fffff, 0xff7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0x807fffff, 0xff800000, 0xff800000, 0x3000080}, +{0x3000000, 0x807fffff, 0xff800001, 0x7fc00000, 0x3000081}, +{0x3000000, 0x807fffff, 0xff984a37, 0x7fc00000, 0x3000081}, +{0x3000000, 0x807fffff, 0xffbfffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0x807fffff, 0xffc00000, 0x7fc00000, 0x3000080}, +{0x3000000, 0x807fffff, 0xffd9ba98, 0x7fc00000, 0x3000080}, +{0x3000000, 0x807fffff, 0xffffffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0x807fffff, 0x4f3495cb, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x807fffff, 0xe73a5134, 0xe73a5134, 0x3000080}, +{0x3000000, 0x807fffff, 0x7c994e9e, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x807fffff, 0x6164bd6c, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x807fffff, 0x9503366, 0x9503366, 0x3000080}, +{0x3000000, 0x807fffff, 0xbf5a97c9, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0x807fffff, 0xe6ff1a14, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0x807fffff, 0x77f31e2f, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x807fffff, 0xaab4d7d8, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0x807fffff, 0x966320b, 0x966320b, 0x3000080}, +{0x3000000, 0x807fffff, 0xb26bddee, 0xb26bddee, 0x3000080}, +{0x3000000, 0x807fffff, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0x807fffff, 0x317285d3, 0x317285d3, 0x3000080}, +{0x3000000, 0x807fffff, 0x3c9623b1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x807fffff, 0x51fd2c7c, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x807fffff, 0x7b906a6c, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x80800000, 0x0, 0x80800000, 0x3000000}, +{0x3000000, 0x80800000, 0x1, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x76, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x2b94, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x636d24, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x7fffff, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x800000, 0x0, 0x3000000}, +{0x3000000, 0x80800000, 0x800002, 0x0, 0x3000008}, +{0x3000000, 0x80800000, 0x1398437, 0xf3086e, 0x3000000}, +{0x3000000, 0x80800000, 0xba98d27, 0xba98d25, 0x3000000}, +{0x3000000, 0x80800000, 0xba98d7a, 0xba98d78, 0x3000000}, +{0x3000000, 0x80800000, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x80800000, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x80800000, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x80800000, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x80800000, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800000, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800000, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800000, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800000, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800000, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800000, 0x80000000, 0x80800000, 0x3000000}, +{0x3000000, 0x80800000, 0x80000001, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x80000076, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x80002b94, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x80636d24, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x807fffff, 0x80800000, 0x3000080}, +{0x3000000, 0x80800000, 0x80800000, 0x81000000, 0x3000000}, +{0x3000000, 0x80800000, 0x80800002, 0x81000001, 0x3000000}, +{0x3000000, 0x80800000, 0x81398437, 0x81798437, 0x3000000}, +{0x3000000, 0x80800000, 0x8ba98d27, 0x8ba98d29, 0x3000000}, +{0x3000000, 0x80800000, 0x8ba98d7a, 0x8ba98d7c, 0x3000000}, +{0x3000000, 0x80800000, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x80800000, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x80800000, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x80800000, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x80800000, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800000, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800000, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800000, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800000, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800000, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800000, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x80800000, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x80800000, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x80800000, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x80800000, 0x9503366, 0x9503326, 0x3000000}, +{0x3000000, 0x80800000, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x80800000, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x80800000, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x80800000, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x80800000, 0x966320b, 0x96631cb, 0x3000000}, +{0x3000000, 0x80800000, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x80800000, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x80800000, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x80800000, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x80800000, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x80800000, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x80800002, 0x0, 0x80800002, 0x3000000}, +{0x3000000, 0x80800002, 0x1, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x76, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x2b94, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x636d24, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x7fffff, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x800000, 0x0, 0x3000008}, +{0x3000000, 0x80800002, 0x800002, 0x0, 0x3000000}, +{0x3000000, 0x80800002, 0x1398437, 0xf3086c, 0x3000000}, +{0x3000000, 0x80800002, 0xba98d27, 0xba98d25, 0x3000010}, +{0x3000000, 0x80800002, 0xba98d7a, 0xba98d78, 0x3000010}, +{0x3000000, 0x80800002, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x80800002, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x80800002, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x80800002, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x80800002, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800002, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800002, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800002, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800002, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800002, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800002, 0x80000000, 0x80800002, 0x3000000}, +{0x3000000, 0x80800002, 0x80000001, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x80000076, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x80002b94, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x80636d24, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x807fffff, 0x80800002, 0x3000080}, +{0x3000000, 0x80800002, 0x80800000, 0x81000001, 0x3000000}, +{0x3000000, 0x80800002, 0x80800002, 0x81000002, 0x3000000}, +{0x3000000, 0x80800002, 0x81398437, 0x81798438, 0x3000000}, +{0x3000000, 0x80800002, 0x8ba98d27, 0x8ba98d29, 0x3000010}, +{0x3000000, 0x80800002, 0x8ba98d7a, 0x8ba98d7c, 0x3000010}, +{0x3000000, 0x80800002, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x80800002, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x80800002, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x80800002, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x80800002, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800002, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800002, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x80800002, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800002, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800002, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x80800002, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x80800002, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x80800002, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x80800002, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x80800002, 0x9503366, 0x9503326, 0x3000010}, +{0x3000000, 0x80800002, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x80800002, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x80800002, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x80800002, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x80800002, 0x966320b, 0x96631cb, 0x3000010}, +{0x3000000, 0x80800002, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x80800002, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x80800002, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x80800002, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x80800002, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x80800002, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x81398437, 0x0, 0x81398437, 0x3000000}, +{0x3000000, 0x81398437, 0x1, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x76, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x2b94, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x636d24, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x7fffff, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x800000, 0x80f3086e, 0x3000000}, +{0x3000000, 0x81398437, 0x800002, 0x80f3086c, 0x3000000}, +{0x3000000, 0x81398437, 0x1398437, 0x0, 0x3000000}, +{0x3000000, 0x81398437, 0xba98d27, 0xba98d21, 0x3000010}, +{0x3000000, 0x81398437, 0xba98d7a, 0xba98d74, 0x3000010}, +{0x3000000, 0x81398437, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x81398437, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x81398437, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x81398437, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x81398437, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x81398437, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x81398437, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x81398437, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x81398437, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x81398437, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x81398437, 0x80000000, 0x81398437, 0x3000000}, +{0x3000000, 0x81398437, 0x80000001, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x80000076, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x80002b94, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x80636d24, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x807fffff, 0x81398437, 0x3000080}, +{0x3000000, 0x81398437, 0x80800000, 0x81798437, 0x3000000}, +{0x3000000, 0x81398437, 0x80800002, 0x81798438, 0x3000000}, +{0x3000000, 0x81398437, 0x81398437, 0x81b98437, 0x3000000}, +{0x3000000, 0x81398437, 0x8ba98d27, 0x8ba98d2d, 0x3000010}, +{0x3000000, 0x81398437, 0x8ba98d7a, 0x8ba98d80, 0x3000010}, +{0x3000000, 0x81398437, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x81398437, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x81398437, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x81398437, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x81398437, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x81398437, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x81398437, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x81398437, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x81398437, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x81398437, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x81398437, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x81398437, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x81398437, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x81398437, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x81398437, 0x9503366, 0x95032ac, 0x3000010}, +{0x3000000, 0x81398437, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x81398437, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x81398437, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x81398437, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x81398437, 0x966320b, 0x9663151, 0x3000010}, +{0x3000000, 0x81398437, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x81398437, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x81398437, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x81398437, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x81398437, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x81398437, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x0, 0x8ba98d27, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x1, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x76, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x2b94, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x636d24, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x7fffff, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x800000, 0x8ba98d25, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x800002, 0x8ba98d25, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x1398437, 0x8ba98d21, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xba98d27, 0x0, 0x3000000}, +{0x3000000, 0x8ba98d27, 0xba98d7a, 0x3260000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d27, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d27, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d27, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x80000000, 0x8ba98d27, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x80000001, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x80000076, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x80002b94, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x80636d24, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x807fffff, 0x8ba98d27, 0x3000080}, +{0x3000000, 0x8ba98d27, 0x80800000, 0x8ba98d29, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x80800002, 0x8ba98d29, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x81398437, 0x8ba98d2d, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x8ba98d27, 0x8c298d27, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x8ba98d7a, 0x8c298d50, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d27, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d27, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d27, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d27, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x9503366, 0x8ba30b8c, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x966320b, 0x8ba25b97, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x8ba98d27, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x8ba98d27, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x0, 0x8ba98d7a, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x1, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x76, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x2b94, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x636d24, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x7fffff, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x800000, 0x8ba98d78, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x800002, 0x8ba98d78, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x1398437, 0x8ba98d74, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xba98d27, 0x83260000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0xba98d7a, 0x0, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d7a, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d7a, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d7a, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x80000000, 0x8ba98d7a, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x80000001, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x80000076, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x80002b94, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x80636d24, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x807fffff, 0x8ba98d7a, 0x3000080}, +{0x3000000, 0x8ba98d7a, 0x80800000, 0x8ba98d7c, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x80800002, 0x8ba98d7c, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x81398437, 0x8ba98d80, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x8ba98d27, 0x8c298d50, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x8ba98d7a, 0x8c298d7a, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d7a, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d7a, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x8ba98d7a, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x8ba98d7a, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x9503366, 0x8ba30bdf, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x966320b, 0x8ba25bea, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x8ba98d7a, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xf51f853a, 0x0, 0xf51f853a, 0x3000000}, +{0x3000000, 0xf51f853a, 0x1, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x76, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x2b94, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x636d24, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x7fffff, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x800000, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x800002, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x1398437, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xba98d27, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xba98d7a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x751f853a, 0x0, 0x3000000}, +{0x3000000, 0xf51f853a, 0x7f7ffff0, 0x7f7fffe6, 0x3000010}, +{0x3000000, 0xf51f853a, 0x7f7fffff, 0x7f7ffff5, 0x3000010}, +{0x3000000, 0xf51f853a, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xf51f853a, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xf51f853a, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xf51f853a, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xf51f853a, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xf51f853a, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xf51f853a, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xf51f853a, 0x80000000, 0xf51f853a, 0x3000000}, +{0x3000000, 0xf51f853a, 0x80000001, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x80000076, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x80002b94, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x80636d24, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x807fffff, 0xf51f853a, 0x3000080}, +{0x3000000, 0xf51f853a, 0x80800000, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x80800002, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x81398437, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x8ba98d27, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x8ba98d7a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xf51f853a, 0xf59f853a, 0x3000000}, +{0x3000000, 0xf51f853a, 0xff7ffff0, 0xff7ffffa, 0x3000010}, +{0x3000000, 0xf51f853a, 0xff7fffff, 0xff800000, 0x3000014}, +{0x3000000, 0xf51f853a, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xf51f853a, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xf51f853a, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xf51f853a, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xf51f853a, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xf51f853a, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xf51f853a, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xf51f853a, 0x4f3495cb, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xe73a5134, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x7c994e9e, 0x7c994d5f, 0x3000010}, +{0x3000000, 0xf51f853a, 0x6164bd6c, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x9503366, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xbf5a97c9, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xe6ff1a14, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x77f31e2f, 0x77ee2205, 0x3000010}, +{0x3000000, 0xf51f853a, 0xaab4d7d8, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x966320b, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xb26bddee, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0xb5c8e5d3, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x317285d3, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x3c9623b1, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x51fd2c7c, 0xf51f853a, 0x3000010}, +{0x3000000, 0xf51f853a, 0x7b906a6c, 0x7b906570, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x0, 0xff7ffff0, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x1, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x76, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x2b94, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x636d24, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x7fffff, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x800000, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x800002, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x1398437, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xba98d27, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xba98d7a, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x751f853a, 0xff7fffe6, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x7f7ffff0, 0x0, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x7f7fffff, 0x75700000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7ffff0, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7ffff0, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7ffff0, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x80000000, 0xff7ffff0, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x80000001, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x80000076, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x80002b94, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x80636d24, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x807fffff, 0xff7ffff0, 0x3000080}, +{0x3000000, 0xff7ffff0, 0x80800000, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x80800002, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x81398437, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x8ba98d27, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x8ba98d7a, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xf51f853a, 0xff7ffffa, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xff7ffff0, 0xff800000, 0x3000014}, +{0x3000000, 0xff7ffff0, 0xff7fffff, 0xff800000, 0x3000014}, +{0x3000000, 0xff7ffff0, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7ffff0, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7ffff0, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7ffff0, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7ffff0, 0x4f3495cb, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xe73a5134, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x7c994e9e, 0xff7b357b, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x6164bd6c, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x9503366, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xbf5a97c9, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xe6ff1a14, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x77f31e2f, 0xff7ffe0a, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xaab4d7d8, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x966320b, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xb26bddee, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0xb5c8e5d3, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x317285d3, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x3c9623b1, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x51fd2c7c, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xff7ffff0, 0x7b906a6c, 0xff7edf1b, 0x3000010}, +{0x3000000, 0xff7fffff, 0x0, 0xff7fffff, 0x3000000}, +{0x3000000, 0xff7fffff, 0x1, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x76, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x2b94, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x636d24, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x7fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x800000, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x800002, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x1398437, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xba98d27, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xba98d7a, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x751f853a, 0xff7ffff5, 0x3000010}, +{0x3000000, 0xff7fffff, 0x7f7ffff0, 0xf5700000, 0x3000000}, +{0x3000000, 0xff7fffff, 0x7f7fffff, 0x0, 0x3000000}, +{0x3000000, 0xff7fffff, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xff7fffff, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7fffff, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7fffff, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7fffff, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7fffff, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7fffff, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7fffff, 0x80000000, 0xff7fffff, 0x3000000}, +{0x3000000, 0xff7fffff, 0x80000001, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x80000076, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x80002b94, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x80636d24, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x807fffff, 0xff7fffff, 0x3000080}, +{0x3000000, 0xff7fffff, 0x80800000, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x80800002, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x81398437, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x8ba98d27, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x8ba98d7a, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xf51f853a, 0xff800000, 0x3000014}, +{0x3000000, 0xff7fffff, 0xff7ffff0, 0xff800000, 0x3000014}, +{0x3000000, 0xff7fffff, 0xff7fffff, 0xff800000, 0x3000014}, +{0x3000000, 0xff7fffff, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xff7fffff, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7fffff, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7fffff, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff7fffff, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7fffff, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7fffff, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff7fffff, 0x4f3495cb, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xe73a5134, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x7c994e9e, 0xff7b358a, 0x3000010}, +{0x3000000, 0xff7fffff, 0x6164bd6c, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x9503366, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xbf5a97c9, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xe6ff1a14, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x77f31e2f, 0xff7ffe19, 0x3000010}, +{0x3000000, 0xff7fffff, 0xaab4d7d8, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x966320b, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xb26bddee, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0xb5c8e5d3, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x317285d3, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x3c9623b1, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x51fd2c7c, 0xff7fffff, 0x3000010}, +{0x3000000, 0xff7fffff, 0x7b906a6c, 0xff7edf2a, 0x3000010}, +{0x3000000, 0xff800000, 0x0, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x1, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x76, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x2b94, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x636d24, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x7fffff, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x800000, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x800002, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x1398437, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xba98d27, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xba98d7a, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x751f853a, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x7f7ffff0, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x7f7fffff, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x7f800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800000, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800000, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800000, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800000, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff800000, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff800000, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff800000, 0x80000000, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x80000001, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x80000076, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x80002b94, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x80636d24, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x807fffff, 0xff800000, 0x3000080}, +{0x3000000, 0xff800000, 0x80800000, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x80800002, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x81398437, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x8ba98d27, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x8ba98d7a, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xf51f853a, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xff7ffff0, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xff7fffff, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800000, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800000, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800000, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff800000, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff800000, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xff800000, 0x4f3495cb, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xe73a5134, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x7c994e9e, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x6164bd6c, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x9503366, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xbf5a97c9, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xe6ff1a14, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x77f31e2f, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xaab4d7d8, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x966320b, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xb26bddee, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0xb5c8e5d3, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x317285d3, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x3c9623b1, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x51fd2c7c, 0xff800000, 0x3000000}, +{0x3000000, 0xff800000, 0x7b906a6c, 0xff800000, 0x3000000}, +{0x3000000, 0xff800001, 0x0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x1, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x76, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x2b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x7fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x1398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x751f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7f7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7f7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7f800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7fc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7fd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7fffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x80000000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x80000001, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x80000076, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x80002b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x80636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x807fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff800001, 0x80800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x80800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x81398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x8ba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x8ba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xf51f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xff7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xff7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xff800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xffc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xffd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xffffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x4f3495cb, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xe73a5134, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7c994e9e, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x6164bd6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x9503366, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xbf5a97c9, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xe6ff1a14, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x77f31e2f, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xaab4d7d8, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x966320b, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xb26bddee, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0xb5c8e5d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x317285d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x3c9623b1, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x51fd2c7c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff800001, 0x7b906a6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x1, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x76, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x2b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x7fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x1398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x751f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7f7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7f7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7f800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7fc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7fd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7fffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x80000000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x80000001, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x80000076, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x80002b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x80636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x807fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0xff984a37, 0x80800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x80800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x81398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x8ba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x8ba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xf51f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xff7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xff7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xff800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xffc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xffd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xffffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x4f3495cb, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xe73a5134, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7c994e9e, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x6164bd6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x9503366, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xbf5a97c9, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xe6ff1a14, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x77f31e2f, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xaab4d7d8, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x966320b, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xb26bddee, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0xb5c8e5d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x317285d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x3c9623b1, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x51fd2c7c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xff984a37, 0x7b906a6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x1, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x76, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x2b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x7fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x1398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x751f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7f7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7f7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7f800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7fc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7fd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7fffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x80000000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x80000001, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x80000076, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x80002b94, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x80636d24, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x807fffff, 0x7fc00000, 0x3000081}, +{0x3000000, 0xffbfffff, 0x80800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x80800002, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x81398437, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x8ba98d27, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x8ba98d7a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xf51f853a, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xff7ffff0, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xff7fffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xff800000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xffc00000, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xffd9ba98, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xffffffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x4f3495cb, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xe73a5134, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7c994e9e, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x6164bd6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x9503366, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xbf5a97c9, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xe6ff1a14, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x77f31e2f, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xaab4d7d8, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x966320b, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xb26bddee, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0xb5c8e5d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x317285d3, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x3c9623b1, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x51fd2c7c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffbfffff, 0x7b906a6c, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffc00000, 0x0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x1, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x76, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x2b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x7fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x1398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x751f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7f7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7f7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7f800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffc00000, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffc00000, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffc00000, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x80000000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x80000001, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x80000076, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x80002b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x80636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x807fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffc00000, 0x80800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x80800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x81398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x8ba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x8ba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xf51f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xff7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xff7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xff800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffc00000, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffc00000, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffc00000, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x4f3495cb, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xe73a5134, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7c994e9e, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x6164bd6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x9503366, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xbf5a97c9, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xe6ff1a14, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x77f31e2f, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xaab4d7d8, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x966320b, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xb26bddee, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0xb5c8e5d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x317285d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x3c9623b1, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x51fd2c7c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffc00000, 0x7b906a6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x1, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x76, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x2b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x7fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x1398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x751f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7f7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7f7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7f800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffd9ba98, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffd9ba98, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffd9ba98, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x80000000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x80000001, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x80000076, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x80002b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x80636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x807fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffd9ba98, 0x80800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x80800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x81398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x8ba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x8ba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xf51f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xff7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xff7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xff800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffd9ba98, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffd9ba98, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffd9ba98, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x4f3495cb, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xe73a5134, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7c994e9e, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x6164bd6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x9503366, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xbf5a97c9, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xe6ff1a14, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x77f31e2f, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xaab4d7d8, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x966320b, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xb26bddee, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0xb5c8e5d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x317285d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x3c9623b1, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x51fd2c7c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffd9ba98, 0x7b906a6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x1, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x76, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x2b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x7fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x1398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x751f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7f7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7f7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7f800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffffffff, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffffffff, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffffffff, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x80000000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x80000001, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x80000076, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x80002b94, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x80636d24, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x807fffff, 0x7fc00000, 0x3000080}, +{0x3000000, 0xffffffff, 0x80800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x80800002, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x81398437, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x8ba98d27, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x8ba98d7a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xf51f853a, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xff7ffff0, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xff7fffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xff800000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffffffff, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffffffff, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xffffffff, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x4f3495cb, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xe73a5134, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7c994e9e, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x6164bd6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x9503366, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xbf5a97c9, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xe6ff1a14, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x77f31e2f, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xaab4d7d8, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x966320b, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xb26bddee, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0xb5c8e5d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x317285d3, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x3c9623b1, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x51fd2c7c, 0x7fc00000, 0x3000000}, +{0x3000000, 0xffffffff, 0x7b906a6c, 0x7fc00000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x0, 0x4f3495cb, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x1, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x76, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x2b94, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x636d24, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x7fffff, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x800000, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x800002, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x1398437, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xba98d27, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xba98d7a, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x4f3495cb, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x4f3495cb, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x4f3495cb, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x80000000, 0x4f3495cb, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x80000001, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x80000076, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x80002b94, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x80636d24, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x807fffff, 0x4f3495cb, 0x3000080}, +{0x3000000, 0x4f3495cb, 0x80800000, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x80800002, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x81398437, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x8ba98d27, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x8ba98d7a, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x4f3495cb, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x4f3495cb, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x4f3495cb, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x4f3495cb, 0x4f3495cb, 0x4fb495cb, 0x3000000}, +{0x3000000, 0x4f3495cb, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x9503366, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xbf5a97c9, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xaab4d7d8, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x966320b, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xb26bddee, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0xb5c8e5d3, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x317285d3, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x3c9623b1, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x51fd2c7c, 0x52016895, 0x3000010}, +{0x3000000, 0x4f3495cb, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xe73a5134, 0x0, 0xe73a5134, 0x3000000}, +{0x3000000, 0xe73a5134, 0x1, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x76, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x2b94, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x636d24, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x7fffff, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x800000, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x800002, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x1398437, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xba98d27, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xba98d7a, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xe73a5134, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xe73a5134, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xe73a5134, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xe73a5134, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe73a5134, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe73a5134, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe73a5134, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe73a5134, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe73a5134, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe73a5134, 0x80000000, 0xe73a5134, 0x3000000}, +{0x3000000, 0xe73a5134, 0x80000001, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x80000076, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x80002b94, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x80636d24, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x807fffff, 0xe73a5134, 0x3000080}, +{0x3000000, 0xe73a5134, 0x80800000, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x80800002, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x81398437, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x8ba98d27, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x8ba98d7a, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xe73a5134, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xe73a5134, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xe73a5134, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xe73a5134, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe73a5134, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe73a5134, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe73a5134, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe73a5134, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe73a5134, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe73a5134, 0x4f3495cb, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xe73a5134, 0xe7ba5134, 0x3000000}, +{0x3000000, 0xe73a5134, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xe73a5134, 0x6164bd6c, 0xe73a42e8, 0x3000010}, +{0x3000000, 0xe73a5134, 0x9503366, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xbf5a97c9, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xe6ff1a14, 0xe79cef1f, 0x3000000}, +{0x3000000, 0xe73a5134, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xe73a5134, 0xaab4d7d8, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x966320b, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xb26bddee, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0xb5c8e5d3, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x317285d3, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x3c9623b1, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x51fd2c7c, 0xe73a5134, 0x3000010}, +{0x3000000, 0xe73a5134, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x0, 0x7c994e9e, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x1, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x76, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x2b94, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x636d24, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x7fffff, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x800000, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x800002, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x1398437, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xba98d27, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xba98d7a, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x751f853a, 0x7c994fdd, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x7f7ffff0, 0x7f800000, 0x3000014}, +{0x3000000, 0x7c994e9e, 0x7f7fffff, 0x7f800000, 0x3000014}, +{0x3000000, 0x7c994e9e, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7c994e9e, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7c994e9e, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7c994e9e, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x80000000, 0x7c994e9e, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x80000001, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x80000076, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x80002b94, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x80636d24, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x807fffff, 0x7c994e9e, 0x3000080}, +{0x3000000, 0x7c994e9e, 0x80800000, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x80800002, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x81398437, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x8ba98d27, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x8ba98d7a, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xf51f853a, 0x7c994d5f, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xff7ffff0, 0xff7b357b, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xff7fffff, 0xff7b358a, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7c994e9e, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7c994e9e, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7c994e9e, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x4f3495cb, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xe73a5134, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x7c994e9e, 0x7d194e9e, 0x3000000}, +{0x3000000, 0x7c994e9e, 0x6164bd6c, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x9503366, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xbf5a97c9, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xe6ff1a14, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x77f31e2f, 0x7c998b66, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xaab4d7d8, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x966320b, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xb26bddee, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0xb5c8e5d3, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x317285d3, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x3c9623b1, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x51fd2c7c, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x7c994e9e, 0x7b906a6c, 0x7cbd6939, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x0, 0x6164bd6c, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x1, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x76, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x2b94, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x636d24, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x7fffff, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x800000, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x800002, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x1398437, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xba98d27, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xba98d7a, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x6164bd6c, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x6164bd6c, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x6164bd6c, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x80000000, 0x6164bd6c, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x80000001, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x80000076, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x80002b94, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x80636d24, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x807fffff, 0x6164bd6c, 0x3000080}, +{0x3000000, 0x6164bd6c, 0x80800000, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x80800002, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x81398437, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x8ba98d27, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x8ba98d7a, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x6164bd6c, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x6164bd6c, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x6164bd6c, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x4f3495cb, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xe73a5134, 0xe73a42e8, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x6164bd6c, 0x61e4bd6c, 0x3000000}, +{0x3000000, 0x6164bd6c, 0x9503366, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xbf5a97c9, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xe6ff1a14, 0xe6fefd7c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xaab4d7d8, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x966320b, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xb26bddee, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0xb5c8e5d3, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x317285d3, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x3c9623b1, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x51fd2c7c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x6164bd6c, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x9503366, 0x0, 0x9503366, 0x3000000}, +{0x3000000, 0x9503366, 0x1, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x76, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x2b94, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x636d24, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x7fffff, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x800000, 0x95033a6, 0x3000000}, +{0x3000000, 0x9503366, 0x800002, 0x95033a6, 0x3000010}, +{0x3000000, 0x9503366, 0x1398437, 0x9503420, 0x3000010}, +{0x3000000, 0x9503366, 0xba98d27, 0xbb00ec2, 0x3000010}, +{0x3000000, 0x9503366, 0xba98d7a, 0xbb00f15, 0x3000010}, +{0x3000000, 0x9503366, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x9503366, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x9503366, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x9503366, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x9503366, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x9503366, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x9503366, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x9503366, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x9503366, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x9503366, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x9503366, 0x80000000, 0x9503366, 0x3000000}, +{0x3000000, 0x9503366, 0x80000001, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x80000076, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x80002b94, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x80636d24, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x807fffff, 0x9503366, 0x3000080}, +{0x3000000, 0x9503366, 0x80800000, 0x9503326, 0x3000000}, +{0x3000000, 0x9503366, 0x80800002, 0x9503326, 0x3000010}, +{0x3000000, 0x9503366, 0x81398437, 0x95032ac, 0x3000010}, +{0x3000000, 0x9503366, 0x8ba98d27, 0x8ba30b8c, 0x3000010}, +{0x3000000, 0x9503366, 0x8ba98d7a, 0x8ba30bdf, 0x3000010}, +{0x3000000, 0x9503366, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x9503366, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x9503366, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x9503366, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x9503366, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x9503366, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x9503366, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x9503366, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x9503366, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x9503366, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x9503366, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x9503366, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x9503366, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x9503366, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x9503366, 0x9503366, 0x9d03366, 0x3000000}, +{0x3000000, 0x9503366, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x9503366, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x9503366, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x9503366, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x9503366, 0x966320b, 0x9db32b8, 0x3000010}, +{0x3000000, 0x9503366, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x9503366, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x9503366, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x9503366, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x9503366, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x9503366, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x0, 0xbf5a97c9, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0x1, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x76, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x2b94, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x636d24, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x7fffff, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x800000, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x800002, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x1398437, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xba98d27, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xba98d7a, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xbf5a97c9, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xbf5a97c9, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xbf5a97c9, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0x80000000, 0xbf5a97c9, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0x80000001, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x80000076, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x80002b94, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x80636d24, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x807fffff, 0xbf5a97c9, 0x3000080}, +{0x3000000, 0xbf5a97c9, 0x80800000, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x80800002, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x81398437, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x8ba98d27, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x8ba98d7a, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xbf5a97c9, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xbf5a97c9, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xbf5a97c9, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x9503366, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xbf5a97c9, 0xbfda97c9, 0x3000000}, +{0x3000000, 0xbf5a97c9, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xaab4d7d8, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x966320b, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xb26bddee, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0xb5c8e5d3, 0xbf5a97e2, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x317285d3, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x3c9623b1, 0xbf55e6ab, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0xbf5a97c9, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x0, 0xe6ff1a14, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x1, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x76, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x2b94, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x636d24, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x7fffff, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x800000, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x800002, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x1398437, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xba98d27, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xba98d7a, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe6ff1a14, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe6ff1a14, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe6ff1a14, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x80000000, 0xe6ff1a14, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x80000001, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x80000076, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x80002b94, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x80636d24, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x807fffff, 0xe6ff1a14, 0x3000080}, +{0x3000000, 0xe6ff1a14, 0x80800000, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x80800002, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x81398437, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x8ba98d27, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x8ba98d7a, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe6ff1a14, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe6ff1a14, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xe6ff1a14, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x4f3495cb, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xe73a5134, 0xe79cef1f, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x6164bd6c, 0xe6fefd7c, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x9503366, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xbf5a97c9, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xe6ff1a14, 0xe77f1a14, 0x3000000}, +{0x3000000, 0xe6ff1a14, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xaab4d7d8, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x966320b, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xb26bddee, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0xb5c8e5d3, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x317285d3, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x3c9623b1, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x51fd2c7c, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xe6ff1a14, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x0, 0x77f31e2f, 0x3000000}, +{0x3000000, 0x77f31e2f, 0x1, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x76, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x2b94, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x636d24, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x7fffff, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x800000, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x800002, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x1398437, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xba98d27, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xba98d7a, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x751f853a, 0x77f81a59, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x7f7ffff0, 0x7f800000, 0x3000014}, +{0x3000000, 0x77f31e2f, 0x7f7fffff, 0x7f800000, 0x3000014}, +{0x3000000, 0x77f31e2f, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x77f31e2f, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x77f31e2f, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x77f31e2f, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0x80000000, 0x77f31e2f, 0x3000000}, +{0x3000000, 0x77f31e2f, 0x80000001, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x80000076, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x80002b94, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x80636d24, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x807fffff, 0x77f31e2f, 0x3000080}, +{0x3000000, 0x77f31e2f, 0x80800000, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x80800002, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x81398437, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x8ba98d27, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x8ba98d7a, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xf51f853a, 0x77ee2205, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xff7ffff0, 0xff7ffe0a, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xff7fffff, 0xff7ffe19, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x77f31e2f, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x77f31e2f, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x77f31e2f, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x77f31e2f, 0x4f3495cb, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xe73a5134, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x7c994e9e, 0x7c998b66, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x6164bd6c, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x9503366, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xbf5a97c9, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xe6ff1a14, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x77f31e2f, 0x78731e2f, 0x3000000}, +{0x3000000, 0x77f31e2f, 0xaab4d7d8, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x966320b, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xb26bddee, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0xb5c8e5d3, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x317285d3, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x3c9623b1, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x51fd2c7c, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x77f31e2f, 0x7b906a6c, 0x7b915d8a, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x0, 0xaab4d7d8, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x1, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x76, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x2b94, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x636d24, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x7fffff, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x800000, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x800002, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x1398437, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xba98d27, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xba98d7a, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xaab4d7d8, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xaab4d7d8, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xaab4d7d8, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x80000000, 0xaab4d7d8, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x80000001, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x80000076, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x80002b94, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x80636d24, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x807fffff, 0xaab4d7d8, 0x3000080}, +{0x3000000, 0xaab4d7d8, 0x80800000, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x80800002, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x81398437, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x8ba98d27, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x8ba98d7a, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xaab4d7d8, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xaab4d7d8, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xaab4d7d8, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x9503366, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xaab4d7d8, 0xab34d7d8, 0x3000000}, +{0x3000000, 0xaab4d7d8, 0x966320b, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xb26bddee, 0xb26bdf58, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0xb5c8e5d3, 0xb5c8e5d6, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x317285d3, 0x3172802c, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0xaab4d7d8, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x966320b, 0x0, 0x966320b, 0x3000000}, +{0x3000000, 0x966320b, 0x1, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x76, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x2b94, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x636d24, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x7fffff, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x800000, 0x966324b, 0x3000000}, +{0x3000000, 0x966320b, 0x800002, 0x966324b, 0x3000010}, +{0x3000000, 0x966320b, 0x1398437, 0x96632c5, 0x3000010}, +{0x3000000, 0x966320b, 0xba98d27, 0xbb0beb7, 0x3000010}, +{0x3000000, 0x966320b, 0xba98d7a, 0xbb0bf0a, 0x3000010}, +{0x3000000, 0x966320b, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x966320b, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x966320b, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x966320b, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x966320b, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x966320b, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x966320b, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x966320b, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x966320b, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x966320b, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x966320b, 0x80000000, 0x966320b, 0x3000000}, +{0x3000000, 0x966320b, 0x80000001, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x80000076, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x80002b94, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x80636d24, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x807fffff, 0x966320b, 0x3000080}, +{0x3000000, 0x966320b, 0x80800000, 0x96631cb, 0x3000000}, +{0x3000000, 0x966320b, 0x80800002, 0x96631cb, 0x3000010}, +{0x3000000, 0x966320b, 0x81398437, 0x9663151, 0x3000010}, +{0x3000000, 0x966320b, 0x8ba98d27, 0x8ba25b97, 0x3000010}, +{0x3000000, 0x966320b, 0x8ba98d7a, 0x8ba25bea, 0x3000010}, +{0x3000000, 0x966320b, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x966320b, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x966320b, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x966320b, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x966320b, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x966320b, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x966320b, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x966320b, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x966320b, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x966320b, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x966320b, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x966320b, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x966320b, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x966320b, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x966320b, 0x9503366, 0x9db32b8, 0x3000010}, +{0x3000000, 0x966320b, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x966320b, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x966320b, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x966320b, 0xaab4d7d8, 0xaab4d7d8, 0x3000010}, +{0x3000000, 0x966320b, 0x966320b, 0x9e6320b, 0x3000000}, +{0x3000000, 0x966320b, 0xb26bddee, 0xb26bddee, 0x3000010}, +{0x3000000, 0x966320b, 0xb5c8e5d3, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0x966320b, 0x317285d3, 0x317285d3, 0x3000010}, +{0x3000000, 0x966320b, 0x3c9623b1, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x966320b, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x966320b, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xb26bddee, 0x0, 0xb26bddee, 0x3000000}, +{0x3000000, 0xb26bddee, 0x1, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x76, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x2b94, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x636d24, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x7fffff, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x800000, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0x800002, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0x1398437, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0xba98d27, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0xba98d7a, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xb26bddee, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xb26bddee, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xb26bddee, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xb26bddee, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb26bddee, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb26bddee, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb26bddee, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb26bddee, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb26bddee, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb26bddee, 0x80000000, 0xb26bddee, 0x3000000}, +{0x3000000, 0xb26bddee, 0x80000001, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x80000076, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x80002b94, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x80636d24, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x807fffff, 0xb26bddee, 0x3000080}, +{0x3000000, 0xb26bddee, 0x80800000, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0x80800002, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0x81398437, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0x8ba98d27, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0x8ba98d7a, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xb26bddee, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xb26bddee, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xb26bddee, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xb26bddee, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb26bddee, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb26bddee, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb26bddee, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb26bddee, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb26bddee, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb26bddee, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0xb26bddee, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0xb26bddee, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xb26bddee, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0xb26bddee, 0x9503366, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0xb26bddee, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xb26bddee, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xb26bddee, 0xaab4d7d8, 0xb26bdf58, 0x3000010}, +{0x3000000, 0xb26bddee, 0x966320b, 0xb26bddee, 0x3000010}, +{0x3000000, 0xb26bddee, 0xb26bddee, 0xb2ebddee, 0x3000000}, +{0x3000000, 0xb26bddee, 0xb5c8e5d3, 0xb5cabd8f, 0x3000010}, +{0x3000000, 0xb26bddee, 0x317285d3, 0xb22f3c79, 0x3000010}, +{0x3000000, 0xb26bddee, 0x3c9623b1, 0x3c9623aa, 0x3000010}, +{0x3000000, 0xb26bddee, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0xb26bddee, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x0, 0xb5c8e5d3, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x1, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x76, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x2b94, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x636d24, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x7fffff, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x800000, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x800002, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x1398437, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xba98d27, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xba98d7a, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb5c8e5d3, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb5c8e5d3, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb5c8e5d3, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x80000000, 0xb5c8e5d3, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x80000001, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x80000076, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x80002b94, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x80636d24, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x807fffff, 0xb5c8e5d3, 0x3000080}, +{0x3000000, 0xb5c8e5d3, 0x80800000, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x80800002, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x81398437, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x8ba98d27, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x8ba98d7a, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb5c8e5d3, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb5c8e5d3, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0xb5c8e5d3, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x9503366, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xbf5a97c9, 0xbf5a97e2, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xaab4d7d8, 0xb5c8e5d6, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x966320b, 0xb5c8e5d3, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xb26bddee, 0xb5cabd8f, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0xb5c8e5d3, 0xb648e5d3, 0x3000000}, +{0x3000000, 0xb5c8e5d3, 0x317285d3, 0xb5c86c90, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x3c9623b1, 0x3c96208d, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0xb5c8e5d3, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x317285d3, 0x0, 0x317285d3, 0x3000000}, +{0x3000000, 0x317285d3, 0x1, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x76, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x2b94, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x636d24, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x7fffff, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x800000, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0x800002, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0x1398437, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0xba98d27, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0xba98d7a, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x317285d3, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x317285d3, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x317285d3, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x317285d3, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x317285d3, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x317285d3, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x317285d3, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x317285d3, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x317285d3, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x317285d3, 0x80000000, 0x317285d3, 0x3000000}, +{0x3000000, 0x317285d3, 0x80000001, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x80000076, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x80002b94, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x80636d24, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x807fffff, 0x317285d3, 0x3000080}, +{0x3000000, 0x317285d3, 0x80800000, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0x80800002, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0x81398437, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0x8ba98d27, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0x8ba98d7a, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x317285d3, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x317285d3, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x317285d3, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x317285d3, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x317285d3, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x317285d3, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x317285d3, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x317285d3, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x317285d3, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x317285d3, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x317285d3, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x317285d3, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x317285d3, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x317285d3, 0x9503366, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0xbf5a97c9, 0xbf5a97c9, 0x3000010}, +{0x3000000, 0x317285d3, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x317285d3, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x317285d3, 0xaab4d7d8, 0x3172802c, 0x3000010}, +{0x3000000, 0x317285d3, 0x966320b, 0x317285d3, 0x3000010}, +{0x3000000, 0x317285d3, 0xb26bddee, 0xb22f3c79, 0x3000010}, +{0x3000000, 0x317285d3, 0xb5c8e5d3, 0xb5c86c90, 0x3000010}, +{0x3000000, 0x317285d3, 0x317285d3, 0x31f285d3, 0x3000000}, +{0x3000000, 0x317285d3, 0x3c9623b1, 0x3c9623b3, 0x3000010}, +{0x3000000, 0x317285d3, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x317285d3, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x0, 0x3c9623b1, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x1, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x76, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x2b94, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x636d24, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x7fffff, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x800000, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x800002, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x1398437, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xba98d27, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xba98d7a, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x3c9623b1, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x3c9623b1, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x3c9623b1, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x80000000, 0x3c9623b1, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x80000001, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x80000076, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x80002b94, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x80636d24, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x807fffff, 0x3c9623b1, 0x3000080}, +{0x3000000, 0x3c9623b1, 0x80800000, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x80800002, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x81398437, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x8ba98d27, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x8ba98d7a, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x3c9623b1, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x3c9623b1, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x3c9623b1, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x4f3495cb, 0x4f3495cb, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x9503366, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xbf5a97c9, 0xbf55e6ab, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xaab4d7d8, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x966320b, 0x3c9623b1, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xb26bddee, 0x3c9623aa, 0x3000010}, +{0x3000000, 0x3c9623b1, 0xb5c8e5d3, 0x3c96208d, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x317285d3, 0x3c9623b3, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x3c9623b1, 0x3d1623b1, 0x3000000}, +{0x3000000, 0x3c9623b1, 0x51fd2c7c, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x3c9623b1, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x0, 0x51fd2c7c, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x1, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x76, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x2b94, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x636d24, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x7fffff, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x800000, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x800002, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x1398437, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xba98d27, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xba98d7a, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x751f853a, 0x751f853a, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x7f7ffff0, 0x7f7ffff0, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x7f7fffff, 0x7f7fffff, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x51fd2c7c, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x51fd2c7c, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x51fd2c7c, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x80000000, 0x51fd2c7c, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x80000001, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x80000076, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x80002b94, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x80636d24, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x807fffff, 0x51fd2c7c, 0x3000080}, +{0x3000000, 0x51fd2c7c, 0x80800000, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x80800002, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x81398437, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x8ba98d27, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x8ba98d7a, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xf51f853a, 0xf51f853a, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xff7ffff0, 0xff7ffff0, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xff7fffff, 0xff7fffff, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x51fd2c7c, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x51fd2c7c, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x51fd2c7c, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x4f3495cb, 0x52016895, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xe73a5134, 0xe73a5134, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x7c994e9e, 0x7c994e9e, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x6164bd6c, 0x6164bd6c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x9503366, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xbf5a97c9, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xe6ff1a14, 0xe6ff1a14, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x77f31e2f, 0x77f31e2f, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xaab4d7d8, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x966320b, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xb26bddee, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0xb5c8e5d3, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x317285d3, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x3c9623b1, 0x51fd2c7c, 0x3000010}, +{0x3000000, 0x51fd2c7c, 0x51fd2c7c, 0x527d2c7c, 0x3000000}, +{0x3000000, 0x51fd2c7c, 0x7b906a6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x0, 0x7b906a6c, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x1, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x76, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x2b94, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x636d24, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x7fffff, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x800000, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x800002, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x1398437, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xba98d27, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xba98d7a, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x751f853a, 0x7b906f68, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x7f7ffff0, 0x7f800000, 0x3000014}, +{0x3000000, 0x7b906a6c, 0x7f7fffff, 0x7f800000, 0x3000014}, +{0x3000000, 0x7b906a6c, 0x7f800000, 0x7f800000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x7f800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7b906a6c, 0x7f984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7b906a6c, 0x7fbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7b906a6c, 0x7fc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x7fd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x7fffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x80000000, 0x7b906a6c, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x80000001, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x80000076, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x80002b94, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x80636d24, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x807fffff, 0x7b906a6c, 0x3000080}, +{0x3000000, 0x7b906a6c, 0x80800000, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x80800002, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x81398437, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x8ba98d27, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x8ba98d7a, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xf51f853a, 0x7b906570, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xff7ffff0, 0xff7edf1b, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xff7fffff, 0xff7edf2a, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xff800000, 0xff800000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0xff800001, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7b906a6c, 0xff984a37, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7b906a6c, 0xffbfffff, 0x7fc00000, 0x3000001}, +{0x3000000, 0x7b906a6c, 0xffc00000, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0xffd9ba98, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0xffffffff, 0x7fc00000, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x4f3495cb, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xe73a5134, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x7c994e9e, 0x7cbd6939, 0x3000000}, +{0x3000000, 0x7b906a6c, 0x6164bd6c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x9503366, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xbf5a97c9, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xe6ff1a14, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x77f31e2f, 0x7b915d8a, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xaab4d7d8, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x966320b, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xb26bddee, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0xb5c8e5d3, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x317285d3, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x3c9623b1, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x51fd2c7c, 0x7b906a6c, 0x3000010}, +{0x3000000, 0x7b906a6c, 0x7b906a6c, 0x7c106a6c, 0x3000000}, From 718423e506da5e08384770ea06634f34c9e0657f Mon Sep 17 00:00:00 2001 From: B3n30 Date: Wed, 26 Jul 2017 21:06:40 +0200 Subject: [PATCH 036/195] Network: Moved NintendoOUI initalization to RoomMember constructor --- src/network/room.cpp | 5 +++-- src/network/room.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/network/room.cpp b/src/network/room.cpp index 8b7915bb70..fbbaf8b93a 100644 --- a/src/network/room.cpp +++ b/src/network/room.cpp @@ -19,7 +19,7 @@ static constexpr u32 MaxConcurrentConnections = 10; class Room::RoomImpl { public: // This MAC address is used to generate a 'Nintendo' like Mac address. - const MacAddress NintendoOUI = {0x00, 0x1F, 0x32, 0x00, 0x00, 0x00}; + const MacAddress NintendoOUI; std::mt19937 random_gen; ///< Random number generator. Used for GenerateMacAddress ENetHost* server = nullptr; ///< Network interface. @@ -36,7 +36,8 @@ public: using MemberList = std::vector; MemberList members; ///< Information about the members of this room. - RoomImpl() : random_gen(std::random_device()()) {} + RoomImpl() + : random_gen(std::random_device()()), NintendoOUI{0x00, 0x1F, 0x32, 0x00, 0x00, 0x00} {} /// Thread that receives and dispatches network packets std::unique_ptr room_thread; diff --git a/src/network/room.h b/src/network/room.h index 54cccf0ae3..65b0d008a1 100644 --- a/src/network/room.h +++ b/src/network/room.h @@ -24,7 +24,7 @@ struct RoomInformation { using MacAddress = std::array; /// A special MAC address that tells the room we're joining to assign us a MAC address /// automatically. -const MacAddress NoPreferredMac = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; +constexpr MacAddress NoPreferredMac = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // 802.11 broadcast MAC address constexpr MacAddress BroadcastMac = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; From c89f804a01ef4c54de6051c3ce8c70d7e66812b0 Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 27 Jul 2017 13:48:27 +0300 Subject: [PATCH 037/195] pica/shader_interpreter: fix off-by-one in LOOP --- src/video_core/shader/shader_interpreter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_core/shader/shader_interpreter.cpp b/src/video_core/shader/shader_interpreter.cpp index aa1cec81ff..206c0978ad 100644 --- a/src/video_core/shader/shader_interpreter.cpp +++ b/src/video_core/shader/shader_interpreter.cpp @@ -631,7 +631,7 @@ static void RunInterpreter(const ShaderSetup& setup, UnitState& state, DebugData state.address_registers[2] = loop_param.y; Record(debug_data, iteration, loop_param); - call(program_counter + 1, instr.flow_control.dest_offset - program_counter + 1, + call(program_counter + 1, instr.flow_control.dest_offset - program_counter, instr.flow_control.dest_offset + 1, loop_param.x, loop_param.z); break; } From a7dae7fd70baaf6b05668d4c14ce99dc54044159 Mon Sep 17 00:00:00 2001 From: j-selby Date: Thu, 27 Jul 2017 14:29:33 +1000 Subject: [PATCH 038/195] Produce 7zip artifacts on Travis and Appveyor --- .travis-deps.sh | 2 +- .travis-upload.sh | 5 +++++ .travis.yml | 3 ++- appveyor.yml | 15 +++++++++++++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.travis-deps.sh b/.travis-deps.sh index 4518869845..25a287c7fc 100755 --- a/.travis-deps.sh +++ b/.travis-deps.sh @@ -36,5 +36,5 @@ if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then elif [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update - brew install qt5 sdl2 dylibbundler + brew install qt5 sdl2 dylibbundler p7zip fi diff --git a/.travis-upload.sh b/.travis-upload.sh index 2cc968298f..8cfab31cbd 100755 --- a/.travis-upload.sh +++ b/.travis-upload.sh @@ -124,6 +124,11 @@ EOL tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$REV_NAME" + mv "$REV_NAME" nightly + + 7z a "$REV_NAME.7z" nightly + # move the compiled archive into the artifacts directory to be uploaded by travis releases mv "$ARCHIVE_NAME" artifacts/ + mv "$REV_NAME.7z" artifacts/ fi diff --git a/.travis.yml b/.travis.yml index cdb638f7a2..8467588817 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ addons: - libqt5opengl5-dev - xorg-dev - lib32stdc++6 # For CMake + - p7zip-full cache: directories: @@ -33,7 +34,7 @@ deploy: api_key: secure: Mck15DIWaJdxDiS3aYVlM9N3G6y8VKUI1rnwII7/iolfm1s94U+tgvbheZDmT7SSbFyaGaYO/E8HrV/uZR9Vvs7ev20sHsTN1u60OTWfDIIyHs9SqjhcGbtq95m9/dMFschOYqTOR+gAs5BsxjuoeAotHdhpQEwvkO2oo5oR0zhGy45gjFnVvtcxT/IfpZBIpVgcK3aLb9zT6ekcJbSiPmEB15iLq3xXd0nFUNtEZdX3D6Veye4n5jB6n72qN8JVoKvPZAwaC2K0pZxpcGJaXDchLsw1q+4eCvdz6UJfUemeQ/uMAmjfeQ3wrzYGXe3nCM3WmX5wosCsB0mw4zYatzl3si6CZ1W+0GkV4Rwlx03dfp7v3EeFhTsXYCaXqhwuLZnWOLUik8t9vaSoFUx4nUIRwfO9kAMUJQSpLuHNO2nT01s3GxvqxzczuLQ9he5nGSi0RRodUzDwek1qUp6I4uV3gRHKz4B07YIc1i2fK88NLXjyQ0uLVZ+7Oq1+kgDp6+N7vvXXZ5qZ17tdaysSbKEE0Y8zsoXw7Rk1tPN19vrCS+TSpomNMyQyne1k+I5iZ/qkxPTLAS5qI6Utc2dL3GJdxWRAEfGNO9AIX3GV/jmmKfdcvwGsCYP8hxqs5vLYfgacw3D8NLf1941lQUwavC17jm9EV9g5G3Pn1Cp516E= file_glob: true - file: "artifacts/*.tar.*" + file: "artifacts/*" skip_cleanup: true on: repo: citra-emu/citra-nightly diff --git a/appveyor.yml b/appveyor.yml index 9a6206a8b8..d062a1f3e7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -37,16 +37,25 @@ after_build: # Where are these spaces coming from? Regardless, let's remove them $MSVC_BUILD_NAME = "citra-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" $MSVC_BUILD_PDB = "citra-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" + $MSVC_SEVENZIP = "citra-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" $BINTRAY_VERSION = "nightly-$GIT_LONG_HASH" -replace " ", "" # set the build names as env vars so the artifacts can upload them $env:MSVC_BUILD_NAME = $MSVC_BUILD_NAME $env:MSVC_BUILD_PDB = $MSVC_BUILD_PDB + $env:MSVC_SEVENZIP = $MSVC_SEVENZIP $env:GITREV = $GITREV 7z a -tzip $MSVC_BUILD_PDB .\build\bin\release\*.pdb rm .\build\bin\release\*.pdb - 7z a -tzip $MSVC_BUILD_NAME .\build\bin\release\* .\license.txt .\README.md + + mkdir nightly + Copy-Item .\build\bin\release\* -Destination nightly -Recurse + Copy-Item .\license.txt -Destination nightly + Copy-Item .\README.md -Destination nightly + + 7z a -tzip $MSVC_BUILD_NAME nightly\* + 7z a $MSVC_SEVENZIP nightly test_script: - cd build && ctest -VV -C Release && cd .. @@ -58,6 +67,8 @@ artifacts: - path: $(MSVC_BUILD_PDB) name: msvcdebug type: zip + - path: $(MSVC_SEVENZIP) + name: msvcupdate deploy: provider: GitHub @@ -68,7 +79,7 @@ deploy: Short Commit Hash $(GITREV) auth_token: secure: "dbpsMC/MgPKWFNJCXpQl4cR8FYhepkPLjgNp/pRMktZ8oLKTqPYErfreaIxb/4P1" - artifact: msvcbuild + artifact: msvcupdate,msvcbuild draft: false prerelease: false on: From 941a722ff1d862fa7b0c2ba73ff9c003324da281 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 31 Jul 2017 16:59:34 +1000 Subject: [PATCH 039/195] Handle invalid filenames when renaming files/directories --- src/core/file_sys/archive_sdmc.cpp | 41 ++++++++++++++++++++++++-- src/core/file_sys/savedata_archive.cpp | 41 ++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 4 deletions(-) diff --git a/src/core/file_sys/archive_sdmc.cpp b/src/core/file_sys/archive_sdmc.cpp index 679909d069..fe3dce5d4d 100644 --- a/src/core/file_sys/archive_sdmc.cpp +++ b/src/core/file_sys/archive_sdmc.cpp @@ -121,7 +121,25 @@ ResultCode SDMCArchive::DeleteFile(const Path& path) const { } ResultCode SDMCArchive::RenameFile(const Path& src_path, const Path& dest_path) const { - if (FileUtil::Rename(mount_point + src_path.AsString(), mount_point + dest_path.AsString())) { + const PathParser path_parser_src(src_path); + + // TODO: Verify these return codes with HW + if (!path_parser_src.IsValid()) { + LOG_ERROR(Service_FS, "Invalid src path %s", src_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const PathParser path_parser_dest(dest_path); + + if (!path_parser_dest.IsValid()) { + LOG_ERROR(Service_FS, "Invalid dest path %s", dest_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const auto src_path_full = path_parser_src.BuildHostPath(mount_point); + const auto dest_path_full = path_parser_dest.BuildHostPath(mount_point); + + if (FileUtil::Rename(src_path_full, dest_path_full)) { return RESULT_SUCCESS; } @@ -260,8 +278,27 @@ ResultCode SDMCArchive::CreateDirectory(const Path& path) const { } ResultCode SDMCArchive::RenameDirectory(const Path& src_path, const Path& dest_path) const { - if (FileUtil::Rename(mount_point + src_path.AsString(), mount_point + dest_path.AsString())) + const PathParser path_parser_src(src_path); + + // TODO: Verify these return codes with HW + if (!path_parser_src.IsValid()) { + LOG_ERROR(Service_FS, "Invalid src path %s", src_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const PathParser path_parser_dest(dest_path); + + if (!path_parser_dest.IsValid()) { + LOG_ERROR(Service_FS, "Invalid dest path %s", dest_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const auto src_path_full = path_parser_src.BuildHostPath(mount_point); + const auto dest_path_full = path_parser_dest.BuildHostPath(mount_point); + + if (FileUtil::Rename(src_path_full, dest_path_full)) { return RESULT_SUCCESS; + } // TODO(yuriks): This code probably isn't right, it'll return a Status even if the file didn't // exist or similar. Verify. diff --git a/src/core/file_sys/savedata_archive.cpp b/src/core/file_sys/savedata_archive.cpp index f540c4a931..f8f811ba0e 100644 --- a/src/core/file_sys/savedata_archive.cpp +++ b/src/core/file_sys/savedata_archive.cpp @@ -106,7 +106,25 @@ ResultCode SaveDataArchive::DeleteFile(const Path& path) const { } ResultCode SaveDataArchive::RenameFile(const Path& src_path, const Path& dest_path) const { - if (FileUtil::Rename(mount_point + src_path.AsString(), mount_point + dest_path.AsString())) { + const PathParser path_parser_src(src_path); + + // TODO: Verify these return codes with HW + if (!path_parser_src.IsValid()) { + LOG_ERROR(Service_FS, "Invalid src path %s", src_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const PathParser path_parser_dest(dest_path); + + if (!path_parser_dest.IsValid()) { + LOG_ERROR(Service_FS, "Invalid dest path %s", dest_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const auto src_path_full = path_parser_src.BuildHostPath(mount_point); + const auto dest_path_full = path_parser_dest.BuildHostPath(mount_point); + + if (FileUtil::Rename(src_path_full, dest_path_full)) { return RESULT_SUCCESS; } @@ -247,8 +265,27 @@ ResultCode SaveDataArchive::CreateDirectory(const Path& path) const { } ResultCode SaveDataArchive::RenameDirectory(const Path& src_path, const Path& dest_path) const { - if (FileUtil::Rename(mount_point + src_path.AsString(), mount_point + dest_path.AsString())) + const PathParser path_parser_src(src_path); + + // TODO: Verify these return codes with HW + if (!path_parser_src.IsValid()) { + LOG_ERROR(Service_FS, "Invalid src path %s", src_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const PathParser path_parser_dest(dest_path); + + if (!path_parser_dest.IsValid()) { + LOG_ERROR(Service_FS, "Invalid dest path %s", dest_path.DebugStr().c_str()); + return ERROR_INVALID_PATH; + } + + const auto src_path_full = path_parser_src.BuildHostPath(mount_point); + const auto dest_path_full = path_parser_dest.BuildHostPath(mount_point); + + if (FileUtil::Rename(src_path_full, dest_path_full)) { return RESULT_SUCCESS; + } // TODO(yuriks): This code probably isn't right, it'll return a Status even if the file didn't // exist or similar. Verify. From c59ed47608367de8cd5e4e6d58da02dee30810a9 Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 2 Aug 2017 22:05:53 +0300 Subject: [PATCH 040/195] SwRasterizer/Lighting: move quaternion normalization to the caller --- src/video_core/swrasterizer/rasterizer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 37d1313cf8..80ecf72ec8 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -141,7 +141,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( } // Use the normalized the quaternion when performing the rotation - auto normal = Math::QuaternionRotate(normquat.Normalized(), surface_normal); + auto normal = Math::QuaternionRotate(normquat, surface_normal); Math::Vec4 diffuse_sum = {0.0f, 0.0f, 0.0f, 1.0f}; Math::Vec4 specular_sum = {0.0f, 0.0f, 0.0f, 1.0f}; @@ -664,12 +664,12 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve Math::Vec4 secondary_fragment_color = {0, 0, 0, 0}; if (!g_state.regs.lighting.disable) { - Math::Quaternion normquat{ + Math::Quaternion normquat = Math::Quaternion{ {GetInterpolatedAttribute(v0.quat.x, v1.quat.x, v2.quat.x).ToFloat32(), GetInterpolatedAttribute(v0.quat.y, v1.quat.y, v2.quat.y).ToFloat32(), GetInterpolatedAttribute(v0.quat.z, v1.quat.z, v2.quat.z).ToFloat32()}, GetInterpolatedAttribute(v0.quat.w, v1.quat.w, v2.quat.w).ToFloat32(), - }; + }.Normalized(); Math::Vec3 view{ GetInterpolatedAttribute(v0.view.x, v1.view.x, v2.view.x).ToFloat32(), From 48b410587116c92339d936ed3b1fd00aba38d6b5 Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 2 Aug 2017 22:07:15 +0300 Subject: [PATCH 041/195] SwRasterizer/Lighting: reduce confusion --- src/video_core/swrasterizer/rasterizer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 80ecf72ec8..aee6309542 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -118,7 +118,7 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut_index, u8 index, float delta) { ASSERT_MSG(lut_index < lighting.luts.size(), "Out of range lut"); - ASSERT_MSG(index < lighting.luts[0].size(), "Out of range index"); + ASSERT_MSG(index < lighting.luts[lut_index].size(), "Out of range index"); const auto& lut = lighting.luts[lut_index][index]; From eda28266fb1f0eb96a2096cadb41b62db3dc2d2e Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 2 Aug 2017 22:20:40 +0300 Subject: [PATCH 042/195] SwRasterizer/Lighting: move to its own file --- src/video_core/CMakeLists.txt | 2 + .../swrasterizer/fragment_lighting.cpp | 250 ++++++++++++++++++ .../swrasterizer/fragment_lighting.h | 18 ++ src/video_core/swrasterizer/rasterizer.cpp | 241 +---------------- 4 files changed, 271 insertions(+), 240 deletions(-) create mode 100644 src/video_core/swrasterizer/fragment_lighting.cpp create mode 100644 src/video_core/swrasterizer/fragment_lighting.h diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index 0961a3251a..b2280f2efd 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -14,6 +14,7 @@ set(SRCS shader/shader.cpp shader/shader_interpreter.cpp swrasterizer/clipper.cpp + swrasterizer/fragment_lighting.cpp swrasterizer/framebuffer.cpp swrasterizer/proctex.cpp swrasterizer/rasterizer.cpp @@ -54,6 +55,7 @@ set(HEADERS shader/shader.h shader/shader_interpreter.h swrasterizer/clipper.h + swrasterizer/fragment_lighting.h swrasterizer/framebuffer.h swrasterizer/proctex.h swrasterizer/rasterizer.h diff --git a/src/video_core/swrasterizer/fragment_lighting.cpp b/src/video_core/swrasterizer/fragment_lighting.cpp new file mode 100644 index 0000000000..45a86b5cde --- /dev/null +++ b/src/video_core/swrasterizer/fragment_lighting.cpp @@ -0,0 +1,250 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/math_util.h" +#include "video_core/swrasterizer/fragment_lighting.h" + +namespace Pica { + +static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut_index, u8 index, + float delta) { + ASSERT_MSG(lut_index < lighting.luts.size(), "Out of range lut"); + ASSERT_MSG(index < lighting.luts[lut_index].size(), "Out of range index"); + + const auto& lut = lighting.luts[lut_index][index]; + + float lut_value = lut.ToFloat(); + float lut_diff = lut.DiffToFloat(); + + return lut_value + lut_diff * delta; +} + +std::tuple, Math::Vec4> ComputeFragmentsColors( + const Pica::LightingRegs& lighting, const Pica::State::Lighting& lighting_state, + const Math::Quaternion& normquat, const Math::Vec3& view) { + + // TODO(Subv): Bump mapping + Math::Vec3 surface_normal = {0.0f, 0.0f, 1.0f}; + + if (lighting.config0.bump_mode != LightingRegs::LightingBumpMode::None) { + LOG_CRITICAL(HW_GPU, "unimplemented bump mapping"); + UNIMPLEMENTED(); + } + + // Use the normalized the quaternion when performing the rotation + auto normal = Math::QuaternionRotate(normquat, surface_normal); + + Math::Vec4 diffuse_sum = {0.0f, 0.0f, 0.0f, 1.0f}; + Math::Vec4 specular_sum = {0.0f, 0.0f, 0.0f, 1.0f}; + + for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { + unsigned num = lighting.light_enable.GetNum(light_index); + const auto& light_config = lighting.light[num]; + + Math::Vec3 refl_value = {}; + Math::Vec3 position = {float16::FromRaw(light_config.x).ToFloat32(), + float16::FromRaw(light_config.y).ToFloat32(), + float16::FromRaw(light_config.z).ToFloat32()}; + Math::Vec3 light_vector; + + if (light_config.config.directional) + light_vector = position; + else + light_vector = position + view; + + light_vector.Normalize(); + + float dist_atten = 1.0f; + if (!lighting.IsDistAttenDisabled(num)) { + auto distance = (-view - position).Length(); + float scale = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); + float bias = Pica::float20::FromRaw(light_config.dist_atten_bias).ToFloat32(); + size_t lut = + static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; + + float sample_loc = MathUtil::Clamp(scale * distance + bias, 0.0f, 1.0f); + + u8 lutindex = + static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.0f), 0.0f, 255.0f)); + float delta = sample_loc * 256 - lutindex; + dist_atten = LookupLightingLut(lighting_state, lut, lutindex, delta); + } + + auto GetLutValue = [&](LightingRegs::LightingLutInput input, bool abs, + LightingRegs::LightingScale scale_enum, + LightingRegs::LightingSampler sampler) { + Math::Vec3 norm_view = view.Normalized(); + Math::Vec3 half_angle = (norm_view + light_vector).Normalized(); + float result = 0.0f; + + switch (input) { + case LightingRegs::LightingLutInput::NH: + result = Math::Dot(normal, half_angle); + break; + + case LightingRegs::LightingLutInput::VH: + result = Math::Dot(norm_view, half_angle); + break; + + case LightingRegs::LightingLutInput::NV: + result = Math::Dot(normal, norm_view); + break; + + case LightingRegs::LightingLutInput::LN: + result = Math::Dot(light_vector, normal); + break; + + default: + LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %u\n", static_cast(input)); + UNIMPLEMENTED(); + result = 0.0f; + } + + u8 index; + float delta; + + if (abs) { + if (light_config.config.two_sided_diffuse) + result = std::abs(result); + else + result = std::max(result, 0.0f); + + float flr = std::floor(result * 256.0f); + index = static_cast(MathUtil::Clamp(flr, 0.0f, 255.0f)); + delta = result * 256 - index; + } else { + float flr = std::floor(result * 128.0f); + s8 signed_index = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); + delta = result * 128.0f - signed_index; + index = static_cast(signed_index); + } + + float scale = lighting.lut_scale.GetScale(scale_enum); + return scale * + LookupLightingLut(lighting_state, static_cast(sampler), index, delta); + }; + + // Specular 0 component + float d0_lut_value = 1.0f; + if (lighting.config1.disable_lut_d0 == 0 && + LightingRegs::IsLightingSamplerSupported( + lighting.config0.config, LightingRegs::LightingSampler::Distribution0)) { + d0_lut_value = + GetLutValue(lighting.lut_input.d0, lighting.abs_lut_input.disable_d0 == 0, + lighting.lut_scale.d0, LightingRegs::LightingSampler::Distribution0); + } + + Math::Vec3 specular_0 = d0_lut_value * light_config.specular_0.ToVec3f(); + + // If enabled, lookup ReflectRed value, otherwise, 1.0 is used + if (lighting.config1.disable_lut_rr == 0 && + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::ReflectRed)) { + refl_value.x = + GetLutValue(lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0, + lighting.lut_scale.rr, LightingRegs::LightingSampler::ReflectRed); + } else { + refl_value.x = 1.0f; + } + + // If enabled, lookup ReflectGreen value, otherwise, ReflectRed value is used + if (lighting.config1.disable_lut_rg == 0 && + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::ReflectGreen)) { + refl_value.y = + GetLutValue(lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0, + lighting.lut_scale.rg, LightingRegs::LightingSampler::ReflectGreen); + } else { + refl_value.y = refl_value.x; + } + + // If enabled, lookup ReflectBlue value, otherwise, ReflectRed value is used + if (lighting.config1.disable_lut_rb == 0 && + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::ReflectBlue)) { + refl_value.z = + GetLutValue(lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0, + lighting.lut_scale.rb, LightingRegs::LightingSampler::ReflectBlue); + } else { + refl_value.z = refl_value.x; + } + + // Specular 1 component + float d1_lut_value = 1.0f; + if (lighting.config1.disable_lut_d1 == 0 && + LightingRegs::IsLightingSamplerSupported( + lighting.config0.config, LightingRegs::LightingSampler::Distribution1)) { + d1_lut_value = + GetLutValue(lighting.lut_input.d1, lighting.abs_lut_input.disable_d1 == 0, + lighting.lut_scale.d1, LightingRegs::LightingSampler::Distribution1); + } + + Math::Vec3 specular_1 = + d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); + + // Fresnel + if (lighting.config1.disable_lut_fr == 0 && + LightingRegs::IsLightingSamplerSupported(lighting.config0.config, + LightingRegs::LightingSampler::Fresnel)) { + + float lut_value = + GetLutValue(lighting.lut_input.fr, lighting.abs_lut_input.disable_fr == 0, + lighting.lut_scale.fr, LightingRegs::LightingSampler::Fresnel); + + // Enabled for diffuse lighting alpha component + if (lighting.config0.fresnel_selector == + LightingRegs::LightingFresnelSelector::PrimaryAlpha || + lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { + diffuse_sum.a() *= lut_value; + } + + // Enabled for the specular lighting alpha component + if (lighting.config0.fresnel_selector == + LightingRegs::LightingFresnelSelector::SecondaryAlpha || + lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { + specular_sum.a() *= lut_value; + } + } + + auto dot_product = Math::Dot(light_vector, normal); + + // Calculate clamp highlights before applying the two-sided diffuse configuration to the dot + // product. + float clamp_highlights = 1.0f; + if (lighting.config0.clamp_highlights) { + if (dot_product <= 0.0f) + clamp_highlights = 0.0f; + else + clamp_highlights = 1.0f; + } + + if (light_config.config.two_sided_diffuse) + dot_product = std::abs(dot_product); + else + dot_product = std::max(dot_product, 0.0f); + + auto diffuse = + light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); + diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); + + specular_sum += + Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.0f); + } + + diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); + + auto diffuse = Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, + MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255) + .Cast(); + auto specular = Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, + MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255) + .Cast(); + return {diffuse, specular}; +} + +} // namespace Pica diff --git a/src/video_core/swrasterizer/fragment_lighting.h b/src/video_core/swrasterizer/fragment_lighting.h new file mode 100644 index 0000000000..438dca926b --- /dev/null +++ b/src/video_core/swrasterizer/fragment_lighting.h @@ -0,0 +1,18 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include "common/quaternion.h" +#include "common/vector_math.h" +#include "video_core/pica_state.h" + +namespace Pica { + +std::tuple, Math::Vec4> ComputeFragmentsColors( + const Pica::LightingRegs& lighting, const Pica::State::Lighting& lighting_state, + const Math::Quaternion& normquat, const Math::Vec3& view); + +} // namespace Pica diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index aee6309542..bc7e1c56cc 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -24,6 +24,7 @@ #include "video_core/regs_rasterizer.h" #include "video_core/regs_texturing.h" #include "video_core/shader/shader.h" +#include "video_core/swrasterizer/fragment_lighting.h" #include "video_core/swrasterizer/framebuffer.h" #include "video_core/swrasterizer/proctex.h" #include "video_core/swrasterizer/rasterizer.h" @@ -115,246 +116,6 @@ static std::tuple ConvertCubeCoord(float24 u, float24 v return std::make_tuple(x / z * half + half, y / z * half + half, addr); } -static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut_index, u8 index, - float delta) { - ASSERT_MSG(lut_index < lighting.luts.size(), "Out of range lut"); - ASSERT_MSG(index < lighting.luts[lut_index].size(), "Out of range index"); - - const auto& lut = lighting.luts[lut_index][index]; - - float lut_value = lut.ToFloat(); - float lut_diff = lut.DiffToFloat(); - - return lut_value + lut_diff * delta; -} - -std::tuple, Math::Vec4> ComputeFragmentsColors( - const Pica::LightingRegs& lighting, const Pica::State::Lighting& lighting_state, - const Math::Quaternion& normquat, const Math::Vec3& view) { - - // TODO(Subv): Bump mapping - Math::Vec3 surface_normal = {0.0f, 0.0f, 1.0f}; - - if (lighting.config0.bump_mode != LightingRegs::LightingBumpMode::None) { - LOG_CRITICAL(HW_GPU, "unimplemented bump mapping"); - UNIMPLEMENTED(); - } - - // Use the normalized the quaternion when performing the rotation - auto normal = Math::QuaternionRotate(normquat, surface_normal); - - Math::Vec4 diffuse_sum = {0.0f, 0.0f, 0.0f, 1.0f}; - Math::Vec4 specular_sum = {0.0f, 0.0f, 0.0f, 1.0f}; - - for (unsigned light_index = 0; light_index <= lighting.max_light_index; ++light_index) { - unsigned num = lighting.light_enable.GetNum(light_index); - const auto& light_config = lighting.light[num]; - - Math::Vec3 refl_value = {}; - Math::Vec3 position = {float16::FromRaw(light_config.x).ToFloat32(), - float16::FromRaw(light_config.y).ToFloat32(), - float16::FromRaw(light_config.z).ToFloat32()}; - Math::Vec3 light_vector; - - if (light_config.config.directional) - light_vector = position; - else - light_vector = position + view; - - light_vector.Normalize(); - - float dist_atten = 1.0f; - if (!lighting.IsDistAttenDisabled(num)) { - auto distance = (-view - position).Length(); - float scale = Pica::float20::FromRaw(light_config.dist_atten_scale).ToFloat32(); - float bias = Pica::float20::FromRaw(light_config.dist_atten_bias).ToFloat32(); - size_t lut = - static_cast(LightingRegs::LightingSampler::DistanceAttenuation) + num; - - float sample_loc = MathUtil::Clamp(scale * distance + bias, 0.0f, 1.0f); - - u8 lutindex = - static_cast(MathUtil::Clamp(std::floor(sample_loc * 256.0f), 0.0f, 255.0f)); - float delta = sample_loc * 256 - lutindex; - dist_atten = LookupLightingLut(lighting_state, lut, lutindex, delta); - } - - auto GetLutValue = [&](LightingRegs::LightingLutInput input, bool abs, - LightingRegs::LightingScale scale_enum, - LightingRegs::LightingSampler sampler) { - Math::Vec3 norm_view = view.Normalized(); - Math::Vec3 half_angle = (norm_view + light_vector).Normalized(); - float result = 0.0f; - - switch (input) { - case LightingRegs::LightingLutInput::NH: - result = Math::Dot(normal, half_angle); - break; - - case LightingRegs::LightingLutInput::VH: - result = Math::Dot(norm_view, half_angle); - break; - - case LightingRegs::LightingLutInput::NV: - result = Math::Dot(normal, norm_view); - break; - - case LightingRegs::LightingLutInput::LN: - result = Math::Dot(light_vector, normal); - break; - - default: - LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %u\n", static_cast(input)); - UNIMPLEMENTED(); - result = 0.0f; - } - - u8 index; - float delta; - - if (abs) { - if (light_config.config.two_sided_diffuse) - result = std::abs(result); - else - result = std::max(result, 0.0f); - - float flr = std::floor(result * 256.0f); - index = static_cast(MathUtil::Clamp(flr, 0.0f, 255.0f)); - delta = result * 256 - index; - } else { - float flr = std::floor(result * 128.0f); - s8 signed_index = static_cast(MathUtil::Clamp(flr, -128.0f, 127.0f)); - delta = result * 128.0f - signed_index; - index = static_cast(signed_index); - } - - float scale = lighting.lut_scale.GetScale(scale_enum); - return scale * - LookupLightingLut(lighting_state, static_cast(sampler), index, delta); - }; - - // Specular 0 component - float d0_lut_value = 1.0f; - if (lighting.config1.disable_lut_d0 == 0 && - LightingRegs::IsLightingSamplerSupported( - lighting.config0.config, LightingRegs::LightingSampler::Distribution0)) { - d0_lut_value = - GetLutValue(lighting.lut_input.d0, lighting.abs_lut_input.disable_d0 == 0, - lighting.lut_scale.d0, LightingRegs::LightingSampler::Distribution0); - } - - Math::Vec3 specular_0 = d0_lut_value * light_config.specular_0.ToVec3f(); - - // If enabled, lookup ReflectRed value, otherwise, 1.0 is used - if (lighting.config1.disable_lut_rr == 0 && - LightingRegs::IsLightingSamplerSupported(lighting.config0.config, - LightingRegs::LightingSampler::ReflectRed)) { - refl_value.x = - GetLutValue(lighting.lut_input.rr, lighting.abs_lut_input.disable_rr == 0, - lighting.lut_scale.rr, LightingRegs::LightingSampler::ReflectRed); - } else { - refl_value.x = 1.0f; - } - - // If enabled, lookup ReflectGreen value, otherwise, ReflectRed value is used - if (lighting.config1.disable_lut_rg == 0 && - LightingRegs::IsLightingSamplerSupported(lighting.config0.config, - LightingRegs::LightingSampler::ReflectGreen)) { - refl_value.y = - GetLutValue(lighting.lut_input.rg, lighting.abs_lut_input.disable_rg == 0, - lighting.lut_scale.rg, LightingRegs::LightingSampler::ReflectGreen); - } else { - refl_value.y = refl_value.x; - } - - // If enabled, lookup ReflectBlue value, otherwise, ReflectRed value is used - if (lighting.config1.disable_lut_rb == 0 && - LightingRegs::IsLightingSamplerSupported(lighting.config0.config, - LightingRegs::LightingSampler::ReflectBlue)) { - refl_value.z = - GetLutValue(lighting.lut_input.rb, lighting.abs_lut_input.disable_rb == 0, - lighting.lut_scale.rb, LightingRegs::LightingSampler::ReflectBlue); - } else { - refl_value.z = refl_value.x; - } - - // Specular 1 component - float d1_lut_value = 1.0f; - if (lighting.config1.disable_lut_d1 == 0 && - LightingRegs::IsLightingSamplerSupported( - lighting.config0.config, LightingRegs::LightingSampler::Distribution1)) { - d1_lut_value = - GetLutValue(lighting.lut_input.d1, lighting.abs_lut_input.disable_d1 == 0, - lighting.lut_scale.d1, LightingRegs::LightingSampler::Distribution1); - } - - Math::Vec3 specular_1 = - d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); - - // Fresnel - if (lighting.config1.disable_lut_fr == 0 && - LightingRegs::IsLightingSamplerSupported(lighting.config0.config, - LightingRegs::LightingSampler::Fresnel)) { - - float lut_value = - GetLutValue(lighting.lut_input.fr, lighting.abs_lut_input.disable_fr == 0, - lighting.lut_scale.fr, LightingRegs::LightingSampler::Fresnel); - - // Enabled for diffuse lighting alpha component - if (lighting.config0.fresnel_selector == - LightingRegs::LightingFresnelSelector::PrimaryAlpha || - lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { - diffuse_sum.a() *= lut_value; - } - - // Enabled for the specular lighting alpha component - if (lighting.config0.fresnel_selector == - LightingRegs::LightingFresnelSelector::SecondaryAlpha || - lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { - specular_sum.a() *= lut_value; - } - } - - auto dot_product = Math::Dot(light_vector, normal); - - // Calculate clamp highlights before applying the two-sided diffuse configuration to the dot - // product. - float clamp_highlights = 1.0f; - if (lighting.config0.clamp_highlights) { - if (dot_product <= 0.0f) - clamp_highlights = 0.0f; - else - clamp_highlights = 1.0f; - } - - if (light_config.config.two_sided_diffuse) - dot_product = std::abs(dot_product); - else - dot_product = std::max(dot_product, 0.0f); - - auto diffuse = - light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); - diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); - - specular_sum += - Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.0f); - } - - diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); - - auto diffuse = Math::MakeVec(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, - MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, - MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, - MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255) - .Cast(); - auto specular = Math::MakeVec(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, - MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, - MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, - MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255) - .Cast(); - return {diffuse, specular}; -} - MICROPROFILE_DEFINE(GPU_Rasterization, "GPU", "Rasterization", MP_RGB(50, 50, 240)); /** From 2252a63f8036cdf2612243271ce29e6104f82825 Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 3 Aug 2017 12:01:31 +0300 Subject: [PATCH 043/195] SwRasterizer/Lighting: shorten file name --- src/video_core/CMakeLists.txt | 4 ++-- .../swrasterizer/{fragment_lighting.cpp => lighting.cpp} | 2 +- .../swrasterizer/{fragment_lighting.h => lighting.h} | 0 src/video_core/swrasterizer/rasterizer.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename src/video_core/swrasterizer/{fragment_lighting.cpp => lighting.cpp} (99%) rename src/video_core/swrasterizer/{fragment_lighting.h => lighting.h} (100%) diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index b2280f2efd..cffa4c9523 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -14,8 +14,8 @@ set(SRCS shader/shader.cpp shader/shader_interpreter.cpp swrasterizer/clipper.cpp - swrasterizer/fragment_lighting.cpp swrasterizer/framebuffer.cpp + swrasterizer/lighting.cpp swrasterizer/proctex.cpp swrasterizer/rasterizer.cpp swrasterizer/swrasterizer.cpp @@ -55,8 +55,8 @@ set(HEADERS shader/shader.h shader/shader_interpreter.h swrasterizer/clipper.h - swrasterizer/fragment_lighting.h swrasterizer/framebuffer.h + swrasterizer/lighting.h swrasterizer/proctex.h swrasterizer/rasterizer.h swrasterizer/swrasterizer.h diff --git a/src/video_core/swrasterizer/fragment_lighting.cpp b/src/video_core/swrasterizer/lighting.cpp similarity index 99% rename from src/video_core/swrasterizer/fragment_lighting.cpp rename to src/video_core/swrasterizer/lighting.cpp index 45a86b5cde..63088eee8c 100644 --- a/src/video_core/swrasterizer/fragment_lighting.cpp +++ b/src/video_core/swrasterizer/lighting.cpp @@ -3,7 +3,7 @@ // Refer to the license.txt file included. #include "common/math_util.h" -#include "video_core/swrasterizer/fragment_lighting.h" +#include "video_core/swrasterizer/lighting.h" namespace Pica { diff --git a/src/video_core/swrasterizer/fragment_lighting.h b/src/video_core/swrasterizer/lighting.h similarity index 100% rename from src/video_core/swrasterizer/fragment_lighting.h rename to src/video_core/swrasterizer/lighting.h diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index bc7e1c56cc..fdc1df1993 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -24,8 +24,8 @@ #include "video_core/regs_rasterizer.h" #include "video_core/regs_texturing.h" #include "video_core/shader/shader.h" -#include "video_core/swrasterizer/fragment_lighting.h" #include "video_core/swrasterizer/framebuffer.h" +#include "video_core/swrasterizer/lighting.h" #include "video_core/swrasterizer/proctex.h" #include "video_core/swrasterizer/rasterizer.h" #include "video_core/swrasterizer/texturing.h" From f5cf9960d9eb5ff5afb39c0356f42035e2dd1ccf Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 1 Aug 2017 19:51:44 -0400 Subject: [PATCH 044/195] loader: Expose program title. --- src/core/loader/loader.h | 9 +++++++++ src/core/loader/ncch.cpp | 20 ++++++++++++++++++++ src/core/loader/ncch.h | 14 ++------------ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 48bbf687dd..e731888a27 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -166,6 +166,15 @@ public: return ResultStatus::ErrorNotImplemented; } + /** + * Get the title of the application + * @param title Reference to store the application title into + * @return ResultStatus result of function + */ + virtual ResultStatus ReadTitle(std::string& title) { + return ResultStatus::ErrorNotImplemented; + } + protected: FileUtil::IOFile file; bool is_loaded = false; diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index fc4d14a595..c007069a9e 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -4,7 +4,9 @@ #include #include +#include #include +#include #include #include "common/logging/log.h" #include "common/string_util.h" @@ -420,4 +422,22 @@ ResultStatus AppLoader_NCCH::ReadRomFS(std::shared_ptr& romfs_ return ResultStatus::ErrorNotUsed; } +ResultStatus AppLoader_NCCH::ReadTitle(std::string& title) { + std::vector data; + Loader::SMDH smdh; + ReadIcon(data); + + if (!Loader::IsValidSMDH(data)) { + return ResultStatus::ErrorInvalidFormat; + } + + memcpy(&smdh, data.data(), sizeof(Loader::SMDH)); + + const auto& short_title = smdh.GetShortTitle(SMDH::TitleLanguage::English); + auto title_end = std::find(short_title.begin(), short_title.end(), u'\0'); + title = Common::UTF16ToUTF8(std::u16string{short_title.begin(), title_end}); + + return ResultStatus::Success; +} + } // namespace Loader diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index 0ebd47fd5c..e40cef7649 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -191,23 +191,13 @@ public: ResultStatus ReadLogo(std::vector& buffer) override; - /** - * Get the program id of the application - * @param out_program_id Reference to store program id into - * @return ResultStatus result of function - */ ResultStatus ReadProgramId(u64& out_program_id) override; - /** - * Get the RomFS of the application - * @param romfs_file Reference to buffer to store data - * @param offset Offset in the file to the RomFS - * @param size Size of the RomFS in bytes - * @return ResultStatus result of function - */ ResultStatus ReadRomFS(std::shared_ptr& romfs_file, u64& offset, u64& size) override; + ResultStatus ReadTitle(std::string& title) override; + private: /** * Reads an application ExeFS section of an NCCH file into AppLoader (e.g. .code, .logo, etc.) From 9b8e5bea6619606afe10dfc38b1d8f6a47ba8332 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 1 Aug 2017 19:53:35 -0400 Subject: [PATCH 045/195] core: Expose AppLoader as a public interface. --- src/core/core.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/core.h b/src/core/core.h index 4e3b6b4092..9805cc6941 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -7,6 +7,7 @@ #include #include #include "common/common_types.h" +#include "core/loader/loader.h" #include "core/memory.h" #include "core/perf_stats.h" #include "core/telemetry_session.h" @@ -14,10 +15,6 @@ class EmuWindow; class ARM_Interface; -namespace Loader { -class AppLoader; -} - namespace Core { class System { @@ -119,6 +116,10 @@ public: return status_details; } + Loader::AppLoader& GetAppLoader() const { + return *app_loader; + } + private: /** * Initialize the emulated system. From f44a1e0291ab64ea9f34a9263432f30d18f3e98d Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 1 Aug 2017 19:54:24 -0400 Subject: [PATCH 046/195] common: Add build timestamp to scm_rev. --- CMakeLists.txt | 9 ++++++++- src/common/scm_rev.cpp.in | 2 ++ src/common/scm_rev.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 79d8046d9d..ddba04ef93 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -295,11 +295,18 @@ function(create_directory_groups) endforeach() endfunction() -# generate git revision information +# Gets a UTC timstamp and sets the provided variable to it +function(get_timestamp _var) + string(TIMESTAMP timestamp UTC) + set(${_var} "${timestamp}" PARENT_SCOPE) +endfunction() + +# generate git/build information include(GetGitRevisionDescription) get_git_head_revision(GIT_REF_SPEC GIT_REV) git_describe(GIT_DESC --always --long --dirty) git_branch_name(GIT_BRANCH) +get_timestamp(BUILD_DATE) enable_testing() add_subdirectory(externals) diff --git a/src/common/scm_rev.cpp.in b/src/common/scm_rev.cpp.in index 0080db5d5d..4083095d50 100644 --- a/src/common/scm_rev.cpp.in +++ b/src/common/scm_rev.cpp.in @@ -8,6 +8,7 @@ #define GIT_BRANCH "@GIT_BRANCH@" #define GIT_DESC "@GIT_DESC@" #define BUILD_NAME "@REPO_NAME@" +#define BUILD_DATE "@BUILD_DATE@" namespace Common { @@ -15,6 +16,7 @@ const char g_scm_rev[] = GIT_REV; const char g_scm_branch[] = GIT_BRANCH; const char g_scm_desc[] = GIT_DESC; const char g_build_name[] = BUILD_NAME; +const char g_build_date[] = BUILD_DATE; } // namespace diff --git a/src/common/scm_rev.h b/src/common/scm_rev.h index e223898035..18aaa1735d 100644 --- a/src/common/scm_rev.h +++ b/src/common/scm_rev.h @@ -10,5 +10,6 @@ extern const char g_scm_rev[]; extern const char g_scm_branch[]; extern const char g_scm_desc[]; extern const char g_build_name[]; +extern const char g_build_date[]; } // namespace From a621ab68537bec0d9b3e49d29253fa378636a0a1 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 1 Aug 2017 19:55:48 -0400 Subject: [PATCH 047/195] telemetry_session: Log BuildDate and ProgramName fields. --- src/core/telemetry_session.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 841d6cfa1b..22462f8203 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -7,6 +7,7 @@ #include "common/assert.h" #include "common/scm_rev.h" #include "common/x64/cpu_detect.h" +#include "core/core.h" #include "core/settings.h" #include "core/telemetry_session.h" @@ -39,12 +40,18 @@ TelemetrySession::TelemetrySession() { std::chrono::system_clock::now().time_since_epoch()) .count()}; AddField(Telemetry::FieldType::Session, "Init_Time", init_time); + std::string program_name; + const Loader::ResultStatus res{System::GetInstance().GetAppLoader().ReadTitle(program_name)}; + if (res == Loader::ResultStatus::Success) { + AddField(Telemetry::FieldType::Session, "ProgramName", program_name); + } // Log application information const bool is_git_dirty{std::strstr(Common::g_scm_desc, "dirty") != nullptr}; AddField(Telemetry::FieldType::App, "Git_IsDirty", is_git_dirty); AddField(Telemetry::FieldType::App, "Git_Branch", Common::g_scm_branch); AddField(Telemetry::FieldType::App, "Git_Revision", Common::g_scm_rev); + AddField(Telemetry::FieldType::App, "BuildDate", Common::g_build_date); // Log user system information AddField(Telemetry::FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string); From 5c631ec9c50482e8b34d0a6f3496b5beb1648230 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 1 Aug 2017 20:00:40 -0400 Subject: [PATCH 048/195] telemetry: Add field for RequiresSharedFont. --- src/core/hle/service/apt/apt.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 4e6b7b6f5d..0109fa2b26 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -75,6 +75,10 @@ void Initialize(Service::Interface* self) { void GetSharedFont(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x44, 0, 0); // 0x00440000 IPC::RequestBuilder rb = rp.MakeBuilder(2, 2); + + // Log in telemetry if the game uses the shared font + Core::Telemetry().AddField(Telemetry::FieldType::Session, "RequiresSharedFont", true); + if (!shared_font_loaded) { LOG_ERROR(Service_APT, "shared font file missing - go dump it from your 3ds"); rb.Push(-1); // TODO: Find the right error code From 9390d54bb3fe3884a37c4d9698d448106bb30a4e Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 2 Aug 2017 22:47:50 -0400 Subject: [PATCH 049/195] telemetry: Add field for BuildName. --- src/core/telemetry_session.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 22462f8203..aca5136233 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -52,6 +52,7 @@ TelemetrySession::TelemetrySession() { AddField(Telemetry::FieldType::App, "Git_Branch", Common::g_scm_branch); AddField(Telemetry::FieldType::App, "Git_Revision", Common::g_scm_rev); AddField(Telemetry::FieldType::App, "BuildDate", Common::g_build_date); + AddField(Telemetry::FieldType::App, "BuildName", Common::g_build_name); // Log user system information AddField(Telemetry::FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string); From fb8de8985930bc76d8d39d0ff97f880798d5761a Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 2 Aug 2017 23:11:54 -0400 Subject: [PATCH 050/195] telemetry: Add field for OsPlatform. --- src/core/telemetry_session.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index aca5136233..94483f3852 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -76,6 +76,15 @@ TelemetrySession::TelemetrySession() { Common::GetCPUCaps().sse4_1); AddField(Telemetry::FieldType::UserSystem, "CPU_Extension_x64_SSE42", Common::GetCPUCaps().sse4_2); +#ifdef __APPLE__ + AddField(Telemetry::FieldType::UserSystem, "OsPlatform", "Apple"); +#elif defined(_WIN32) + AddField(Telemetry::FieldType::UserSystem, "OsPlatform", "Windows"); +#elif defined(__linux__) || defined(linux) || defined(__linux) + AddField(Telemetry::FieldType::UserSystem, "OsPlatform", "Linux"); +#else + AddField(Telemetry::FieldType::UserSystem, "OsPlatform", "Unknown"); +#endif // Log user configuration information AddField(Telemetry::FieldType::UserConfig, "Audio_EnableAudioStretching", From f55b7aefd998553648c6d7692d8dcf94057ca7ca Mon Sep 17 00:00:00 2001 From: Andrea Pascal Date: Fri, 4 Aug 2017 23:11:27 -0400 Subject: [PATCH 051/195] Quickfix typo in OpenGL 3.3 error message User pointed out on the Discord server that "nothave" is erroneously concatenated. Added a space to prevent it. --- src/citra_qt/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index 02bfdca3d7..c1ae0ccc89 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -311,7 +311,7 @@ bool GMainWindow::LoadROM(const QString& filename) { if (!gladLoadGL()) { QMessageBox::critical(this, tr("Error while initializing OpenGL 3.3 Core!"), - tr("Your GPU may not support OpenGL 3.3, or you do not" + tr("Your GPU may not support OpenGL 3.3, or you do not " "have the latest graphics driver.")); return false; } From 8bda0ca68dc1182583c0bb2634a93d2776eab3ba Mon Sep 17 00:00:00 2001 From: j-selby Date: Thu, 3 Aug 2017 15:51:48 +1000 Subject: [PATCH 052/195] Travis/AppVeyor: Deploy based upon tags --- .travis-upload.sh | 210 +++++++++++++++++++++++----------------------- .travis.yml | 2 +- appveyor.yml | 12 +-- 3 files changed, 107 insertions(+), 117 deletions(-) diff --git a/.travis-upload.sh b/.travis-upload.sh index 8cfab31cbd..17959b0e17 100755 --- a/.travis-upload.sh +++ b/.travis-upload.sh @@ -1,134 +1,132 @@ -if [ "$TRAVIS_EVENT_TYPE" = "push" ]&&[ "$TRAVIS_BRANCH" = "master" ]; then - GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`" - GITREV="`git show -s --format='%h'`" - mkdir -p artifacts +GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`" +GITREV="`git show -s --format='%h'`" +mkdir -p artifacts - if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then - REV_NAME="citra-linux-${GITDATE}-${GITREV}" - ARCHIVE_NAME="${REV_NAME}.tar.xz" - COMPRESSION_FLAGS="-cJvf" - mkdir "$REV_NAME" +if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then + REV_NAME="citra-linux-${GITDATE}-${GITREV}" + ARCHIVE_NAME="${REV_NAME}.tar.xz" + COMPRESSION_FLAGS="-cJvf" + mkdir "$REV_NAME" - cp build/src/citra/citra "$REV_NAME" - cp build/src/citra_qt/citra-qt "$REV_NAME" - elif [ "$TRAVIS_OS_NAME" = "osx" ]; then - REV_NAME="citra-osx-${GITDATE}-${GITREV}" - ARCHIVE_NAME="${REV_NAME}.tar.gz" - COMPRESSION_FLAGS="-czvf" - mkdir "$REV_NAME" + cp build/src/citra/citra "$REV_NAME" + cp build/src/citra_qt/citra-qt "$REV_NAME" +elif [ "$TRAVIS_OS_NAME" = "osx" ]; then + REV_NAME="citra-osx-${GITDATE}-${GITREV}" + ARCHIVE_NAME="${REV_NAME}.tar.gz" + COMPRESSION_FLAGS="-czvf" + mkdir "$REV_NAME" - cp build/src/citra/Release/citra "$REV_NAME" - cp -r build/src/citra_qt/Release/citra-qt.app "$REV_NAME" + cp build/src/citra/Release/citra "$REV_NAME" + cp -r build/src/citra_qt/Release/citra-qt.app "$REV_NAME" - # move qt libs into app bundle for deployment - $(brew --prefix)/opt/qt5/bin/macdeployqt "${REV_NAME}/citra-qt.app" + # move qt libs into app bundle for deployment + $(brew --prefix)/opt/qt5/bin/macdeployqt "${REV_NAME}/citra-qt.app" - # move SDL2 libs into folder for deployment - dylibbundler -b -x "${REV_NAME}/citra" -cd -d "${REV_NAME}/libs" -p "@executable_path/libs/" + # move SDL2 libs into folder for deployment + dylibbundler -b -x "${REV_NAME}/citra" -cd -d "${REV_NAME}/libs" -p "@executable_path/libs/" - # Make the changes to make the citra-qt app standalone (i.e. not dependent on the current brew installation). - # To do this, the absolute references to each and every QT framework must be re-written to point to the local frameworks - # (in the Contents/Frameworks folder). - # The "install_name_tool" is used to do so. + # Make the changes to make the citra-qt app standalone (i.e. not dependent on the current brew installation). + # To do this, the absolute references to each and every QT framework must be re-written to point to the local frameworks + # (in the Contents/Frameworks folder). + # The "install_name_tool" is used to do so. - # Coreutils is a hack to coerce Homebrew to point to the absolute Cellar path (symlink dereferenced). i.e: - # ls -l /usr/local/opt/qt5:: /usr/local/opt/qt5 -> ../Cellar/qt5/5.6.1-1 - # grealpath ../Cellar/qt5/5.6.1-1:: /usr/local/Cellar/qt5/5.6.1-1 - brew install coreutils + # Coreutils is a hack to coerce Homebrew to point to the absolute Cellar path (symlink dereferenced). i.e: + # ls -l /usr/local/opt/qt5:: /usr/local/opt/qt5 -> ../Cellar/qt5/5.6.1-1 + # grealpath ../Cellar/qt5/5.6.1-1:: /usr/local/Cellar/qt5/5.6.1-1 + brew install coreutils - REV_NAME_ALT=$REV_NAME/ - # grealpath is located in coreutils, there is no "realpath" for OS X :( - QT_BREWS_PATH=$(grealpath "$(brew --prefix qt5)") - BREW_PATH=$(brew --prefix) - QT_VERSION_NUM=5 + REV_NAME_ALT=$REV_NAME/ + # grealpath is located in coreutils, there is no "realpath" for OS X :( + QT_BREWS_PATH=$(grealpath "$(brew --prefix qt5)") + BREW_PATH=$(brew --prefix) + QT_VERSION_NUM=5 - $BREW_PATH/opt/qt5/bin/macdeployqt "${REV_NAME_ALT}citra-qt.app" \ - -executable="${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt" + $BREW_PATH/opt/qt5/bin/macdeployqt "${REV_NAME_ALT}citra-qt.app" \ + -executable="${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt" - # These are the files that macdeployqt packed into Contents/Frameworks/ - we don't want those, so we replace them. - declare -a macos_libs=("QtCore" "QtWidgets" "QtGui" "QtOpenGL" "QtPrintSupport") + # These are the files that macdeployqt packed into Contents/Frameworks/ - we don't want those, so we replace them. + declare -a macos_libs=("QtCore" "QtWidgets" "QtGui" "QtOpenGL" "QtPrintSupport") - for macos_lib in "${macos_libs[@]}" + for macos_lib in "${macos_libs[@]}" + do + SC_FRAMEWORK_PART=$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib + # Replace macdeployqt versions of the Frameworks with our own (from /usr/local/opt/qt5/lib/) + cp "$BREW_PATH/opt/qt5/lib/$SC_FRAMEWORK_PART" "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" + + # Replace references within the embedded Framework files with "internal" versions. + for macos_lib2 in "${macos_libs[@]}" do - SC_FRAMEWORK_PART=$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib - # Replace macdeployqt versions of the Frameworks with our own (from /usr/local/opt/qt5/lib/) - cp "$BREW_PATH/opt/qt5/lib/$SC_FRAMEWORK_PART" "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" - - # Replace references within the embedded Framework files with "internal" versions. - for macos_lib2 in "${macos_libs[@]}" - do - # Since brew references both the non-symlinked and symlink paths of QT5, it needs to be duplicated. - # /usr/local/Cellar/qt5/5.6.1-1/lib and /usr/local/opt/qt5/lib both resolve to the same files. - # So the two lines below are effectively duplicates when resolved as a path, but as strings, they aren't. - RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 - install_name_tool -change \ - $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" - install_name_tool -change \ - "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" - done + # Since brew references both the non-symlinked and symlink paths of QT5, it needs to be duplicated. + # /usr/local/Cellar/qt5/5.6.1-1/lib and /usr/local/opt/qt5/lib both resolve to the same files. + # So the two lines below are effectively duplicates when resolved as a path, but as strings, they aren't. + RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 + install_name_tool -change \ + $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" + install_name_tool -change \ + "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" done + done - # Handles `This application failed to start because it could not find or load the Qt platform plugin "cocoa"` - # Which manifests itself as: - # "Exception Type: EXC_CRASH (SIGABRT) | Exception Codes: 0x0000000000000000, 0x0000000000000000 | Exception Note: EXC_CORPSE_NOTIFY" - # There may be more dylibs needed to be fixed... - declare -a macos_plugins=("Plugins/platforms/libqcocoa.dylib") + # Handles `This application failed to start because it could not find or load the Qt platform plugin "cocoa"` + # Which manifests itself as: + # "Exception Type: EXC_CRASH (SIGABRT) | Exception Codes: 0x0000000000000000, 0x0000000000000000 | Exception Note: EXC_CORPSE_NOTIFY" + # There may be more dylibs needed to be fixed... + declare -a macos_plugins=("Plugins/platforms/libqcocoa.dylib") - for macos_lib in "${macos_plugins[@]}" + for macos_lib in "${macos_plugins[@]}" + do + install_name_tool -id @executable_path/../$macos_lib "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" + for macos_lib2 in "${macos_libs[@]}" do - install_name_tool -id @executable_path/../$macos_lib "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" - for macos_lib2 in "${macos_libs[@]}" - do - RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 - install_name_tool -change \ - $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" - install_name_tool -change \ - "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" - done + RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 + install_name_tool -change \ + $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" + install_name_tool -change \ + "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" done + done - for macos_lib in "${macos_libs[@]}" - do - # Debugging info for Travis-CI - otool -L "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib" - done + for macos_lib in "${macos_libs[@]}" + do + # Debugging info for Travis-CI + otool -L "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib" + done - # Make the citra-qt.app application launch a debugging terminal. - # Store away the actual binary - mv ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt-bin + # Make the citra-qt.app application launch a debugging terminal. + # Store away the actual binary + mv ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt-bin - cat > ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt < ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt < appveyor.yml - C:\ProgramData\chocolatey\lib -> appveyor.yml @@ -72,16 +69,11 @@ artifacts: deploy: provider: GitHub - release: nightly-$(appveyor_build_number) - description: | - Citra nightly releases. Please choose the correct download for your operating system from the list below. - - Short Commit Hash $(GITREV) + release: $(appveyor_repo_tag_name) auth_token: secure: "dbpsMC/MgPKWFNJCXpQl4cR8FYhepkPLjgNp/pRMktZ8oLKTqPYErfreaIxb/4P1" artifact: msvcupdate,msvcbuild draft: false prerelease: false on: - branch: master - appveyor_repo_name: citra-emu/citra-nightly + appveyor_repo_tag: true From baa24f4ea9d9c4d7c1bd60ba8a6fc188dfa9cc8f Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 3 Aug 2017 01:40:42 +0300 Subject: [PATCH 053/195] pica: upload shared shader code to both unit --- src/video_core/command_processor.cpp | 62 +++++++++++++++++----------- src/video_core/regs_pipeline.h | 9 +++- 2 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index 4633a1df10..f98ca33025 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -119,27 +119,6 @@ static void WriteUniformFloatReg(ShaderRegs& config, Shader::ShaderSetup& setup, } } -static void WriteProgramCode(ShaderRegs& config, Shader::ShaderSetup& setup, - unsigned max_program_code_length, u32 value) { - if (config.program.offset >= max_program_code_length) { - LOG_ERROR(HW_GPU, "Invalid %s program offset %d", GetShaderSetupTypeName(setup), - (int)config.program.offset); - } else { - setup.program_code[config.program.offset] = value; - config.program.offset++; - } -} - -static void WriteSwizzlePatterns(ShaderRegs& config, Shader::ShaderSetup& setup, u32 value) { - if (config.swizzle_patterns.offset >= setup.swizzle_data.size()) { - LOG_ERROR(HW_GPU, "Invalid %s swizzle pattern offset %d", GetShaderSetupTypeName(setup), - (int)config.swizzle_patterns.offset); - } else { - setup.swizzle_data[config.swizzle_patterns.offset] = value; - config.swizzle_patterns.offset++; - } -} - static void WritePicaReg(u32 id, u32 value, u32 mask) { auto& regs = g_state.regs; @@ -458,7 +437,13 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { case PICA_REG_INDEX_WORKAROUND(gs.program.set_word[5], 0x2a1): case PICA_REG_INDEX_WORKAROUND(gs.program.set_word[6], 0x2a2): case PICA_REG_INDEX_WORKAROUND(gs.program.set_word[7], 0x2a3): { - WriteProgramCode(g_state.regs.gs, g_state.gs, 4096, value); + u32& offset = g_state.regs.gs.program.offset; + if (offset >= 4096) { + LOG_ERROR(HW_GPU, "Invalid GS program offset %u", offset); + } else { + g_state.gs.program_code[offset] = value; + offset++; + } break; } @@ -470,11 +455,18 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { case PICA_REG_INDEX_WORKAROUND(gs.swizzle_patterns.set_word[5], 0x2ab): case PICA_REG_INDEX_WORKAROUND(gs.swizzle_patterns.set_word[6], 0x2ac): case PICA_REG_INDEX_WORKAROUND(gs.swizzle_patterns.set_word[7], 0x2ad): { - WriteSwizzlePatterns(g_state.regs.gs, g_state.gs, value); + u32& offset = g_state.regs.gs.swizzle_patterns.offset; + if (offset >= g_state.gs.swizzle_data.size()) { + LOG_ERROR(HW_GPU, "Invalid GS swizzle pattern offset %u", offset); + } else { + g_state.gs.swizzle_data[offset] = value; + offset++; + } break; } case PICA_REG_INDEX(vs.bool_uniforms): + // TODO (wwylele): does regs.pipeline.gs_unit_exclusive_configuration affect this? WriteUniformBoolReg(g_state.vs, g_state.regs.vs.bool_uniforms.Value()); break; @@ -482,6 +474,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { case PICA_REG_INDEX_WORKAROUND(vs.int_uniforms[1], 0x2b2): case PICA_REG_INDEX_WORKAROUND(vs.int_uniforms[2], 0x2b3): case PICA_REG_INDEX_WORKAROUND(vs.int_uniforms[3], 0x2b4): { + // TODO (wwylele): does regs.pipeline.gs_unit_exclusive_configuration affect this? unsigned index = (id - PICA_REG_INDEX_WORKAROUND(vs.int_uniforms[0], 0x2b1)); auto values = regs.vs.int_uniforms[index]; WriteUniformIntReg(g_state.vs, index, @@ -497,6 +490,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { case PICA_REG_INDEX_WORKAROUND(vs.uniform_setup.set_value[5], 0x2c6): case PICA_REG_INDEX_WORKAROUND(vs.uniform_setup.set_value[6], 0x2c7): case PICA_REG_INDEX_WORKAROUND(vs.uniform_setup.set_value[7], 0x2c8): { + // TODO (wwylele): does regs.pipeline.gs_unit_exclusive_configuration affect this? WriteUniformFloatReg(g_state.regs.vs, g_state.vs, vs_float_regs_counter, vs_uniform_write_buffer, value); break; @@ -510,7 +504,16 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { case PICA_REG_INDEX_WORKAROUND(vs.program.set_word[5], 0x2d1): case PICA_REG_INDEX_WORKAROUND(vs.program.set_word[6], 0x2d2): case PICA_REG_INDEX_WORKAROUND(vs.program.set_word[7], 0x2d3): { - WriteProgramCode(g_state.regs.vs, g_state.vs, 512, value); + u32& offset = g_state.regs.vs.program.offset; + if (offset >= 512) { + LOG_ERROR(HW_GPU, "Invalid VS program offset %u", offset); + } else { + g_state.vs.program_code[offset] = value; + if (!g_state.regs.pipeline.gs_unit_exclusive_configuration) { + g_state.gs.program_code[offset] = value; + } + offset++; + } break; } @@ -522,7 +525,16 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { case PICA_REG_INDEX_WORKAROUND(vs.swizzle_patterns.set_word[5], 0x2db): case PICA_REG_INDEX_WORKAROUND(vs.swizzle_patterns.set_word[6], 0x2dc): case PICA_REG_INDEX_WORKAROUND(vs.swizzle_patterns.set_word[7], 0x2dd): { - WriteSwizzlePatterns(g_state.regs.vs, g_state.vs, value); + u32& offset = g_state.regs.vs.swizzle_patterns.offset; + if (offset >= g_state.vs.swizzle_data.size()) { + LOG_ERROR(HW_GPU, "Invalid VS swizzle pattern offset %u", offset); + } else { + g_state.vs.swizzle_data[offset] = value; + if (!g_state.regs.pipeline.gs_unit_exclusive_configuration) { + g_state.gs.swizzle_data[offset] = value; + } + offset++; + } break; } diff --git a/src/video_core/regs_pipeline.h b/src/video_core/regs_pipeline.h index 31c747d771..8b63692979 100644 --- a/src/video_core/regs_pipeline.h +++ b/src/video_core/regs_pipeline.h @@ -202,7 +202,14 @@ struct PipelineRegs { /// Number of input attributes to the vertex shader minus 1 BitField<0, 4, u32> max_input_attrib_index; - INSERT_PADDING_WORDS(2); + INSERT_PADDING_WORDS(1); + + // The shader unit 3, which can be used for both vertex and geometry shader, gets its + // configuration depending on this register. If this is not set, unit 3 will share some + // configuration with other units. It is known that program code and swizzle pattern uploaded + // via regs.vs will be also uploaded to unit 3 if this is not set. Although very likely, it is + // still unclear whether uniforms and other configuration can be also shared. + BitField<0, 1, u32> gs_unit_exclusive_configuration; enum class GPUMode : u32 { Drawing = 0, From 73fba0de46aef0b18ef0ef5221cc23a60be4cb6c Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 22 Jul 2017 12:33:03 -0500 Subject: [PATCH 054/195] Services/APT: Use an array to hold data about the 4 possible concurrent applet types (Application, Library, HomeMenu, System). This gives each applet type its own set of events as per the real NS module. --- src/core/hle/service/apt/apt.cpp | 235 ++++++++++++++++++++++++++----- src/core/hle/service/apt/apt.h | 6 +- 2 files changed, 205 insertions(+), 36 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 0109fa2b26..9cfa9efde9 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -34,8 +34,6 @@ static bool shared_font_loaded = false; static bool shared_font_relocated = false; static Kernel::SharedPtr lock; -static Kernel::SharedPtr notification_event; ///< APT notification event -static Kernel::SharedPtr parameter_event; ///< APT parameter event static u32 cpu_percent; ///< CPU time available to the running application @@ -44,32 +42,164 @@ static u8 unknown_ns_state_field; static ScreencapPostPermission screen_capture_post_permission; -/// Parameter data to be returned in the next call to Glance/ReceiveParameter +/// Parameter data to be returned in the next call to Glance/ReceiveParameter. +/// TODO(Subv): Use std::optional once we migrate to C++17. static boost::optional next_parameter; +enum class AppletPos { Application = 0, Library = 1, System = 2, SysLibrary = 3, Resident = 4 }; + +static constexpr size_t NumAppletSlot = 4; + +enum class AppletSlot : u8 { + Application, + SystemApplet, + HomeMenu, + LibraryApplet, + + // An invalid tag + Error, +}; + +struct AppletSlotData { + AppletId applet_id; + AppletSlot slot; + bool registered; + u32 attributes; + Kernel::SharedPtr notification_event; + Kernel::SharedPtr parameter_event; +}; + +// Holds data about the concurrently running applets in the system. +static std::array applet_slots = {}; + +union AppletAttributes { + u32 raw; + + BitField<0, 3, u32> applet_pos; + + AppletAttributes(u32 attributes) : raw(attributes) {} +}; + +// Helper function to extract the AppletPos from the lower bits of the applet attributes +static u32 GetAppletPos(AppletAttributes attributes) { + return attributes.applet_pos; +} + +// This overload returns nullptr if no applet with the specified id has been started. +static AppletSlotData* GetAppletSlotData(AppletId id) { + auto GetSlot = [](AppletSlot slot) -> AppletSlotData* { + return &applet_slots[static_cast(slot)]; + }; + + if (id == AppletId::Application) { + auto* slot = GetSlot(AppletSlot::Application); + if (slot->applet_id != AppletId::None) + return slot; + + return nullptr; + } + + if (id == AppletId::AnySystemApplet) { + auto* system_slot = GetSlot(AppletSlot::SystemApplet); + if (system_slot->applet_id != AppletId::None) + return system_slot; + + // The Home Menu is also a system applet, but it lives in its own slot to be able to run + // concurrently with other system applets. + auto* home_slot = GetSlot(AppletSlot::HomeMenu); + if (home_slot->applet_id != AppletId::None) + return home_slot; + + return nullptr; + } + + if (id == AppletId::AnyLibraryApplet || id == AppletId::AnySysLibraryApplet) { + auto* slot = GetSlot(AppletSlot::LibraryApplet); + if (slot->applet_id == AppletId::None) + return nullptr; + + u32 applet_pos = GetAppletPos(slot->attributes); + + if (id == AppletId::AnyLibraryApplet && applet_pos == static_cast(AppletPos::Library)) + return slot; + + if (id == AppletId::AnySysLibraryApplet && + applet_pos == static_cast(AppletPos::SysLibrary)) + return slot; + + return nullptr; + } + + if (id == AppletId::HomeMenu || id == AppletId::AlternateMenu) { + auto* slot = GetSlot(AppletSlot::HomeMenu); + if (slot->applet_id != AppletId::None) + return slot; + + return nullptr; + } + + for (auto& slot : applet_slots) { + if (slot.applet_id == id) + return &slot; + } + + return nullptr; +} + +static AppletSlotData* GetAppletSlotData(u32 attributes) { + // Mapping from AppletPos to AppletSlot + static constexpr std::array applet_position_slots = { + AppletSlot::Application, AppletSlot::LibraryApplet, AppletSlot::SystemApplet, + AppletSlot::LibraryApplet, AppletSlot::Error, AppletSlot::LibraryApplet}; + + u32 applet_pos = GetAppletPos(attributes); + if (applet_pos >= applet_position_slots.size()) + return nullptr; + + AppletSlot slot = applet_position_slots[applet_pos]; + + if (slot == AppletSlot::Error) + return nullptr; + + return &applet_slots[static_cast(slot)]; +} + void SendParameter(const MessageParameter& parameter) { next_parameter = parameter; - // Signal the event to let the application know that a new parameter is ready to be read - parameter_event->Signal(); + // Signal the event to let the receiver know that a new parameter is ready to be read + auto* const slot_data = GetAppletSlotData(static_cast(parameter.destination_id)); + ASSERT(slot_data); + + slot_data->parameter_event->Signal(); } void Initialize(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x2, 2, 0); // 0x20080 u32 app_id = rp.Pop(); - u32 flags = rp.Pop(); + u32 attributes = rp.Pop(); + + LOG_DEBUG(Service_APT, "called app_id=0x%08X, attributes=0x%08X", app_id, attributes); + + auto* const slot_data = GetAppletSlotData(attributes); + + // Note: The real NS service does not check if the attributes value is valid before accessing + // the data in the array + ASSERT_MSG(slot_data, "Invalid application attributes"); + + if (slot_data->registered) { + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + rb.Push(ResultCode(ErrorDescription::AlreadyExists, ErrorModule::Applet, + ErrorSummary::InvalidState, ErrorLevel::Status)); + return; + } + + slot_data->applet_id = static_cast(app_id); + slot_data->attributes = attributes; + IPC::RequestBuilder rb = rp.MakeBuilder(1, 3); rb.Push(RESULT_SUCCESS); - rb.PushCopyHandles(Kernel::g_handle_table.Create(notification_event).Unwrap(), - Kernel::g_handle_table.Create(parameter_event).Unwrap()); - - // TODO(bunnei): Check if these events are cleared every time Initialize is called. - notification_event->Clear(); - parameter_event->Clear(); - - ASSERT_MSG((nullptr != lock), "Cannot initialize without lock"); - lock->Release(); - - LOG_DEBUG(Service_APT, "called app_id=0x%08X, flags=0x%08X", app_id, flags); + rb.PushCopyHandles(Kernel::g_handle_table.Create(slot_data->notification_event).Unwrap(), + Kernel::g_handle_table.Create(slot_data->parameter_event).Unwrap()); } void GetSharedFont(Service::Interface* self) { @@ -120,7 +250,12 @@ void GetLockHandle(Service::Interface* self) { // this will cause the app to wait until parameter_event is signaled. u32 applet_attributes = rp.Pop(); IPC::RequestBuilder rb = rp.MakeBuilder(3, 2); - rb.Push(RESULT_SUCCESS); // No error + rb.Push(RESULT_SUCCESS); // No error + + // TODO(Subv): The output attributes should have an AppletPos of either Library or System | + // Library (depending on the type of the last launched applet) if the input attributes' + // AppletPos has the Library bit set. + rb.Push(applet_attributes); // Applet Attributes, this value is passed to Enable. rb.Push(0); // Least significant bit = power button state Kernel::Handle handle_copy = Kernel::g_handle_table.Create(lock).Unwrap(); @@ -133,10 +268,22 @@ void GetLockHandle(Service::Interface* self) { void Enable(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x3, 1, 0); // 0x30040 u32 attributes = rp.Pop(); + + LOG_DEBUG(Service_APT, "called attributes=0x%08X", attributes); + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); - rb.Push(RESULT_SUCCESS); // No error - parameter_event->Signal(); // Let the application know that it has been started - LOG_WARNING(Service_APT, "(STUBBED) called attributes=0x%08X", attributes); + + auto* const slot_data = GetAppletSlotData(attributes); + + if (!slot_data) { + rb.Push(ResultCode(ErrCodes::InvalidAppletSlot, ErrorModule::Applet, + ErrorSummary::InvalidState, ErrorLevel::Status)); + return; + } + + slot_data->registered = true; + + rb.Push(RESULT_SUCCESS); } void GetAppletManInfo(Service::Interface* self) { @@ -154,22 +301,27 @@ void GetAppletManInfo(Service::Interface* self) { void IsRegistered(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x9, 1, 0); // 0x90040 - u32 app_id = rp.Pop(); + AppletId app_id = static_cast(rp.Pop()); IPC::RequestBuilder rb = rp.MakeBuilder(2, 0); rb.Push(RESULT_SUCCESS); // No error - // TODO(Subv): An application is considered "registered" if it has already called APT::Enable - // handle this properly once we implement multiprocess support. - bool is_registered = false; // Set to not registered by default + auto* const slot_data = GetAppletSlotData(app_id); - if (app_id == static_cast(AppletId::AnyLibraryApplet)) { - is_registered = HLE::Applets::IsLibraryAppletRunning(); - } else if (auto applet = HLE::Applets::Applet::Get(static_cast(app_id))) { - is_registered = true; // Set to registered + // Check if an LLE applet was registered first, then fallback to HLE applets + bool is_registered = slot_data && slot_data->registered; + + if (!is_registered) { + if (app_id == AppletId::AnyLibraryApplet) { + is_registered = HLE::Applets::IsLibraryAppletRunning(); + } else if (auto applet = HLE::Applets::Applet::Get(app_id)) { + // The applet exists, set it as registered. + is_registered = true; + } } + rb.Push(is_registered); - LOG_WARNING(Service_APT, "(STUBBED) called app_id=0x%08X", app_id); + LOG_DEBUG(Service_APT, "called app_id=0x%08X", static_cast(app_id)); } void InquireNotification(Service::Interface* self) { @@ -864,14 +1016,23 @@ void Init() { screen_capture_post_permission = ScreencapPostPermission::CleanThePermission; // TODO(JamePeng): verify the initial value - // TODO(bunnei): Check if these are created in Initialize or on APT process startup. - notification_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT_U:Notification"); - parameter_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT_U:Start"); + for (size_t slot = 0; slot < applet_slots.size(); ++slot) { + auto& slot_data = applet_slots[slot]; + slot_data.slot = static_cast(slot); + slot_data.applet_id = AppletId::None; + slot_data.attributes = 0; + slot_data.registered = false; + slot_data.notification_event = + Kernel::Event::Create(Kernel::ResetType::OneShot, "APT:Notification"); + slot_data.parameter_event = + Kernel::Event::Create(Kernel::ResetType::OneShot, "APT:Parameter"); + } // Initialize the parameter to wake up the application. next_parameter.emplace(); next_parameter->signal = static_cast(SignalType::Wakeup); next_parameter->destination_id = static_cast(AppletId::Application); + applet_slots[static_cast(AppletSlot::Application)].parameter_event->Signal(); } void Shutdown() { @@ -879,8 +1040,12 @@ void Shutdown() { shared_font_loaded = false; shared_font_relocated = false; lock = nullptr; - notification_event = nullptr; - parameter_event = nullptr; + + for (auto& slot : applet_slots) { + slot.registered = false; + slot.notification_event = nullptr; + slot.parameter_event = nullptr; + } next_parameter = boost::none; diff --git a/src/core/hle/service/apt/apt.h b/src/core/hle/service/apt/apt.h index 1067548534..96b28b438a 100644 --- a/src/core/hle/service/apt/apt.h +++ b/src/core/hle/service/apt/apt.h @@ -72,6 +72,8 @@ enum class SignalType : u32 { /// App Id's used by APT functions enum class AppletId : u32 { + None = 0, + AnySystemApplet = 0x100, HomeMenu = 0x101, AlternateMenu = 0x103, Camera = 0x110, @@ -83,6 +85,7 @@ enum class AppletId : u32 { Miiverse = 0x117, MiiversePost = 0x118, AmiiboSettings = 0x119, + AnySysLibraryApplet = 0x200, SoftwareKeyboard1 = 0x201, Ed1 = 0x202, PnoteApp = 0x204, @@ -119,8 +122,9 @@ enum class ScreencapPostPermission : u32 { namespace ErrCodes { enum { ParameterPresent = 2, + InvalidAppletSlot = 4, }; -} +} // namespace ErrCodes /// Send a parameter to the currently-running application, which will read it via ReceiveParameter void SendParameter(const MessageParameter& parameter); From 177e8ce655953e22b5304070694f2d2d6e65dda9 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 7 Aug 2017 16:09:55 -0500 Subject: [PATCH 055/195] Services/APT: Use the AppletAttributes union directly when dealing with applet attrs. --- src/core/hle/service/apt/apt.cpp | 34 ++++++++++++++------------------ 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 9cfa9efde9..58d94768c3 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -60,11 +60,20 @@ enum class AppletSlot : u8 { Error, }; +union AppletAttributes { + u32 raw; + + BitField<0, 3, u32> applet_pos; + + AppletAttributes() : raw(0) {} + AppletAttributes(u32 attributes) : raw(attributes) {} +}; + struct AppletSlotData { AppletId applet_id; AppletSlot slot; bool registered; - u32 attributes; + AppletAttributes attributes; Kernel::SharedPtr notification_event; Kernel::SharedPtr parameter_event; }; @@ -72,19 +81,6 @@ struct AppletSlotData { // Holds data about the concurrently running applets in the system. static std::array applet_slots = {}; -union AppletAttributes { - u32 raw; - - BitField<0, 3, u32> applet_pos; - - AppletAttributes(u32 attributes) : raw(attributes) {} -}; - -// Helper function to extract the AppletPos from the lower bits of the applet attributes -static u32 GetAppletPos(AppletAttributes attributes) { - return attributes.applet_pos; -} - // This overload returns nullptr if no applet with the specified id has been started. static AppletSlotData* GetAppletSlotData(AppletId id) { auto GetSlot = [](AppletSlot slot) -> AppletSlotData* { @@ -118,7 +114,7 @@ static AppletSlotData* GetAppletSlotData(AppletId id) { if (slot->applet_id == AppletId::None) return nullptr; - u32 applet_pos = GetAppletPos(slot->attributes); + u32 applet_pos = slot->attributes.applet_pos; if (id == AppletId::AnyLibraryApplet && applet_pos == static_cast(AppletPos::Library)) return slot; @@ -146,13 +142,13 @@ static AppletSlotData* GetAppletSlotData(AppletId id) { return nullptr; } -static AppletSlotData* GetAppletSlotData(u32 attributes) { +static AppletSlotData* GetAppletSlotData(AppletAttributes attributes) { // Mapping from AppletPos to AppletSlot static constexpr std::array applet_position_slots = { AppletSlot::Application, AppletSlot::LibraryApplet, AppletSlot::SystemApplet, AppletSlot::LibraryApplet, AppletSlot::Error, AppletSlot::LibraryApplet}; - u32 applet_pos = GetAppletPos(attributes); + u32 applet_pos = attributes.applet_pos; if (applet_pos >= applet_position_slots.size()) return nullptr; @@ -194,7 +190,7 @@ void Initialize(Service::Interface* self) { } slot_data->applet_id = static_cast(app_id); - slot_data->attributes = attributes; + slot_data->attributes.raw = attributes; IPC::RequestBuilder rb = rp.MakeBuilder(1, 3); rb.Push(RESULT_SUCCESS); @@ -1020,7 +1016,7 @@ void Init() { auto& slot_data = applet_slots[slot]; slot_data.slot = static_cast(slot); slot_data.applet_id = AppletId::None; - slot_data.attributes = 0; + slot_data.attributes.raw = 0; slot_data.registered = false; slot_data.notification_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT:Notification"); From 1a44949ef75016fa48f9daa0cf3c973ef7d3978c Mon Sep 17 00:00:00 2001 From: James Date: Tue, 8 Aug 2017 17:50:09 +1000 Subject: [PATCH 056/195] Update cryptopp --- externals/cryptopp/cryptopp | 2 +- src/core/hle/service/cfg/cfg.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/externals/cryptopp/cryptopp b/externals/cryptopp/cryptopp index 841c37e347..24bc2b8567 160000 --- a/externals/cryptopp/cryptopp +++ b/externals/cryptopp/cryptopp @@ -1 +1 @@ -Subproject commit 841c37e34765487a2968357369ab74db8b10a62d +Subproject commit 24bc2b85674254fb294e717eb5b47d9f53e786b8 diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp index 6624f17112..3dbeb27cc2 100644 --- a/src/core/hle/service/cfg/cfg.cpp +++ b/src/core/hle/service/cfg/cfg.cpp @@ -681,7 +681,7 @@ void GenerateConsoleUniqueId(u32& random_number, u64& console_id) { CryptoPP::AutoSeededRandomPool rng; random_number = rng.GenerateWord32(0, 0xFFFF); u64_le local_friend_code_seed; - rng.GenerateBlock(reinterpret_cast(&local_friend_code_seed), + rng.GenerateBlock(reinterpret_cast(&local_friend_code_seed), sizeof(local_friend_code_seed)); console_id = (local_friend_code_seed & 0x3FFFFFFFF) | (static_cast(random_number) << 48); } From a6273dd56a4a7066ef27fa186e1046db677ff578 Mon Sep 17 00:00:00 2001 From: mailwl Date: Wed, 9 Aug 2017 12:00:54 +0300 Subject: [PATCH 057/195] Service/dlp: Update function tables according 3dbrew --- src/core/hle/service/dlp/dlp_clnt.cpp | 21 ++++++++++++++++++++- src/core/hle/service/dlp/dlp_fkcl.cpp | 18 +++++++++++++++++- src/core/hle/service/dlp/dlp_srvr.cpp | 9 +++++++-- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/core/hle/service/dlp/dlp_clnt.cpp b/src/core/hle/service/dlp/dlp_clnt.cpp index 56f934b3f8..6f2bf2061e 100644 --- a/src/core/hle/service/dlp/dlp_clnt.cpp +++ b/src/core/hle/service/dlp/dlp_clnt.cpp @@ -8,7 +8,26 @@ namespace Service { namespace DLP { const Interface::FunctionInfo FunctionTable[] = { - {0x000100C3, nullptr, "Initialize"}, {0x00110000, nullptr, "GetWirelessRebootPassphrase"}, + {0x000100C3, nullptr, "Initialize"}, + {0x00020000, nullptr, "Finalize"}, + {0x00030000, nullptr, "GetEventDesc"}, + {0x00040000, nullptr, "GetChannel"}, + {0x00050180, nullptr, "StartScan"}, + {0x00060000, nullptr, "StopScan"}, + {0x00070080, nullptr, "GetServerInfo"}, + {0x00080100, nullptr, "GetTitleInfo"}, + {0x00090040, nullptr, "GetTitleInfoInOrder"}, + {0x000A0080, nullptr, "DeleteScanInfo"}, + {0x000B0100, nullptr, "PrepareForSystemDownload"}, + {0x000C0000, nullptr, "StartSystemDownload"}, + {0x000D0100, nullptr, "StartTitleDownload"}, + {0x000E0000, nullptr, "GetMyStatus"}, + {0x000F0040, nullptr, "GetConnectingNodes"}, + {0x00100040, nullptr, "GetNodeInfo"}, + {0x00110000, nullptr, "GetWirelessRebootPassphrase"}, + {0x00120000, nullptr, "StopSession"}, + {0x00130100, nullptr, "GetCupVersion"}, + {0x00140100, nullptr, "GetDupAvailability"}, }; DLP_CLNT_Interface::DLP_CLNT_Interface() { diff --git a/src/core/hle/service/dlp/dlp_fkcl.cpp b/src/core/hle/service/dlp/dlp_fkcl.cpp index 29b9d52e0b..fe6be7d320 100644 --- a/src/core/hle/service/dlp/dlp_fkcl.cpp +++ b/src/core/hle/service/dlp/dlp_fkcl.cpp @@ -8,7 +8,23 @@ namespace Service { namespace DLP { const Interface::FunctionInfo FunctionTable[] = { - {0x00010083, nullptr, "Initialize"}, {0x000F0000, nullptr, "GetWirelessRebootPassphrase"}, + {0x00010083, nullptr, "Initialize"}, + {0x00020000, nullptr, "Finalize"}, + {0x00030000, nullptr, "GetEventDesc"}, + {0x00040000, nullptr, "GetChannels"}, + {0x00050180, nullptr, "StartScan"}, + {0x00060000, nullptr, "StopScan"}, + {0x00070080, nullptr, "GetServerInfo"}, + {0x00080100, nullptr, "GetTitleInfo"}, + {0x00090040, nullptr, "GetTitleInfoInOrder"}, + {0x000A0080, nullptr, "DeleteScanInfo"}, + {0x000B0100, nullptr, "StartFakeSession"}, + {0x000C0000, nullptr, "GetMyStatus"}, + {0x000D0040, nullptr, "GetConnectingNodes"}, + {0x000E0040, nullptr, "GetNodeInfo"}, + {0x000F0000, nullptr, "GetWirelessRebootPassphrase"}, + {0x00100000, nullptr, "StopSession"}, + {0x00110203, nullptr, "Initialize2"}, }; DLP_FKCL_Interface::DLP_FKCL_Interface() { diff --git a/src/core/hle/service/dlp/dlp_srvr.cpp b/src/core/hle/service/dlp/dlp_srvr.cpp index 32cfa2c449..1bcea43d30 100644 --- a/src/core/hle/service/dlp/dlp_srvr.cpp +++ b/src/core/hle/service/dlp/dlp_srvr.cpp @@ -11,7 +11,7 @@ namespace Service { namespace DLP { -static void unk_0x000E0040(Interface* self) { +static void IsChild(Interface* self) { u32* cmd_buff = Kernel::GetCommandBuffer(); cmd_buff[1] = RESULT_SUCCESS.raw; @@ -24,14 +24,19 @@ const Interface::FunctionInfo FunctionTable[] = { {0x00010183, nullptr, "Initialize"}, {0x00020000, nullptr, "Finalize"}, {0x00030000, nullptr, "GetServerState"}, + {0x00040000, nullptr, "GetEventDescription"}, {0x00050080, nullptr, "StartAccepting"}, + {0x00060000, nullptr, "EndAccepting"}, {0x00070000, nullptr, "StartDistribution"}, {0x000800C0, nullptr, "SendWirelessRebootPassphrase"}, {0x00090040, nullptr, "AcceptClient"}, + {0x000A0040, nullptr, "DisconnectClient"}, {0x000B0042, nullptr, "GetConnectingClients"}, {0x000C0040, nullptr, "GetClientInfo"}, {0x000D0040, nullptr, "GetClientState"}, - {0x000E0040, unk_0x000E0040, "unk_0x000E0040"}, + {0x000E0040, IsChild, "IsChild"}, + {0x000F0303, nullptr, "InitializeWithName"}, + {0x00100000, nullptr, "GetDupNoticeNeed"}, }; DLP_SRVR_Interface::DLP_SRVR_Interface() { From db309b2423a996cb792273080e73906b07f8b45b Mon Sep 17 00:00:00 2001 From: wwylele Date: Mon, 24 Jul 2017 14:13:33 +0300 Subject: [PATCH 058/195] pica/regs: layout geometry shader configuration regs All the register meanings are derived from ctrulib (3dbrew is outdated for most of them) --- src/video_core/regs_pipeline.h | 34 ++++++++++++++++++++++++++++++++-- src/video_core/regs_shader.h | 7 +++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/video_core/regs_pipeline.h b/src/video_core/regs_pipeline.h index 8b63692979..e78c3e3317 100644 --- a/src/video_core/regs_pipeline.h +++ b/src/video_core/regs_pipeline.h @@ -147,7 +147,15 @@ struct PipelineRegs { // Number of vertices to render u32 num_vertices; - INSERT_PADDING_WORDS(0x1); + enum class UseGS : u32 { + No = 0, + Yes = 2, + }; + + union { + BitField<0, 2, UseGS> use_gs; + BitField<31, 1, u32> variable_primitive; + }; // The index of the first vertex to render u32 vertex_offset; @@ -218,7 +226,29 @@ struct PipelineRegs { GPUMode gpu_mode; - INSERT_PADDING_WORDS(0x18); + INSERT_PADDING_WORDS(0x4); + BitField<0, 4, u32> vs_outmap_total_minus_1_a; + INSERT_PADDING_WORDS(0x6); + BitField<0, 4, u32> vs_outmap_total_minus_1_b; + + enum class GSMode : u32 { + Point = 0, + VariablePrimitive = 1, + FixedPrimitive = 2, + }; + + union { + BitField<0, 8, GSMode> mode; + BitField<8, 4, u32> fixed_vertex_num_minus_1; + BitField<12, 4, u32> stride_minus_1; + BitField<16, 4, u32> start_index; + } gs_config; + + INSERT_PADDING_WORDS(0x1); + + u32 variable_vertex_main_num_minus_1; + + INSERT_PADDING_WORDS(0x9); enum class TriangleTopology : u32 { List = 0, diff --git a/src/video_core/regs_shader.h b/src/video_core/regs_shader.h index ddb1ee4515..c15d4d1623 100644 --- a/src/video_core/regs_shader.h +++ b/src/video_core/regs_shader.h @@ -24,9 +24,16 @@ struct ShaderRegs { INSERT_PADDING_WORDS(0x4); + enum ShaderMode { + GS = 0x08, + VS = 0xA0, + }; + union { // Number of input attributes to shader unit - 1 BitField<0, 4, u32> max_input_attribute_index; + BitField<8, 8, u32> input_to_uniform; + BitField<24, 8, ShaderMode> shader_mode; }; // Offset to shader program entry point (in words) From 80f85b429c7cfce70535e68014ed1bf5dcdfbc03 Mon Sep 17 00:00:00 2001 From: j-selby Date: Thu, 10 Aug 2017 14:17:27 +1000 Subject: [PATCH 059/195] Implement correct folder structure for CI builds --- .travis-upload.sh | 11 +++++++++-- appveyor.yml | 20 ++++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/.travis-upload.sh b/.travis-upload.sh index 17959b0e17..8c1fa21c5b 100755 --- a/.travis-upload.sh +++ b/.travis-upload.sh @@ -123,9 +123,16 @@ cp README.md "$REV_NAME" tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$REV_NAME" -mv "$REV_NAME" nightly +# Find out what release we are building +if [ -z $TRAVIS_TAG ]; then + RELEASE_NAME=head +else + RELEASE_NAME=$(echo $TRAVIS_TAG | cut -d- -f1) +fi -7z a "$REV_NAME.7z" nightly +mv "$REV_NAME" $RELEASE_NAME + +7z a "$REV_NAME.7z" $RELEASE_NAME # move the compiled archive into the artifacts directory to be uploaded by travis releases mv "$ARCHIVE_NAME" artifacts/ diff --git a/appveyor.yml b/appveyor.yml index eb4e7df879..94e9969f5e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -46,13 +46,21 @@ after_build: 7z a -tzip $MSVC_BUILD_PDB .\build\bin\release\*.pdb rm .\build\bin\release\*.pdb - mkdir nightly - Copy-Item .\build\bin\release\* -Destination nightly -Recurse - Copy-Item .\license.txt -Destination nightly - Copy-Item .\README.md -Destination nightly + # Find out which kind of release we are producing by tag name + if ($env:APPVEYOR_REPO_TAG_NAME) { + $RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-') + } else { + # There is no repo tag - make assumptions + $RELEASE_DIST = "head" + } - 7z a -tzip $MSVC_BUILD_NAME nightly\* - 7z a $MSVC_SEVENZIP nightly + mkdir $RELEASE_DIST + Copy-Item .\build\bin\release\* -Destination $RELEASE_DIST -Recurse + Copy-Item .\license.txt -Destination $RELEASE_DIST + Copy-Item .\README.md -Destination $RELEASE_DIST + + 7z a -tzip $MSVC_BUILD_NAME $RELEASE_DIST\* + 7z a $MSVC_SEVENZIP $RELEASE_DIST test_script: - cd build && ctest -VV -C Release && cd .. From 5d9d42f0d0e0b2619e7412b86699a9b2b9dfa4ea Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 10 Aug 2017 11:56:55 +0300 Subject: [PATCH 060/195] SwRasterizer/Lighting: use make_tuple instead of constructor implicit tuple constructor is a c++17 thing, which is not supported by some not-so-old libraries. Play safe for now --- src/video_core/swrasterizer/lighting.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video_core/swrasterizer/lighting.cpp b/src/video_core/swrasterizer/lighting.cpp index 63088eee8c..d61e6d5720 100644 --- a/src/video_core/swrasterizer/lighting.cpp +++ b/src/video_core/swrasterizer/lighting.cpp @@ -244,7 +244,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255) .Cast(); - return {diffuse, specular}; + return std::make_tuple(diffuse, specular); } } // namespace Pica From fa64309aace2b782029ef599d20e8e0f1dd72a83 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 4 Aug 2017 20:11:47 +1000 Subject: [PATCH 061/195] Travis: Use Docker to build for Linux --- .travis-build-docker.sh | 20 ++++++++++++++++++++ .travis-build.sh | 10 +--------- .travis-deps.sh | 30 +----------------------------- .travis.yml | 16 ++++------------ 4 files changed, 26 insertions(+), 50 deletions(-) create mode 100644 .travis-build-docker.sh diff --git a/.travis-build-docker.sh b/.travis-build-docker.sh new file mode 100644 index 0000000000..ca6fae42b3 --- /dev/null +++ b/.travis-build-docker.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +set -e +set -x + +cd /citra + +apt-get update +apt-get install -y build-essential libsdl2-dev qtbase5-dev libqt5opengl5-dev libcurl4-openssl-dev libssl-dev wget git + +# Get a recent version of CMake +wget https://cmake.org/files/v3.9/cmake-3.9.0-Linux-x86_64.sh +echo y | sh cmake-3.9.0-Linux-x86_64.sh --prefix=cmake +export PATH=/citra/cmake/cmake-3.9.0-Linux-x86_64/bin:$PATH + +mkdir build && cd build +cmake .. -DCMAKE_BUILD_TYPE=Release +make -j4 + +ctest -VV -C Release diff --git a/.travis-build.sh b/.travis-build.sh index df6e236b69..64f5aed946 100755 --- a/.travis-build.sh +++ b/.travis-build.sh @@ -44,15 +44,7 @@ fi #if OS is linux or is not set if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then - export CC=gcc-6 - export CXX=g++-6 - export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig:$PKG_CONFIG_PATH - - mkdir build && cd build - cmake .. - make -j4 - - ctest -VV -C Release + docker run -v $(pwd):/citra ubuntu:16.04 /bin/bash /citra/.travis-build-docker.sh elif [ "$TRAVIS_OS_NAME" = "osx" ]; then set -o pipefail diff --git a/.travis-deps.sh b/.travis-deps.sh index 25a287c7fc..0cee68041b 100755 --- a/.travis-deps.sh +++ b/.travis-deps.sh @@ -5,35 +5,7 @@ set -x #if OS is linux or is not set if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then - export CC=gcc-6 - export CXX=g++-6 - mkdir -p $HOME/.local - - if [ ! -e $HOME/.local/bin/cmake ]; then - echo "CMake not found in the cache, get and extract it..." - curl -L http://www.cmake.org/files/v3.6/cmake-3.6.3-Linux-x86_64.tar.gz \ - | tar -xz -C $HOME/.local --strip-components=1 - else - echo "Using cached CMake" - fi - - if [ ! -e $HOME/.local/lib/libSDL2.la ]; then - echo "SDL2 not found in cache, get and build it..." - wget http://libsdl.org/release/SDL2-2.0.5.tar.gz -O - | tar xz - cd SDL2-2.0.5 - ./configure --prefix=$HOME/.local - make -j4 && make install - else - echo "Using cached SDL2" - fi - - export DEBIAN_FRONTEND=noninteractive - # Amazing placebo security - curl http://apt.llvm.org/llvm-snapshot.gpg.key | sudo -E apt-key add - - sudo -E add-apt-repository "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main" - sudo -E apt-get -yq update - sudo -E apt-get -yq install clang-format-3.9 - + docker pull ubuntu:16.04 elif [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update brew install qt5 sdl2 dylibbundler p7zip diff --git a/.travis.yml b/.travis.yml index 3da22eb5d6..b92d7f2362 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,23 +8,15 @@ matrix: sudo: false osx_image: xcode7.3 +services: + - docker + addons: apt: - sources: - - ubuntu-toolchain-r-test packages: - - gcc-6 - - g++-6 - - qt5-default - - libqt5opengl5-dev - - xorg-dev - - lib32stdc++6 # For CMake + - clang-format-3.9 - p7zip-full -cache: - directories: - - "$HOME/.local" - install: "./.travis-deps.sh" script: "./.travis-build.sh" after_success: "./.travis-upload.sh" From 599de29ea345bbeee300bec4bd6c3ab31288268d Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 9 Aug 2017 06:59:13 +0300 Subject: [PATCH 062/195] HID: zero unused PadState bits --- src/core/hle/service/hid/hid.h | 2 +- src/core/hle/service/ir/ir_rst.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h index 1ef972e70c..ef25926b57 100644 --- a/src/core/hle/service/hid/hid.h +++ b/src/core/hle/service/hid/hid.h @@ -24,7 +24,7 @@ namespace HID { */ struct PadState { union { - u32 hex; + u32 hex{}; BitField<0, 1, u32> a; BitField<1, 1, u32> b; diff --git a/src/core/hle/service/ir/ir_rst.cpp b/src/core/hle/service/ir/ir_rst.cpp index 837413f938..0912d57569 100644 --- a/src/core/hle/service/ir/ir_rst.cpp +++ b/src/core/hle/service/ir/ir_rst.cpp @@ -18,7 +18,7 @@ namespace Service { namespace IR { union PadState { - u32_le hex; + u32_le hex{}; BitField<14, 1, u32_le> zl; BitField<15, 1, u32_le> zr; From 14ee32c46a6dc97c1c6a0597e72e5284bf4e86e6 Mon Sep 17 00:00:00 2001 From: wwylele Date: Fri, 11 Aug 2017 01:13:55 +0300 Subject: [PATCH 063/195] SwRasterizer/Lighting: implement geometric factor --- src/video_core/swrasterizer/lighting.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/video_core/swrasterizer/lighting.cpp b/src/video_core/swrasterizer/lighting.cpp index d61e6d5720..91683afa4d 100644 --- a/src/video_core/swrasterizer/lighting.cpp +++ b/src/video_core/swrasterizer/lighting.cpp @@ -55,6 +55,9 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( light_vector.Normalize(); + Math::Vec3 norm_view = view.Normalized(); + Math::Vec3 half_vector = norm_view + light_vector; + float dist_atten = 1.0f; if (!lighting.IsDistAttenDisabled(num)) { auto distance = (-view - position).Length(); @@ -74,17 +77,15 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( auto GetLutValue = [&](LightingRegs::LightingLutInput input, bool abs, LightingRegs::LightingScale scale_enum, LightingRegs::LightingSampler sampler) { - Math::Vec3 norm_view = view.Normalized(); - Math::Vec3 half_angle = (norm_view + light_vector).Normalized(); float result = 0.0f; switch (input) { case LightingRegs::LightingLutInput::NH: - result = Math::Dot(normal, half_angle); + result = Math::Dot(normal, half_vector.Normalized()); break; case LightingRegs::LightingLutInput::VH: - result = Math::Dot(norm_view, half_angle); + result = Math::Dot(norm_view, half_vector.Normalized()); break; case LightingRegs::LightingLutInput::NV: @@ -224,6 +225,17 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( else dot_product = std::max(dot_product, 0.0f); + if (light_config.config.geometric_factor_0 || light_config.config.geometric_factor_1) { + float geo_factor = half_vector.Length2(); + geo_factor = geo_factor == 0.0f ? 0.0f : std::min(dot_product / geo_factor, 1.0f); + if (light_config.config.geometric_factor_0) { + specular_0 *= geo_factor; + } + if (light_config.config.geometric_factor_1) { + specular_1 *= geo_factor; + } + } + auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); From 945f9a1b04d51aff674e0b7061c29a04211a17bd Mon Sep 17 00:00:00 2001 From: wwylele Date: Fri, 11 Aug 2017 00:41:37 +0300 Subject: [PATCH 064/195] SwRasterizer/Lighting: implement spot light --- src/video_core/swrasterizer/lighting.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/video_core/swrasterizer/lighting.cpp b/src/video_core/swrasterizer/lighting.cpp index d61e6d5720..ffd35792a2 100644 --- a/src/video_core/swrasterizer/lighting.cpp +++ b/src/video_core/swrasterizer/lighting.cpp @@ -95,6 +95,12 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( result = Math::Dot(light_vector, normal); break; + case LightingRegs::LightingLutInput::SP: { + Math::Vec3 spot_dir{light_config.spot_x.Value(), light_config.spot_y.Value(), + light_config.spot_z.Value()}; + result = Math::Dot(light_vector, spot_dir.Cast() / 2047.0f); + break; + } default: LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %u\n", static_cast(input)); UNIMPLEMENTED(); @@ -125,6 +131,16 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( LookupLightingLut(lighting_state, static_cast(sampler), index, delta); }; + // If enabled, compute spot light attenuation value + float spot_atten = 1.0f; + if (!lighting.IsSpotAttenDisabled(num) && + LightingRegs::IsLightingSamplerSupported( + lighting.config0.config, LightingRegs::LightingSampler::SpotlightAttenuation)) { + auto lut = LightingRegs::SpotlightAttenuationSampler(num); + spot_atten = GetLutValue(lighting.lut_input.sp, lighting.abs_lut_input.disable_sp == 0, + lighting.lut_scale.sp, lut); + } + // Specular 0 component float d0_lut_value = 1.0f; if (lighting.config1.disable_lut_d0 == 0 && @@ -226,10 +242,10 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( auto diffuse = light_config.diffuse.ToVec3f() * dot_product + light_config.ambient.ToVec3f(); - diffuse_sum += Math::MakeVec(diffuse * dist_atten, 0.0f); + diffuse_sum += Math::MakeVec(diffuse * dist_atten * spot_atten, 0.0f); - specular_sum += - Math::MakeVec((specular_0 + specular_1) * clamp_highlights * dist_atten, 0.0f); + specular_sum += Math::MakeVec( + (specular_0 + specular_1) * clamp_highlights * dist_atten * spot_atten, 0.0f); } diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); From 8d3f48d0a3dbab0f5cc39120f69a74ce418a5a41 Mon Sep 17 00:00:00 2001 From: danzel Date: Fri, 11 Aug 2017 19:51:16 +1200 Subject: [PATCH 065/195] Fix some spelling mistakes --- src/citra/default_ini.h | 6 +++--- src/input_common/sdl/sdl.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index a12498e0fa..b0a0ebd3b1 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -12,7 +12,7 @@ const char* sdl2_config_file = R"( # It should be in the format of "engine:[engine_name],[param1]:[value1],[param2]:[value2]..." # Escape characters $0 (for ':'), $1 (for ',') and $2 (for '$') can be used in values -# for button input, the following devices are avaible: +# for button input, the following devices are available: # - "keyboard" (default) for keyboard input. Required parameters: # - "code": the code of the key to bind # - "sdl" for joystick input using SDL. Required parameters: @@ -21,7 +21,7 @@ const char* sdl2_config_file = R"( # - "hat"(optional): the index of the hat to bind as direction buttons # - "axis"(optional): the index of the axis to bind # - "direction"(only used for hat): the direction name of the hat to bind. Can be "up", "down", "left" or "right" -# - "threshould"(only used for axis): a float value in (-1.0, 1.0) which the button is +# - "threshold"(only used for axis): a float value in (-1.0, 1.0) which the button is # triggered if the axis value crosses # - "direction"(only used for axis): "+" means the button is triggered when the axis value # is greater than the threshold; "-" means the button is triggered when the axis value @@ -42,7 +42,7 @@ button_zl= button_zr= button_home= -# for analog input, the following devices are avaible: +# for analog input, the following devices are available: # - "analog_from_button" (default) for emulating analog input from direction buttons. Required parameters: # - "up", "down", "left", "right": sub-devices for each direction. # Should be in the format as a button input devices using escape characters, for example, "engine$0keyboard$1code$00" diff --git a/src/input_common/sdl/sdl.cpp b/src/input_common/sdl/sdl.cpp index 756ee58b7f..d404afa89f 100644 --- a/src/input_common/sdl/sdl.cpp +++ b/src/input_common/sdl/sdl.cpp @@ -159,7 +159,7 @@ public: * - "axis"(optional): the index of the axis to bind * - "direction"(only used for hat): the direction name of the hat to bind. Can be "up", * "down", "left" or "right" - * - "threshould"(only used for axis): a float value in (-1.0, 1.0) which the button is + * - "threshold"(only used for axis): a float value in (-1.0, 1.0) which the button is * triggered if the axis value crosses * - "direction"(only used for axis): "+" means the button is triggered when the axis value * is greater than the threshold; "-" means the button is triggered when the axis value From 867eabd6b7effc8ba6c21d7fcbd0480b14f81ad0 Mon Sep 17 00:00:00 2001 From: wwylele Date: Sun, 6 Aug 2017 22:54:19 +0300 Subject: [PATCH 066/195] HID: use MotionDevice for Accelerometer and Gyroscope --- src/core/frontend/input.h | 20 ++++++++++++++++++++ src/core/hle/service/hid/hid.cpp | 32 +++++++++++++++++++++++++++----- src/core/settings.h | 1 + 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/core/frontend/input.h b/src/core/frontend/input.h index 0a5713dc06..a8be494405 100644 --- a/src/core/frontend/input.h +++ b/src/core/frontend/input.h @@ -11,6 +11,7 @@ #include #include "common/logging/log.h" #include "common/param_package.h" +#include "common/vector_math.h" namespace Input { @@ -107,4 +108,23 @@ using ButtonDevice = InputDevice; */ using AnalogDevice = InputDevice>; +/** + * A motion device is an input device that returns a tuple of accelerometer state vector and + * gyroscope state vector. + * + * For accelerometer state vector: + * x+ is the same direction as LEFT on D-pad. + * y+ is normal to the touch screen, pointing outward. + * z+ is the same direction as UP on D-pad. + * Units: measured in unit of gravitational acceleration + * + * For gyroscope state vector: + * x+ is the same direction as LEFT on D-pad. + * y+ is normal to the touch screen, pointing outward. + * z+ is the same direction as UP on D-pad. + * Orientation is determined by right-hand rule. + * Units: deg/sec + */ +using MotionDevice = InputDevice, Math::Vec3>>; + } // namespace Input diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 2014b84616..a13b72e883 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -7,6 +7,7 @@ #include #include #include "common/logging/log.h" +#include "core/core.h" #include "core/core_timing.h" #include "core/frontend/emu_window.h" #include "core/frontend/input.h" @@ -50,10 +51,14 @@ constexpr u64 pad_update_ticks = BASE_CLOCK_RATE_ARM11 / 234; constexpr u64 accelerometer_update_ticks = BASE_CLOCK_RATE_ARM11 / 104; constexpr u64 gyroscope_update_ticks = BASE_CLOCK_RATE_ARM11 / 101; +constexpr float accelerometer_coef = 512.0f; // measured from hw test result +constexpr float gyroscope_coef = 14.375f; // got from hwtest GetGyroscopeLowRawToDpsCoefficient call + static std::atomic is_device_reload_pending; static std::array, Settings::NativeButton::NUM_BUTTONS_HID> buttons; static std::unique_ptr circle_pad; +static std::unique_ptr motion_device; DirectionState GetStickDirectionState(s16 circle_pad_x, s16 circle_pad_y) { // 30 degree and 60 degree are angular thresholds for directions @@ -90,6 +95,7 @@ static void LoadInputDevices() { buttons.begin(), Input::CreateDevice); circle_pad = Input::CreateDevice( Settings::values.analogs[Settings::NativeAnalog::CirclePad]); + motion_device = Input::CreateDevice(Settings::values.motion_device); } static void UnloadInputDevices() { @@ -97,6 +103,7 @@ static void UnloadInputDevices() { button.reset(); } circle_pad.reset(); + motion_device.reset(); } static void UpdatePadCallback(u64 userdata, int cycles_late) { @@ -193,10 +200,19 @@ static void UpdateAccelerometerCallback(u64 userdata, int cycles_late) { mem->accelerometer.index = next_accelerometer_index; next_accelerometer_index = (next_accelerometer_index + 1) % mem->accelerometer.entries.size(); + Math::Vec3 accel; + std::tie(accel, std::ignore) = motion_device->GetStatus(); + accel *= accelerometer_coef; + // TODO(wwylele): do a time stretch as it in UpdateGyroscopeCallback + // The time stretch formula should be like + // stretched_vector = (raw_vector - gravity) * stretch_ratio + gravity + AccelerometerDataEntry& accelerometer_entry = mem->accelerometer.entries[mem->accelerometer.index]; - std::tie(accelerometer_entry.x, accelerometer_entry.y, accelerometer_entry.z) = - VideoCore::g_emu_window->GetAccelerometerState(); + + accelerometer_entry.x = static_cast(accel.x); + accelerometer_entry.y = static_cast(accel.y); + accelerometer_entry.z = static_cast(accel.z); // Make up "raw" entry // TODO(wwylele): @@ -227,8 +243,14 @@ static void UpdateGyroscopeCallback(u64 userdata, int cycles_late) { next_gyroscope_index = (next_gyroscope_index + 1) % mem->gyroscope.entries.size(); GyroscopeDataEntry& gyroscope_entry = mem->gyroscope.entries[mem->gyroscope.index]; - std::tie(gyroscope_entry.x, gyroscope_entry.y, gyroscope_entry.z) = - VideoCore::g_emu_window->GetGyroscopeState(); + + Math::Vec3 gyro; + std::tie(std::ignore, gyro) = motion_device->GetStatus(); + float stretch = Core::System::GetInstance().perf_stats.GetLastFrameTimeScale(); + gyro *= gyroscope_coef * stretch; + gyroscope_entry.x = static_cast(gyro.x); + gyroscope_entry.y = static_cast(gyro.y); + gyroscope_entry.z = static_cast(gyro.z); // Make up "raw" entry mem->gyroscope.raw_entry.x = gyroscope_entry.x; @@ -326,7 +348,7 @@ void GetGyroscopeLowRawToDpsCoefficient(Service::Interface* self) { cmd_buff[1] = RESULT_SUCCESS.raw; - f32 coef = VideoCore::g_emu_window->GetGyroscopeRawToDpsCoefficient(); + f32 coef = gyroscope_coef; memcpy(&cmd_buff[2], &coef, 4); } diff --git a/src/core/settings.h b/src/core/settings.h index ee16bb90a8..7e15b119b7 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -79,6 +79,7 @@ struct Values { // Controls std::array buttons; std::array analogs; + std::string motion_device; // Core bool use_cpu_jit; From 188194908c2785bd1e03485941b9148777cdddd7 Mon Sep 17 00:00:00 2001 From: wwylele Date: Mon, 7 Aug 2017 00:04:06 +0300 Subject: [PATCH 067/195] move MotionEmu from core/frontend to input_common as a InputDevice --- src/citra/config.cpp | 3 + src/citra/default_ini.h | 8 +- src/citra/emu_window/emu_window_sdl2.cpp | 10 +- src/citra/emu_window/emu_window_sdl2.h | 4 - src/citra_qt/bootmanager.cpp | 10 +- src/citra_qt/bootmanager.h | 4 - src/citra_qt/configuration/config.cpp | 6 + src/core/CMakeLists.txt | 2 - src/core/frontend/emu_window.cpp | 23 --- src/core/frontend/emu_window.h | 83 --------- src/core/frontend/input.h | 9 +- src/core/frontend/motion_emu.cpp | 89 ---------- src/input_common/CMakeLists.txt | 2 + src/input_common/main.cpp | 15 +- src/input_common/main.h | 5 + src/input_common/motion_emu.cpp | 159 ++++++++++++++++++ .../frontend => input_common}/motion_emu.h | 33 ++-- 17 files changed, 221 insertions(+), 244 deletions(-) delete mode 100644 src/core/frontend/motion_emu.cpp create mode 100644 src/input_common/motion_emu.cpp rename src/{core/frontend => input_common}/motion_emu.h (50%) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 69247b1666..73846ed915 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -76,6 +76,9 @@ void Config::ReadValues() { Settings::values.analogs[i] = default_param; } + Settings::values.motion_device = sdl2_config->Get( + "Controls", "motion_device", "engine:motion_emu,update_period:100,sensitivity:0.01"); + // Core Settings::values.use_cpu_jit = sdl2_config->GetBoolean("Core", "use_cpu_jit", true); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index b0a0ebd3b1..9ea779dd84 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -43,7 +43,7 @@ button_zr= button_home= # for analog input, the following devices are available: -# - "analog_from_button" (default) for emulating analog input from direction buttons. Required parameters: +# - "analog_from_button" (default) for emulating analog input from direction buttons. Required parameters: # - "up", "down", "left", "right": sub-devices for each direction. # Should be in the format as a button input devices using escape characters, for example, "engine$0keyboard$1code$00" # - "modifier": sub-devices as a modifier. @@ -56,6 +56,12 @@ button_home= circle_pad= c_stick= +# for motion input, the following devices are available: +# - "motion_emu" (default) for emulating motion input from mouse input. Required parameters: +# - "update_period": update period in milliseconds (default to 100) +# - "sensitivity": the coefficient converting mouse movement to tilting angle (default to 0.01) +motion_device= + [Core] # Whether to use the Just-In-Time (JIT) compiler for CPU emulation # 0: Interpreter (slow), 1 (default): JIT (fast) diff --git a/src/citra/emu_window/emu_window_sdl2.cpp b/src/citra/emu_window/emu_window_sdl2.cpp index b0f8083997..25643715a8 100644 --- a/src/citra/emu_window/emu_window_sdl2.cpp +++ b/src/citra/emu_window/emu_window_sdl2.cpp @@ -16,11 +16,12 @@ #include "core/settings.h" #include "input_common/keyboard.h" #include "input_common/main.h" +#include "input_common/motion_emu.h" #include "network/network.h" void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) { TouchMoved((unsigned)std::max(x, 0), (unsigned)std::max(y, 0)); - motion_emu->Tilt(x, y); + InputCommon::GetMotionEmu()->Tilt(x, y); } void EmuWindow_SDL2::OnMouseButton(u32 button, u8 state, s32 x, s32 y) { @@ -32,9 +33,9 @@ void EmuWindow_SDL2::OnMouseButton(u32 button, u8 state, s32 x, s32 y) { } } else if (button == SDL_BUTTON_RIGHT) { if (state == SDL_PRESSED) { - motion_emu->BeginTilt(x, y); + InputCommon::GetMotionEmu()->BeginTilt(x, y); } else { - motion_emu->EndTilt(); + InputCommon::GetMotionEmu()->EndTilt(); } } } @@ -61,8 +62,6 @@ EmuWindow_SDL2::EmuWindow_SDL2() { InputCommon::Init(); Network::Init(); - motion_emu = std::make_unique(*this); - SDL_SetMainReady(); // Initialize the window @@ -117,7 +116,6 @@ EmuWindow_SDL2::EmuWindow_SDL2() { EmuWindow_SDL2::~EmuWindow_SDL2() { SDL_GL_DeleteContext(gl_context); SDL_Quit(); - motion_emu = nullptr; Network::Shutdown(); InputCommon::Shutdown(); diff --git a/src/citra/emu_window/emu_window_sdl2.h b/src/citra/emu_window/emu_window_sdl2.h index 1ce2991f7c..3664d2fbe2 100644 --- a/src/citra/emu_window/emu_window_sdl2.h +++ b/src/citra/emu_window/emu_window_sdl2.h @@ -7,7 +7,6 @@ #include #include #include "core/frontend/emu_window.h" -#include "core/frontend/motion_emu.h" struct SDL_Window; @@ -57,7 +56,4 @@ private: using SDL_GLContext = void*; /// The OpenGL context associated with the window SDL_GLContext gl_context; - - /// Motion sensors emulation - std::unique_ptr motion_emu; }; diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp index 30554890f2..7107bfc60b 100644 --- a/src/citra_qt/bootmanager.cpp +++ b/src/citra_qt/bootmanager.cpp @@ -17,6 +17,7 @@ #include "core/settings.h" #include "input_common/keyboard.h" #include "input_common/main.h" +#include "input_common/motion_emu.h" #include "network/network.h" EmuThread::EmuThread(GRenderWindow* render_window) @@ -201,7 +202,6 @@ qreal GRenderWindow::windowPixelRatio() { } void GRenderWindow::closeEvent(QCloseEvent* event) { - motion_emu = nullptr; emit Closed(); QWidget::closeEvent(event); } @@ -221,7 +221,7 @@ void GRenderWindow::mousePressEvent(QMouseEvent* event) { this->TouchPressed(static_cast(pos.x() * pixelRatio), static_cast(pos.y() * pixelRatio)); } else if (event->button() == Qt::RightButton) { - motion_emu->BeginTilt(pos.x(), pos.y()); + InputCommon::GetMotionEmu()->BeginTilt(pos.x(), pos.y()); } } @@ -230,14 +230,14 @@ void GRenderWindow::mouseMoveEvent(QMouseEvent* event) { qreal pixelRatio = windowPixelRatio(); this->TouchMoved(std::max(static_cast(pos.x() * pixelRatio), 0u), std::max(static_cast(pos.y() * pixelRatio), 0u)); - motion_emu->Tilt(pos.x(), pos.y()); + InputCommon::GetMotionEmu()->Tilt(pos.x(), pos.y()); } void GRenderWindow::mouseReleaseEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton) this->TouchReleased(); else if (event->button() == Qt::RightButton) - motion_emu->EndTilt(); + InputCommon::GetMotionEmu()->EndTilt(); } void GRenderWindow::focusOutEvent(QFocusEvent* event) { @@ -290,13 +290,11 @@ void GRenderWindow::OnMinimalClientAreaChangeRequest( } void GRenderWindow::OnEmulationStarting(EmuThread* emu_thread) { - motion_emu = std::make_unique(*this); this->emu_thread = emu_thread; child->DisablePainting(); } void GRenderWindow::OnEmulationStopping() { - motion_emu = nullptr; emu_thread = nullptr; child->EnablePainting(); } diff --git a/src/citra_qt/bootmanager.h b/src/citra_qt/bootmanager.h index 4b3a3b3cc2..6974edcbb0 100644 --- a/src/citra_qt/bootmanager.h +++ b/src/citra_qt/bootmanager.h @@ -12,7 +12,6 @@ #include "common/thread.h" #include "core/core.h" #include "core/frontend/emu_window.h" -#include "core/frontend/motion_emu.h" class QKeyEvent; class QScreen; @@ -158,9 +157,6 @@ private: EmuThread* emu_thread; - /// Motion sensors emulation - std::unique_ptr motion_emu; - protected: void showEvent(QShowEvent* event) override; }; diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 75abb4ce60..6e42db0072 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -57,6 +57,11 @@ void Config::ReadValues() { Settings::values.analogs[i] = default_param; } + Settings::values.motion_device = + qt_config->value("motion_device", "engine:motion_emu,update_period:100,sensitivity:0.01") + .toString() + .toStdString(); + qt_config->endGroup(); qt_config->beginGroup("Core"); @@ -203,6 +208,7 @@ void Config::SaveValues() { qt_config->setValue(QString::fromStdString(Settings::NativeAnalog::mapping[i]), QString::fromStdString(Settings::values.analogs[i])); } + qt_config->setValue("motion_device", QString::fromStdString(Settings::values.motion_device)); qt_config->endGroup(); qt_config->beginGroup("Core"); diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 360f407f3d..ea36b7d955 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -33,7 +33,6 @@ set(SRCS frontend/camera/interface.cpp frontend/emu_window.cpp frontend/framebuffer_layout.cpp - frontend/motion_emu.cpp gdbstub/gdbstub.cpp hle/config_mem.cpp hle/applets/applet.cpp @@ -226,7 +225,6 @@ set(HEADERS frontend/emu_window.h frontend/framebuffer_layout.h frontend/input.h - frontend/motion_emu.h gdbstub/gdbstub.h hle/config_mem.h hle/function_wrappers.h diff --git a/src/core/frontend/emu_window.cpp b/src/core/frontend/emu_window.cpp index 4f7d54a33a..60b20d4e2c 100644 --- a/src/core/frontend/emu_window.cpp +++ b/src/core/frontend/emu_window.cpp @@ -62,29 +62,6 @@ void EmuWindow::TouchMoved(unsigned framebuffer_x, unsigned framebuffer_y) { TouchPressed(framebuffer_x, framebuffer_y); } -void EmuWindow::AccelerometerChanged(float x, float y, float z) { - constexpr float coef = 512; - - std::lock_guard lock(accel_mutex); - - // TODO(wwylele): do a time stretch as it in GyroscopeChanged - // The time stretch formula should be like - // stretched_vector = (raw_vector - gravity) * stretch_ratio + gravity - accel_x = static_cast(x * coef); - accel_y = static_cast(y * coef); - accel_z = static_cast(z * coef); -} - -void EmuWindow::GyroscopeChanged(float x, float y, float z) { - constexpr float FULL_FPS = 60; - float coef = GetGyroscopeRawToDpsCoefficient(); - float stretch = Core::System::GetInstance().perf_stats.GetLastFrameTimeScale(); - std::lock_guard lock(gyro_mutex); - gyro_x = static_cast(x * coef * stretch); - gyro_y = static_cast(y * coef * stretch); - gyro_z = static_cast(z * coef * stretch); -} - void EmuWindow::UpdateCurrentFramebufferLayout(unsigned width, unsigned height) { Layout::FramebufferLayout layout; if (Settings::values.custom_layout == true) { diff --git a/src/core/frontend/emu_window.h b/src/core/frontend/emu_window.h index 9414123a46..7bdee251c2 100644 --- a/src/core/frontend/emu_window.h +++ b/src/core/frontend/emu_window.h @@ -68,27 +68,6 @@ public: */ void TouchMoved(unsigned framebuffer_x, unsigned framebuffer_y); - /** - * Signal accelerometer state has changed. - * @param x X-axis accelerometer value - * @param y Y-axis accelerometer value - * @param z Z-axis accelerometer value - * @note all values are in unit of g (gravitational acceleration). - * e.g. x = 1.0 means 9.8m/s^2 in x direction. - * @see GetAccelerometerState for axis explanation. - */ - void AccelerometerChanged(float x, float y, float z); - - /** - * Signal gyroscope state has changed. - * @param x X-axis accelerometer value - * @param y Y-axis accelerometer value - * @param z Z-axis accelerometer value - * @note all values are in deg/sec. - * @see GetGyroscopeState for axis explanation. - */ - void GyroscopeChanged(float x, float y, float z); - /** * Gets the current touch screen state (touch X/Y coordinates and whether or not it is pressed). * @note This should be called by the core emu thread to get a state set by the window thread. @@ -100,52 +79,6 @@ public: return std::make_tuple(touch_x, touch_y, touch_pressed); } - /** - * Gets the current accelerometer state (acceleration along each three axis). - * Axis explained: - * +x is the same direction as LEFT on D-pad. - * +y is normal to the touch screen, pointing outward. - * +z is the same direction as UP on D-pad. - * Units: - * 1 unit of return value = 1/512 g (measured by hw test), - * where g is the gravitational acceleration (9.8 m/sec2). - * @note This should be called by the core emu thread to get a state set by the window thread. - * @return std::tuple of (x, y, z) - */ - std::tuple GetAccelerometerState() { - std::lock_guard lock(accel_mutex); - return std::make_tuple(accel_x, accel_y, accel_z); - } - - /** - * Gets the current gyroscope state (angular rates about each three axis). - * Axis explained: - * +x is the same direction as LEFT on D-pad. - * +y is normal to the touch screen, pointing outward. - * +z is the same direction as UP on D-pad. - * Orientation is determined by right-hand rule. - * Units: - * 1 unit of return value = (1/coef) deg/sec, - * where coef is the return value of GetGyroscopeRawToDpsCoefficient(). - * @note This should be called by the core emu thread to get a state set by the window thread. - * @return std::tuple of (x, y, z) - */ - std::tuple GetGyroscopeState() { - std::lock_guard lock(gyro_mutex); - return std::make_tuple(gyro_x, gyro_y, gyro_z); - } - - /** - * Gets the coefficient for units conversion of gyroscope state. - * The conversion formula is r = coefficient * v, - * where v is angular rate in deg/sec, - * and r is the gyroscope state. - * @return float-type coefficient - */ - f32 GetGyroscopeRawToDpsCoefficient() const { - return 14.375f; // taken from hw test, and gyroscope's document - } - /** * Returns currently active configuration. * @note Accesses to the returned object need not be consistent because it may be modified in @@ -187,12 +120,6 @@ protected: touch_x = 0; touch_y = 0; touch_pressed = false; - accel_x = 0; - accel_y = -512; - accel_z = 0; - gyro_x = 0; - gyro_y = 0; - gyro_z = 0; } virtual ~EmuWindow() {} @@ -255,16 +182,6 @@ private: u16 touch_x; ///< Touchpad X-position in native 3DS pixel coordinates (0-320) u16 touch_y; ///< Touchpad Y-position in native 3DS pixel coordinates (0-240) - std::mutex accel_mutex; - s16 accel_x; ///< Accelerometer X-axis value in native 3DS units - s16 accel_y; ///< Accelerometer Y-axis value in native 3DS units - s16 accel_z; ///< Accelerometer Z-axis value in native 3DS units - - std::mutex gyro_mutex; - s16 gyro_x; ///< Gyroscope X-axis value in native 3DS units - s16 gyro_y; ///< Gyroscope Y-axis value in native 3DS units - s16 gyro_z; ///< Gyroscope Z-axis value in native 3DS units - /** * Clip the provided coordinates to be inside the touchscreen area. */ diff --git a/src/core/frontend/input.h b/src/core/frontend/input.h index a8be494405..5916a901de 100644 --- a/src/core/frontend/input.h +++ b/src/core/frontend/input.h @@ -112,16 +112,15 @@ using AnalogDevice = InputDevice>; * A motion device is an input device that returns a tuple of accelerometer state vector and * gyroscope state vector. * - * For accelerometer state vector: + * For both vectors: * x+ is the same direction as LEFT on D-pad. * y+ is normal to the touch screen, pointing outward. * z+ is the same direction as UP on D-pad. - * Units: measured in unit of gravitational acceleration + * + * For accelerometer state vector + * Units: g (gravitational acceleration) * * For gyroscope state vector: - * x+ is the same direction as LEFT on D-pad. - * y+ is normal to the touch screen, pointing outward. - * z+ is the same direction as UP on D-pad. * Orientation is determined by right-hand rule. * Units: deg/sec */ diff --git a/src/core/frontend/motion_emu.cpp b/src/core/frontend/motion_emu.cpp deleted file mode 100644 index 9a5b3185d2..0000000000 --- a/src/core/frontend/motion_emu.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2016 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include "common/math_util.h" -#include "common/quaternion.h" -#include "core/frontend/emu_window.h" -#include "core/frontend/motion_emu.h" - -namespace Motion { - -static constexpr int update_millisecond = 100; -static constexpr auto update_duration = - std::chrono::duration_cast( - std::chrono::milliseconds(update_millisecond)); - -MotionEmu::MotionEmu(EmuWindow& emu_window) - : motion_emu_thread(&MotionEmu::MotionEmuThread, this, std::ref(emu_window)) {} - -MotionEmu::~MotionEmu() { - if (motion_emu_thread.joinable()) { - shutdown_event.Set(); - motion_emu_thread.join(); - } -} - -void MotionEmu::MotionEmuThread(EmuWindow& emu_window) { - auto update_time = std::chrono::steady_clock::now(); - Math::Quaternion q = MakeQuaternion(Math::Vec3(), 0); - Math::Quaternion old_q; - - while (!shutdown_event.WaitUntil(update_time)) { - update_time += update_duration; - old_q = q; - - { - std::lock_guard guard(tilt_mutex); - - // Find the quaternion describing current 3DS tilting - q = MakeQuaternion(Math::MakeVec(-tilt_direction.y, 0.0f, tilt_direction.x), - tilt_angle); - } - - auto inv_q = q.Inverse(); - - // Set the gravity vector in world space - auto gravity = Math::MakeVec(0.0f, -1.0f, 0.0f); - - // Find the angular rate vector in world space - auto angular_rate = ((q - old_q) * inv_q).xyz * 2; - angular_rate *= 1000 / update_millisecond / MathUtil::PI * 180; - - // Transform the two vectors from world space to 3DS space - gravity = QuaternionRotate(inv_q, gravity); - angular_rate = QuaternionRotate(inv_q, angular_rate); - - // Update the sensor state - emu_window.AccelerometerChanged(gravity.x, gravity.y, gravity.z); - emu_window.GyroscopeChanged(angular_rate.x, angular_rate.y, angular_rate.z); - } -} - -void MotionEmu::BeginTilt(int x, int y) { - mouse_origin = Math::MakeVec(x, y); - is_tilting = true; -} - -void MotionEmu::Tilt(int x, int y) { - constexpr float SENSITIVITY = 0.01f; - auto mouse_move = Math::MakeVec(x, y) - mouse_origin; - if (is_tilting) { - std::lock_guard guard(tilt_mutex); - if (mouse_move.x == 0 && mouse_move.y == 0) { - tilt_angle = 0; - } else { - tilt_direction = mouse_move.Cast(); - tilt_angle = MathUtil::Clamp(tilt_direction.Normalize() * SENSITIVITY, 0.0f, - MathUtil::PI * 0.5f); - } - } -} - -void MotionEmu::EndTilt() { - std::lock_guard guard(tilt_mutex); - tilt_angle = 0; - is_tilting = false; -} - -} // namespace Motion diff --git a/src/input_common/CMakeLists.txt b/src/input_common/CMakeLists.txt index e3e36ada70..92792a7021 100644 --- a/src/input_common/CMakeLists.txt +++ b/src/input_common/CMakeLists.txt @@ -2,12 +2,14 @@ set(SRCS analog_from_button.cpp keyboard.cpp main.cpp + motion_emu.cpp ) set(HEADERS analog_from_button.h keyboard.h main.h + motion_emu.h ) if(SDL2_FOUND) diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index 699f41e6bc..5573537408 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp @@ -7,6 +7,7 @@ #include "input_common/analog_from_button.h" #include "input_common/keyboard.h" #include "input_common/main.h" +#include "input_common/motion_emu.h" #ifdef HAVE_SDL2 #include "input_common/sdl/sdl.h" #endif @@ -14,12 +15,16 @@ namespace InputCommon { static std::shared_ptr keyboard; +static std::shared_ptr motion_emu; void Init() { - keyboard = std::make_shared(); + keyboard = std::make_shared(); Input::RegisterFactory("keyboard", keyboard); Input::RegisterFactory("analog_from_button", - std::make_shared()); + std::make_shared()); + motion_emu = std::make_shared(); + Input::RegisterFactory("motion_emu", motion_emu); + #ifdef HAVE_SDL2 SDL::Init(); #endif @@ -29,6 +34,8 @@ void Shutdown() { Input::UnregisterFactory("keyboard"); keyboard.reset(); Input::UnregisterFactory("analog_from_button"); + Input::UnregisterFactory("motion_emu"); + motion_emu.reset(); #ifdef HAVE_SDL2 SDL::Shutdown(); @@ -39,6 +46,10 @@ Keyboard* GetKeyboard() { return keyboard.get(); } +MotionEmu* GetMotionEmu() { + return motion_emu.get(); +} + std::string GenerateKeyboardParam(int key_code) { Common::ParamPackage param{ {"engine", "keyboard"}, {"code", std::to_string(key_code)}, diff --git a/src/input_common/main.h b/src/input_common/main.h index 140bbd0145..74283f7c6c 100644 --- a/src/input_common/main.h +++ b/src/input_common/main.h @@ -19,6 +19,11 @@ class Keyboard; /// Gets the keyboard button device factory. Keyboard* GetKeyboard(); +class MotionEmu; + +/// Gets the motion emulation factory. +MotionEmu* GetMotionEmu(); + /// Generates a serialized param package for creating a keyboard button device std::string GenerateKeyboardParam(int key_code); diff --git a/src/input_common/motion_emu.cpp b/src/input_common/motion_emu.cpp new file mode 100644 index 0000000000..65e80529d3 --- /dev/null +++ b/src/input_common/motion_emu.cpp @@ -0,0 +1,159 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/math_util.h" +#include "common/quaternion.h" +#include "input_common/motion_emu.h" + +namespace InputCommon { + +// Implementation class of the motion emulation device +class MotionEmuDevice { +public: + MotionEmuDevice(int update_millisecond, float sensitivity) + : update_millisecond(update_millisecond), + update_duration(std::chrono::duration_cast( + std::chrono::milliseconds(update_millisecond))), + sensitivity(sensitivity), motion_emu_thread(&MotionEmuDevice::MotionEmuThread, this) {} + + ~MotionEmuDevice() { + if (motion_emu_thread.joinable()) { + shutdown_event.Set(); + motion_emu_thread.join(); + } + } + + void BeginTilt(int x, int y) { + mouse_origin = Math::MakeVec(x, y); + is_tilting = true; + } + + void Tilt(int x, int y) { + auto mouse_move = Math::MakeVec(x, y) - mouse_origin; + if (is_tilting) { + std::lock_guard guard(tilt_mutex); + if (mouse_move.x == 0 && mouse_move.y == 0) { + tilt_angle = 0; + } else { + tilt_direction = mouse_move.Cast(); + tilt_angle = MathUtil::Clamp(tilt_direction.Normalize() * sensitivity, 0.0f, + MathUtil::PI * 0.5f); + } + } + } + + void EndTilt() { + std::lock_guard guard(tilt_mutex); + tilt_angle = 0; + is_tilting = false; + } + + std::tuple, Math::Vec3> GetStatus() { + std::lock_guard guard(status_mutex); + return status; + } + +private: + const int update_millisecond; + const std::chrono::steady_clock::duration update_duration; + const float sensitivity; + + Math::Vec2 mouse_origin; + + std::mutex tilt_mutex; + Math::Vec2 tilt_direction; + float tilt_angle = 0; + + bool is_tilting = false; + + Common::Event shutdown_event; + std::thread motion_emu_thread; + + std::tuple, Math::Vec3> status; + std::mutex status_mutex; + + void MotionEmuThread() { + auto update_time = std::chrono::steady_clock::now(); + Math::Quaternion q = MakeQuaternion(Math::Vec3(), 0); + Math::Quaternion old_q; + + while (!shutdown_event.WaitUntil(update_time)) { + update_time += update_duration; + old_q = q; + + { + std::lock_guard guard(tilt_mutex); + + // Find the quaternion describing current 3DS tilting + q = MakeQuaternion(Math::MakeVec(-tilt_direction.y, 0.0f, tilt_direction.x), + tilt_angle); + } + + auto inv_q = q.Inverse(); + + // Set the gravity vector in world space + auto gravity = Math::MakeVec(0.0f, -1.0f, 0.0f); + + // Find the angular rate vector in world space + auto angular_rate = ((q - old_q) * inv_q).xyz * 2; + angular_rate *= 1000 / update_millisecond / MathUtil::PI * 180; + + // Transform the two vectors from world space to 3DS space + gravity = QuaternionRotate(inv_q, gravity); + angular_rate = QuaternionRotate(inv_q, angular_rate); + + // Update the sensor state + { + std::lock_guard guard(status_mutex); + status = std::make_tuple(gravity, angular_rate); + } + } + } +}; + +// Interface wrapper held by input receiver as a unique_ptr. It holds the implementation class as +// a shared_ptr, which is also observed by the factory class as a weak_ptr. In this way the factory +// can forward all the inputs to the implementation only when it is valid. +class MotionEmuDeviceWrapper : public Input::MotionDevice { +public: + MotionEmuDeviceWrapper(int update_millisecond, float sensitivity) { + device = std::make_shared(update_millisecond, sensitivity); + } + + std::tuple, Math::Vec3> GetStatus() const { + return device->GetStatus(); + } + + std::shared_ptr device; +}; + +std::unique_ptr MotionEmu::Create(const Common::ParamPackage& params) { + int update_period = params.Get("update_period", 100); + float sensitivity = params.Get("sensitivity", 0.01f); + auto device_wrapper = std::make_unique(update_period, sensitivity); + // Previously created device is disconnected here. Having two motion devices for 3DS is not + // expected. + current_device = device_wrapper->device; + return std::move(device_wrapper); +} + +void MotionEmu::BeginTilt(int x, int y) { + if (auto ptr = current_device.lock()) { + ptr->BeginTilt(x, y); + } +} + +void MotionEmu::Tilt(int x, int y) { + if (auto ptr = current_device.lock()) { + ptr->Tilt(x, y); + } +} + +void MotionEmu::EndTilt() { + if (auto ptr = current_device.lock()) { + ptr->EndTilt(); + } +} + +} // namespace InputCommon diff --git a/src/core/frontend/motion_emu.h b/src/input_common/motion_emu.h similarity index 50% rename from src/core/frontend/motion_emu.h rename to src/input_common/motion_emu.h index 99d41a7264..195fb69d25 100644 --- a/src/core/frontend/motion_emu.h +++ b/src/input_common/motion_emu.h @@ -1,19 +1,25 @@ -// Copyright 2016 Citra Emulator Project +// Copyright 2017 Citra Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include "common/thread.h" #include "common/vector_math.h" +#include "core/frontend/input.h" -class EmuWindow; +namespace InputCommon { -namespace Motion { +class MotionEmuDevice; -class MotionEmu final { +class MotionEmu : public Input::Factory { public: - MotionEmu(EmuWindow& emu_window); - ~MotionEmu(); + /** + * Creates a motion device emulated from mouse input + * @param params contains parameters for creating the device: + * - "update_period": update period in milliseconds + * - "sensitivity": the coefficient converting mouse movement to tilting angle + */ + std::unique_ptr Create(const Common::ParamPackage& params) override; /** * Signals that a motion sensor tilt has begun. @@ -35,18 +41,7 @@ public: void EndTilt(); private: - Math::Vec2 mouse_origin; - - std::mutex tilt_mutex; - Math::Vec2 tilt_direction; - float tilt_angle = 0; - - bool is_tilting = false; - - Common::Event shutdown_event; - std::thread motion_emu_thread; - - void MotionEmuThread(EmuWindow& emu_window); + std::weak_ptr current_device; }; -} // namespace Motion +} // namespace InputCommon From 686fb3e78cb394bb7db18fd951d104ca86d805d9 Mon Sep 17 00:00:00 2001 From: wwylele Date: Fri, 11 Aug 2017 18:24:24 +0300 Subject: [PATCH 068/195] gl_shader_gen: don't call SampleTexture when bump map is not used --- src/video_core/renderer_opengl/gl_shader_gen.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index bb192affd2..ae67aab052 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -525,11 +525,12 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) { "float geo_factor = 1.0;\n"; // Compute fragment normals and tangents - const std::string pertubation = - "2.0 * (" + SampleTexture(config, lighting.bump_selector) + ").rgb - 1.0"; + auto Perturbation = [&]() { + return "2.0 * (" + SampleTexture(config, lighting.bump_selector) + ").rgb - 1.0"; + }; if (lighting.bump_mode == LightingRegs::LightingBumpMode::NormalMap) { // Bump mapping is enabled using a normal map - out += "vec3 surface_normal = " + pertubation + ";\n"; + out += "vec3 surface_normal = " + Perturbation() + ";\n"; // Recompute Z-component of perturbation if 'renorm' is enabled, this provides a higher // precision result @@ -543,7 +544,7 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) { out += "vec3 surface_tangent = vec3(1.0, 0.0, 0.0);\n"; } else if (lighting.bump_mode == LightingRegs::LightingBumpMode::TangentMap) { // Bump mapping is enabled using a tangent map - out += "vec3 surface_tangent = " + pertubation + ";\n"; + out += "vec3 surface_tangent = " + Perturbation() + ";\n"; // Mathematically, recomputing Z-component of the tangent vector won't affect the relevant // computation below, which is also confirmed on 3DS. So we don't bother recomputing here // even if 'renorm' is enabled. From bf71fc03422fd783fe0f841c93638d4e3d0e70ea Mon Sep 17 00:00:00 2001 From: Dave Leaver Date: Mon, 14 Aug 2017 09:15:39 +1200 Subject: [PATCH 069/195] Fix Spelling/English mistakes --- src/input_common/main.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input_common/main.h b/src/input_common/main.h index 140bbd0145..e7fb3890ed 100644 --- a/src/input_common/main.h +++ b/src/input_common/main.h @@ -11,7 +11,7 @@ namespace InputCommon { /// Initializes and registers all built-in input device factories. void Init(); -/// Unresisters all build-in input device factories and shut them down. +/// Deregisters all built-in input device factories and shuts them down. void Shutdown(); class Keyboard; From b67c2dc82cff794fc1989e103daa96f5ff5f12be Mon Sep 17 00:00:00 2001 From: MerryMage Date: Tue, 15 Aug 2017 10:16:50 +0100 Subject: [PATCH 070/195] dsp_dsp: Remove size assertion in LoadComponent --- src/core/hle/service/dsp_dsp.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/dsp_dsp.cpp b/src/core/hle/service/dsp_dsp.cpp index 7d746054f6..42f8950f9f 100644 --- a/src/core/hle/service/dsp_dsp.cpp +++ b/src/core/hle/service/dsp_dsp.cpp @@ -147,9 +147,10 @@ static void LoadComponent(Service::Interface* self) { LOG_INFO(Service_DSP, "Firmware hash: %#" PRIx64, Common::ComputeHash64(component_data.data(), component_data.size())); // Some versions of the firmware have the location of DSP structures listed here. - ASSERT(size > 0x37C); - LOG_INFO(Service_DSP, "Structures hash: %#" PRIx64, - Common::ComputeHash64(component_data.data() + 0x340, 60)); + if (size > 0x37C) { + LOG_INFO(Service_DSP, "Structures hash: %#" PRIx64, + Common::ComputeHash64(component_data.data() + 0x340, 60)); + } LOG_WARNING(Service_DSP, "(STUBBED) called size=0x%X, prog_mask=0x%08X, data_mask=0x%08X, buffer=0x%08X", From 223bd354508a7bc88427d5b6f5245cfdf44011c7 Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 9 Aug 2017 03:05:03 +0300 Subject: [PATCH 071/195] motion_emu: no need to include thread in header --- src/input_common/motion_emu.cpp | 6 ++++++ src/input_common/motion_emu.h | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/input_common/motion_emu.cpp b/src/input_common/motion_emu.cpp index 65e80529d3..a1761f1846 100644 --- a/src/input_common/motion_emu.cpp +++ b/src/input_common/motion_emu.cpp @@ -2,8 +2,14 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include +#include +#include +#include #include "common/math_util.h" #include "common/quaternion.h" +#include "common/thread.h" +#include "common/vector_math.h" #include "input_common/motion_emu.h" namespace InputCommon { diff --git a/src/input_common/motion_emu.h b/src/input_common/motion_emu.h index 195fb69d25..7a7e224672 100644 --- a/src/input_common/motion_emu.h +++ b/src/input_common/motion_emu.h @@ -3,8 +3,7 @@ // Refer to the license.txt file included. #pragma once -#include "common/thread.h" -#include "common/vector_math.h" + #include "core/frontend/input.h" namespace InputCommon { From 46c6973d2bde25a2a8ae9ac434660798fd1dfaee Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 25 Jul 2017 22:30:29 +0300 Subject: [PATCH 072/195] pica/shader: extend UnitState for GS Among four shader units in pica, a special unit can be configured to run both VS and GS program. GSUnitState represents this unit, which extends UnitState (which represents the other three normal units) with extra state for primitive emitting. It uses lots of raw pointers to represent internal structure in order to keep it standard layout type for JIT to access. This unit doesn't handle triangle winding (inverting) itself; instead, it calls a WindingSetter handler. This will be explained in the following commits --- src/video_core/shader/shader.cpp | 38 ++++++++++++++++++++++++++ src/video_core/shader/shader.h | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/src/video_core/shader/shader.cpp b/src/video_core/shader/shader.cpp index 67ed19ba8d..b12468d3a5 100644 --- a/src/video_core/shader/shader.cpp +++ b/src/video_core/shader/shader.cpp @@ -82,6 +82,44 @@ void UnitState::WriteOutput(const ShaderRegs& config, AttributeBuffer& output) { } } +UnitState::UnitState(GSEmitter* emitter) : emitter_ptr(emitter) {} + +GSEmitter::GSEmitter() { + handlers = new Handlers; +} + +GSEmitter::~GSEmitter() { + delete handlers; +} + +void GSEmitter::Emit(Math::Vec4 (&vertex)[16]) { + ASSERT(vertex_id < 3); + std::copy(std::begin(vertex), std::end(vertex), buffer[vertex_id].begin()); + if (prim_emit) { + if (winding) + handlers->winding_setter(); + for (size_t i = 0; i < buffer.size(); ++i) { + AttributeBuffer output; + unsigned int output_i = 0; + for (unsigned int reg : Common::BitSet(output_mask)) { + output.attr[output_i++] = buffer[i][reg]; + } + handlers->vertex_handler(output); + } + } +} + +GSUnitState::GSUnitState() : UnitState(&emitter) {} + +void GSUnitState::SetVertexHandler(VertexHandler vertex_handler, WindingSetter winding_setter) { + emitter.handlers->vertex_handler = std::move(vertex_handler); + emitter.handlers->winding_setter = std::move(winding_setter); +} + +void GSUnitState::ConfigOutput(const ShaderRegs& config) { + emitter.output_mask = config.output_mask; +} + MICROPROFILE_DEFINE(GPU_Shader, "GPU", "Shader", MP_RGB(50, 50, 240)); #ifdef ARCHITECTURE_x86_64 diff --git a/src/video_core/shader/shader.h b/src/video_core/shader/shader.h index e156f6aef0..caec960434 100644 --- a/src/video_core/shader/shader.h +++ b/src/video_core/shader/shader.h @@ -6,6 +6,7 @@ #include #include +#include #include #include #include "common/assert.h" @@ -31,6 +32,12 @@ struct AttributeBuffer { alignas(16) Math::Vec4 attr[16]; }; +/// Handler type for receiving vertex outputs from vertex shader or geometry shader +using VertexHandler = std::function; + +/// Handler type for signaling to invert the vertex order of the next triangle +using WindingSetter = std::function; + struct OutputVertex { Math::Vec4 pos; Math::Vec4 quat; @@ -60,6 +67,29 @@ ASSERT_POS(tc2, RasterizerRegs::VSOutputAttributes::TEXCOORD2_U); static_assert(std::is_pod::value, "Structure is not POD"); static_assert(sizeof(OutputVertex) == 24 * sizeof(float), "OutputVertex has invalid size"); +/** + * This structure contains state information for primitive emitting in geometry shader. + */ +struct GSEmitter { + std::array, 16>, 3> buffer; + u8 vertex_id; + bool prim_emit; + bool winding; + u32 output_mask; + + // Function objects are hidden behind a raw pointer to make the structure standard layout type, + // for JIT to use offsetof to access other members. + struct Handlers { + VertexHandler vertex_handler; + WindingSetter winding_setter; + } * handlers; + + GSEmitter(); + ~GSEmitter(); + void Emit(Math::Vec4 (&vertex)[16]); +}; +static_assert(std::is_standard_layout::value, "GSEmitter is not standard layout type"); + /** * This structure contains the state information that needs to be unique for a shader unit. The 3DS * has four shader units that process shaders in parallel. At the present, Citra only implements a @@ -67,6 +97,7 @@ static_assert(sizeof(OutputVertex) == 24 * sizeof(float), "OutputVertex has inva * here will make it easier for us to parallelize the shader processing later. */ struct UnitState { + explicit UnitState(GSEmitter* emitter = nullptr); struct Registers { // The registers are accessed by the shader JIT using SSE instructions, and are therefore // required to be 16-byte aligned. @@ -82,6 +113,8 @@ struct UnitState { // TODO: How many bits do these actually have? s32 address_registers[3]; + GSEmitter* emitter_ptr; + static size_t InputOffset(const SourceRegister& reg) { switch (reg.GetRegisterType()) { case RegisterType::Input: @@ -125,6 +158,19 @@ struct UnitState { void WriteOutput(const ShaderRegs& config, AttributeBuffer& output); }; +/** + * This is an extended shader unit state that represents the special unit that can run both vertex + * shader and geometry shader. It contains an additional primitive emitter and utilities for + * geometry shader. + */ +struct GSUnitState : public UnitState { + GSUnitState(); + void SetVertexHandler(VertexHandler vertex_handler, WindingSetter winding_setter); + void ConfigOutput(const ShaderRegs& config); + + GSEmitter emitter; +}; + struct ShaderSetup { struct { // The float uniforms are accessed by the shader JIT using SSE instructions, and are From 28128348f21d83c30979ef10399a8a764bb08a73 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 25 Jul 2017 22:43:25 +0300 Subject: [PATCH 073/195] pica/shader/interpreter: implement SETEMIT and EMIT --- src/video_core/shader/shader_interpreter.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/video_core/shader/shader_interpreter.cpp b/src/video_core/shader/shader_interpreter.cpp index 206c0978ad..9d4da4904a 100644 --- a/src/video_core/shader/shader_interpreter.cpp +++ b/src/video_core/shader/shader_interpreter.cpp @@ -636,6 +636,22 @@ static void RunInterpreter(const ShaderSetup& setup, UnitState& state, DebugData break; } + case OpCode::Id::EMIT: { + GSEmitter* emitter = state.emitter_ptr; + ASSERT_MSG(emitter, "Execute EMIT on VS"); + emitter->Emit(state.registers.output); + break; + } + + case OpCode::Id::SETEMIT: { + GSEmitter* emitter = state.emitter_ptr; + ASSERT_MSG(emitter, "Execute SETEMIT on VS"); + emitter->vertex_id = instr.setemit.vertex_id; + emitter->prim_emit = instr.setemit.prim_emit != 0; + emitter->winding = instr.setemit.winding != 0; + break; + } + default: LOG_ERROR(HW_GPU, "Unhandled instruction: 0x%02x (%s): 0x%08x", (int)instr.opcode.Value().EffectiveOpCode(), From bb63ae305279d9a73ea70133c89e92a36dc79f69 Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 26 Jul 2017 00:39:43 +0300 Subject: [PATCH 074/195] correct constness --- src/video_core/shader/shader.cpp | 3 ++- src/video_core/shader/shader.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/video_core/shader/shader.cpp b/src/video_core/shader/shader.cpp index b12468d3a5..e9063e6164 100644 --- a/src/video_core/shader/shader.cpp +++ b/src/video_core/shader/shader.cpp @@ -21,7 +21,8 @@ namespace Pica { namespace Shader { -OutputVertex OutputVertex::FromAttributeBuffer(const RasterizerRegs& regs, AttributeBuffer& input) { +OutputVertex OutputVertex::FromAttributeBuffer(const RasterizerRegs& regs, + const AttributeBuffer& input) { // Setup output data union { OutputVertex ret{}; diff --git a/src/video_core/shader/shader.h b/src/video_core/shader/shader.h index caec960434..a3789da012 100644 --- a/src/video_core/shader/shader.h +++ b/src/video_core/shader/shader.h @@ -50,7 +50,8 @@ struct OutputVertex { INSERT_PADDING_WORDS(1); Math::Vec2 tc2; - static OutputVertex FromAttributeBuffer(const RasterizerRegs& regs, AttributeBuffer& output); + static OutputVertex FromAttributeBuffer(const RasterizerRegs& regs, + const AttributeBuffer& output); }; #define ASSERT_POS(var, pos) \ static_assert(offsetof(OutputVertex, var) == pos * sizeof(float24), "Semantic at wrong " \ From 36981a5aa6ffcc10417e533ab00de3b6f9bad067 Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 26 Jul 2017 15:07:13 +0300 Subject: [PATCH 075/195] pica/primitive_assembly: Handle winding for GS primitive hwtest shows that, although GS always emit a group of three vertices as one primitive, it still respects to the topology type, as if the three vertices are input into the primitive assembler independently and sequentially. It is also shown that the winding flag in SETEMIT only takes effect for Shader topology type, which is believed to be the actual difference between List and Shader (hence removed the TODO). However, only Shader topology type is observed in official games when GS is in use, so the other mode seems to be just unintended usage. --- src/video_core/primitive_assembly.cpp | 15 ++++++++++++--- src/video_core/primitive_assembly.h | 7 +++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/video_core/primitive_assembly.cpp b/src/video_core/primitive_assembly.cpp index acd2ac5e23..9c3dd4cabd 100644 --- a/src/video_core/primitive_assembly.cpp +++ b/src/video_core/primitive_assembly.cpp @@ -17,15 +17,18 @@ template void PrimitiveAssembler::SubmitVertex(const VertexType& vtx, TriangleHandler triangle_handler) { switch (topology) { - // TODO: Figure out what's different with TriangleTopology::Shader. case PipelineRegs::TriangleTopology::List: case PipelineRegs::TriangleTopology::Shader: if (buffer_index < 2) { buffer[buffer_index++] = vtx; } else { buffer_index = 0; - - triangle_handler(buffer[0], buffer[1], vtx); + if (topology == PipelineRegs::TriangleTopology::Shader && winding) { + triangle_handler(buffer[1], buffer[0], vtx); + winding = false; + } else { + triangle_handler(buffer[0], buffer[1], vtx); + } } break; @@ -50,10 +53,16 @@ void PrimitiveAssembler::SubmitVertex(const VertexType& vtx, } } +template +void PrimitiveAssembler::SetWinding() { + winding = true; +} + template void PrimitiveAssembler::Reset() { buffer_index = 0; strip_ready = false; + winding = false; } template diff --git a/src/video_core/primitive_assembly.h b/src/video_core/primitive_assembly.h index e8eccdf276..12de8e3b96 100644 --- a/src/video_core/primitive_assembly.h +++ b/src/video_core/primitive_assembly.h @@ -29,6 +29,12 @@ struct PrimitiveAssembler { */ void SubmitVertex(const VertexType& vtx, TriangleHandler triangle_handler); + /** + * Invert the vertex order of the next triangle. Called by geometry shader emitter. + * This only takes effect for TriangleTopology::Shader. + */ + void SetWinding(); + /** * Resets the internal state of the PrimitiveAssembler. */ @@ -45,6 +51,7 @@ private: int buffer_index; VertexType buffer[2]; bool strip_ready = false; + bool winding = false; }; } // namespace From 8285ca4ad8f9a5d07c9a2ba91367fcf3756f5153 Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 26 Jul 2017 18:44:52 +0300 Subject: [PATCH 076/195] pica/shader/jit: implement SETEMIT and EMIT --- .../shader/shader_jit_x64_compiler.cpp | 49 ++++++++++++++++++- .../shader/shader_jit_x64_compiler.h | 2 + 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/video_core/shader/shader_jit_x64_compiler.cpp b/src/video_core/shader/shader_jit_x64_compiler.cpp index 42a57aab19..1b31623bd5 100644 --- a/src/video_core/shader/shader_jit_x64_compiler.cpp +++ b/src/video_core/shader/shader_jit_x64_compiler.cpp @@ -75,8 +75,8 @@ const JitFunction instr_table[64] = { &JitShader::Compile_IF, // ifu &JitShader::Compile_IF, // ifc &JitShader::Compile_LOOP, // loop - nullptr, // emit - nullptr, // sete + &JitShader::Compile_EMIT, // emit + &JitShader::Compile_SETE, // sete &JitShader::Compile_JMP, // jmpc &JitShader::Compile_JMP, // jmpu &JitShader::Compile_CMP, // cmp @@ -772,6 +772,51 @@ void JitShader::Compile_JMP(Instruction instr) { } } +static void Emit(GSEmitter* emitter, Math::Vec4 (*output)[16]) { + emitter->Emit(*output); +} + +void JitShader::Compile_EMIT(Instruction instr) { + Label have_emitter, end; + mov(rax, qword[STATE + offsetof(UnitState, emitter_ptr)]); + test(rax, rax); + jnz(have_emitter); + + ABI_PushRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0); + mov(ABI_PARAM1, reinterpret_cast("Execute EMIT on VS")); + CallFarFunction(*this, LogCritical); + ABI_PopRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0); + jmp(end); + + L(have_emitter); + ABI_PushRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0); + mov(ABI_PARAM1, rax); + mov(ABI_PARAM2, STATE); + add(ABI_PARAM2, static_cast(offsetof(UnitState, registers.output))); + CallFarFunction(*this, Emit); + ABI_PopRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0); + L(end); +} + +void JitShader::Compile_SETE(Instruction instr) { + Label have_emitter, end; + mov(rax, qword[STATE + offsetof(UnitState, emitter_ptr)]); + test(rax, rax); + jnz(have_emitter); + + ABI_PushRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0); + mov(ABI_PARAM1, reinterpret_cast("Execute SETEMIT on VS")); + CallFarFunction(*this, LogCritical); + ABI_PopRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0); + jmp(end); + + L(have_emitter); + mov(byte[rax + offsetof(GSEmitter, vertex_id)], instr.setemit.vertex_id); + mov(byte[rax + offsetof(GSEmitter, prim_emit)], instr.setemit.prim_emit); + mov(byte[rax + offsetof(GSEmitter, winding)], instr.setemit.winding); + L(end); +} + void JitShader::Compile_Block(unsigned end) { while (program_counter < end) { Compile_NextInstr(); diff --git a/src/video_core/shader/shader_jit_x64_compiler.h b/src/video_core/shader/shader_jit_x64_compiler.h index 31af0ca484..4aee56b1d5 100644 --- a/src/video_core/shader/shader_jit_x64_compiler.h +++ b/src/video_core/shader/shader_jit_x64_compiler.h @@ -66,6 +66,8 @@ public: void Compile_JMP(Instruction instr); void Compile_CMP(Instruction instr); void Compile_MAD(Instruction instr); + void Compile_EMIT(Instruction instr); + void Compile_SETE(Instruction instr); private: void Compile_Block(unsigned end); From 0f35755572fe63534813528de9a0710193f2e335 Mon Sep 17 00:00:00 2001 From: wwylele Date: Fri, 4 Aug 2017 17:03:17 +0300 Subject: [PATCH 077/195] pica/command_processor: build geometry pipeline and run geometry shader The geometry pipeline manages data transfer between VS, GS and primitive assembler. It has known four modes: - no GS mode: sends VS output directly to the primitive assembler (what citra currently does) - GS mode 0: sends VS output to GS input registers, and sends GS output to primitive assembler - GS mode 1: sends VS output to GS uniform registers, and sends GS output to primitive assembler. It also takes an index from the index buffer at the beginning of each primitive for determine the primitive size. - GS mode 2: similar to mode 1, but doesn't take the index and uses a fixed primitive size. hwtest shows that immediate mode also supports GS (at least for mode 0), so the geometry pipeline gets refactored into its own class for supporting both drawing mode. In the immediate mode, some games don't set the pipeline registers to a valid value until the first attribute input, so a geometry pipeline reset flag is set in `pipeline.vs_default_attributes_setup.index` trigger, and the actual pipeline reconfigure is triggered in the first attribute input. In the normal drawing mode with index buffer, the vertex cache is a little bit modified to support the geometry pipeline. Instead of OutputVertex, it now holds AttributeBuffer, which is the input to the geometry pipeline. The AttributeBuffer->OutputVertex conversion is done inside the pipeline vertex handler. The actual hardware vertex cache is believed to be implemented in a similar way (because this is the only way that makes sense). Both geometry pipeline and GS unit rely on states preservation across drawing call, so they are put into the global state. In the future, the other three vertex shader units should be also placed in the global state, and a scheduler should be implemented on top of the four units. Note that the current gs_unit already allows running VS on it in the future. --- src/video_core/CMakeLists.txt | 2 + src/video_core/command_processor.cpp | 54 +++--- src/video_core/geometry_pipeline.cpp | 274 +++++++++++++++++++++++++++ src/video_core/geometry_pipeline.h | 49 +++++ src/video_core/pica.cpp | 21 +- src/video_core/pica_state.h | 11 ++ 6 files changed, 383 insertions(+), 28 deletions(-) create mode 100644 src/video_core/geometry_pipeline.cpp create mode 100644 src/video_core/geometry_pipeline.h diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index cffa4c9523..82f47d8a90 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -1,6 +1,7 @@ set(SRCS command_processor.cpp debug_utils/debug_utils.cpp + geometry_pipeline.cpp pica.cpp primitive_assembly.cpp regs.cpp @@ -29,6 +30,7 @@ set(SRCS set(HEADERS command_processor.h debug_utils/debug_utils.h + geometry_pipeline.h gpu_debugger.h pica.h pica_state.h diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index f98ca33025..fb65a3a0a7 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -161,6 +161,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { case PICA_REG_INDEX(pipeline.vs_default_attributes_setup.index): g_state.immediate.current_attribute = 0; + g_state.immediate.reset_geometry_pipeline = true; default_attr_counter = 0; break; @@ -234,16 +235,14 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { shader_engine->Run(g_state.vs, shader_unit); shader_unit.WriteOutput(regs.vs, output); - // Send to renderer - using Pica::Shader::OutputVertex; - auto AddTriangle = [](const OutputVertex& v0, const OutputVertex& v1, - const OutputVertex& v2) { - VideoCore::g_renderer->Rasterizer()->AddTriangle(v0, v1, v2); - }; - - g_state.primitive_assembler.SubmitVertex( - Shader::OutputVertex::FromAttributeBuffer(regs.rasterizer, output), - AddTriangle); + // Send to geometry pipeline + if (g_state.immediate.reset_geometry_pipeline) { + g_state.geometry_pipeline.Reconfigure(); + g_state.immediate.reset_geometry_pipeline = false; + } + ASSERT(!g_state.geometry_pipeline.NeedIndexInput()); + g_state.geometry_pipeline.Setup(shader_engine); + g_state.geometry_pipeline.SubmitVertex(output); } } } @@ -321,8 +320,8 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { // The size has been tuned for optimal balance between hit-rate and the cost of lookup const size_t VERTEX_CACHE_SIZE = 32; std::array vertex_cache_ids; - std::array vertex_cache; - Shader::OutputVertex output_vertex; + std::array vertex_cache; + Shader::AttributeBuffer vs_output; unsigned int vertex_cache_pos = 0; vertex_cache_ids.fill(-1); @@ -332,6 +331,11 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { shader_engine->SetupBatch(g_state.vs, regs.vs.main_offset); + g_state.geometry_pipeline.Reconfigure(); + g_state.geometry_pipeline.Setup(shader_engine); + if (g_state.geometry_pipeline.NeedIndexInput()) + ASSERT(is_indexed); + for (unsigned int index = 0; index < regs.pipeline.num_vertices; ++index) { // Indexed rendering doesn't use the start offset unsigned int vertex = @@ -345,6 +349,11 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { bool vertex_cache_hit = false; if (is_indexed) { + if (g_state.geometry_pipeline.NeedIndexInput()) { + g_state.geometry_pipeline.SubmitIndex(vertex); + continue; + } + if (g_debug_context && Pica::g_debug_context->recorder) { int size = index_u16 ? 2 : 1; memory_accesses.AddAccess(base_address + index_info.offset + size * index, @@ -353,7 +362,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { for (unsigned int i = 0; i < VERTEX_CACHE_SIZE; ++i) { if (vertex == vertex_cache_ids[i]) { - output_vertex = vertex_cache[i]; + vs_output = vertex_cache[i]; vertex_cache_hit = true; break; } @@ -362,7 +371,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { if (!vertex_cache_hit) { // Initialize data for the current vertex - Shader::AttributeBuffer input, output{}; + Shader::AttributeBuffer input; loader.LoadVertex(base_address, index, vertex, input, memory_accesses); // Send to vertex shader @@ -371,26 +380,17 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { (void*)&input); shader_unit.LoadInput(regs.vs, input); shader_engine->Run(g_state.vs, shader_unit); - shader_unit.WriteOutput(regs.vs, output); - - // Retrieve vertex from register data - output_vertex = Shader::OutputVertex::FromAttributeBuffer(regs.rasterizer, output); + shader_unit.WriteOutput(regs.vs, vs_output); if (is_indexed) { - vertex_cache[vertex_cache_pos] = output_vertex; + vertex_cache[vertex_cache_pos] = vs_output; vertex_cache_ids[vertex_cache_pos] = vertex; vertex_cache_pos = (vertex_cache_pos + 1) % VERTEX_CACHE_SIZE; } } - // Send to renderer - using Pica::Shader::OutputVertex; - auto AddTriangle = [](const OutputVertex& v0, const OutputVertex& v1, - const OutputVertex& v2) { - VideoCore::g_renderer->Rasterizer()->AddTriangle(v0, v1, v2); - }; - - primitive_assembler.SubmitVertex(output_vertex, AddTriangle); + // Send to geometry pipeline + g_state.geometry_pipeline.SubmitVertex(vs_output); } for (auto& range : memory_accesses.ranges) { diff --git a/src/video_core/geometry_pipeline.cpp b/src/video_core/geometry_pipeline.cpp new file mode 100644 index 0000000000..b146e2ecb1 --- /dev/null +++ b/src/video_core/geometry_pipeline.cpp @@ -0,0 +1,274 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "video_core/geometry_pipeline.h" +#include "video_core/pica_state.h" +#include "video_core/regs.h" +#include "video_core/renderer_base.h" +#include "video_core/video_core.h" + +namespace Pica { + +/// An attribute buffering interface for different pipeline modes +class GeometryPipelineBackend { +public: + virtual ~GeometryPipelineBackend() = default; + + /// Checks if there is no incomplete data transfer + virtual bool IsEmpty() const = 0; + + /// Checks if the pipeline needs a direct input from index buffer + virtual bool NeedIndexInput() const = 0; + + /// Submits an index from index buffer + virtual void SubmitIndex(unsigned int val) = 0; + + /** + * Submits vertex attributes + * @param input attributes of a vertex output from vertex shader + * @return if the buffer is full and the geometry shader should be invoked + */ + virtual bool SubmitVertex(const Shader::AttributeBuffer& input) = 0; +}; + +// In the Point mode, vertex attributes are sent to the input registers in the geometry shader unit. +// The size of vertex shader outputs and geometry shader inputs are constants. Geometry shader is +// invoked upon inputs buffer filled up by vertex shader outputs. For example, if we have a geometry +// shader that takes 6 inputs, and the vertex shader outputs 2 attributes, it would take 3 vertices +// for one geometry shader invocation. +// TODO: what happens when the input size is not divisible by the output size? +class GeometryPipeline_Point : public GeometryPipelineBackend { +public: + GeometryPipeline_Point(const Regs& regs, Shader::GSUnitState& unit) : regs(regs), unit(unit) { + ASSERT(regs.pipeline.variable_primitive == 0); + ASSERT(regs.gs.input_to_uniform == 0); + vs_output_num = regs.pipeline.vs_outmap_total_minus_1_a + 1; + size_t gs_input_num = regs.gs.max_input_attribute_index + 1; + ASSERT(gs_input_num % vs_output_num == 0); + buffer_cur = attribute_buffer.attr; + buffer_end = attribute_buffer.attr + gs_input_num; + } + + bool IsEmpty() const override { + return buffer_cur == attribute_buffer.attr; + } + + bool NeedIndexInput() const override { + return false; + } + + void SubmitIndex(unsigned int val) override { + UNREACHABLE(); + } + + bool SubmitVertex(const Shader::AttributeBuffer& input) override { + buffer_cur = std::copy(input.attr, input.attr + vs_output_num, buffer_cur); + if (buffer_cur == buffer_end) { + buffer_cur = attribute_buffer.attr; + unit.LoadInput(regs.gs, attribute_buffer); + return true; + } + return false; + } + +private: + const Regs& regs; + Shader::GSUnitState& unit; + Shader::AttributeBuffer attribute_buffer; + Math::Vec4* buffer_cur; + Math::Vec4* buffer_end; + unsigned int vs_output_num; +}; + +// In VariablePrimitive mode, vertex attributes are buffered into the uniform registers in the +// geometry shader unit. The number of vertex is variable, which is specified by the first index +// value in the batch. This mode is usually used for subdivision. +class GeometryPipeline_VariablePrimitive : public GeometryPipelineBackend { +public: + GeometryPipeline_VariablePrimitive(const Regs& regs, Shader::ShaderSetup& setup) + : regs(regs), setup(setup) { + ASSERT(regs.pipeline.variable_primitive == 1); + ASSERT(regs.gs.input_to_uniform == 1); + vs_output_num = regs.pipeline.vs_outmap_total_minus_1_a + 1; + } + + bool IsEmpty() const override { + return need_index; + } + + bool NeedIndexInput() const override { + return need_index; + } + + void SubmitIndex(unsigned int val) override { + DEBUG_ASSERT(need_index); + + // The number of vertex input is put to the uniform register + float24 vertex_num = float24::FromFloat32(val); + setup.uniforms.f[0] = Math::MakeVec(vertex_num, vertex_num, vertex_num, vertex_num); + + // The second uniform register and so on are used for receiving input vertices + buffer_cur = setup.uniforms.f + 1; + + main_vertex_num = regs.pipeline.variable_vertex_main_num_minus_1 + 1; + total_vertex_num = val; + need_index = false; + } + + bool SubmitVertex(const Shader::AttributeBuffer& input) override { + DEBUG_ASSERT(!need_index); + if (main_vertex_num != 0) { + // For main vertices, receive all attributes + buffer_cur = std::copy(input.attr, input.attr + vs_output_num, buffer_cur); + --main_vertex_num; + } else { + // For other vertices, only receive the first attribute (usually the position) + *(buffer_cur++) = input.attr[0]; + } + --total_vertex_num; + + if (total_vertex_num == 0) { + need_index = true; + return true; + } + + return false; + } + +private: + bool need_index = true; + const Regs& regs; + Shader::ShaderSetup& setup; + unsigned int main_vertex_num; + unsigned int total_vertex_num; + Math::Vec4* buffer_cur; + unsigned int vs_output_num; +}; + +// In FixedPrimitive mode, vertex attributes are buffered into the uniform registers in the geometry +// shader unit. The number of vertex per shader invocation is constant. This is usually used for +// particle system. +class GeometryPipeline_FixedPrimitive : public GeometryPipelineBackend { +public: + GeometryPipeline_FixedPrimitive(const Regs& regs, Shader::ShaderSetup& setup) + : regs(regs), setup(setup) { + ASSERT(regs.pipeline.variable_primitive == 0); + ASSERT(regs.gs.input_to_uniform == 1); + vs_output_num = regs.pipeline.vs_outmap_total_minus_1_a + 1; + ASSERT(vs_output_num == regs.pipeline.gs_config.stride_minus_1 + 1); + size_t vertex_num = regs.pipeline.gs_config.fixed_vertex_num_minus_1 + 1; + buffer_cur = buffer_begin = setup.uniforms.f + regs.pipeline.gs_config.start_index; + buffer_end = buffer_begin + vs_output_num * vertex_num; + } + + bool IsEmpty() const override { + return buffer_cur == buffer_begin; + } + + bool NeedIndexInput() const override { + return false; + } + + void SubmitIndex(unsigned int val) override { + UNREACHABLE(); + } + + bool SubmitVertex(const Shader::AttributeBuffer& input) override { + buffer_cur = std::copy(input.attr, input.attr + vs_output_num, buffer_cur); + if (buffer_cur == buffer_end) { + buffer_cur = buffer_begin; + return true; + } + return false; + } + +private: + const Regs& regs; + Shader::ShaderSetup& setup; + Math::Vec4* buffer_begin; + Math::Vec4* buffer_cur; + Math::Vec4* buffer_end; + unsigned int vs_output_num; +}; + +GeometryPipeline::GeometryPipeline(State& state) : state(state) {} + +GeometryPipeline::~GeometryPipeline() = default; + +void GeometryPipeline::SetVertexHandler(Shader::VertexHandler vertex_handler) { + this->vertex_handler = vertex_handler; +} + +void GeometryPipeline::Setup(Shader::ShaderEngine* shader_engine) { + if (!backend) + return; + + this->shader_engine = shader_engine; + shader_engine->SetupBatch(state.gs, state.regs.gs.main_offset); +} + +void GeometryPipeline::Reconfigure() { + ASSERT(!backend || backend->IsEmpty()); + + if (state.regs.pipeline.use_gs == PipelineRegs::UseGS::No) { + backend = nullptr; + return; + } + + ASSERT(state.regs.pipeline.use_gs == PipelineRegs::UseGS::Yes); + + // The following assumes that when geometry shader is in use, the shader unit 3 is configured as + // a geometry shader unit. + // TODO: what happens if this is not true? + ASSERT(state.regs.pipeline.gs_unit_exclusive_configuration == 1); + ASSERT(state.regs.gs.shader_mode == ShaderRegs::ShaderMode::GS); + + state.gs_unit.ConfigOutput(state.regs.gs); + + ASSERT(state.regs.pipeline.vs_outmap_total_minus_1_a == + state.regs.pipeline.vs_outmap_total_minus_1_b); + + switch (state.regs.pipeline.gs_config.mode) { + case PipelineRegs::GSMode::Point: + backend = std::make_unique(state.regs, state.gs_unit); + break; + case PipelineRegs::GSMode::VariablePrimitive: + backend = std::make_unique(state.regs, state.gs); + break; + case PipelineRegs::GSMode::FixedPrimitive: + backend = std::make_unique(state.regs, state.gs); + break; + default: + UNREACHABLE(); + } +} + +bool GeometryPipeline::NeedIndexInput() const { + if (!backend) + return false; + return backend->NeedIndexInput(); +} + +void GeometryPipeline::SubmitIndex(unsigned int val) { + backend->SubmitIndex(val); +} + +void GeometryPipeline::SubmitVertex(const Shader::AttributeBuffer& input) { + if (!backend) { + // No backend means the geometry shader is disabled, so we send the vertex shader output + // directly to the primitive assembler. + vertex_handler(input); + } else { + if (backend->SubmitVertex(input)) { + shader_engine->Run(state.gs, state.gs_unit); + + // The uniform b15 is set to true after every geometry shader invocation. This is useful + // for the shader to know if this is the first invocation in a batch, if the program set + // b15 to false first. + state.gs.uniforms.b[15] = true; + } + } +} + +} // namespace Pica diff --git a/src/video_core/geometry_pipeline.h b/src/video_core/geometry_pipeline.h new file mode 100644 index 0000000000..91fdd31923 --- /dev/null +++ b/src/video_core/geometry_pipeline.h @@ -0,0 +1,49 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include "video_core/shader/shader.h" + +namespace Pica { + +struct State; + +class GeometryPipelineBackend; + +/// A pipeline receiving from vertex shader and sending to geometry shader and primitive assembler +class GeometryPipeline { +public: + explicit GeometryPipeline(State& state); + ~GeometryPipeline(); + + /// Sets the handler for receiving vertex outputs from vertex shader + void SetVertexHandler(Shader::VertexHandler vertex_handler); + + /** + * Setup the geometry shader unit if it is in use + * @param shader_engine the shader engine for the geometry shader to run + */ + void Setup(Shader::ShaderEngine* shader_engine); + + /// Reconfigures the pipeline according to current register settings + void Reconfigure(); + + /// Checks if the pipeline needs a direct input from index buffer + bool NeedIndexInput() const; + + /// Submits an index from index buffer. Call this only when NeedIndexInput returns true + void SubmitIndex(unsigned int val); + + /// Submits vertex attributes output from vertex shader + void SubmitVertex(const Shader::AttributeBuffer& input); + +private: + Shader::VertexHandler vertex_handler; + Shader::ShaderEngine* shader_engine; + std::unique_ptr backend; + State& state; +}; +} // namespace Pica diff --git a/src/video_core/pica.cpp b/src/video_core/pica.cpp index b95148a6a4..218e06883d 100644 --- a/src/video_core/pica.cpp +++ b/src/video_core/pica.cpp @@ -3,9 +3,11 @@ // Refer to the license.txt file included. #include +#include "video_core/geometry_pipeline.h" #include "video_core/pica.h" #include "video_core/pica_state.h" -#include "video_core/regs_pipeline.h" +#include "video_core/renderer_base.h" +#include "video_core/video_core.h" namespace Pica { @@ -24,6 +26,23 @@ void Zero(T& o) { memset(&o, 0, sizeof(o)); } +State::State() : geometry_pipeline(*this) { + auto SubmitVertex = [this](const Shader::AttributeBuffer& vertex) { + using Pica::Shader::OutputVertex; + auto AddTriangle = [this](const OutputVertex& v0, const OutputVertex& v1, + const OutputVertex& v2) { + VideoCore::g_renderer->Rasterizer()->AddTriangle(v0, v1, v2); + }; + primitive_assembler.SubmitVertex( + Shader::OutputVertex::FromAttributeBuffer(regs.rasterizer, vertex), AddTriangle); + }; + + auto SetWinding = [this]() { primitive_assembler.SetWinding(); }; + + g_state.gs_unit.SetVertexHandler(SubmitVertex, SetWinding); + g_state.geometry_pipeline.SetVertexHandler(SubmitVertex); +} + void State::Reset() { Zero(regs); Zero(vs); diff --git a/src/video_core/pica_state.h b/src/video_core/pica_state.h index 864a2c9e60..c6634a0bc3 100644 --- a/src/video_core/pica_state.h +++ b/src/video_core/pica_state.h @@ -8,6 +8,7 @@ #include "common/bit_field.h" #include "common/common_types.h" #include "common/vector_math.h" +#include "video_core/geometry_pipeline.h" #include "video_core/primitive_assembly.h" #include "video_core/regs.h" #include "video_core/shader/shader.h" @@ -16,6 +17,7 @@ namespace Pica { /// Struct used to describe current Pica state struct State { + State(); void Reset(); /// Pica registers @@ -137,8 +139,17 @@ struct State { Shader::AttributeBuffer input_vertex; // Index of the next attribute to be loaded into `input_vertex`. u32 current_attribute = 0; + // Indicates the immediate mode just started and the geometry pipeline needs to reconfigure + bool reset_geometry_pipeline = true; } immediate; + // the geometry shader needs to be kept in the global state because some shaders relie on + // preserved register value across shader invocation. + // TODO: also bring the three vertex shader units here and implement the shader scheduler. + Shader::GSUnitState gs_unit; + + GeometryPipeline geometry_pipeline; + // This is constructed with a dummy triangle topology PrimitiveAssembler primitive_assembler; }; From 5d0a1e7efddf234234d54fe97395f6975f8d1a28 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Sat, 19 Aug 2017 19:14:33 +0200 Subject: [PATCH 078/195] Added missing parts in libnetwork (#2838) * Network: Set and send the game information over enet Added Callbacks for RoomMember and GetMemberList to Room in preparation for web_services. --- src/core/CMakeLists.txt | 2 +- src/core/core.cpp | 5 ++ src/core/loader/ncch.cpp | 8 +++ src/network/packet.cpp | 38 +++++++++++ src/network/packet.h | 4 ++ src/network/room.cpp | 84 +++++++++++++++++------ src/network/room.h | 19 +++++- src/network/room_member.cpp | 128 +++++++++++++++++++++++++++++++++--- src/network/room_member.h | 59 +++++++++++++++-- 9 files changed, 310 insertions(+), 37 deletions(-) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 360f407f3d..0a6f97e4b5 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -388,7 +388,7 @@ set(HEADERS create_directory_groups(${SRCS} ${HEADERS}) add_library(core STATIC ${SRCS} ${HEADERS}) -target_link_libraries(core PUBLIC common PRIVATE audio_core video_core) +target_link_libraries(core PUBLIC common PRIVATE audio_core network video_core) target_link_libraries(core PUBLIC Boost::boost PRIVATE cryptopp dynarmic fmt) if (ENABLE_WEB_SERVICE) target_link_libraries(core PUBLIC json-headers web_service) diff --git a/src/core/core.cpp b/src/core/core.cpp index d08f18623f..5332318cff 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -19,6 +19,7 @@ #include "core/loader/loader.h" #include "core/memory_setup.h" #include "core/settings.h" +#include "network/network.h" #include "video_core/video_core.h" namespace Core { @@ -188,6 +189,10 @@ void System::Shutdown() { cpu_core = nullptr; app_loader = nullptr; telemetry_session = nullptr; + if (auto room_member = Network::GetRoomMember().lock()) { + Network::GameInfo game_info{}; + room_member->SendGameInfo(game_info); + } LOG_DEBUG(Core, "Shutdown OK"); } diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index c007069a9e..7aff7f29b3 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -20,6 +20,7 @@ #include "core/loader/ncch.h" #include "core/loader/smdh.h" #include "core/memory.h" +#include "network/network.h" //////////////////////////////////////////////////////////////////////////////////////////////////// // Loader namespace @@ -350,6 +351,13 @@ ResultStatus AppLoader_NCCH::Load() { Core::Telemetry().AddField(Telemetry::FieldType::Session, "ProgramId", program_id); + if (auto room_member = Network::GetRoomMember().lock()) { + Network::GameInfo game_info; + ReadTitle(game_info.name); + game_info.id = ncch_header.program_id; + room_member->SendGameInfo(game_info); + } + is_loaded = true; // Set state to loaded result = LoadExec(); // Load the executable into memory for booting diff --git a/src/network/packet.cpp b/src/network/packet.cpp index 660e92c0dc..cc60f2fbca 100644 --- a/src/network/packet.cpp +++ b/src/network/packet.cpp @@ -13,6 +13,18 @@ namespace Network { +#ifndef htonll +u64 htonll(u64 x) { + return ((1 == htonl(1)) ? (x) : ((uint64_t)htonl((x)&0xFFFFFFFF) << 32) | htonl((x) >> 32)); +} +#endif + +#ifndef ntohll +u64 ntohll(u64 x) { + return ((1 == ntohl(1)) ? (x) : ((uint64_t)ntohl((x)&0xFFFFFFFF) << 32) | ntohl((x) >> 32)); +} +#endif + void Packet::Append(const void* in_data, std::size_t size_in_bytes) { if (in_data && (size_in_bytes > 0)) { std::size_t start = data.size(); @@ -100,6 +112,20 @@ Packet& Packet::operator>>(u32& out_data) { return *this; } +Packet& Packet::operator>>(s64& out_data) { + s64 value; + Read(&value, sizeof(value)); + out_data = ntohll(value); + return *this; +} + +Packet& Packet::operator>>(u64& out_data) { + u64 value; + Read(&value, sizeof(value)); + out_data = ntohll(value); + return *this; +} + Packet& Packet::operator>>(float& out_data) { Read(&out_data, sizeof(out_data)); return *this; @@ -183,6 +209,18 @@ Packet& Packet::operator<<(u32 in_data) { return *this; } +Packet& Packet::operator<<(s64 in_data) { + s64 toWrite = htonll(in_data); + Append(&toWrite, sizeof(toWrite)); + return *this; +} + +Packet& Packet::operator<<(u64 in_data) { + u64 toWrite = htonll(in_data); + Append(&toWrite, sizeof(toWrite)); + return *this; +} + Packet& Packet::operator<<(float in_data) { Append(&in_data, sizeof(in_data)); return *this; diff --git a/src/network/packet.h b/src/network/packet.h index 94b351ab12..5a2e58dc20 100644 --- a/src/network/packet.h +++ b/src/network/packet.h @@ -72,6 +72,8 @@ public: Packet& operator>>(u16& out_data); Packet& operator>>(s32& out_data); Packet& operator>>(u32& out_data); + Packet& operator>>(s64& out_data); + Packet& operator>>(u64& out_data); Packet& operator>>(float& out_data); Packet& operator>>(double& out_data); Packet& operator>>(char* out_data); @@ -89,6 +91,8 @@ public: Packet& operator<<(u16 in_data); Packet& operator<<(s32 in_data); Packet& operator<<(u32 in_data); + Packet& operator<<(s64 in_data); + Packet& operator<<(u64 in_data); Packet& operator<<(float in_data); Packet& operator<<(double in_data); Packet& operator<<(const char* in_data); diff --git a/src/network/room.cpp b/src/network/room.cpp index fbbaf8b93a..261049ab02 100644 --- a/src/network/room.cpp +++ b/src/network/room.cpp @@ -4,9 +4,9 @@ #include #include +#include #include #include -#include #include "enet/enet.h" #include "network/packet.h" #include "network/room.h" @@ -29,12 +29,14 @@ public: struct Member { std::string nickname; ///< The nickname of the member. - std::string game_name; ///< The current game of the member + GameInfo game_info; ///< The current game of the member MacAddress mac_address; ///< The assigned mac address of the member. ENetPeer* peer; ///< The remote peer. }; using MemberList = std::vector; - MemberList members; ///< Information about the members of this room. + MemberList members; ///< Information about the members of this room + mutable std::mutex member_mutex; ///< Mutex for locking the members list + /// This should be a std::shared_mutex as soon as C++17 is supported RoomImpl() : random_gen(std::random_device()()), NintendoOUI{0x00, 0x1F, 0x32, 0x00, 0x00, 0x00} {} @@ -147,7 +149,7 @@ void Room::RoomImpl::ServerLoop() { case IdJoinRequest: HandleJoinRequest(&event); break; - case IdSetGameName: + case IdSetGameInfo: HandleGameNamePacket(&event); break; case IdWifiPacket: @@ -213,7 +215,10 @@ void Room::RoomImpl::HandleJoinRequest(const ENetEvent* event) { member.nickname = nickname; member.peer = event->peer; - members.push_back(std::move(member)); + { + std::lock_guard lock(member_mutex); + members.push_back(std::move(member)); + } // Notify everyone that the room information has changed. BroadcastRoomInformation(); @@ -223,12 +228,14 @@ void Room::RoomImpl::HandleJoinRequest(const ENetEvent* event) { bool Room::RoomImpl::IsValidNickname(const std::string& nickname) const { // A nickname is valid if it is not already taken by anybody else in the room. // TODO(B3N30): Check for empty names, spaces, etc. + std::lock_guard lock(member_mutex); return std::all_of(members.begin(), members.end(), [&nickname](const auto& member) { return member.nickname != nickname; }); } bool Room::RoomImpl::IsValidMacAddress(const MacAddress& address) const { // A MAC address is valid if it is not already taken by anybody else in the room. + std::lock_guard lock(member_mutex); return std::all_of(members.begin(), members.end(), [&address](const auto& member) { return member.mac_address != address; }); } @@ -279,6 +286,7 @@ void Room::RoomImpl::SendCloseMessage() { packet << static_cast(IdCloseRoom); ENetPacket* enet_packet = enet_packet_create(packet.GetData(), packet.GetDataSize(), ENET_PACKET_FLAG_RELIABLE); + std::lock_guard lock(member_mutex); for (auto& member : members) { enet_peer_send(member.peer, 0, enet_packet); } @@ -295,10 +303,14 @@ void Room::RoomImpl::BroadcastRoomInformation() { packet << room_information.member_slots; packet << static_cast(members.size()); - for (const auto& member : members) { - packet << member.nickname; - packet << member.mac_address; - packet << member.game_name; + { + std::lock_guard lock(member_mutex); + for (const auto& member : members) { + packet << member.nickname; + packet << member.mac_address; + packet << member.game_info.name; + packet << member.game_info.id; + } } ENetPacket* enet_packet = @@ -335,11 +347,13 @@ void Room::RoomImpl::HandleWifiPacket(const ENetEvent* event) { ENET_PACKET_FLAG_RELIABLE); if (destination_address == BroadcastMac) { // Send the data to everyone except the sender + std::lock_guard lock(member_mutex); for (const auto& member : members) { if (member.peer != event->peer) enet_peer_send(member.peer, 0, enet_packet); } } else { // Send the data only to the destination client + std::lock_guard lock(member_mutex); auto member = std::find_if(members.begin(), members.end(), [destination_address](const Member& member) -> bool { return member.mac_address == destination_address; @@ -361,6 +375,8 @@ void Room::RoomImpl::HandleChatPacket(const ENetEvent* event) { auto CompareNetworkAddress = [event](const Member member) -> bool { return member.peer == event->peer; }; + + std::lock_guard lock(member_mutex); const auto sending_member = std::find_if(members.begin(), members.end(), CompareNetworkAddress); if (sending_member == members.end()) { return; // Received a chat message from a unknown sender @@ -385,22 +401,32 @@ void Room::RoomImpl::HandleGameNamePacket(const ENetEvent* event) { in_packet.Append(event->packet->data, event->packet->dataLength); in_packet.IgnoreBytes(sizeof(u8)); // Igonore the message type - std::string game_name; - in_packet >> game_name; - auto member = - std::find_if(members.begin(), members.end(), - [event](const Member& member) -> bool { return member.peer == event->peer; }); - if (member != members.end()) { - member->game_name = game_name; - BroadcastRoomInformation(); + GameInfo game_info; + in_packet >> game_info.name; + in_packet >> game_info.id; + + { + std::lock_guard lock(member_mutex); + auto member = + std::find_if(members.begin(), members.end(), [event](const Member& member) -> bool { + return member.peer == event->peer; + }); + if (member != members.end()) { + member->game_info = game_info; + } } + BroadcastRoomInformation(); } void Room::RoomImpl::HandleClientDisconnection(ENetPeer* client) { // Remove the client from the members list. - members.erase(std::remove_if(members.begin(), members.end(), - [client](const Member& member) { return member.peer == client; }), - members.end()); + { + std::lock_guard lock(member_mutex); + members.erase( + std::remove_if(members.begin(), members.end(), + [client](const Member& member) { return member.peer == client; }), + members.end()); + } // Announce the change to all clients. enet_peer_disconnect(client, 0); @@ -437,6 +463,19 @@ const RoomInformation& Room::GetRoomInformation() const { return room_impl->room_information; } +std::vector Room::GetRoomMemberList() const { + std::vector member_list; + std::lock_guard lock(room_impl->member_mutex); + for (const auto& member_impl : room_impl->members) { + Member member; + member.nickname = member_impl.nickname; + member.mac_address = member_impl.mac_address; + member.game_info = member_impl.game_info; + member_list.push_back(member); + } + return member_list; +}; + void Room::Destroy() { room_impl->state = State::Closed; room_impl->room_thread->join(); @@ -447,7 +486,10 @@ void Room::Destroy() { } room_impl->room_information = {}; room_impl->server = nullptr; - room_impl->members.clear(); + { + std::lock_guard lock(room_impl->member_mutex); + room_impl->members.clear(); + } room_impl->room_information.member_slots = 0; room_impl->room_information.name.clear(); } diff --git a/src/network/room.h b/src/network/room.h index 65b0d008a1..8285a4d0cd 100644 --- a/src/network/room.h +++ b/src/network/room.h @@ -7,6 +7,7 @@ #include #include #include +#include #include "common/common_types.h" namespace Network { @@ -21,6 +22,11 @@ struct RoomInformation { u32 member_slots; ///< Maximum number of members in this room }; +struct GameInfo { + std::string name{""}; + u64 id{0}; +}; + using MacAddress = std::array; /// A special MAC address that tells the room we're joining to assign us a MAC address /// automatically. @@ -34,7 +40,7 @@ enum RoomMessageTypes : u8 { IdJoinRequest = 1, IdJoinSuccess, IdRoomInformation, - IdSetGameName, + IdSetGameInfo, IdWifiPacket, IdChatMessage, IdNameCollision, @@ -51,6 +57,12 @@ public: Closed, ///< The room is not opened and can not accept connections. }; + struct Member { + std::string nickname; ///< The nickname of the member. + GameInfo game_info; ///< The current game of the member + MacAddress mac_address; ///< The assigned mac address of the member. + }; + Room(); ~Room(); @@ -64,6 +76,11 @@ public: */ const RoomInformation& GetRoomInformation() const; + /** + * Gets a list of the mbmers connected to the room. + */ + std::vector GetRoomMemberList() const; + /** * Creates the socket for this room. Will bind to default address if * server is empty string. diff --git a/src/network/room_member.cpp b/src/network/room_member.cpp index dac9bacaeb..f229ec6fd4 100644 --- a/src/network/room_member.cpp +++ b/src/network/room_member.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include "common/assert.h" #include "enet/enet.h" @@ -25,6 +26,9 @@ public: /// Information about the room we're connected to. RoomInformation room_information; + /// The current game name, id and version + GameInfo current_game_info; + std::atomic state{State::Idle}; ///< Current state of the RoomMember. void SetState(const State new_state); bool IsConnected() const; @@ -37,6 +41,24 @@ public: std::unique_ptr loop_thread; std::mutex send_list_mutex; ///< Mutex that controls access to the `send_list` variable. std::list send_list; ///< A list that stores all packets to send the async + + template + using CallbackSet = std::set>; + std::mutex callback_mutex; ///< The mutex used for handling callbacks + + class Callbacks { + public: + template + CallbackSet& Get(); + + private: + CallbackSet callback_set_wifi_packet; + CallbackSet callback_set_chat_messages; + CallbackSet callback_set_room_information; + CallbackSet callback_set_state; + }; + Callbacks callbacks; ///< All CallbackSets to all events + void MemberLoop(); void StartLoop(); @@ -84,12 +106,20 @@ public: * Disconnects the RoomMember from the Room */ void Disconnect(); + + template + void Invoke(const T& data); + + template + CallbackHandle Bind(std::function callback); }; // RoomMemberImpl void RoomMember::RoomMemberImpl::SetState(const State new_state) { - state = new_state; - // TODO(B3N30): Invoke the callback functions + if (state != new_state) { + state = new_state; + Invoke(state); + } } bool RoomMember::RoomMemberImpl::IsConnected() const { @@ -195,9 +225,10 @@ void RoomMember::RoomMemberImpl::HandleRoomInformationPacket(const ENetEvent* ev for (auto& member : member_information) { packet >> member.nickname; packet >> member.mac_address; - packet >> member.game_name; + packet >> member.game_info.name; + packet >> member.game_info.id; } - // TODO(B3N30): Invoke callbacks + Invoke(room_information); } void RoomMember::RoomMemberImpl::HandleJoinPacket(const ENetEvent* event) { @@ -209,7 +240,7 @@ void RoomMember::RoomMemberImpl::HandleJoinPacket(const ENetEvent* event) { // Parse the MAC Address from the packet packet >> mac_address; - // TODO(B3N30): Invoke callbacks + SetState(State::Joined); } void RoomMember::RoomMemberImpl::HandleWifiPackets(const ENetEvent* event) { @@ -235,7 +266,7 @@ void RoomMember::RoomMemberImpl::HandleWifiPackets(const ENetEvent* event) { packet >> wifi_packet.data; - // TODO(B3N30): Invoke callbacks + Invoke(wifi_packet); } void RoomMember::RoomMemberImpl::HandleChatPacket(const ENetEvent* event) { @@ -248,7 +279,7 @@ void RoomMember::RoomMemberImpl::HandleChatPacket(const ENetEvent* event) { ChatEntry chat_entry{}; packet >> chat_entry.nickname; packet >> chat_entry.message; - // TODO(B3N30): Invoke callbacks + Invoke(chat_entry); } void RoomMember::RoomMemberImpl::Disconnect() { @@ -276,6 +307,46 @@ void RoomMember::RoomMemberImpl::Disconnect() { server = nullptr; } +template <> +RoomMember::RoomMemberImpl::CallbackSet& RoomMember::RoomMemberImpl::Callbacks::Get() { + return callback_set_wifi_packet; +} + +template <> +RoomMember::RoomMemberImpl::CallbackSet& +RoomMember::RoomMemberImpl::Callbacks::Get() { + return callback_set_state; +} + +template <> +RoomMember::RoomMemberImpl::CallbackSet& +RoomMember::RoomMemberImpl::Callbacks::Get() { + return callback_set_room_information; +} + +template <> +RoomMember::RoomMemberImpl::CallbackSet& RoomMember::RoomMemberImpl::Callbacks::Get() { + return callback_set_chat_messages; +} + +template +void RoomMember::RoomMemberImpl::Invoke(const T& data) { + std::lock_guard lock(callback_mutex); + CallbackSet callback_set = callbacks.Get(); + for (auto const& callback : callback_set) + (*callback)(data); +} + +template +RoomMember::CallbackHandle RoomMember::RoomMemberImpl::Bind( + std::function callback) { + std::lock_guard lock(callback_mutex); + CallbackHandle handle; + handle = std::make_shared>(callback); + callbacks.Get().insert(handle); + return handle; +} + // RoomMember RoomMember::RoomMember() : room_member_impl{std::make_unique()} { room_member_impl->client = enet_host_create(nullptr, 1, NumChannels, 0, 0); @@ -339,6 +410,7 @@ void RoomMember::Join(const std::string& nick, const char* server_addr, u16 serv room_member_impl->SetState(State::Joining); room_member_impl->StartLoop(); room_member_impl->SendJoinRequest(nick, preferred_mac); + SendGameInfo(room_member_impl->current_game_info); } else { room_member_impl->SetState(State::CouldNotConnect); } @@ -366,17 +438,53 @@ void RoomMember::SendChatMessage(const std::string& message) { room_member_impl->Send(std::move(packet)); } -void RoomMember::SendGameName(const std::string& game_name) { +void RoomMember::SendGameInfo(const GameInfo& game_info) { + room_member_impl->current_game_info = game_info; + if (!IsConnected()) + return; + Packet packet; - packet << static_cast(IdSetGameName); - packet << game_name; + packet << static_cast(IdSetGameInfo); + packet << game_info.name; + packet << game_info.id; room_member_impl->Send(std::move(packet)); } +RoomMember::CallbackHandle RoomMember::BindOnStateChanged( + std::function callback) { + return room_member_impl->Bind(callback); +} + +RoomMember::CallbackHandle RoomMember::BindOnWifiPacketReceived( + std::function callback) { + return room_member_impl->Bind(callback); +} + +RoomMember::CallbackHandle RoomMember::BindOnRoomInformationChanged( + std::function callback) { + return room_member_impl->Bind(callback); +} + +RoomMember::CallbackHandle RoomMember::BindOnChatMessageRecieved( + std::function callback) { + return room_member_impl->Bind(callback); +} + +template +void RoomMember::Unbind(CallbackHandle handle) { + std::lock_guard lock(room_member_impl->callback_mutex); + room_member_impl->callbacks.Get().erase(handle); +} + void RoomMember::Leave() { room_member_impl->SetState(State::Idle); room_member_impl->loop_thread->join(); room_member_impl->loop_thread.reset(); } +template void RoomMember::Unbind(CallbackHandle); +template void RoomMember::Unbind(CallbackHandle); +template void RoomMember::Unbind(CallbackHandle); +template void RoomMember::Unbind(CallbackHandle); + } // namespace Network diff --git a/src/network/room_member.h b/src/network/room_member.h index bc1af3a7e8..98770a2341 100644 --- a/src/network/room_member.h +++ b/src/network/room_member.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include #include @@ -53,12 +54,23 @@ public: struct MemberInformation { std::string nickname; ///< Nickname of the member. - std::string game_name; ///< Name of the game they're currently playing, or empty if they're + GameInfo game_info; ///< Name of the game they're currently playing, or empty if they're /// not playing anything. MacAddress mac_address; ///< MAC address associated with this member. }; using MemberList = std::vector; + // The handle for the callback functions + template + using CallbackHandle = std::shared_ptr>; + + /** + * Unbinds a callback function from the events. + * @param handle The connection handle to disconnect + */ + template + void Unbind(CallbackHandle handle); + RoomMember(); ~RoomMember(); @@ -113,10 +125,49 @@ public: void SendChatMessage(const std::string& message); /** - * Sends the current game name to the room. - * @param game_name The game name. + * Sends the current game info to the room. + * @param game_info The game information. */ - void SendGameName(const std::string& game_name); + void SendGameInfo(const GameInfo& game_info); + + /** + * Binds a function to an event that will be triggered every time the State of the member + * changed. The function wil be called every time the event is triggered. The callback function + * must not bind or unbind a function. Doing so will cause a deadlock + * @param callback The function to call + * @return A handle used for removing the function from the registered list + */ + CallbackHandle BindOnStateChanged(std::function callback); + + /** + * Binds a function to an event that will be triggered every time a WifiPacket is received. + * The function wil be called everytime the event is triggered. + * The callback function must not bind or unbind a function. Doing so will cause a deadlock + * @param callback The function to call + * @return A handle used for removing the function from the registered list + */ + CallbackHandle BindOnWifiPacketReceived( + std::function callback); + + /** + * Binds a function to an event that will be triggered every time the RoomInformation changes. + * The function wil be called every time the event is triggered. + * The callback function must not bind or unbind a function. Doing so will cause a deadlock + * @param callback The function to call + * @return A handle used for removing the function from the registered list + */ + CallbackHandle BindOnRoomInformationChanged( + std::function callback); + + /** + * Binds a function to an event that will be triggered every time a ChatMessage is received. + * The function wil be called every time the event is triggered. + * The callback function must not bind or unbind a function. Doing so will cause a deadlock + * @param callback The function to call + * @return A handle used for removing the function from the registered list + */ + CallbackHandle BindOnChatMessageRecieved( + std::function callback); /** * Leaves the current room. From d51f4d21bb3684a4bee0850944a90aa2d48b9ad3 Mon Sep 17 00:00:00 2001 From: Schplee Date: Sat, 19 Aug 2017 18:33:44 -0700 Subject: [PATCH 079/195] Updated master logo to new logo svg --- dist/citra.icns | Bin 1027012 -> 211056 bytes dist/citra.ico | Bin 509287 -> 370070 bytes dist/citra.svg | 80 +--------------------------------------------- dist/doc-icon.png | Bin 8791 -> 7768 bytes 4 files changed, 1 insertion(+), 79 deletions(-) diff --git a/dist/citra.icns b/dist/citra.icns index 9d3dcca83b64e977e226a2ab2427e266d5c364e6..ef7bf4e6e370ce13159f2fcd1ccb10afcc854859 100644 GIT binary patch literal 211056 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 literal 1027012 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�h%nT$Cx8Ce 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

  • A%-iLWq#RdH3+sG?C74o$m!poXP3(P$?Ffe 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 z%0D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 u9u6(+Fs}t&FuYKBX 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%0D?KX-Xv-^ky% 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

    hL^!o}HU4njZ)@U2pNN`r2yzh&ABV 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

    +{R)o#qUS)z|#Y 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

    O${5Dy} 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%0DIeEoa6}C!X6;^r0Rv=-0B?YjOl5AV0 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 z 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

    eDjut!0 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 IBeo+10R8lMOaK4? diff --git a/dist/citra.ico b/dist/citra.ico index 4fef651e2a829a90a2a7f604b81eaa704b3f9369..2c408b9352295fdca33634f11df7f7f4ec227088 100644 GIT binary patch literal 370070 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

    8HADYHYiVm^D!i!Lh5@^S@8cq^HC5D!Vo>o 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 z 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 literal 509287 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

    2EnV96z9cUu{!?*mdy zAAQ$29VdER>J_)|QBSt@94A~Dma`YI9#Y5?Jkr;svRL$jaa7};t^;{f8(Vl1N)_g* zP3UwgivM$OJIBT4zqXz#*>7hOr`Rn1`%CA?O?DU4CkGyHXgcTHVe(kzIB#ePpU(5e z%=6uyuYX;*@#Z4!(^nG;^Nb^6R$cnKeD=Xxf6_L*4Pq&n)L`MFaF?w{^K`q6(}d{{ z51;F?fBCU^cl^rj@{<|k9;s`*>gHfL%dkJ_%W8{_0r3f1e##Zq55B#<{p;1MReHxb zj(%ZCdltFY!NzTcw^gI8Xk$-CfjVP{w&23|uY+bg2rw|^3LPxv`SF`$F^_0>glN0P zVb--J$wwsiUs>D&9gX$+;)4&~>Y zC%$!^yUs3_Uu<9O=jm}Khi;jjekb{8x5=pwlmG2hx$;>0mtXg%eQ6S(ay6M0(tpf+ zta5pJ)o;NY=~cgLy08A>__IUh{fQGEA6_n>zshKTS1{*S*QJk4oL{h5{P6SfDY&RG zi~D30W1wh9E$bvPM>mTZ;gS;^ZMFGSKGhoCYMi_MxOC?=Ed>uQJ-&?E#j1PrFI?1m zoLXD3W=a27>stjURsO!=;oh}wW=jU!MThYJ8SLCHPEt+|nJ?HKJC1&KJG*%HY~No= zJKd&F&pvo7N_ow?D@|*6_7-p-oL9W9Z05Xtp^oJT?9P1(-tO%7Mm_bL(T~$J>lEUT z3GLSwZt%&UpZc$H$use(tRIU)S6F-uxbLl1rD`F#qxQGi!Bq^(Of1nXqHJgKHg;TQ zQi-c>NPlMbPI>!59Z3brhY$L+9G-pha}r>QvWavs5@q7Ow8Y`?XQ#rwt{suv4rtAs z6}qvrxN-uI?^nsi&aSyTlCqh53_@g>PpL5;zi@GZN4FO5+oRv(R{cL3FpK5L{3)tm z>jbvhaGhP&Ut2xx=I)2TqI6?s-~JRnZ{6?g+qxOo_FP!I>%k)(yWW;kCrSP0N{-A6 z%U9e;|Gk0vLHVg4nSBfNT^W)@>o0UM#y8l_n;yFU_wB;Y`Hc3xn`?i{gs!l-TCs9p zNywa;0-=m0QYuB=47IFHWwRA7vUp5ooD?j0Ve{37o*5gGkL_RVBoKRT(-DPz^4Ben ztY_TF&i;8rYl7dG%&8YA#py*xEzHPjZEOmY)SB?GYw1^U-Mx=y1Z*ogdr{G(WR28@ z;|~wD^e9f)yvp=JaAU{YDg2z9_RLQGyx?b^fZ6Q0h}<0|*{6B8Uz09Lo}2o)R6pm+ zoec*!{d)B%>;wk`du7dPK^@m^XHGvgbVzTsv$|({_`LNw=9*iIkC!W5zOHh?{eXLX z-Q2gWiT-b{sCToAzF7TYrN!iU9j&-o4|JRO?S3?@S+hpqi|B{i`5`s&-z6C*>}B0F zmC@5!L71UXr@6X|<%vLpi!eh`D?|U{X^df^9CD%N9m1xJ^E-vt-E zKl7pd%b%yWix13CtNP7(;<)YKkY(o`<-Py#{J1IKm?!O~@a&tryZcLb`C658p^W>x z=JB{Pgv^=h@r5a=i{T{0D^@QLrX{BumPkIB%E zyS`53L8^=1n!wX84$UP;6?RYDQFNgH;gl;q4og%P0BU4O>{rCl+X!gk) znO5gy`klPO)wWWyN8$rl)54Fh8V{~hSmAtOtAKxx>dF^#NAix_a?2NgS#e)3_0>YL zg#U9Dty443Zql&vKkbse@8NlLjG_oh9E1|e}GKY~uINK6Wrb!{}0*$wlTV2#xCO9)Z z;)z=)kYZfTWI40$Rh^(>$2$HB(dcy&3@IIqE>9dL$1UH(z_5Sb-2G2JpFaC<1CN6b z(~E2ep-%#_3LU=^UDQmRlK$J9aQ4if#nhgecgcHkk?lN&Sxk=}KRV>f@<_+`_%54N zN$aJV3%GA;ZkhfiJAVF@eUE+Yc6Ua8*I3-oU|%J(SZU)&zdTllUGtp$mO7kz7A)1M z!zeIY;&!%cCZJ@{k}fUZ(nY@$sS**bve8+&Pk9#^tt9F9jWU|E3Rg>2r|XVzDQ>|a5T(u zrOT$PjCXdFC8$fDXxe}6rNk#~#tEui7tVcn%Ej>H&bp(b&1QxI|JOGeFoaJ}J!s$0 zlX8FYU8OsZe_e^2-mmN+zWt=b`Sqtm7*Y;A|2^mS=MG1$&(jWy@R^1%KuSN8|73Pk-3_dkL#R`j3l$qjhtH3@g+?cB0 zvAHJFdqVABt&ln0paghYVCB4DXJ?xSnmb&`X6S9-VAXJo(O!*-V_D&D2L^jb_d@|& zSaiH6Yco8m+pyVa!r33G1?T0;l^7Z3o^*)&`QJsGLAJxeEchMAze`_Ds&(v_Ij7Cv zH81u1#d&x8_-cZl$tSh-SI6B-KhVFo=FF#yGuYF=6mR--_a3*X);U*DD5UnRInlS^ zK7$Zbj(Eu`0fifE+nPkXr6M@ne7Ink&6QBhoCh1@9%^cDNO&&df|EMkBDpT2l}6X-n`6)>qF?CkcAu# zT%s?_8r8x%SQH)HokX4{E>+N(KAEdgfsN_H#~TN0XA7t#*I#LT;)u)%wWMa@<>@UbzXnTLR z-noVSB{K~>8#4<-~0!QPGBZeL`?cU`UM((?}scg#k%`OVu|12Bs_eyM- z{3D-T@r32FOJ6URuDgBiP4cD-Ud=U|#2fU?;!e3AIBsOe{NwBjCWafk(-+7q-Pn9O z@y(v?&ea86^F>9q&iQCCEpT%EuK4|#@YVlk&hRX-6pZWCWmzL}M40W*zX-zxO#%uF zrk{SXP59^iZJbQ?|8zb)f5CF#)XTr+E4WI8=N_qh@GOMk$lsz)2c8#y&K|1W%H=ZU z)6H$N_r;BWMy!-i;*@_cZ~gY;c8;=XA4M;$4!8(PN=`>F9^+HI|MvFwt!|4KE?md3 znsvv~B@Ou;*O&vP6^;H2vMh}8I}pRLOMy$s@P_CIYYyh`U27iXAI}xKu>2d-gQZ4x z2`A?rQRo+CIP=8(mSo+gM7MtFZ?CyqoqoJrKL44Y$eeHT5v^UHg}NA41QZ%gWIv** z&#*?OVqW`OmO$PMk5)0ROPkG9cav|2QlrgTp=RfQ{n?TS)P)ppOw(dG#1?VKzu)G! zV}o^^o8i37S&4H_KA*`{nq#{nVBw<|pdmdiKl@L=zInR!i?S3lud8jSR^i&guM~bD zMW3UY{FIR4+$#WAGf)|{wJalm~_rX;ed=olLCi8p#a)|2j1SJ_L@KIpHdpo(@@0{U?+Lyx*~_s#Z@V!Ymo?X} z%qaaoIumLyHTg9wq_Eh_O&CRlE)#KexfhTy@ zhzDwxu(YY1&eA#ks!8ERb91xR&2azz+&S;K|G&O>j_JV5%xiD_;(XH6)xBBf9i17w z@n(eY*A|9KaTXO=J8cbR8HkHbA%zj@z3OnI=Oc+TAA7X7{A zGBUa!WX^stIa(xhbc4y^f-RfYNdADO3hUZkB2(*sf$`JoRMX-QY-Oh z$RR`5iKVA5I650Majl=n#%#;X^76bGL&SR)2@Z{nOa}*r3qMkVoR>K;I7&-OUQ}S^ zkepVq?QF6&H^b-4M#cutU&_?Px(oS~UTA!1xmN75Bl43xmo=B&Y_T%4zo)qD1dFcu z8OLn*-@?9U&)(CAcZyfI#&>&v*k*CltiLx~wDOqdhAqvh8q)5;W^D^y+Ll>xX^35| zG^)QWGM7m~>oC`)%^Nc(l%F!u;brpiHTMaj8;@K$xiZB>B7Aa-<%%8r zf>oxx9AX9nA;FSOOB8LpETTaq-E z?4HKXp=HG6b~)seqie#0$~eXA0lG}ho6DNjwrys(FlUxJwz!>k@f?%GW8KHgk`F&LP(NX$FT7Cw%e?f`x#xwe?3BOwN#{o2 ze)u7N%ZYaRQH6{Wn;SKf=DrqwmlYd8Ga12 z)b&3}?q4jS_E+it<(1_*%hpY|Do6+myBqIv* zwm&{pwtdH`gO}fCEK%mKkS(#(ed01h@*-Q$UEeQk>IQ!N1$z7&p2+@R#wsmXWvBWi z(lMPQnKyoqx3wxwxxbP{k$YE*g2Osdrbee54U-s|`<&l;O_b$p zFPbK5a_tYcy89)7UC-R~nOKRax(mFvk!1&6B+%2KSSPcbnv zg^E1w?Cj(bm}4pxmXXf5pvL*{JZ`pTv9r@p{&7l^arEc3po|_ z|MitSb~^iE_8i=_ zpfNFPfwa+zsyTa-7G(X9+iI8X)>PwPQaCxF_>+;b@IuuOMxL%jJk}s%f1y`^_?>Fb77b+)&l^3Wl%9M7R z`S-(gi8dMEEa&6ulXq`>!@qCe-v>`l23+b;=17TiF?Cj$z)^A9C3Nz#Wy?}5PIIJf z*~~B@ds?4AOZ=JHAB~&zm$AmbDcbxl`ug^DJIbc!Cx<)SagcD}jy*UdopZ0Q>X&b> z+6S&}m9XfS&zQD;=B39z>m)rVY&B4s!a3oJX22GKn_{X=^Hgk84rs)1G5^#sHqE)` zGS}Lt@|3TrjQ;iWM*@S7Fd6hJh*tL8V`gDvVKnDh!_Q*JpyYlpQlF7~V$Jbubx#E^ zn6O^CV4~9Q@37~;#)-#=7pNzT9z38>;uh4?*_fI6{d9ZNdYk_bk4#+HA*RTnu(Z+P z6oX@%pn!rx$>TM>3YX6@IYfQv?9*S+r(ZaSccqU(rt2y$zue@P+Eh8aL~)aPfb(gFX2*tu3I`HqF&RwhZg60D!^CK_Pu7Kr zhl4}p%8E-05-T{^CQp#C;rl4u&S|WWprC$wp4c(T6}trGcr}0Dvyr>?^TxYQet*A{ zibd5bi^M!K6($6j3WS=jy#4l4WOCxFzq^`hMBij%%;3?c>{GRjlW0 zrI}u@k9v9k%EL$3H}mA`r(bb)mX-SWrh8gr@<}P9*ZK@?432A!Z7)@M&TZ>3abVdm zFH+l-7X?(7(6wZHp_%hjG60UrMno-e#`?fCbe_wr{~vU#SkK8aggtKj)=?~|`pOaJ|= zV`+-F{(WG*G(*bQ8j}x#w)frSIA$-)+_q(&epSwv&+k6p3cI`OTzU5N_&pQSGr~_w z&d+h#KDU=+PxaGEg|cr9XRq7cjxIA_bo=-c#~B@OSv{p$KGiTe&rWU2IL8y8z5k|B zV-W8_2jhrEJQW8u^_m;9bvx$l*HhRK!V=l^*)m)j13-7CzH^0KZeHSqlQl`cOnH|0Oh zIJ~d0HUHvY@vS*gH{adRDDqhla)B?;>AuaYZ|6jxN15Ee^!9bmCb33Or5_KUFgkrK zJhnb{ebh{c&j%L8?RHq}ex>A7v#}3RchE%T(*{UTKPFXE<>G#LvHV z6BYLLp7~Yg#F)F{`QvUw-$K{rH@@BUzP0|&g~$7D=BA5ZeDPcJPK2&$y7ZSWUY&QTvT~b!oysM+SCR=KZUR6^!<7FeqRSM6g5HRyff2H zhQyYWFJES+FlQClf0=pR?j=J*=1wNj?wc2O`Cqu#S7M+0Wb;qgTVEfjzI~n>^?d*4 zt0&i{O6sf(uW9Xga69%v#4f3r)%q+8mrg!&qq6D#0a2O$cdea2_#W(Z3q7}U1Lql5 zj*yq$OLv{nVt@NCdO_<7md%+QEE3)VKQp$cnp_dOILTqb%QhRy&~N*9*#Ee4zO45x zueX~?uC&Lpt4%Cb+&;^VEsczt+S>eeq<<`7YFPSua-@83by-wkj@HbtogZ!oe#mtC zt{?g4)xY=COYdx2b+~ZufykQ`#_L#>Z|NQ^Uw@Oq={A$m<6>1kxzIfey^IqzeptCo zDQ`?YJL&%UZ|&xGX`6pvy%v5squ}(4`pUieXdQHOyMxJdyTyC-1buu^z$HsfS{`GB7 zgneX>Mhr-V(VWXdG6EQ>T`R~RIOk3__{c2`k{gsz8ojt zPho6`+3yxryoY(K6#HyuiCKOO4lWEk7X7Pf=i<#}IeGB0z@5)*mG+En%g((?mbz8q zW4-Hdz>Aaf_n3ZrmlDIh{H6m_BSUY?6GpEkxy&cn>;mUC`Aab*IP`Zo>3a&j0=ud3 zs?qsH|I0Fe%bvcK8~%~!?Yu(6j9XpDzpvSS<O$3 z%lp}Xx*VJQ-d)9bQX;dAU|sWL0hUJx69ht={9777OlDvZduo0tvD(P}r}3fp5t|QO z`}TCT*qxfZ?SI7@)BhZ`m(czBs7dv~?hjcTCYG<7)p%YjeetqQkFz?;mwPcVvi+Si zr%uMgF7Pq0MXb+)Pa9_+Wl6cpX#21Fpk~?B`)d#JU)+$uxl><9%zh=)oeT{hKAHBH z-{TseT;P2De$i&*R9F6Yk{!1Ho3FcXmyz)6o1CsSZ@G|)%r3eAOIEPRmop^Xx_#TV z=DVG{I*QZ@e*F3!Q=bZzm{PQz*<~RE9X*f7#+oJjBcGU{^crEont?Dk9X^pmuKW7O@#__9u+RQ@iF9+pRawXp2LF@ zSKep87EO%1erw_OxBIq8Z^(Mtl4E@0+~J3TH_WR9LSotGpXFbBPAsGF#{uPCjjJCl zJG$k`iGSstQ6Kt5?E~KEUf>CqPt!X}_9z%haKM$R@1#<@ps z+>ltsA|I`P@VF?$noTiv`|n@+>^My}Yu<<5tfxLN?UkK=cgL;&4c-Z2V(y;;b-2H^ zo<6x|zu=L+*3?5~oi|zX#u;p#pYCgxc%1S!(XUH{d|8-ww zjc!V;`x?V0Mz zgg3`pqUy)}IN3^TrP&WnIF1CWGB|c9OZfQuF7*1aQOEsTAq#`|{qGevWlksGq*LR zNC{(CxWo4Ur;L=Rq@^lfiCMXeVriP zpStajcr5!j*VEo^A0wOOt=YW3Fc&4Vb@b^?l)Qgtx0h;@SBO+dsilSWJBGIJ4r_HM zy=iZ}aQTVEsWbACrSFfWzcoJV+rf5#_1@VB74p{{HoAik1Ge%v^bOh7(f1IsRCEZn=N(;I=_unx6w%PqVi+vEUmYajZG)BhV>yBsitA8vs;;V~cXn6PL&5=VgeLWld zIra;${iEc*v+nn&ZQbVUzt>&UExLPDur}k4^TFd8b~={=FBEV}S8`2ScsD`gccXZ+ z%YO4T8!{NLYiFUO|J9XU!DUK;Y9i@&Cr#(pVHUng_7 za753cb>Es#8aPi3yiu6L-r;oS)SNYc=LFrp=rIExAR?LzW`yF=Z zXYA_(sv@_VFE~ipS8^=7cZ2EE6OV%~4fBP%3^#rb`0()kKC53|8i{R})*Z6QpH=83 za&dxyytK6Q;|G$wOzBn(5qWk@yZl7{ZCQGM)=%-O83(Sff4}GLBf0CcHsKOi+b{0@ zc2rxT;G`N8ldS8*rD`+3sw-Ol72A1|-9bQg!OSAk4`vsOPaI-w>K zw&Rcl{{{QM78_y~IkCLC!~HErie0<0Va=_Ch41qUZi`L7ryuXDeEr|yi_RO;f9Mw6 zT-8{*wD?r6dvc;v+JS?*4ZL^79kwr@yn)N=|AMfhizoyJq_LFPw99NkV=C!49 z@7uTsIj)Yns_V9-c@!i);=J%uarH0$5QfH`X-uEz`eyw6|CKM|R#p5_lLu$&E}sARM-R9`o~(b!^h%8TQA%JX%>Ex9JgE*ITApc`D!e z)wlimyY1oeK7XyplBEi~Oo3m7e0+RT?zE)GSO+sUaI!E-Tz$?E>2~Y=nKOU1Zyo8& z&wEvqkh=SC)ih0>cL!BB?|B~U8#jIVs?SeMd7gN(+-HmZ$50VH=f$t5Vuy03a4sqJ znWc#`=)Mv*k&W)0 z@GL#0|HS<6g@Sbxma1$Z56MM7EzZ_cHZPsx8ou-6TxEZ-p|28@xaho0?{jEZ@^y3ayLvOTx< z_5r_;>|LIl>sIFe2oGB3m|*pA)4cA5-78przH>UG)>HFE&S&pdT~XT^*Eu*=xF4Ua z|Nrl|iSaTL)7(ycmi}$ga9}1I!_hcjKVOvcx}?6zNZSWqJGo64~?hI?I~bz@pi zz{-5W@wR=i4Wjr*Hfa-*Kqk`TFx|EG?%`xSqYsTlB4F0dv&4TRh+1 zExkFTX7z=hg#rivGhF#GTj9nb%Tx37(qh{dbJco@FILexz_+K`_{N^+A$!j32)VxU zL0QM^-yKo`kA5uYWSMonJk5F6*@Iq846_>-YF~{qc$iYa5oh;L$il_a_V;yWrr!T$ zr(-p`H>~<ok@MjZYi4*U zG<(Jj2LTJ^Jy~g&o4s&N)10-^?-`<> zKVtIUzfe_CvZnh*?)%0J|7Wcq&Mm1?m7lb#tnt-@#>7LLu5hnA_q*Yt*7aSp)i&QQ zc+xs0aMPO~OK-jOQCYS1tW5AliHy=a3~%3YYs)!Y61h?JB()Ghu#oN_$p&_`MSCKJ1u4eJwU+}har5{!a__B%kzrBlk^Z!3vcFuo&&i44zPq^&`%Qmi+ zj#|I(@~Y$W_5bXWYGk?iT{GF9qwMIZZQ41e4GlLN4onGPU(&*{=5N{t_D@`~Q!*q( zD{@{LF4AK;EzU95{PBZ3X~Iz#>${|Cke?Oj`W4~5*D__Us zscO1T*_R08{WorfD*Tyc#M*gsI>%ZYu06i~|E)H6PWxB%`&s?e?*cDGJWk3L=9)r=Eiv?XVa~dh zE9c-gwUsPCG>)W7**NjX?0r)7;r3qE_(dQ3-&ZhAI{cS)caqmf_rslQ>o=!93IFSO z+BKt*!HAKCu|%AYkI$=gPQ>NgFIgD0H>w+&J?pu=<44=l&yP>iU2?G&|mr&5rlDeY}2aK&Qrl_PAYj2Sf*8Im_P zbZf`Gd-=mrqHiCE&GPB;(hri~tA&KHG4*9HJX|c860W9Kc;&G0@dvp^zpV{lEPwU$ zd~4x`E$s(R>bCTHuWxC%8~z~ENkHQEFAa~y&8)wZgf9MW{`ma=uhxm~$CGZUtYUi7 z`jIiPJ<;Xu+qWAp&vYoUVr+O{wtMczDIe0)>ZVU-zd!%ZmCD;s_pbYGvCQCvdq(60 zp?^%b`t$Y$I{n_xsLnGXe5%SkEro<@JWQeQ!mH#{7>zbH_#I-Z$iMk+N7#YFMQjE+ zD_lYnHajk8`>cOC-^@qB^?&RJivoR%mUD~pil(WnZqZ37=XD zmyAx+0nrPOK0H6B7CTv4os+{RO*d`U{gAsJ`!0(Ay?Q@Kx>ipsI`Oc@Z)J`nb68l| zlm$)rv_k#U`EI>rVz~DBV}jd!)6c6{WnHXmG_{Gpf1~WIZg%Z_;hTG6>XZcc?B|VI zzw@@%?Wy{IvWhq+1*bd{Zx7DfC%LwcIqq>;Y5w5K~QRY;~{;uSBPS zX~Xr?{9$+eE?YJA8Za*Tulud$m;GkdP|i4o&HHosCf}UD%IMw8K=w7CLo_yAyj$>g zQ?HAx#um1k|T zYyPv=p84|TztqgXUtg^XI9j~^s`CYjh$zX%7S0_z<#ufQuJz&8r%!%9%!}OZS~gCf zr{SS~tae%Qt4{enh98^Lzq#_Ig)lNP2^uLbN>{MD|L)*V7KYQ0@-P0Ka#TLO&YbJN z>)max_wQW!x0J8HfNyU2{(eChj+i>`9oOS{Lge(fIaRBl^wCWE*k>bOf3-TYyDpxa zV~W)3PX~4T9g-AxSjlT7axb{Fe9`izrY-#05jtNUKTtfeHRQv2u82!j?l&LE&-puF zf5zY03Lln62{)?h89xx8cF1&Zc$2mMQVC_YjYn=g$v)qx=Y8`no8!)j9e*C)&y)Rq z@Ll5*1}@t~CP5w%r}GR(O+UZzoKa`^z#XF(e(aHdTAlZg-FJOn&%b}`=S|bO+g^VX ze|n^%PUp$P`vtlImD-T;a9_AT%P z%OfG?w|$}oXD?|VIQRU`wHcNcU%!>js4G{WQMpRyPMK4msy-H zM)MjUW{6yEsx;&}C(f|JZa)9?n}y4J>!y9UE%D*+!)4o|&GpJ{4;Yr1)$)hGC|tXb zBWm4_v!_0so}-%f<*3>=hSPG4_tG40&b~ci_xdXN;%N#Al`KNuL2``ec$dyvX}9>?&V+?(g509d-L#lr0PID&{B2 zK1qoy-^c8z`N;O*^R)?ACUZ*EKb7owb3b&0lHfAI_ZC8bpWe@#UlDgLXdYt-s{qT1 z>k|_UB-$$txX!UNL>T^adGN7wdy9SUm(MjHlkOj#e@ozpthN8|;&hkBpm46+$=Qx>&o_W|Np=H?{V$RzEon7E3$>BiA6x^ z^F(8V>kJdtf8T9fWxsD-{JV&Mzprntz4`t@)#r4pd-oaNn%glX-9Gf@W};&Mk1Ns% ztKK)f2wC0s{o3}mJG_}+Iq?2Y-L|xdW!my0mK#B-Cm9c&d|aUQhbNHvRbpeh-x`O) zU=cp6HCOHzd&xy#3%ybFB(-D3UxlKOR>S8f)C?Y1nVKzYGi6m_kJOuX zObyoA8+`h6KKP{bOxu&|f(_TczioYN-~XWaJ^ZoQ z_K)y}7yD2A^mx zwYm8F|BGYSqSwW~`z3NZz;f^WrwRoZd8a+p58r&B#j;Lj$%W4e#jT2mR~1dpmDSt1 ztGBs#=kKhI+!J-g2RHn}Ex;FNvYvziy2 zIa-lF-HlCdRDB7ZF{!V)cfDQO)6X+|59;6Dp2+VQ_rrYWex|Fuv!}&}Kae{zwSC$B zyNr|bbF~e)R_)S!Ya{gc=>1&TYDcq|Yit>UJ~B>x`7(10`x(!g12K#ZQy;b)+c_F( z-%z*xT`gyEzxbWFK7Y+lg&XY$_EjJKIc@)Z!M8Urdma65&)k&Ea%0V_8EOxUnV7yx zvwN>*2|cDJzjOvO%lW$sRoABMX)vs0@nex^pXPsV#q#iIYvVUeT}l&Xe$e}H%RAg% zilhI)w|%(}Hmnr=^!NFxSN7$3hh`jcSe|SebGe$eqjD=t!OBk?r^~gUIQX4gt$W6j z-oGDuU%vmJm0zL%>i-F*09FN_o4;(rXEqnJGE6(|zdUpMoW=j%ZIwNA$bSFMzuvKN zb+!MhY9$`uue{uRfW3%OX@{48&LdZ)AMK6Xr;2U($=LXc?Wo(GmK}>GEL+EVy{WoE zOHgdJG}oLNb!;LQd=V?QUEKOT>#e!CLPMLO*Za16*Qy(nWsIvHuG(kax1Vou=i-Ft zt6l$2y=`}XTa(oBBe&(JR#+^5E3~8FVO7GXru|P&21?XDQ)jhg-of`UA>iik`fWV_ zA3RuLHiMC|aRp;fqRX>WrWWE10X~0iGrkmaP5G~%pSQc*x&LwBpF4GKB@VZ@es3tg z`RmQ4b83m!oiEJ~hTLa4xH5bT*ZJ927oMzeT%8qghIiY6zXu*CDXISQJ!02#@kZH$ z9a9v4JU+%!aMyl)foMtPdWKalUmi!~2*p|KV$E@y#Nn~__)Pcs|2i`nq*y0U;$HW5 zFXOZyyA{u`;+=R{{=kiE?mFg)%U-sv+*_^n@ydJ~>u(WG#>+1%ctkLW$&6#$`<5^MYcv1;gS{UoAR~zHNP`#o{SnT(E z*5w-*y2LV$v0i`J`>*_AM25UY3)|k6ae1}>F2!zp7niaBqj_WT(?5TANj3dA60C5eT}$Q1nLR%~rwOm{ zR9$gay7Bp(9<~D)zs=rR%EBdf_yEtr+_1d|{#M57WvE_n&T1DLCG9#$LvL z2G8Nm?%Noi9Wp4{yKaBguXEF9Z}?NVNQl|n_W8k3Z#_0M{uhRJ2~Tdeuldz<^WG9( zmaBW~fBku}Uv6$lyU{9#TiOD7+rk&jWN=_-VvJcNy>h?0?1#r<5r@AoH{W)*@T<}H zy*j*+*&J#=x8(ow-Jlyau~;(l-@myIhw}tvW^zaEZalk2xc=T{$z4~RF2kYBT+aW#z4r0$1F5T3U#-9M zO)cW@>zmgS)-*WQgIbDG;z+O+wxV?yhJ zo_DJRoA;eO&M@QSq=g65l{h3a@7L!)uoJNS-*a!rp6{F6w>6#gVLl!rzy8xV%O(Go zZZpjg58$XXKE|}8^r~-U=z*Y`5?-~qdbwrgd*_^z_TS#Ir2p^f)x!5{e>v3D&th$< zG~u}QHqlXF(ciy+g-jNjax+NuAAhW*-j!!BQpX?kpHKYqzw+6)>sN1g-O+Py@xP>W z{*rrtBoprLJRsoQ?U?gNQ{e6Lw4nc+9L=8U?};o<@LPL()>6I$JOUGhWdaWQKFHX~ zv%n+TjPnA2Ykd2HKYnpO4vDi(IYjt^o|=chZ(q2d@0rbukM~UufA6=om$GJh&$E{? zuiA`%Q(y9Y#<2fvGZ_AfdK+ypDiDmhRh-xu?!fJT@WN$#zpElX=7*%tBv1Y{`+iN< z4|})A4UA5SA*>w|t(`fphaMUPwM9y^%w}YWoNs^bhvaJeREc}*V_xq5_3pDx{F6v4 z>9w0z~hcvF5yt?z=k1xr@g%ZC?jE;tv>coBsY=$AvmQ3v%>T&${}uJY zbn-H17g3Jnh5$C6S%T6Rco-6P-_0|Z`gbDT-|E`^&D(mTe@vfkz3pDa|=i+qROs@M?C50P{lPW$`2Gm5C zIJZ5%?BD1$mt|Lp?!+rk*Z%yYHRrXCBg5BNuh&iYuKo7<_3!txUk|7Lo9pu3{8Wnd zJVxW1;PWdBq{D=`I_KO`=5BlfJ{=IjwuvCDN z;VolIu|=-Hk@K5RNzBn@2zdMUZP}7P9)B-y-rv5I=l%S9S9blJ_4M5DNUiDrj{d&2 z;PJKd%@-zVb7cPfqh2oLwS~K)dgtL8s&?nL7YeL;e?3D<@K;Z$m8jgEO8EfeX~M>d zHrv>b3F)UMGo89OVb%V%ZTF411p-39{EcUfy|=pPl+Q2Uqf6%R3r~o8#~yuoQeD;$ z+tU8Xf6y;_+dFFHib|zOr2QHTOw9e({F>|E$+Xif7F< z=2)cFP}aC{<3^Xc;>#DD6=PV_Vc)yV)@bJ6%e(eJzqRz6=>Olxrme4ZS!P|W(AIb$ zb$i42KiO+){`*{hV#vhM-*8x3bJdj4hvsLwSkfN9%XU#+anvGX8FTX-g^Ksg2e%d- zv-2#Sw4uSBv$$&tXV0mv%NiV7>q1%uLyj_f|M?!d@Bbq+3CY&A$G0^)U+J1O=N!Z1 zxWl!t`$Z4LFq&`Y$&0M4Jvb>@g5O|oHoMQhZ+k)mH7+-K=6;ah=Ktrj_VJ~QGk?j8 zad0Q_D%;%VICzu6;n>^fCnf%^>9C*1_2=xfZS49l#PSz?(s4+7p7dhR*J4)7e=}ZA zpHVf_hG)0KhU=Zbir4Wi*?yImY3oYCrA%!mt!kT}{JgekQAprToz+Qj+HGYDO)y&(?9H-tjKIy(+Q}#&Q^Xwcau?B?(9ftVLh1}=Z7=HBi@%7L1 zsF)IRf&bjUduOv{viFyjp1v;2G*|bp(`TkFan<@e!s7zAOggVJ^KZRp$^U|#Rx<+% zr{hwLZ^YMp>O??V?$D$aeH{0)JSF^qTZ`#DLiGhDpL#Vk(h`^>xZT40CZrlHH z@wlGL>+?MJWPAL~Kg-4Wj@qBvz;MsxaL-*iNm<#W5{+#U4vQHAvc7${syy|de|EIp z_I;P@Y$tyH60~

    c{;3AA=pZx9vGRYXZ++_GP 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%0AJ_?&L1Zt8RAFmx4< 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +image/svg+xml diff --git a/dist/doc-icon.png b/dist/doc-icon.png index 420b1546f9689497019f463cef12b713753b7dc3..9b5773214cff15cbe063b0ae0d76b5bbdb30cc39 100644 GIT binary patch literal 7768 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 N@O1TaS?83{1OV82q;UWM literal 8791 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 From 54c0c8adee90d374e954e742d6d03279ef2e7ed7 Mon Sep 17 00:00:00 2001 From: wwylele Date: Sun, 20 Aug 2017 08:37:48 +0300 Subject: [PATCH 080/195] HID: fix a comment and a warning --- src/core/hle/service/hid/hid.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index a13b72e883..31f34a7ae2 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -203,7 +203,7 @@ static void UpdateAccelerometerCallback(u64 userdata, int cycles_late) { Math::Vec3 accel; std::tie(accel, std::ignore) = motion_device->GetStatus(); accel *= accelerometer_coef; - // TODO(wwylele): do a time stretch as it in UpdateGyroscopeCallback + // TODO(wwylele): do a time stretch like the one in UpdateGyroscopeCallback // The time stretch formula should be like // stretched_vector = (raw_vector - gravity) * stretch_ratio + gravity @@ -246,7 +246,7 @@ static void UpdateGyroscopeCallback(u64 userdata, int cycles_late) { Math::Vec3 gyro; std::tie(std::ignore, gyro) = motion_device->GetStatus(); - float stretch = Core::System::GetInstance().perf_stats.GetLastFrameTimeScale(); + double stretch = Core::System::GetInstance().perf_stats.GetLastFrameTimeScale(); gyro *= gyroscope_coef * stretch; gyroscope_entry.x = static_cast(gyro.x); gyroscope_entry.y = static_cast(gyro.y); From 056a08cdbfc593af6899ce3ef45fc62a6ff45ef7 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 17 Aug 2017 13:18:39 +0100 Subject: [PATCH 081/195] externals: Update soundtouch --- externals/soundtouch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/externals/soundtouch b/externals/soundtouch index 5274ec4dec..019d2089bb 160000 --- a/externals/soundtouch +++ b/externals/soundtouch @@ -1 +1 @@ -Subproject commit 5274ec4dec498bd88ccbcd28862a0f78a3b95eff +Subproject commit 019d2089bbadf70d73ba85aa8ea51490b071262c From 1eca380886b5028e027f1380c04f221ac94ed47d Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 17 Aug 2017 10:46:59 +0300 Subject: [PATCH 082/195] gl_rasterizer: add clipping plane z<=0 defined in PICA --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 3 +++ src/video_core/renderer_opengl/gl_shader_gen.cpp | 2 ++ src/video_core/renderer_opengl/gl_state.cpp | 13 +++++++++++++ src/video_core/renderer_opengl/gl_state.h | 3 +++ 4 files changed, 21 insertions(+) diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 1c6c15a58b..aa95ef21da 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -28,6 +28,9 @@ MICROPROFILE_DEFINE(OpenGL_Blits, "OpenGL", "Blits", MP_RGB(100, 100, 255)); MICROPROFILE_DEFINE(OpenGL_CacheManagement, "OpenGL", "Cache Mgmt", MP_RGB(100, 255, 100)); RasterizerOpenGL::RasterizerOpenGL() : shader_dirty(true) { + // Clipping plane 0 is always enabled for PICA fixed clip plane z <= 0 + state.clip_distance[0] = true; + // Create sampler objects for (size_t i = 0; i < texture_samplers.size(); ++i) { texture_samplers[i].Create(); diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index ae67aab052..0dae4b91ea 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -1196,6 +1196,8 @@ void main() { normquat = vert_normquat; view = vert_view; gl_Position = vec4(vert_position.x, vert_position.y, -vert_position.z, vert_position.w); + gl_ClipDistance[0] = -vert_position.z; // fixed PICA clipping plane z <= 0 + // TODO (wwylele): calculate gl_ClipDistance[1] from user-defined clipping plane } )"; diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp index bc9d34b840..06a905766f 100644 --- a/src/video_core/renderer_opengl/gl_state.cpp +++ b/src/video_core/renderer_opengl/gl_state.cpp @@ -68,6 +68,8 @@ OpenGLState::OpenGLState() { draw.vertex_buffer = 0; draw.uniform_buffer = 0; draw.shader_program = 0; + + clip_distance = {}; } void OpenGLState::Apply() const { @@ -261,6 +263,17 @@ void OpenGLState::Apply() const { glUseProgram(draw.shader_program); } + // Clip distance + for (size_t i = 0; i < clip_distance.size(); ++i) { + if (clip_distance[i] != cur_state.clip_distance[i]) { + if (clip_distance[i]) { + glEnable(GL_CLIP_DISTANCE0 + i); + } else { + glDisable(GL_CLIP_DISTANCE0 + i); + } + } + } + cur_state = *this; } diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h index 745a74479a..437fe34c47 100644 --- a/src/video_core/renderer_opengl/gl_state.h +++ b/src/video_core/renderer_opengl/gl_state.h @@ -4,6 +4,7 @@ #pragma once +#include #include namespace TextureUnits { @@ -123,6 +124,8 @@ public: GLuint shader_program; // GL_CURRENT_PROGRAM } draw; + std::array clip_distance; // GL_CLIP_DISTANCE + OpenGLState(); /// Get the currently active OpenGL state From 5a4af616c67a4d7968c71b419795777c3601341b Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 17 Aug 2017 10:56:15 +0300 Subject: [PATCH 083/195] gl_shader_gen: simplify and clarify the depth transformation between vertex shader and fragment shader --- src/video_core/renderer_opengl/gl_shader_gen.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 0dae4b91ea..015e69da97 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -1112,7 +1112,10 @@ vec4 secondary_fragment_color = vec4(0.0); "gl_FragCoord.y < scissor_y2)) discard;\n"; } - out += "float z_over_w = 1.0 - gl_FragCoord.z * 2.0;\n"; + // After perspective divide, OpenGL transform z_over_w from [-1, 1] to [near, far]. Here we use + // default near = 0 and far = 1, and undo the transformation to get the original z_over_w, then + // do our own transformation according to PICA specification. + out += "float z_over_w = 2.0 * gl_FragCoord.z - 1.0;\n"; out += "float depth = z_over_w * depth_scale + depth_offset;\n"; if (state.depthmap_enable == RasterizerRegs::DepthBuffering::WBuffering) { out += "depth /= gl_FragCoord.w;\n"; @@ -1195,7 +1198,7 @@ void main() { texcoord0_w = vert_texcoord0_w; normquat = vert_normquat; view = vert_view; - gl_Position = vec4(vert_position.x, vert_position.y, -vert_position.z, vert_position.w); + gl_Position = vert_position; gl_ClipDistance[0] = -vert_position.z; // fixed PICA clipping plane z <= 0 // TODO (wwylele): calculate gl_ClipDistance[1] from user-defined clipping plane } From 72b26ac32f74457d017e4eb96d83e2a66e713a5a Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 17 Aug 2017 10:57:31 +0300 Subject: [PATCH 084/195] swrasterizer/clipper: remove tested TODO hwtested. Current implementation is the correct behavior --- src/video_core/swrasterizer/clipper.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/video_core/swrasterizer/clipper.cpp b/src/video_core/swrasterizer/clipper.cpp index 7537689b7f..cdbc715026 100644 --- a/src/video_core/swrasterizer/clipper.cpp +++ b/src/video_core/swrasterizer/clipper.cpp @@ -125,10 +125,6 @@ void ProcessTriangle(const OutputVertex& v0, const OutputVertex& v1, const Outpu {Math::MakeVec(f0, f0, f0, -f1), Math::Vec4(f0, f0, f0, EPSILON)}, // w = EPSILON }}; - // TODO: If one vertex lies outside one of the depth clipping planes, some platforms (e.g. Wii) - // drop the whole primitive instead of clipping the primitive properly. We should test if - // this happens on the 3DS, too. - // Simple implementation of the Sutherland-Hodgman clipping algorithm. // TODO: Make this less inefficient (currently lots of useless buffering overhead happens here) for (auto edge : clipping_edges) { From 63b6e802cdffc1464b4a1fe3f5171d71146e8e9a Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 17 Aug 2017 11:02:19 +0300 Subject: [PATCH 085/195] swrasterizer: remove invalid TODO This function is called in clipping, before the pespective divide, and is not used in later rasterization. Thus it doesn't need perspective correction. --- src/video_core/swrasterizer/rasterizer.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.h b/src/video_core/swrasterizer/rasterizer.h index 2f08775813..66cd6cfd49 100644 --- a/src/video_core/swrasterizer/rasterizer.h +++ b/src/video_core/swrasterizer/rasterizer.h @@ -19,10 +19,9 @@ struct Vertex : Shader::OutputVertex { // Linear interpolation // factor: 0=this, 1=vtx + // Note: This function cannot be called after perspective divide void Lerp(float24 factor, const Vertex& vtx) { pos = pos * factor + vtx.pos * (float24::FromFloat32(1) - factor); - - // TODO: Should perform perspective correct interpolation here... quat = quat * factor + vtx.quat * (float24::FromFloat32(1) - factor); color = color * factor + vtx.color * (float24::FromFloat32(1) - factor); tc0 = tc0 * factor + vtx.tc0 * (float24::FromFloat32(1) - factor); @@ -30,12 +29,11 @@ struct Vertex : Shader::OutputVertex { tc0_w = tc0_w * factor + vtx.tc0_w * (float24::FromFloat32(1) - factor); view = view * factor + vtx.view * (float24::FromFloat32(1) - factor); tc2 = tc2 * factor + vtx.tc2 * (float24::FromFloat32(1) - factor); - - screenpos = screenpos * factor + vtx.screenpos * (float24::FromFloat32(1) - factor); } // Linear interpolation // factor: 0=v0, 1=v1 + // Note: This function cannot be called after perspective divide static Vertex Lerp(float24 factor, const Vertex& v0, const Vertex& v1) { Vertex ret = v0; ret.Lerp(factor, v1); From d3fb1d6c3882e45dee66fe7e5cf7613268e1b7bb Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 19 Aug 2017 11:28:22 -0500 Subject: [PATCH 086/195] Dyncom: Fixed a conversion warning when decoding thumb instructions. --- src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index f4fbb8d04f..f829b92298 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp @@ -759,7 +759,7 @@ static ThumbDecodeStatus DecodeThumbInstruction(u32 inst, u32 addr, u32* arm_ins ThumbDecodeStatus ret = TranslateThumbInstruction(addr, inst, arm_inst, inst_size); if (ret == ThumbDecodeStatus::BRANCH) { int inst_index; - int table_length = arm_instruction_trans_len; + int table_length = static_cast(arm_instruction_trans_len); u32 tinstr = GetThumbInstruction(inst, addr); switch ((tinstr & 0xF800) >> 11) { From 9d0841b48b6b6f3c5a2425922617343fc2f79cdc Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 19 Aug 2017 11:30:20 -0500 Subject: [PATCH 087/195] Dyncom: Use size_t instead of int to store the instruction offsets in the instruction cache. Fixes a few warnings. --- src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 6 +++--- src/core/arm/skyeye_common/armstate.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index f829b92298..3522d1e82a 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp @@ -838,7 +838,7 @@ static unsigned int InterpreterTranslateInstruction(const ARMul_State* cpu, cons return inst_size; } -static int InterpreterTranslateBlock(ARMul_State* cpu, int& bb_start, u32 addr) { +static int InterpreterTranslateBlock(ARMul_State* cpu, std::size_t& bb_start, u32 addr) { MICROPROFILE_SCOPE(DynCom_Decode); // Decode instruction, get index @@ -871,7 +871,7 @@ static int InterpreterTranslateBlock(ARMul_State* cpu, int& bb_start, u32 addr) return KEEP_GOING; } -static int InterpreterTranslateSingle(ARMul_State* cpu, int& bb_start, u32 addr) { +static int InterpreterTranslateSingle(ARMul_State* cpu, std::size_t& bb_start, u32 addr) { MICROPROFILE_SCOPE(DynCom_Decode); ARM_INST_PTR inst_base = nullptr; @@ -1620,7 +1620,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) { unsigned int addr; unsigned int num_instrs = 0; - int ptr; + std::size_t ptr; LOAD_NZCVT; DISPATCH : { diff --git a/src/core/arm/skyeye_common/armstate.h b/src/core/arm/skyeye_common/armstate.h index 1a707ff7ed..893877797b 100644 --- a/src/core/arm/skyeye_common/armstate.h +++ b/src/core/arm/skyeye_common/armstate.h @@ -230,7 +230,7 @@ public: // TODO(bunnei): Move this cache to a better place - it should be per codeset (likely per // process for our purposes), not per ARMul_State (which tracks CPU core state). - std::unordered_map instruction_cache; + std::unordered_map instruction_cache; private: void ResetMPCoreCP15Registers(); From d237a890482b62c90c58691863dabd609c2aa34e Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 19 Aug 2017 11:33:01 -0500 Subject: [PATCH 088/195] CPU/Dynarmic: Fixed a warning when incrementing the number of ticks in ExecuteInstructions. --- src/core/arm/dynarmic/arm_dynarmic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index 7d2790b08f..0a0b91590e 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp @@ -136,7 +136,7 @@ MICROPROFILE_DEFINE(ARM_Jit, "ARM JIT", "ARM JIT", MP_RGB(255, 64, 64)); void ARM_Dynarmic::ExecuteInstructions(int num_instructions) { MICROPROFILE_SCOPE(ARM_Jit); - unsigned ticks_executed = jit->Run(static_cast(num_instructions)); + std::size_t ticks_executed = jit->Run(static_cast(num_instructions)); AddTicks(ticks_executed); } From 145a7293a32c6fb25f1db796f7e1dd6c4efc985e Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 19 Aug 2017 11:37:21 -0500 Subject: [PATCH 089/195] HLE/Applets: Fixed some conversion warnings when creating the framebuffer shared memory objects. --- src/core/hle/applets/erreula.cpp | 4 ++-- src/core/hle/applets/mii_selector.cpp | 4 ++-- src/core/hle/applets/mint.cpp | 4 ++-- src/core/hle/applets/swkbd.cpp | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/hle/applets/erreula.cpp b/src/core/hle/applets/erreula.cpp index 75d7fd9fc3..518f371f57 100644 --- a/src/core/hle/applets/erreula.cpp +++ b/src/core/hle/applets/erreula.cpp @@ -31,8 +31,8 @@ ResultCode ErrEula::ReceiveParameter(const Service::APT::MessageParameter& param heap_memory = std::make_shared>(capture_info.size); // Create a SharedMemory that directly points to this heap block. framebuffer_memory = Kernel::SharedMemory::CreateForApplet( - heap_memory, 0, heap_memory->size(), MemoryPermission::ReadWrite, - MemoryPermission::ReadWrite, "ErrEula Memory"); + heap_memory, 0, capture_info.size, MemoryPermission::ReadWrite, MemoryPermission::ReadWrite, + "ErrEula Memory"); // Send the response message with the newly created SharedMemory Service::APT::MessageParameter result; diff --git a/src/core/hle/applets/mii_selector.cpp b/src/core/hle/applets/mii_selector.cpp index 89f08daa2b..705859f1e2 100644 --- a/src/core/hle/applets/mii_selector.cpp +++ b/src/core/hle/applets/mii_selector.cpp @@ -38,8 +38,8 @@ ResultCode MiiSelector::ReceiveParameter(const Service::APT::MessageParameter& p heap_memory = std::make_shared>(capture_info.size); // Create a SharedMemory that directly points to this heap block. framebuffer_memory = Kernel::SharedMemory::CreateForApplet( - heap_memory, 0, heap_memory->size(), MemoryPermission::ReadWrite, - MemoryPermission::ReadWrite, "MiiSelector Memory"); + heap_memory, 0, capture_info.size, MemoryPermission::ReadWrite, MemoryPermission::ReadWrite, + "MiiSelector Memory"); // Send the response message with the newly created SharedMemory Service::APT::MessageParameter result; diff --git a/src/core/hle/applets/mint.cpp b/src/core/hle/applets/mint.cpp index 31a79ea173..50d79190b2 100644 --- a/src/core/hle/applets/mint.cpp +++ b/src/core/hle/applets/mint.cpp @@ -31,8 +31,8 @@ ResultCode Mint::ReceiveParameter(const Service::APT::MessageParameter& paramete heap_memory = std::make_shared>(capture_info.size); // Create a SharedMemory that directly points to this heap block. framebuffer_memory = Kernel::SharedMemory::CreateForApplet( - heap_memory, 0, heap_memory->size(), MemoryPermission::ReadWrite, - MemoryPermission::ReadWrite, "Mint Memory"); + heap_memory, 0, capture_info.size, MemoryPermission::ReadWrite, MemoryPermission::ReadWrite, + "Mint Memory"); // Send the response message with the newly created SharedMemory Service::APT::MessageParameter result; diff --git a/src/core/hle/applets/swkbd.cpp b/src/core/hle/applets/swkbd.cpp index fdf8807b03..0bc471a3a8 100644 --- a/src/core/hle/applets/swkbd.cpp +++ b/src/core/hle/applets/swkbd.cpp @@ -41,8 +41,8 @@ ResultCode SoftwareKeyboard::ReceiveParameter(Service::APT::MessageParameter con heap_memory = std::make_shared>(capture_info.size); // Create a SharedMemory that directly points to this heap block. framebuffer_memory = Kernel::SharedMemory::CreateForApplet( - heap_memory, 0, heap_memory->size(), MemoryPermission::ReadWrite, - MemoryPermission::ReadWrite, "SoftwareKeyboard Memory"); + heap_memory, 0, capture_info.size, MemoryPermission::ReadWrite, MemoryPermission::ReadWrite, + "SoftwareKeyboard Memory"); // Send the response message with the newly created SharedMemory Service::APT::MessageParameter result; From 65f19b51c43fbc35a1f1bfb81d773eaf6b5fffd3 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 19 Aug 2017 12:04:40 -0500 Subject: [PATCH 090/195] Warnings: Add UNREACHABLE macros to switches that contemplate all possible values. --- src/core/file_sys/archive_backend.cpp | 2 ++ src/core/hle/kernel/kernel.h | 3 +++ src/core/hw/gpu.h | 4 ++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/file_sys/archive_backend.cpp b/src/core/file_sys/archive_backend.cpp index 1fae0ede0d..87a240d7a8 100644 --- a/src/core/file_sys/archive_backend.cpp +++ b/src/core/file_sys/archive_backend.cpp @@ -90,6 +90,8 @@ std::u16string Path::AsU16Str() const { LOG_ERROR(Service_FS, "LowPathType cannot be converted to u16string!"); return {}; } + + UNREACHABLE(); } std::vector Path::AsBinary() const { diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 9cf288b084..142bb84b20 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h @@ -8,6 +8,7 @@ #include #include #include +#include "common/assert.h" #include "common/common_types.h" namespace Kernel { @@ -84,6 +85,8 @@ public: case HandleType::ClientSession: return false; } + + UNREACHABLE(); } public: diff --git a/src/core/hw/gpu.h b/src/core/hw/gpu.h index 21b127fee4..e3d0a0e086 100644 --- a/src/core/hw/gpu.h +++ b/src/core/hw/gpu.h @@ -74,9 +74,9 @@ struct Regs { case PixelFormat::RGB5A1: case PixelFormat::RGBA4: return 2; - default: - UNIMPLEMENTED(); } + + UNREACHABLE(); } INSERT_PADDING_WORDS(0x4); From 8a9a4e2c42b6c2326140f7369374bf78a4645a8f Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 19 Aug 2017 12:09:35 -0500 Subject: [PATCH 091/195] GPU/Warnings: Explicitly cast the screen refresh ticks to u64. --- src/core/hw/gpu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/hw/gpu.cpp b/src/core/hw/gpu.cpp index 6838e449ca..83ad9d898a 100644 --- a/src/core/hw/gpu.cpp +++ b/src/core/hw/gpu.cpp @@ -29,7 +29,7 @@ namespace GPU { Regs g_regs; /// 268MHz CPU clocks / 60Hz frames per second -const u64 frame_ticks = BASE_CLOCK_RATE_ARM11 / SCREEN_REFRESH_RATE; +const u64 frame_ticks = static_cast(BASE_CLOCK_RATE_ARM11 / SCREEN_REFRESH_RATE); /// Event id for CoreTiming static int vblank_event; From fa228ca637b84e6441879769d54a531ab6aba113 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 21 Aug 2017 20:54:29 -0500 Subject: [PATCH 092/195] Kernel/Threads: Don't immediately switch to the new main thread when loading a new process. This is necessary for loading multiple processes at the same time. The main thread will be automatically scheduled when necessary once the scheduler runs. --- src/core/hle/kernel/thread.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index f5f2eb2f7f..b957c45dd4 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -478,8 +478,6 @@ void Thread::BoostPriority(s32 priority) { } SharedPtr SetupMainThread(u32 entry_point, s32 priority) { - DEBUG_ASSERT(!GetCurrentThread()); - // Initialize new "main" thread auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0, Memory::HEAP_VADDR_END); @@ -489,9 +487,7 @@ SharedPtr SetupMainThread(u32 entry_point, s32 priority) { thread->context.fpscr = FPSCR_DEFAULT_NAN | FPSCR_FLUSH_TO_ZERO | FPSCR_ROUND_TOZERO | FPSCR_IXC; // 0x03C00010 - // Run new "main" thread - SwitchContext(thread.get()); - + // Note: The newly created thread will be run when the scheduler fires. return thread; } From 3e478ca13110639a67ad95880aae5d7d13e096b7 Mon Sep 17 00:00:00 2001 From: wwylele Date: Fri, 18 Aug 2017 15:04:56 +0300 Subject: [PATCH 093/195] SwRasterizer/Lighting: implement bump mapping --- src/video_core/swrasterizer/lighting.cpp | 28 ++++++++++++++++++---- src/video_core/swrasterizer/lighting.h | 3 ++- src/video_core/swrasterizer/rasterizer.cpp | 4 ++-- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/video_core/swrasterizer/lighting.cpp b/src/video_core/swrasterizer/lighting.cpp index 39a3e396d6..4f16bac07a 100644 --- a/src/video_core/swrasterizer/lighting.cpp +++ b/src/video_core/swrasterizer/lighting.cpp @@ -22,14 +22,32 @@ static float LookupLightingLut(const Pica::State::Lighting& lighting, size_t lut std::tuple, Math::Vec4> ComputeFragmentsColors( const Pica::LightingRegs& lighting, const Pica::State::Lighting& lighting_state, - const Math::Quaternion& normquat, const Math::Vec3& view) { + const Math::Quaternion& normquat, const Math::Vec3& view, + const Math::Vec4 (&texture_color)[4]) { - // TODO(Subv): Bump mapping - Math::Vec3 surface_normal = {0.0f, 0.0f, 1.0f}; + Math::Vec3 surface_normal; + Math::Vec3 surface_tangent; if (lighting.config0.bump_mode != LightingRegs::LightingBumpMode::None) { - LOG_CRITICAL(HW_GPU, "unimplemented bump mapping"); - UNIMPLEMENTED(); + Math::Vec3 perturbation = + texture_color[lighting.config0.bump_selector].xyz().Cast() / 127.5f - + Math::MakeVec(1.0f, 1.0f, 1.0f); + if (lighting.config0.bump_mode == LightingRegs::LightingBumpMode::NormalMap) { + if (!lighting.config0.disable_bump_renorm) { + const float z_square = 1 - perturbation.xy().Length2(); + perturbation.z = std::sqrt(std::max(z_square, 0.0f)); + } + surface_normal = perturbation; + surface_tangent = Math::MakeVec(1.0f, 0.0f, 0.0f); + } else if (lighting.config0.bump_mode == LightingRegs::LightingBumpMode::TangentMap) { + surface_normal = Math::MakeVec(0.0f, 0.0f, 1.0f); + surface_tangent = perturbation; + } else { + LOG_ERROR(HW_GPU, "Unknown bump mode %u", lighting.config0.bump_mode.Value()); + } + } else { + surface_normal = Math::MakeVec(0.0f, 0.0f, 1.0f); + surface_tangent = Math::MakeVec(1.0f, 0.0f, 0.0f); } // Use the normalized the quaternion when performing the rotation diff --git a/src/video_core/swrasterizer/lighting.h b/src/video_core/swrasterizer/lighting.h index 438dca926b..d807a3d948 100644 --- a/src/video_core/swrasterizer/lighting.h +++ b/src/video_core/swrasterizer/lighting.h @@ -13,6 +13,7 @@ namespace Pica { std::tuple, Math::Vec4> ComputeFragmentsColors( const Pica::LightingRegs& lighting, const Pica::State::Lighting& lighting_state, - const Math::Quaternion& normquat, const Math::Vec3& view); + const Math::Quaternion& normquat, const Math::Vec3& view, + const Math::Vec4 (&texture_color)[4]); } // namespace Pica diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index fdc1df1993..862135614c 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -437,8 +437,8 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve GetInterpolatedAttribute(v0.view.y, v1.view.y, v2.view.y).ToFloat32(), GetInterpolatedAttribute(v0.view.z, v1.view.z, v2.view.z).ToFloat32(), }; - std::tie(primary_fragment_color, secondary_fragment_color) = - ComputeFragmentsColors(g_state.regs.lighting, g_state.lighting, normquat, view); + std::tie(primary_fragment_color, secondary_fragment_color) = ComputeFragmentsColors( + g_state.regs.lighting, g_state.lighting, normquat, view, texture_color); } for (unsigned tev_stage_index = 0; tev_stage_index < tev_stages.size(); From b5aa5703540adceb1fc867b577dad50388a47e15 Mon Sep 17 00:00:00 2001 From: wwylele Date: Fri, 18 Aug 2017 16:35:11 +0300 Subject: [PATCH 094/195] SwRasterizer/Lighting: implement LUT input CP --- src/video_core/swrasterizer/lighting.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/video_core/swrasterizer/lighting.cpp b/src/video_core/swrasterizer/lighting.cpp index 4f16bac07a..b389645307 100644 --- a/src/video_core/swrasterizer/lighting.cpp +++ b/src/video_core/swrasterizer/lighting.cpp @@ -52,6 +52,7 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( // Use the normalized the quaternion when performing the rotation auto normal = Math::QuaternionRotate(normquat, surface_normal); + auto tangent = Math::QuaternionRotate(normquat, surface_tangent); Math::Vec4 diffuse_sum = {0.0f, 0.0f, 0.0f, 1.0f}; Math::Vec4 specular_sum = {0.0f, 0.0f, 0.0f, 1.0f}; @@ -120,6 +121,16 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( result = Math::Dot(light_vector, spot_dir.Cast() / 2047.0f); break; } + case LightingRegs::LightingLutInput::CP: + if (lighting.config0.config == LightingRegs::LightingConfig::Config7) { + const Math::Vec3 norm_half_vector = half_vector.Normalized(); + const Math::Vec3 half_vector_proj = + norm_half_vector - normal * Math::Dot(normal, norm_half_vector); + result = Math::Dot(half_vector_proj, tangent); + } else { + result = 0.0f; + } + break; default: LOG_CRITICAL(HW_GPU, "Unknown lighting LUT input %u\n", static_cast(input)); UNIMPLEMENTED(); From 17c6104d2afda7bf354c454f87561a3dbdf524e3 Mon Sep 17 00:00:00 2001 From: wwylele Date: Mon, 21 Aug 2017 12:03:38 +0300 Subject: [PATCH 095/195] gl_rasterizer/lighting: more accurate CP formula --- src/video_core/renderer_opengl/gl_shader_gen.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index ae67aab052..d85f281e51 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -594,8 +594,8 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) { // Note: even if the normal vector is modified by normal map, which is not the // normal of the tangent plane anymore, the half angle vector is still projected // using the modified normal vector. - std::string half_angle_proj = "normalize(half_vector) - normal / dot(normal, " - "normal) * dot(normal, normalize(half_vector))"; + std::string half_angle_proj = + "normalize(half_vector) - normal * dot(normal, normalize(half_vector))"; // Note: the half angle vector projection is confirmed not normalized before the dot // product. The result is in fact not cos(phi) as the name suggested. index = "dot(" + half_angle_proj + ", tangent)"; From 4d058cfb768c10807359a1ffd2dbaf1eac589c1c Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 22 Aug 2017 11:43:44 +0300 Subject: [PATCH 096/195] motion_emu: fix initialization order --- src/input_common/motion_emu.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/input_common/motion_emu.cpp b/src/input_common/motion_emu.cpp index a1761f1846..59a035e701 100644 --- a/src/input_common/motion_emu.cpp +++ b/src/input_common/motion_emu.cpp @@ -74,11 +74,14 @@ private: bool is_tilting = false; Common::Event shutdown_event; - std::thread motion_emu_thread; std::tuple, Math::Vec3> status; std::mutex status_mutex; + // Note: always keep the thread declaration at the end so that other objects are initialized + // before this! + std::thread motion_emu_thread; + void MotionEmuThread() { auto update_time = std::chrono::steady_clock::now(); Math::Quaternion q = MakeQuaternion(Math::Vec3(), 0); From bca8916cea9c437d82509f8350fa3b858720f90e Mon Sep 17 00:00:00 2001 From: Subv Date: Thu, 20 Jul 2017 23:52:50 -0500 Subject: [PATCH 097/195] Kernel/HLE: Use a mutex to synchronize access to the HLE kernel state between the cpu thread and any other possible threads that might touch the kernel (network thread, etc). This mutex is acquired in SVC::CallSVC, ie, as soon as the guest application enters the HLE kernel, and should be acquired by the aforementioned threads before modifying kernel structures. --- src/core/CMakeLists.txt | 2 ++ src/core/hle/kernel/kernel.h | 2 +- src/core/hle/lock.cpp | 11 +++++++++++ src/core/hle/lock.h | 18 ++++++++++++++++++ src/core/hle/svc.cpp | 8 ++++++-- 5 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 src/core/hle/lock.cpp create mode 100644 src/core/hle/lock.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 360f407f3d..14027e182a 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -60,6 +60,7 @@ set(SRCS hle/kernel/timer.cpp hle/kernel/vm_manager.cpp hle/kernel/wait_object.cpp + hle/lock.cpp hle/romfs.cpp hle/service/ac/ac.cpp hle/service/ac/ac_i.cpp @@ -258,6 +259,7 @@ set(HEADERS hle/kernel/timer.h hle/kernel/vm_manager.h hle/kernel/wait_object.h + hle/lock.h hle/result.h hle/romfs.h hle/service/ac/ac.h diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 9cf288b084..255cda3594 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h @@ -129,4 +129,4 @@ void Init(u32 system_mode); /// Shutdown the kernel void Shutdown(); -} // namespace +} // namespace Kernel diff --git a/src/core/hle/lock.cpp b/src/core/hle/lock.cpp new file mode 100644 index 0000000000..082f689c86 --- /dev/null +++ b/src/core/hle/lock.cpp @@ -0,0 +1,11 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include + +namespace HLE { +std::mutex g_hle_lock; +} diff --git a/src/core/hle/lock.h b/src/core/hle/lock.h new file mode 100644 index 0000000000..8265621e1d --- /dev/null +++ b/src/core/hle/lock.h @@ -0,0 +1,18 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include + +namespace HLE { +/* + * Synchronizes access to the internal HLE kernel structures, it is acquired when a guest + * application thread performs a syscall. It should be acquired by any host threads that read or + * modify the HLE kernel state. Note: Any operation that directly or indirectly reads from or writes + * to the emulated memory is not protected by this mutex, and should be avoided in any threads other + * than the CPU thread. + */ +extern std::mutex g_hle_lock; +} // namespace HLE diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index e4b803046e..b98938cb4c 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -31,6 +31,7 @@ #include "core/hle/kernel/timer.h" #include "core/hle/kernel/vm_manager.h" #include "core/hle/kernel/wait_object.h" +#include "core/hle/lock.h" #include "core/hle/result.h" #include "core/hle/service/service.h" @@ -1188,7 +1189,7 @@ struct FunctionDef { Func* func; const char* name; }; -} +} // namespace static const FunctionDef SVC_Table[] = { {0x00, nullptr, "Unknown"}, @@ -1332,6 +1333,9 @@ MICROPROFILE_DEFINE(Kernel_SVC, "Kernel", "SVC", MP_RGB(70, 200, 70)); void CallSVC(u32 immediate) { MICROPROFILE_SCOPE(Kernel_SVC); + // Lock the global kernel mutex when we enter the kernel HLE. + std::lock_guard lock(HLE::g_hle_lock); + const FunctionDef* info = GetSVCInfo(immediate); if (info) { if (info->func) { @@ -1342,4 +1346,4 @@ void CallSVC(u32 immediate) { } } -} // namespace +} // namespace SVC From f484927ed03a1943a83f8781e598e07c056cc82a Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 00:34:47 -0500 Subject: [PATCH 098/195] Kernel/Memory: Acquire the global HLE lock when a memory read/write operation falls outside of the fast path, for it might perform an MMIO operation. --- src/core/memory.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 9024f49225..72cbf2ec78 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -9,6 +9,7 @@ #include "common/logging/log.h" #include "common/swap.h" #include "core/hle/kernel/process.h" +#include "core/hle/lock.h" #include "core/memory.h" #include "core/memory_setup.h" #include "core/mmio.h" @@ -187,6 +188,9 @@ T Read(const VAddr vaddr) { return value; } + // The memory access might do an MMIO or cached access, so we have to lock the HLE kernel state + std::lock_guard lock(HLE::g_hle_lock); + PageType type = current_page_table->attributes[vaddr >> PAGE_BITS]; switch (type) { case PageType::Unmapped: @@ -226,6 +230,9 @@ void Write(const VAddr vaddr, const T data) { return; } + // The memory access might do an MMIO or cached access, so we have to lock the HLE kernel state + std::lock_guard lock(HLE::g_hle_lock); + PageType type = current_page_table->attributes[vaddr >> PAGE_BITS]; switch (type) { case PageType::Unmapped: @@ -722,4 +729,4 @@ VAddr PhysicalToVirtualAddress(const PAddr addr) { return addr | 0x80000000; } -} // namespace +} // namespace Memory From c84e60b4700778db236d3177714a076c515f9ce7 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 8 Aug 2017 21:34:17 +0300 Subject: [PATCH 099/195] HID: use TouchDevice for touch pad --- src/core/frontend/input.h | 6 ++++++ src/core/hle/service/hid/hid.cpp | 12 ++++++++---- src/core/settings.h | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/core/frontend/input.h b/src/core/frontend/input.h index 5916a901de..8c256beb59 100644 --- a/src/core/frontend/input.h +++ b/src/core/frontend/input.h @@ -126,4 +126,10 @@ using AnalogDevice = InputDevice>; */ using MotionDevice = InputDevice, Math::Vec3>>; +/** + * A touch device is an input device that returns a tuple of two floats and a bool. The floats are + * x and y coordinates in the range 0.0 - 1.0, and the bool indicates whether it is pressed. + */ +using TouchDevice = InputDevice>; + } // namespace Input diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 31f34a7ae2..aa5d821f92 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -7,9 +7,9 @@ #include #include #include "common/logging/log.h" +#include "core/3ds.h" #include "core/core.h" #include "core/core_timing.h" -#include "core/frontend/emu_window.h" #include "core/frontend/input.h" #include "core/hle/ipc.h" #include "core/hle/kernel/event.h" @@ -19,7 +19,6 @@ #include "core/hle/service/hid/hid_spvr.h" #include "core/hle/service/hid/hid_user.h" #include "core/hle/service/service.h" -#include "video_core/video_core.h" namespace Service { namespace HID { @@ -59,6 +58,7 @@ static std::array, Settings::NativeButton:: buttons; static std::unique_ptr circle_pad; static std::unique_ptr motion_device; +static std::unique_ptr touch_device; DirectionState GetStickDirectionState(s16 circle_pad_x, s16 circle_pad_y) { // 30 degree and 60 degree are angular thresholds for directions @@ -96,6 +96,7 @@ static void LoadInputDevices() { circle_pad = Input::CreateDevice( Settings::values.analogs[Settings::NativeAnalog::CirclePad]); motion_device = Input::CreateDevice(Settings::values.motion_device); + touch_device = Input::CreateDevice(Settings::values.touch_device); } static void UnloadInputDevices() { @@ -104,6 +105,7 @@ static void UnloadInputDevices() { } circle_pad.reset(); motion_device.reset(); + touch_device.reset(); } static void UpdatePadCallback(u64 userdata, int cycles_late) { @@ -172,8 +174,10 @@ static void UpdatePadCallback(u64 userdata, int cycles_late) { // Get the current touch entry TouchDataEntry& touch_entry = mem->touch.entries[mem->touch.index]; bool pressed = false; - - std::tie(touch_entry.x, touch_entry.y, pressed) = VideoCore::g_emu_window->GetTouchState(); + float x, y; + std::tie(x, y, pressed) = touch_device->GetStatus(); + touch_entry.x = static_cast(x * Core::kScreenBottomWidth); + touch_entry.y = static_cast(y * Core::kScreenBottomHeight); touch_entry.valid.Assign(pressed ? 1 : 0); // TODO(bunnei): We're not doing anything with offset 0xA8 + 0x18 of HID SharedMemory, which diff --git a/src/core/settings.h b/src/core/settings.h index 7e15b119b7..088d7651aa 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -80,6 +80,7 @@ struct Values { std::array buttons; std::array analogs; std::string motion_device; + std::string touch_device; // Core bool use_cpu_jit; From 2617de1fe6f6f1fc846a8e038e1ea77a894554b2 Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 9 Aug 2017 02:57:42 +0300 Subject: [PATCH 100/195] EmuWindow: refactor touch input into a TouchDevice --- src/citra/config.cpp | 2 + src/citra/default_ini.h | 4 ++ src/citra_qt/configuration/config.cpp | 3 ++ src/core/frontend/emu_window.cpp | 71 ++++++++++++++++++++++----- src/core/frontend/emu_window.h | 31 ++---------- 5 files changed, 72 insertions(+), 39 deletions(-) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 73846ed915..93569fc4c1 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -78,6 +78,8 @@ void Config::ReadValues() { Settings::values.motion_device = sdl2_config->Get( "Controls", "motion_device", "engine:motion_emu,update_period:100,sensitivity:0.01"); + Settings::values.touch_device = + sdl2_config->Get("Controls", "touch_device", "engine:emu_window"); // Core Settings::values.use_cpu_jit = sdl2_config->GetBoolean("Core", "use_cpu_jit", true); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index 9ea779dd84..fa9dda651b 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -62,6 +62,10 @@ c_stick= # - "sensitivity": the coefficient converting mouse movement to tilting angle (default to 0.01) motion_device= +# for touch input, the following devices are available: +# - "emu_window" (default) for emulating touch input from mouse input to the emulation window. No parameters required +touch_device= + [Core] # Whether to use the Just-In-Time (JIT) compiler for CPU emulation # 0: Interpreter (slow), 1 (default): JIT (fast) diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 6e42db0072..e398c6f292 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -61,6 +61,8 @@ void Config::ReadValues() { qt_config->value("motion_device", "engine:motion_emu,update_period:100,sensitivity:0.01") .toString() .toStdString(); + Settings::values.touch_device = + qt_config->value("touch_device", "engine:emu_window").toString().toStdString(); qt_config->endGroup(); @@ -209,6 +211,7 @@ void Config::SaveValues() { QString::fromStdString(Settings::values.analogs[i])); } qt_config->setValue("motion_device", QString::fromStdString(Settings::values.motion_device)); + qt_config->setValue("touch_device", QString::fromStdString(Settings::values.touch_device)); qt_config->endGroup(); qt_config->beginGroup("Core"); diff --git a/src/core/frontend/emu_window.cpp b/src/core/frontend/emu_window.cpp index 60b20d4e2c..787c517ff6 100644 --- a/src/core/frontend/emu_window.cpp +++ b/src/core/frontend/emu_window.cpp @@ -2,14 +2,55 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. -#include #include -#include "common/assert.h" -#include "core/3ds.h" -#include "core/core.h" +#include #include "core/frontend/emu_window.h" +#include "core/frontend/input.h" #include "core/settings.h" +class EmuWindow::TouchState : public Input::Factory, + public std::enable_shared_from_this { +public: + std::unique_ptr Create(const Common::ParamPackage&) override { + return std::make_unique(shared_from_this()); + } + + std::mutex mutex; + + bool touch_pressed = false; ///< True if touchpad area is currently pressed, otherwise false + + float touch_x = 0.0f; ///< Touchpad X-position + float touch_y = 0.0f; ///< Touchpad Y-position + +private: + class Device : public Input::TouchDevice { + public: + explicit Device(std::weak_ptr&& touch_state) : touch_state(touch_state) {} + std::tuple GetStatus() const override { + if (auto state = touch_state.lock()) { + std::lock_guard guard(state->mutex); + return std::make_tuple(state->touch_x, state->touch_y, state->touch_pressed); + } + return std::make_tuple(0.0f, 0.0f, false); + } + + private: + std::weak_ptr touch_state; + }; +}; + +EmuWindow::EmuWindow() { + // TODO: Find a better place to set this. + config.min_client_area_size = std::make_pair(400u, 480u); + active_config = config; + touch_state = std::make_shared(); + Input::RegisterFactory("emu_window", touch_state); +} + +EmuWindow::~EmuWindow() { + Input::UnregisterFactory("emu_window"); +} + /** * Check if the given x/y coordinates are within the touchpad specified by the framebuffer layout * @param layout FramebufferLayout object describing the framebuffer size and screen positions @@ -38,22 +79,26 @@ void EmuWindow::TouchPressed(unsigned framebuffer_x, unsigned framebuffer_y) { if (!IsWithinTouchscreen(framebuffer_layout, framebuffer_x, framebuffer_y)) return; - touch_x = Core::kScreenBottomWidth * (framebuffer_x - framebuffer_layout.bottom_screen.left) / - (framebuffer_layout.bottom_screen.right - framebuffer_layout.bottom_screen.left); - touch_y = Core::kScreenBottomHeight * (framebuffer_y - framebuffer_layout.bottom_screen.top) / - (framebuffer_layout.bottom_screen.bottom - framebuffer_layout.bottom_screen.top); + std::lock_guard guard(touch_state->mutex); + touch_state->touch_x = + static_cast(framebuffer_x - framebuffer_layout.bottom_screen.left) / + (framebuffer_layout.bottom_screen.right - framebuffer_layout.bottom_screen.left); + touch_state->touch_y = + static_cast(framebuffer_y - framebuffer_layout.bottom_screen.top) / + (framebuffer_layout.bottom_screen.bottom - framebuffer_layout.bottom_screen.top); - touch_pressed = true; + touch_state->touch_pressed = true; } void EmuWindow::TouchReleased() { - touch_pressed = false; - touch_x = 0; - touch_y = 0; + std::lock_guard guard(touch_state->mutex); + touch_state->touch_pressed = false; + touch_state->touch_x = 0; + touch_state->touch_y = 0; } void EmuWindow::TouchMoved(unsigned framebuffer_x, unsigned framebuffer_y) { - if (!touch_pressed) + if (!touch_state->touch_pressed) return; if (!IsWithinTouchscreen(framebuffer_layout, framebuffer_x, framebuffer_y)) diff --git a/src/core/frontend/emu_window.h b/src/core/frontend/emu_window.h index 7bdee251c2..c10dee51ba 100644 --- a/src/core/frontend/emu_window.h +++ b/src/core/frontend/emu_window.h @@ -4,11 +4,10 @@ #pragma once -#include +#include #include #include #include "common/common_types.h" -#include "common/math_util.h" #include "core/frontend/framebuffer_layout.h" /** @@ -68,17 +67,6 @@ public: */ void TouchMoved(unsigned framebuffer_x, unsigned framebuffer_y); - /** - * Gets the current touch screen state (touch X/Y coordinates and whether or not it is pressed). - * @note This should be called by the core emu thread to get a state set by the window thread. - * @todo Fix this function to be thread-safe. - * @return std::tuple of (x, y, pressed) where `x` and `y` are the touch coordinates and - * `pressed` is true if the touch screen is currently being pressed - */ - std::tuple GetTouchState() const { - return std::make_tuple(touch_x, touch_y, touch_pressed); - } - /** * Returns currently active configuration. * @note Accesses to the returned object need not be consistent because it may be modified in @@ -113,15 +101,8 @@ public: void UpdateCurrentFramebufferLayout(unsigned width, unsigned height); protected: - EmuWindow() { - // TODO: Find a better place to set this. - config.min_client_area_size = std::make_pair(400u, 480u); - active_config = config; - touch_x = 0; - touch_y = 0; - touch_pressed = false; - } - virtual ~EmuWindow() {} + EmuWindow(); + virtual ~EmuWindow(); /** * Processes any pending configuration changes from the last SetConfig call. @@ -177,10 +158,8 @@ private: /// ProcessConfigurationChanges) WindowConfig active_config; ///< Internal active configuration - bool touch_pressed; ///< True if touchpad area is currently pressed, otherwise false - - u16 touch_x; ///< Touchpad X-position in native 3DS pixel coordinates (0-320) - u16 touch_y; ///< Touchpad Y-position in native 3DS pixel coordinates (0-240) + class TouchState; + std::shared_ptr touch_state; /** * Clip the provided coordinates to be inside the touchscreen area. From ea51a3af261254e5455f63a0ef41e55ef1dfc471 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 22 Aug 2017 09:49:26 +0300 Subject: [PATCH 101/195] SwRasterizer: implement custom clip plane --- src/video_core/regs_rasterizer.h | 14 ++++++++++++-- src/video_core/swrasterizer/clipper.cpp | 15 +++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/video_core/regs_rasterizer.h b/src/video_core/regs_rasterizer.h index 2874fd1272..4fef00d763 100644 --- a/src/video_core/regs_rasterizer.h +++ b/src/video_core/regs_rasterizer.h @@ -5,10 +5,10 @@ #pragma once #include - #include "common/bit_field.h" #include "common/common_funcs.h" #include "common/common_types.h" +#include "video_core/pica_types.h" namespace Pica { @@ -31,7 +31,17 @@ struct RasterizerRegs { BitField<0, 24, u32> viewport_size_y; - INSERT_PADDING_WORDS(0x9); + INSERT_PADDING_WORDS(0x3); + + BitField<0, 1, u32> clip_enable; + BitField<0, 24, u32> clip_coef[4]; // float24 + + Math::Vec4 GetClipCoef() const { + return {float24::FromRaw(clip_coef[0]), float24::FromRaw(clip_coef[1]), + float24::FromRaw(clip_coef[2]), float24::FromRaw(clip_coef[3])}; + } + + INSERT_PADDING_WORDS(0x1); BitField<0, 24, u32> viewport_depth_range; // float24 BitField<0, 24, u32> viewport_depth_near_plane; // float24 diff --git a/src/video_core/swrasterizer/clipper.cpp b/src/video_core/swrasterizer/clipper.cpp index cdbc715026..cc76ba5555 100644 --- a/src/video_core/swrasterizer/clipper.cpp +++ b/src/video_core/swrasterizer/clipper.cpp @@ -127,8 +127,7 @@ void ProcessTriangle(const OutputVertex& v0, const OutputVertex& v1, const Outpu // Simple implementation of the Sutherland-Hodgman clipping algorithm. // TODO: Make this less inefficient (currently lots of useless buffering overhead happens here) - for (auto edge : clipping_edges) { - + auto Clip = [&](const ClippingEdge& edge) { std::swap(input_list, output_list); output_list->clear(); @@ -147,12 +146,24 @@ void ProcessTriangle(const OutputVertex& v0, const OutputVertex& v1, const Outpu } reference_vertex = &vertex; } + }; + + for (auto edge : clipping_edges) { + Clip(edge); // Need to have at least a full triangle to continue... if (output_list->size() < 3) return; } + if (g_state.regs.rasterizer.clip_enable) { + ClippingEdge custom_edge{-g_state.regs.rasterizer.GetClipCoef()}; + Clip(custom_edge); + + if (output_list->size() < 3) + return; + } + InitScreenCoordinates((*output_list)[0]); InitScreenCoordinates((*output_list)[1]); From addbcd5784c8195f49cecc20834537c80d1c8c72 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 22 Aug 2017 09:49:53 +0300 Subject: [PATCH 102/195] gl_rasterizer: implement custom clip plane --- .../renderer_opengl/gl_rasterizer.cpp | 28 +++++++ .../renderer_opengl/gl_rasterizer.h | 9 ++- .../renderer_opengl/gl_shader_gen.cpp | 80 +++++++++++-------- 3 files changed, 83 insertions(+), 34 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index aa95ef21da..7b0cd1b667 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -169,6 +169,8 @@ RasterizerOpenGL::RasterizerOpenGL() : shader_dirty(true) { glTexBuffer(GL_TEXTURE_BUFFER, GL_RGBA32F, proctex_diff_lut_buffer.handle); // Sync fixed function OpenGL state + SyncClipEnabled(); + SyncClipCoef(); SyncCullMode(); SyncBlendEnabled(); SyncBlendFuncs(); @@ -401,6 +403,18 @@ void RasterizerOpenGL::NotifyPicaRegisterChanged(u32 id) { SyncCullMode(); break; + // Clipping plane + case PICA_REG_INDEX(rasterizer.clip_enable): + SyncClipEnabled(); + break; + + case PICA_REG_INDEX_WORKAROUND(rasterizer.clip_coef[0], 0x48): + case PICA_REG_INDEX_WORKAROUND(rasterizer.clip_coef[1], 0x49): + case PICA_REG_INDEX_WORKAROUND(rasterizer.clip_coef[2], 0x4a): + case PICA_REG_INDEX_WORKAROUND(rasterizer.clip_coef[3], 0x4b): + SyncClipCoef(); + break; + // Depth modifiers case PICA_REG_INDEX(rasterizer.viewport_depth_range): SyncDepthScale(); @@ -1280,6 +1294,20 @@ void RasterizerOpenGL::SetShader() { } } +void RasterizerOpenGL::SyncClipEnabled() { + state.clip_distance[1] = Pica::g_state.regs.rasterizer.clip_enable != 0; +} + +void RasterizerOpenGL::SyncClipCoef() { + const auto raw_clip_coef = Pica::g_state.regs.rasterizer.GetClipCoef(); + const GLvec4 new_clip_coef = {raw_clip_coef.x.ToFloat32(), raw_clip_coef.y.ToFloat32(), + raw_clip_coef.z.ToFloat32(), raw_clip_coef.w.ToFloat32()}; + if (new_clip_coef != uniform_block_data.data.clip_coef) { + uniform_block_data.data.clip_coef = new_clip_coef; + uniform_block_data.dirty = true; + } +} + void RasterizerOpenGL::SyncCullMode() { const auto& regs = Pica::g_state.regs; diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 78e218efe1..46c62961c3 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h @@ -151,14 +151,21 @@ private: LightSrc light_src[8]; alignas(16) GLvec4 const_color[6]; // A vec4 color for each of the six tev stages alignas(16) GLvec4 tev_combiner_buffer_color; + alignas(16) GLvec4 clip_coef; }; static_assert( - sizeof(UniformData) == 0x460, + sizeof(UniformData) == 0x470, "The size of the UniformData structure has changed, update the structure in the shader"); static_assert(sizeof(UniformData) < 16384, "UniformData structure must be less than 16kb as per the OpenGL spec"); + /// Syncs the clip enabled status to match the PICA register + void SyncClipEnabled(); + + /// Syncs the clip coefficients to match the PICA register + void SyncClipCoef(); + /// Sets the OpenGL shader in accordance with the current PICA register state void SetShader(); diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 015e69da97..aa60b2e7f2 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -24,6 +24,42 @@ using TevStageConfig = TexturingRegs::TevStageConfig; namespace GLShader { +static const std::string UniformBlockDef = R"( +#define NUM_TEV_STAGES 6 +#define NUM_LIGHTS 8 + +struct LightSrc { + vec3 specular_0; + vec3 specular_1; + vec3 diffuse; + vec3 ambient; + vec3 position; + vec3 spot_direction; + float dist_atten_bias; + float dist_atten_scale; +}; + +layout (std140) uniform shader_data { + vec2 framebuffer_scale; + int alphatest_ref; + float depth_scale; + float depth_offset; + int scissor_x1; + int scissor_y1; + int scissor_x2; + int scissor_y2; + vec3 fog_color; + vec2 proctex_noise_f; + vec2 proctex_noise_a; + vec2 proctex_noise_p; + vec3 lighting_global_ambient; + LightSrc light_src[NUM_LIGHTS]; + vec4 const_color[NUM_TEV_STAGES]; + vec4 tev_combiner_buffer_color; + vec4 clip_coef; +}; +)"; + PicaShaderConfig PicaShaderConfig::BuildFromRegs(const Pica::Regs& regs) { PicaShaderConfig res; @@ -1008,8 +1044,6 @@ std::string GenerateFragmentShader(const PicaShaderConfig& config) { std::string out = R"( #version 330 core -#define NUM_TEV_STAGES 6 -#define NUM_LIGHTS 8 in vec4 primary_color; in vec2 texcoord[3]; @@ -1021,36 +1055,6 @@ in vec4 gl_FragCoord; out vec4 color; -struct LightSrc { - vec3 specular_0; - vec3 specular_1; - vec3 diffuse; - vec3 ambient; - vec3 position; - vec3 spot_direction; - float dist_atten_bias; - float dist_atten_scale; -}; - -layout (std140) uniform shader_data { - vec2 framebuffer_scale; - int alphatest_ref; - float depth_scale; - float depth_offset; - int scissor_x1; - int scissor_y1; - int scissor_x2; - int scissor_y2; - vec3 fog_color; - vec2 proctex_noise_f; - vec2 proctex_noise_a; - vec2 proctex_noise_p; - vec3 lighting_global_ambient; - LightSrc light_src[NUM_LIGHTS]; - vec4 const_color[NUM_TEV_STAGES]; - vec4 tev_combiner_buffer_color; -}; - uniform sampler2D tex[3]; uniform samplerBuffer lighting_lut; uniform samplerBuffer fog_lut; @@ -1059,7 +1063,11 @@ uniform samplerBuffer proctex_color_map; uniform samplerBuffer proctex_alpha_map; uniform samplerBuffer proctex_lut; uniform samplerBuffer proctex_diff_lut; +)"; + out += UniformBlockDef; + + out += R"( // Rotate the vector v by the quaternion q vec3 quaternion_rotate(vec4 q, vec3 v) { return v + 2.0 * cross(q.xyz, cross(q.xyz, v) + q.w * v); @@ -1190,6 +1198,12 @@ out float texcoord0_w; out vec4 normquat; out vec3 view; +)"; + + out += UniformBlockDef; + + out += R"( + void main() { primary_color = vert_color; texcoord[0] = vert_texcoord0; @@ -1200,7 +1214,7 @@ void main() { view = vert_view; gl_Position = vert_position; gl_ClipDistance[0] = -vert_position.z; // fixed PICA clipping plane z <= 0 - // TODO (wwylele): calculate gl_ClipDistance[1] from user-defined clipping plane + gl_ClipDistance[1] = dot(clip_coef, vert_position); } )"; From 417cb45e3fc20a7529ce5d548ba0fbc36ea0a621 Mon Sep 17 00:00:00 2001 From: wwylele Date: Tue, 22 Aug 2017 09:47:15 +0300 Subject: [PATCH 103/195] SwRasterizer/Clipper: flip the sign convention to match PICA and OpenGL --- src/video_core/swrasterizer/clipper.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/video_core/swrasterizer/clipper.cpp b/src/video_core/swrasterizer/clipper.cpp index cc76ba5555..a52129eb76 100644 --- a/src/video_core/swrasterizer/clipper.cpp +++ b/src/video_core/swrasterizer/clipper.cpp @@ -31,7 +31,7 @@ public: : coeffs(coeffs), bias(bias) {} bool IsInside(const Vertex& vertex) const { - return Math::Dot(vertex.pos + bias, coeffs) <= float24::FromFloat32(0); + return Math::Dot(vertex.pos + bias, coeffs) >= float24::FromFloat32(0); } bool IsOutSide(const Vertex& vertex) const { @@ -116,13 +116,13 @@ void ProcessTriangle(const OutputVertex& v0, const OutputVertex& v1, const Outpu static const float24 f0 = float24::FromFloat32(0.0); static const float24 f1 = float24::FromFloat32(1.0); static const std::array clipping_edges = {{ - {Math::MakeVec(f1, f0, f0, -f1)}, // x = +w - {Math::MakeVec(-f1, f0, f0, -f1)}, // x = -w - {Math::MakeVec(f0, f1, f0, -f1)}, // y = +w - {Math::MakeVec(f0, -f1, f0, -f1)}, // y = -w - {Math::MakeVec(f0, f0, f1, f0)}, // z = 0 - {Math::MakeVec(f0, f0, -f1, -f1)}, // z = -w - {Math::MakeVec(f0, f0, f0, -f1), Math::Vec4(f0, f0, f0, EPSILON)}, // w = EPSILON + {Math::MakeVec(-f1, f0, f0, f1)}, // x = +w + {Math::MakeVec(f1, f0, f0, f1)}, // x = -w + {Math::MakeVec(f0, -f1, f0, f1)}, // y = +w + {Math::MakeVec(f0, f1, f0, f1)}, // y = -w + {Math::MakeVec(f0, f0, -f1, f0)}, // z = 0 + {Math::MakeVec(f0, f0, f1, f1)}, // z = -w + {Math::MakeVec(f0, f0, f0, f1), Math::Vec4(f0, f0, f0, EPSILON)}, // w = EPSILON }}; // Simple implementation of the Sutherland-Hodgman clipping algorithm. @@ -157,7 +157,7 @@ void ProcessTriangle(const OutputVertex& v0, const OutputVertex& v1, const Outpu } if (g_state.regs.rasterizer.clip_enable) { - ClippingEdge custom_edge{-g_state.regs.rasterizer.GetClipCoef()}; + ClippingEdge custom_edge{g_state.regs.rasterizer.GetClipCoef()}; Clip(custom_edge); if (output_list->size() < 3) From 3cdf854e44e7ff088fa0cbdcfa2bcc6e41822b2c Mon Sep 17 00:00:00 2001 From: ThaMighty90 <30285364+ThaMighty90@users.noreply.github.com> Date: Fri, 25 Aug 2017 23:53:07 +0200 Subject: [PATCH 104/195] SidebySide Layout (#2859) * added a SidebySide Layout * Reworked, so both screen have the same height and cleaned up screen translates. * added the option in the UI, hope this is the right way to do it. formated framebuffer_layout.cpp * delete the x64 files * deleted ui_configure_graphics.h * added Option for the Layout in the xml * got rid of SIDE_BY_SIDE_ASPECT_RATIO because it was useless. pulled translate into variables * changed shift variables to u32 and moved them in their respective branch. remove notr="true" for the Screen layout drop down * reworked intends :). changed function description for SideFrameLayout * some description reworking --- .../configuration/configure_graphics.ui | 11 ++++-- src/core/frontend/emu_window.cpp | 3 ++ src/core/frontend/framebuffer_layout.cpp | 36 ++++++++++++++++++- src/core/frontend/framebuffer_layout.h | 11 ++++++ src/core/settings.cpp | 2 +- src/core/settings.h | 5 +-- 6 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/citra_qt/configuration/configure_graphics.ui b/src/citra_qt/configuration/configure_graphics.ui index 228f2a8695..b340149d52 100644 --- a/src/citra_qt/configuration/configure_graphics.ui +++ b/src/citra_qt/configuration/configure_graphics.ui @@ -146,17 +146,22 @@ - Default + Default - Single Screen + Single Screen - Large Screen + Large Screen + + + + + Side by Side diff --git a/src/core/frontend/emu_window.cpp b/src/core/frontend/emu_window.cpp index 60b20d4e2c..54fa5c7fa7 100644 --- a/src/core/frontend/emu_window.cpp +++ b/src/core/frontend/emu_window.cpp @@ -74,6 +74,9 @@ void EmuWindow::UpdateCurrentFramebufferLayout(unsigned width, unsigned height) case Settings::LayoutOption::LargeScreen: layout = Layout::LargeFrameLayout(width, height, Settings::values.swap_screen); break; + case Settings::LayoutOption::SideScreen: + layout = Layout::SideFrameLayout(width, height, Settings::values.swap_screen); + break; case Settings::LayoutOption::Default: default: layout = Layout::DefaultFrameLayout(width, height, Settings::values.swap_screen); diff --git a/src/core/frontend/framebuffer_layout.cpp b/src/core/frontend/framebuffer_layout.cpp index d2d02f9ff4..e9f778fcb6 100644 --- a/src/core/frontend/framebuffer_layout.cpp +++ b/src/core/frontend/framebuffer_layout.cpp @@ -141,6 +141,40 @@ FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool swapped return res; } +FramebufferLayout SideFrameLayout(unsigned width, unsigned height, bool swapped) { + ASSERT(width > 0); + ASSERT(height > 0); + + FramebufferLayout res{width, height, true, true, {}, {}}; + // Aspect ratio of both screens side by side + const float emulation_aspect_ratio = static_cast(Core::kScreenTopHeight) / + (Core::kScreenTopWidth + Core::kScreenBottomWidth); + float window_aspect_ratio = static_cast(height) / width; + MathUtil::Rectangle screen_window_area{0, 0, width, height}; + // Find largest Rectangle that can fit in the window size with the given aspect ratio + MathUtil::Rectangle screen_rect = + maxRectangle(screen_window_area, emulation_aspect_ratio); + // Find sizes of top and bottom screen + MathUtil::Rectangle top_screen = maxRectangle(screen_rect, TOP_SCREEN_ASPECT_RATIO); + MathUtil::Rectangle bot_screen = maxRectangle(screen_rect, BOT_SCREEN_ASPECT_RATIO); + + if (window_aspect_ratio < emulation_aspect_ratio) { + // Apply borders to the left and right sides of the window. + u32 shift_horizontal = (screen_window_area.GetWidth() - screen_rect.GetWidth()) / 2; + top_screen = top_screen.TranslateX(shift_horizontal); + bot_screen = bot_screen.TranslateX(shift_horizontal); + } else { + // Window is narrower than the emulation content => apply borders to the top and bottom + u32 shift_vertical = (screen_window_area.GetHeight() - screen_rect.GetHeight()) / 2; + top_screen = top_screen.TranslateY(shift_vertical); + bot_screen = bot_screen.TranslateY(shift_vertical); + } + // Move the top screen to the right if we are swapped. + res.top_screen = swapped ? top_screen.TranslateX(bot_screen.GetWidth()) : top_screen; + res.bottom_screen = swapped ? bot_screen : bot_screen.TranslateX(top_screen.GetWidth()); + return res; +} + FramebufferLayout CustomFrameLayout(unsigned width, unsigned height) { ASSERT(width > 0); ASSERT(height > 0); @@ -158,4 +192,4 @@ FramebufferLayout CustomFrameLayout(unsigned width, unsigned height) { res.bottom_screen = bot_screen; return res; } -} +} // namespace Layout diff --git a/src/core/frontend/framebuffer_layout.h b/src/core/frontend/framebuffer_layout.h index 9a7738969b..4983cf103d 100644 --- a/src/core/frontend/framebuffer_layout.h +++ b/src/core/frontend/framebuffer_layout.h @@ -53,6 +53,17 @@ FramebufferLayout SingleFrameLayout(unsigned width, unsigned height, bool is_swa */ FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool is_swapped); +/** +* Factory method for constructing a Frame with the Top screen and bottom +* screen side by side +* This is useful for devices with small screens, like the GPDWin +* @param width Window framebuffer width in pixels +* @param height Window framebuffer height in pixels +* @param is_swapped if true, the bottom screen will be the left display +* @return Newly created FramebufferLayout object with default screen regions initialized +*/ +FramebufferLayout SideFrameLayout(unsigned width, unsigned height, bool is_swapped); + /** * Factory method for constructing a custom FramebufferLayout * @param width Window framebuffer width in pixels diff --git a/src/core/settings.cpp b/src/core/settings.cpp index d4f0429d14..efcf1267d0 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -36,4 +36,4 @@ void Apply() { Service::IR::ReloadInputDevices(); } -} // namespace +} // namespace Settings diff --git a/src/core/settings.h b/src/core/settings.h index 7e15b119b7..ca657719aa 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -15,6 +15,7 @@ enum class LayoutOption { Default, SingleScreen, LargeScreen, + SideScreen, }; namespace NativeButton { @@ -70,7 +71,7 @@ enum Values { static const std::array mapping = {{ "circle_pad", "c_stick", }}; -} // namespace NumAnalog +} // namespace NativeAnalog struct Values { // CheckNew3DS @@ -137,4 +138,4 @@ struct Values { static constexpr int REGION_VALUE_AUTO_SELECT = -1; void Apply(); -} +} // namespace Settings From 59ad93302226f3e65aed1a62ea3c7b58315d0eb6 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 8 Aug 2017 20:06:25 -0400 Subject: [PATCH 105/195] citra_qt: Show one-time callout messages to user. --- src/citra_qt/configuration/config.cpp | 2 ++ src/citra_qt/main.cpp | 44 +++++++++++++++++++++++++++ src/citra_qt/main.h | 2 ++ src/citra_qt/ui_settings.h | 2 ++ 4 files changed, 50 insertions(+) diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 6e42db0072..7386814b3c 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -194,6 +194,7 @@ void Config::ReadValues() { UISettings::values.show_status_bar = qt_config->value("showStatusBar", true).toBool(); UISettings::values.confirm_before_closing = qt_config->value("confirmClose", true).toBool(); UISettings::values.first_start = qt_config->value("firstStart", true).toBool(); + UISettings::values.callout_flags = qt_config->value("calloutFlags", 0).toUInt(); qt_config->endGroup(); } @@ -320,6 +321,7 @@ void Config::SaveValues() { qt_config->setValue("showStatusBar", UISettings::values.show_status_bar); qt_config->setValue("confirmClose", UISettings::values.confirm_before_closing); qt_config->setValue("firstStart", UISettings::values.first_start); + qt_config->setValue("calloutFlags", UISettings::values.callout_flags); qt_config->endGroup(); } diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index c1ae0ccc89..a8bf6201aa 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -48,6 +48,47 @@ Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin); #endif +/** + * "Callouts" are one-time instructional messages shown to the user. In the config settings, there + * is a bitfield "callout_flags" options, used to track if a message has already been shown to the + * user. This is 32-bits - if we have more than 32 callouts, we should retire and recyle old ones. + */ +enum class CalloutFlag : uint32_t { + Telemetry = 0x1, +}; + +static void ShowCalloutMessage(const QString& message, CalloutFlag flag) { + if (UISettings::values.callout_flags & static_cast(flag)) { + return; + } + + UISettings::values.callout_flags |= static_cast(flag); + + QMessageBox msg; + msg.setText(message); + msg.setStandardButtons(QMessageBox::Ok); + msg.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + msg.setStyleSheet("QLabel{min-width: 900px;}"); + msg.exec(); +} + +void GMainWindow::ShowCallouts() { + static const QString telemetry_message = + tr("To help improve Citra, the Citra Team collects anonymous usage data. No private or " + "personally identifying information is collected. This data helps us to understand how " + "people use Citra and prioritize our efforts. Furthermore, it helps us to more easily " + "identify emulation bugs and performance issues. This data includes:

    • Information" + " about the version of Citra you are using
    • Performance data about the games you " + "play
    • Your configuration settings
    • Information about your computer " + "hardware
    • Emulation errors and crash information
    By default, this " + "feature is enabled. To disable this feature, click 'Emulation' from the menu and then " + "select 'Configure...'. Then, on the 'Web' tab, uncheck 'Share anonymous usage data with" + " the Citra team'.

    By using this software, you agree to the above terms.
    " + "
    Learn " + "more"); + ShowCalloutMessage(telemetry_message, CalloutFlag::Telemetry); +} + GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) { Pica::g_debug_context = Pica::DebugContext::Construct(); setAcceptDrops(true); @@ -73,6 +114,9 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) { UpdateUITheme(); + // Show one-time "callout" messages to the user + ShowCallouts(); + QStringList args = QApplication::arguments(); if (args.length() >= 2) { BootGame(args[1]); diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h index 360de2ced2..d59a6d67d3 100644 --- a/src/citra_qt/main.h +++ b/src/citra_qt/main.h @@ -80,6 +80,8 @@ private: void BootGame(const QString& filename); void ShutdownGame(); + void ShowCallouts(); + /** * Stores the filename in the recently loaded files list. * The new filename is stored at the beginning of the recently loaded files list. diff --git a/src/citra_qt/ui_settings.h b/src/citra_qt/ui_settings.h index 025c73f84b..d85c92765f 100644 --- a/src/citra_qt/ui_settings.h +++ b/src/citra_qt/ui_settings.h @@ -48,6 +48,8 @@ struct Values { // Shortcut name std::vector shortcuts; + + uint32_t callout_flags; }; extern Values values; From d6a819c7cb1ac00671b7e76b23d7d065d1fd76a3 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 22 Aug 2017 20:58:19 -0400 Subject: [PATCH 106/195] telemetry_session: Log telemetry ID. --- src/core/telemetry_session.cpp | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 94483f3852..61ba78457a 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -3,8 +3,10 @@ // Refer to the license.txt file included. #include +#include #include "common/assert.h" +#include "common/file_util.h" #include "common/scm_rev.h" #include "common/x64/cpu_detect.h" #include "core/core.h" @@ -29,12 +31,46 @@ static const char* CpuVendorToStr(Common::CPUVendor vendor) { UNREACHABLE(); } +static u64 GenerateTelemetryId() { + u64 telemetry_id{}; + CryptoPP::AutoSeededRandomPool rng; + rng.GenerateBlock(reinterpret_cast(&telemetry_id), sizeof(u64)); + return telemetry_id; +} + +static u64 GetTelemetryId() { + u64 telemetry_id{}; + static const std::string& filename{FileUtil::GetUserPath(D_CONFIG_IDX) + "telemetry_id"}; + + if (FileUtil::Exists(filename)) { + FileUtil::IOFile file(filename, "rb"); + if (!file.IsOpen()) { + LOG_ERROR(WebService, "failed to open telemetry_id: %s", filename.c_str()); + return {}; + } + file.ReadBytes(&telemetry_id, sizeof(u64)); + } else { + FileUtil::IOFile file(filename, "wb"); + if (!file.IsOpen()) { + LOG_ERROR(WebService, "failed to open telemetry_id: %s", filename.c_str()); + return {}; + } + telemetry_id = GenerateTelemetryId(); + file.WriteBytes(&telemetry_id, sizeof(u64)); + } + + return telemetry_id; +} + TelemetrySession::TelemetrySession() { #ifdef ENABLE_WEB_SERVICE backend = std::make_unique(); #else backend = std::make_unique(); #endif + // Log one-time top-level information + AddField(Telemetry::FieldType::None, "TelemetryId", GetTelemetryId()); + // Log one-time session start information const s64 init_time{std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()) From c781aea947e275a970a3431a36160b769865993d Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 22 Aug 2017 22:37:03 -0400 Subject: [PATCH 107/195] settings: Add enable_telemetry, citra_username, and citra_token. --- src/citra/config.cpp | 4 ++++ src/citra/default_ini.h | 7 +++++++ src/citra_qt/configuration/config.cpp | 6 ++++++ src/core/settings.h | 3 +++ 4 files changed, 20 insertions(+) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 73846ed915..3869b6b5d5 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -156,8 +156,12 @@ void Config::ReadValues() { static_cast(sdl2_config->GetInteger("Debugging", "gdbstub_port", 24689)); // Web Service + Settings::values.enable_telemetry = + sdl2_config->GetBoolean("WebService", "enable_telemetry", true); Settings::values.telemetry_endpoint_url = sdl2_config->Get( "WebService", "telemetry_endpoint_url", "https://services.citra-emu.org/api/telemetry"); + Settings::values.citra_username = sdl2_config->Get("WebService", "citra_username", ""); + Settings::values.citra_token = sdl2_config->Get("WebService", "citra_token", ""); } void Config::Reload() { diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index 9ea779dd84..666a2ad70e 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -176,7 +176,14 @@ use_gdbstub=false gdbstub_port=24689 [WebService] +# Whether or not to enable telemetry +# 0: No, 1 (default): Yes +enable_telemetry = # Endpoint URL for submitting telemetry data telemetry_endpoint_url = +# Username and token for Citra Web Service +# See https://services.citra-emu.org/ for more info +citra_username = +citra_token = )"; } diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 7386814b3c..e2dceaa4c6 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -139,10 +139,13 @@ void Config::ReadValues() { qt_config->endGroup(); qt_config->beginGroup("WebService"); + Settings::values.enable_telemetry = qt_config->value("enable_telemetry", true).toBool(); Settings::values.telemetry_endpoint_url = qt_config->value("telemetry_endpoint_url", "https://services.citra-emu.org/api/telemetry") .toString() .toStdString(); + Settings::values.citra_username = qt_config->value("citra_username").toString().toStdString(); + Settings::values.citra_token = qt_config->value("citra_token").toString().toStdString(); qt_config->endGroup(); qt_config->beginGroup("UI"); @@ -284,8 +287,11 @@ void Config::SaveValues() { qt_config->endGroup(); qt_config->beginGroup("WebService"); + qt_config->setValue("enable_telemetry", Settings::values.enable_telemetry); qt_config->setValue("telemetry_endpoint_url", QString::fromStdString(Settings::values.telemetry_endpoint_url)); + qt_config->setValue("citra_username", QString::fromStdString(Settings::values.citra_username)); + qt_config->setValue("citra_token", QString::fromStdString(Settings::values.citra_token)); qt_config->endGroup(); qt_config->beginGroup("UI"); diff --git a/src/core/settings.h b/src/core/settings.h index ca657719aa..bf8014c5a7 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -130,7 +130,10 @@ struct Values { u16 gdbstub_port; // WebService + bool enable_telemetry; std::string telemetry_endpoint_url; + std::string citra_username; + std::string citra_token; } extern values; // a special value for Values::region_value indicating that citra will automatically select a region From 40f417125b799fde86f00824633d1ef86be73c6a Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 22 Aug 2017 22:47:56 -0400 Subject: [PATCH 108/195] telemetry: Log frontend type. --- src/citra/citra.cpp | 2 ++ src/citra_qt/main.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/citra/citra.cpp b/src/citra/citra.cpp index 14574e56c1..e524c55356 100644 --- a/src/citra/citra.cpp +++ b/src/citra/citra.cpp @@ -165,6 +165,8 @@ int main(int argc, char** argv) { break; // Expected case } + Core::Telemetry().AddField(Telemetry::FieldType::App, "Frontend", "SDL"); + while (emu_window->IsOpen()) { system.RunLoop(); } diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index a8bf6201aa..8adbcfe865 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -364,6 +364,8 @@ bool GMainWindow::LoadROM(const QString& filename) { const Core::System::ResultStatus result{system.Load(render_window, filename.toStdString())}; + Core::Telemetry().AddField(Telemetry::FieldType::App, "Frontend", "Qt"); + if (result != Core::System::ResultStatus::Success) { switch (result) { case Core::System::ResultStatus::ErrorGetLoader: From 41328afb5852230e1f7c486c4ca20fbc9354a7f8 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 22 Aug 2017 23:06:56 -0400 Subject: [PATCH 109/195] web_backend: User config for username and token, support anonymous post. --- src/web_service/web_backend.cpp | 47 +++++++++++++-------------------- src/web_service/web_backend.h | 12 --------- 2 files changed, 18 insertions(+), 41 deletions(-) diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp index 13e4555acd..96ddf6c3c2 100644 --- a/src/web_service/web_backend.cpp +++ b/src/web_service/web_backend.cpp @@ -5,48 +5,37 @@ #include #include #include "common/logging/log.h" +#include "core/settings.h" #include "web_service/web_backend.h" namespace WebService { static constexpr char API_VERSION[]{"1"}; -static constexpr char ENV_VAR_USERNAME[]{"CITRA_WEB_SERVICES_USERNAME"}; -static constexpr char ENV_VAR_TOKEN[]{"CITRA_WEB_SERVICES_TOKEN"}; - -static std::string GetEnvironmentVariable(const char* name) { - const char* value{getenv(name)}; - if (value) { - return value; - } - return {}; -} - -const std::string& GetUsername() { - static const std::string username{GetEnvironmentVariable(ENV_VAR_USERNAME)}; - return username; -} - -const std::string& GetToken() { - static const std::string token{GetEnvironmentVariable(ENV_VAR_TOKEN)}; - return token; -} void PostJson(const std::string& url, const std::string& data) { + if (!Settings::values.enable_telemetry) { + // Telemetry disabled by user configuration + return; + } + if (url.empty()) { LOG_ERROR(WebService, "URL is invalid"); return; } - if (GetUsername().empty() || GetToken().empty()) { - LOG_ERROR(WebService, "Environment variables %s and %s must be set to POST JSON", - ENV_VAR_USERNAME, ENV_VAR_TOKEN); - return; + if (Settings::values.citra_token.empty() || Settings::values.citra_username.empty()) { + // Anonymous request if citra token or username are empty + cpr::PostAsync( + cpr::Url{url}, cpr::Body{data}, + cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); + } else { + // We have both, do an authenticated request + cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, + cpr::Header{{"Content-Type", "application/json"}, + {"x-username", Settings::values.citra_username}, + {"x-token", Settings::values.citra_token}, + {"api-version", API_VERSION}}); } - - cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, cpr::Header{{"Content-Type", "application/json"}, - {"x-username", GetUsername()}, - {"x-token", GetToken()}, - {"api-version", API_VERSION}}); } } // namespace WebService diff --git a/src/web_service/web_backend.h b/src/web_service/web_backend.h index 2753d3b68e..08e3848693 100644 --- a/src/web_service/web_backend.h +++ b/src/web_service/web_backend.h @@ -9,18 +9,6 @@ namespace WebService { -/** - * Gets the current username for accessing services.citra-emu.org. - * @returns Username as a string, empty if not set. - */ -const std::string& GetUsername(); - -/** - * Gets the current token for accessing services.citra-emu.org. - * @returns Token as a string, empty if not set. - */ -const std::string& GetToken(); - /** * Posts JSON to services.citra-emu.org. * @param url URL of the services.citra-emu.org endpoint to post data to. From fb17e866aa58db05d4d16ba861b1150e6187592e Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 22 Aug 2017 23:36:57 -0400 Subject: [PATCH 110/195] qt: Add web configuration tab. --- src/citra_qt/CMakeLists.txt | 3 + src/citra_qt/configuration/configure.ui | 15 ++- .../configuration/configure_dialog.cpp | 1 + src/citra_qt/configuration/configure_web.cpp | 44 ++++++ src/citra_qt/configuration/configure_web.h | 30 +++++ src/citra_qt/configuration/configure_web.ui | 126 ++++++++++++++++++ 6 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 src/citra_qt/configuration/configure_web.cpp create mode 100644 src/citra_qt/configuration/configure_web.h create mode 100644 src/citra_qt/configuration/configure_web.ui diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt index f364b22843..e0a19fd9e7 100644 --- a/src/citra_qt/CMakeLists.txt +++ b/src/citra_qt/CMakeLists.txt @@ -12,6 +12,7 @@ set(SRCS configuration/configure_graphics.cpp configuration/configure_input.cpp configuration/configure_system.cpp + configuration/configure_web.cpp debugger/graphics/graphics.cpp debugger/graphics/graphics_breakpoint_observer.cpp debugger/graphics/graphics_breakpoints.cpp @@ -42,6 +43,7 @@ set(HEADERS configuration/configure_graphics.h configuration/configure_input.h configuration/configure_system.h + configuration/configure_web.h debugger/graphics/graphics.h debugger/graphics/graphics_breakpoint_observer.h debugger/graphics/graphics_breakpoints.h @@ -71,6 +73,7 @@ set(UIS configuration/configure_graphics.ui configuration/configure_input.ui configuration/configure_system.ui + configuration/configure_web.ui debugger/registers.ui hotkeys.ui main.ui diff --git a/src/citra_qt/configuration/configure.ui b/src/citra_qt/configuration/configure.ui index 85e206e427..6abd1917ea 100644 --- a/src/citra_qt/configuration/configure.ui +++ b/src/citra_qt/configuration/configure.ui @@ -6,8 +6,8 @@ 0 0 - 441 - 501 + 740 + 500 @@ -49,6 +49,11 @@ Debug + + + Web + + @@ -97,6 +102,12 @@
    configuration/configure_graphics.h
    1 + + ConfigureWeb + QWidget +
    configuration/configure_web.h
    + 1 +
    diff --git a/src/citra_qt/configuration/configure_dialog.cpp b/src/citra_qt/configuration/configure_dialog.cpp index dfc8c03a7a..b87dc0e6c0 100644 --- a/src/citra_qt/configuration/configure_dialog.cpp +++ b/src/citra_qt/configuration/configure_dialog.cpp @@ -23,5 +23,6 @@ void ConfigureDialog::applyConfiguration() { ui->graphicsTab->applyConfiguration(); ui->audioTab->applyConfiguration(); ui->debugTab->applyConfiguration(); + ui->webTab->applyConfiguration(); Settings::Apply(); } diff --git a/src/citra_qt/configuration/configure_web.cpp b/src/citra_qt/configuration/configure_web.cpp new file mode 100644 index 0000000000..fff466aaac --- /dev/null +++ b/src/citra_qt/configuration/configure_web.cpp @@ -0,0 +1,44 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "citra_qt/configuration/configure_web.h" +#include "core/settings.h" +#include "ui_configure_web.h" + +ConfigureWeb::ConfigureWeb(QWidget* parent) + : QWidget(parent), ui(std::make_unique()) { + ui->setupUi(this); + this->setConfiguration(); +} + +ConfigureWeb::~ConfigureWeb() {} + +void ConfigureWeb::setConfiguration() { + ui->web_credentials_disclaimer->setWordWrap(true); + ui->telemetry_learn_more->setOpenExternalLinks(true); + ui->telemetry_learn_more->setText("Learn more"); + + ui->web_signup_link->setOpenExternalLinks(true); + ui->web_signup_link->setText("Sign up"); + ui->web_token_info_link->setOpenExternalLinks(true); + ui->web_token_info_link->setText( + "What is my token?"); + + ui->toggle_telemetry->setChecked(Settings::values.enable_telemetry); + ui->edit_username->setText(QString::fromStdString(Settings::values.citra_username)); + ui->edit_token->setText(QString::fromStdString(Settings::values.citra_token)); + + updateWeb(); +} + +void ConfigureWeb::applyConfiguration() { + Settings::values.enable_telemetry = ui->toggle_telemetry->isChecked(); + Settings::values.citra_username = ui->edit_username->text().toStdString(); + Settings::values.citra_token = ui->edit_token->text().toStdString(); + Settings::Apply(); +} + +void ConfigureWeb::updateWeb() {} diff --git a/src/citra_qt/configuration/configure_web.h b/src/citra_qt/configuration/configure_web.h new file mode 100644 index 0000000000..2c37b8f90c --- /dev/null +++ b/src/citra_qt/configuration/configure_web.h @@ -0,0 +1,30 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include + +namespace Ui { +class ConfigureWeb; +} + +class ConfigureWeb : public QWidget { + Q_OBJECT + +public: + explicit ConfigureWeb(QWidget* parent = nullptr); + ~ConfigureWeb(); + + void applyConfiguration(); + +public slots: + void updateWeb(); + +private: + void setConfiguration(); + + std::unique_ptr ui; +}; diff --git a/src/citra_qt/configuration/configure_web.ui b/src/citra_qt/configuration/configure_web.ui new file mode 100644 index 0000000000..3bb8276fa2 --- /dev/null +++ b/src/citra_qt/configuration/configure_web.ui @@ -0,0 +1,126 @@ + + + ConfigureWeb + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + + + Citra Web Service + + + + + + By providing your username and token, you agree to allow Citra to collect additional usage data, which may include user identifying information. + + + + + + + + + Username: + + + + + + + 36 + + + + + + + Token: + + + + + + + 36 + + + QLineEdit::Password + + + + + + + Sign up + + + + + + + What is my token? + + + + + + + + + + + + Telemetry + + + + + + Share anonymous usage data with the Citra team + + + + + + + Learn more + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + From 2e37201c63d5efb8eb39f993b77c11e73bd6a8e7 Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 24 Aug 2017 19:31:17 -0400 Subject: [PATCH 111/195] # This is a combination of 2 commits. # This is the 1st commit message: qt: Add web configuration tab. # The commit message #2 will be skipped: # fixup! qt: Add web configuration tab. --- src/citra_qt/configuration/configure_web.ui | 33 +++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/citra_qt/configuration/configure_web.ui b/src/citra_qt/configuration/configure_web.ui index 3bb8276fa2..d8d283fad4 100644 --- a/src/citra_qt/configuration/configure_web.ui +++ b/src/citra_qt/configuration/configure_web.ui @@ -17,11 +17,11 @@ - + Citra Web Service - + @@ -30,7 +30,7 @@ - + @@ -101,6 +101,33 @@ + + + + + + Telemetry ID: + + + + + + + + 0 + 0 + + + + Qt::RightToLeft + + + Regenerate + + + + + From 5d7b364a21f9e7c0bed095f83fed397b6e5d0e8d Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 22 Aug 2017 23:42:30 -0400 Subject: [PATCH 112/195] default_ini: Use correct telemetry endpoint URL. --- src/citra/default_ini.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index 666a2ad70e..ea02a788d7 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -180,7 +180,7 @@ gdbstub_port=24689 # 0: No, 1 (default): Yes enable_telemetry = # Endpoint URL for submitting telemetry data -telemetry_endpoint_url = +telemetry_endpoint_url = https://services.citra-emu.org/api/telemetry # Username and token for Citra Web Service # See https://services.citra-emu.org/ for more info citra_username = From 9f0da33c3349df47580d93fcd25346be4d2b94a7 Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 23 Aug 2017 00:08:07 -0400 Subject: [PATCH 113/195] qt: Add an option to view/regenerate telemetry ID. --- src/citra_qt/configuration/configure_web.cpp | 14 +++++++++++--- src/citra_qt/configuration/configure_web.h | 2 +- src/core/telemetry_session.cpp | 19 ++++++++++++++++--- src/core/telemetry_session.h | 12 ++++++++++++ 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src/citra_qt/configuration/configure_web.cpp b/src/citra_qt/configuration/configure_web.cpp index fff466aaac..8715fb0181 100644 --- a/src/citra_qt/configuration/configure_web.cpp +++ b/src/citra_qt/configuration/configure_web.cpp @@ -4,11 +4,15 @@ #include "citra_qt/configuration/configure_web.h" #include "core/settings.h" +#include "core/telemetry_session.h" #include "ui_configure_web.h" ConfigureWeb::ConfigureWeb(QWidget* parent) : QWidget(parent), ui(std::make_unique()) { ui->setupUi(this); + connect(ui->button_regenerate_telemetry_id, &QPushButton::clicked, this, + &ConfigureWeb::refreshTelemetryID); + this->setConfiguration(); } @@ -30,8 +34,8 @@ void ConfigureWeb::setConfiguration() { ui->toggle_telemetry->setChecked(Settings::values.enable_telemetry); ui->edit_username->setText(QString::fromStdString(Settings::values.citra_username)); ui->edit_token->setText(QString::fromStdString(Settings::values.citra_token)); - - updateWeb(); + ui->label_telemetry_id->setText("Telemetry ID: 0x" + + QString::number(Core::GetTelemetryId(), 16).toUpper()); } void ConfigureWeb::applyConfiguration() { @@ -41,4 +45,8 @@ void ConfigureWeb::applyConfiguration() { Settings::Apply(); } -void ConfigureWeb::updateWeb() {} +void ConfigureWeb::refreshTelemetryID() { + const u64 new_telemetry_id{Core::RegenerateTelemetryId()}; + ui->label_telemetry_id->setText("Telemetry ID: 0x" + + QString::number(new_telemetry_id, 16).toUpper()); +} diff --git a/src/citra_qt/configuration/configure_web.h b/src/citra_qt/configuration/configure_web.h index 2c37b8f90c..20bc254b90 100644 --- a/src/citra_qt/configuration/configure_web.h +++ b/src/citra_qt/configuration/configure_web.h @@ -21,7 +21,7 @@ public: void applyConfiguration(); public slots: - void updateWeb(); + void refreshTelemetryID(); private: void setConfiguration(); diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 61ba78457a..d0f257f587 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -38,21 +38,21 @@ static u64 GenerateTelemetryId() { return telemetry_id; } -static u64 GetTelemetryId() { +u64 GetTelemetryId() { u64 telemetry_id{}; static const std::string& filename{FileUtil::GetUserPath(D_CONFIG_IDX) + "telemetry_id"}; if (FileUtil::Exists(filename)) { FileUtil::IOFile file(filename, "rb"); if (!file.IsOpen()) { - LOG_ERROR(WebService, "failed to open telemetry_id: %s", filename.c_str()); + LOG_ERROR(Core, "failed to open telemetry_id: %s", filename.c_str()); return {}; } file.ReadBytes(&telemetry_id, sizeof(u64)); } else { FileUtil::IOFile file(filename, "wb"); if (!file.IsOpen()) { - LOG_ERROR(WebService, "failed to open telemetry_id: %s", filename.c_str()); + LOG_ERROR(Core, "failed to open telemetry_id: %s", filename.c_str()); return {}; } telemetry_id = GenerateTelemetryId(); @@ -62,6 +62,19 @@ static u64 GetTelemetryId() { return telemetry_id; } +u64 RegenerateTelemetryId() { + const u64 new_telemetry_id{GenerateTelemetryId()}; + static const std::string& filename{FileUtil::GetUserPath(D_CONFIG_IDX) + "telemetry_id"}; + + FileUtil::IOFile file(filename, "wb"); + if (!file.IsOpen()) { + LOG_ERROR(Core, "failed to open telemetry_id: %s", filename.c_str()); + return {}; + } + file.WriteBytes(&new_telemetry_id, sizeof(u64)); + return new_telemetry_id; +} + TelemetrySession::TelemetrySession() { #ifdef ENABLE_WEB_SERVICE backend = std::make_unique(); diff --git a/src/core/telemetry_session.h b/src/core/telemetry_session.h index cf53835c3e..65613daae4 100644 --- a/src/core/telemetry_session.h +++ b/src/core/telemetry_session.h @@ -35,4 +35,16 @@ private: std::unique_ptr backend; ///< Backend interface that logs fields }; +/** + * Gets TelemetryId, a unique identifier used for the user's telemetry sessions. + * @returns The current TelemetryId for the session. + */ +u64 GetTelemetryId(); + +/** + * Regenerates TelemetryId, a unique identifier used for the user's telemetry sessions. + * @returns The new TelemetryId that was generated. + */ +u64 RegenerateTelemetryId(); + } // namespace Core From 04bd0c957e583a518121626deb029f214cc98cf6 Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 23 Aug 2017 21:09:34 -0400 Subject: [PATCH 114/195] web_services: Refactor to remove dependency on Core. --- src/core/telemetry_session.cpp | 8 +++++++- src/web_service/telemetry_json.cpp | 3 +-- src/web_service/telemetry_json.h | 7 ++++++- src/web_service/web_backend.cpp | 33 +++++++++++++++--------------- src/web_service/web_backend.h | 6 +++++- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index d0f257f587..104a16cc9e 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -77,7 +77,13 @@ u64 RegenerateTelemetryId() { TelemetrySession::TelemetrySession() { #ifdef ENABLE_WEB_SERVICE - backend = std::make_unique(); + if (Settings::values.enable_telemetry) { + backend = std::make_unique( + Settings::values.telemetry_endpoint_url, Settings::values.citra_username, + Settings::values.citra_token); + } else { + backend = std::make_unique(); + } #else backend = std::make_unique(); #endif diff --git a/src/web_service/telemetry_json.cpp b/src/web_service/telemetry_json.cpp index a2d007e779..6ad2ffcd4a 100644 --- a/src/web_service/telemetry_json.cpp +++ b/src/web_service/telemetry_json.cpp @@ -3,7 +3,6 @@ // Refer to the license.txt file included. #include "common/assert.h" -#include "core/settings.h" #include "web_service/telemetry_json.h" #include "web_service/web_backend.h" @@ -81,7 +80,7 @@ void TelemetryJson::Complete() { SerializeSection(Telemetry::FieldType::UserFeedback, "UserFeedback"); SerializeSection(Telemetry::FieldType::UserConfig, "UserConfig"); SerializeSection(Telemetry::FieldType::UserSystem, "UserSystem"); - PostJson(Settings::values.telemetry_endpoint_url, TopSection().dump()); + PostJson(endpoint_url, TopSection().dump(), true, username, token); } } // namespace WebService diff --git a/src/web_service/telemetry_json.h b/src/web_service/telemetry_json.h index 39038b4f9c..9e78c6803b 100644 --- a/src/web_service/telemetry_json.h +++ b/src/web_service/telemetry_json.h @@ -17,7 +17,9 @@ namespace WebService { */ class TelemetryJson : public Telemetry::VisitorInterface { public: - TelemetryJson() = default; + TelemetryJson(const std::string& endpoint_url, const std::string& username, + const std::string& token) + : endpoint_url(endpoint_url), username(username), token(token) {} ~TelemetryJson() = default; void Visit(const Telemetry::Field& field) override; @@ -49,6 +51,9 @@ private: nlohmann::json output; std::array sections; + std::string endpoint_url; + std::string username; + std::string token; }; } // namespace WebService diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp index 96ddf6c3c2..e50c3a301b 100644 --- a/src/web_service/web_backend.cpp +++ b/src/web_service/web_backend.cpp @@ -5,36 +5,37 @@ #include #include #include "common/logging/log.h" -#include "core/settings.h" #include "web_service/web_backend.h" namespace WebService { static constexpr char API_VERSION[]{"1"}; -void PostJson(const std::string& url, const std::string& data) { - if (!Settings::values.enable_telemetry) { - // Telemetry disabled by user configuration - return; - } - +void PostJson(const std::string& url, const std::string& data, bool allow_anonymous, + const std::string& username, const std::string& token) { if (url.empty()) { LOG_ERROR(WebService, "URL is invalid"); return; } - if (Settings::values.citra_token.empty() || Settings::values.citra_username.empty()) { - // Anonymous request if citra token or username are empty + const bool are_credentials_provided{!token.empty() && !username.empty()}; + if (!allow_anonymous && !are_credentials_provided) { + LOG_ERROR(WebService, "Credentials must be provided for authenticated requests"); + return; + } + + if (are_credentials_provided) { + // Authenticated request if credentials are provided + cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, + cpr::Header{{"Content-Type", "application/json"}, + {"x-username", username}, + {"x-token", token}, + {"api-version", API_VERSION}}); + } else { + // Otherwise, anonymous request cpr::PostAsync( cpr::Url{url}, cpr::Body{data}, cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); - } else { - // We have both, do an authenticated request - cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, - cpr::Header{{"Content-Type", "application/json"}, - {"x-username", Settings::values.citra_username}, - {"x-token", Settings::values.citra_token}, - {"api-version", API_VERSION}}); } } diff --git a/src/web_service/web_backend.h b/src/web_service/web_backend.h index 08e3848693..d171003986 100644 --- a/src/web_service/web_backend.h +++ b/src/web_service/web_backend.h @@ -13,7 +13,11 @@ namespace WebService { * Posts JSON to services.citra-emu.org. * @param url URL of the services.citra-emu.org endpoint to post data to. * @param data String of JSON data to use for the body of the POST request. + * @param allow_anonymous If true, allow anonymous unauthenticated requests. + * @param username Citra username to use for authentication. + * @param token Citra token to use for authentication. */ -void PostJson(const std::string& url, const std::string& data); +void PostJson(const std::string& url, const std::string& data, bool allow_anonymous, + const std::string& username = {}, const std::string& token = {}); } // namespace WebService From c8562b21d91625333218d69cddff104057273e43 Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 24 Aug 2017 19:27:13 -0400 Subject: [PATCH 115/195] web_backend: Fix asynchronous JSON post by spawning new thread. --- src/web_service/web_backend.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp index e50c3a301b..a6070fc0f8 100644 --- a/src/web_service/web_backend.cpp +++ b/src/web_service/web_backend.cpp @@ -2,8 +2,9 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include +#include #include -#include #include "common/logging/log.h" #include "web_service/web_backend.h" @@ -11,6 +12,19 @@ namespace WebService { static constexpr char API_VERSION[]{"1"}; +static void PostJsonAuthenticated(const std::string& url, const std::string& data, + const std::string& username, const std::string& token) { + cpr::Post(cpr::Url{url}, cpr::Body{data}, cpr::Header{{"Content-Type", "application/json"}, + {"x-username", username}, + {"x-token", token}, + {"api-version", API_VERSION}}); +} + +static void PostJsonAnonymous(const std::string& url, const std::string& data) { + cpr::Post(cpr::Url{url}, cpr::Body{data}, + cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); +} + void PostJson(const std::string& url, const std::string& data, bool allow_anonymous, const std::string& username, const std::string& token) { if (url.empty()) { @@ -24,18 +38,13 @@ void PostJson(const std::string& url, const std::string& data, bool allow_anonym return; } + // Post JSON asynchronously by spawning a new thread if (are_credentials_provided) { // Authenticated request if credentials are provided - cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, - cpr::Header{{"Content-Type", "application/json"}, - {"x-username", username}, - {"x-token", token}, - {"api-version", API_VERSION}}); + std::thread{PostJsonAuthenticated, url, data, username, token}.detach(); } else { // Otherwise, anonymous request - cpr::PostAsync( - cpr::Url{url}, cpr::Body{data}, - cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); + std::thread{PostJsonAnonymous, url, data}.detach(); } } From 076b39510451b1a0601e8a4db0d690615c81200f Mon Sep 17 00:00:00 2001 From: stone3311 Date: Sat, 26 Aug 2017 18:35:45 +0200 Subject: [PATCH 116/195] Fix info about TODO list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e766918f70..31f5afe27c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ For development discussion, please join us @ #citra on freenode. Most of the development happens on GitHub. It's also where [our central repository](https://github.com/citra-emu/citra) is hosted. -If you want to contribute please take a look at the [Contributor's Guide](CONTRIBUTING.md), [TODO list](https://docs.google.com/document/d/1SWIop0uBI9IW8VGg97TAtoT_CHNoP42FzYmvG1F4QDA) and [Developer Information](https://github.com/citra-emu/citra/wiki/Developer-Information). You should as well contact any of the developers in the forum in order to know about the current state of the emulator. +If you want to contribute please take a look at the [Contributor's Guide](CONTRIBUTING.md) and [Developer Information](https://github.com/citra-emu/citra/wiki/Developer-Information). You should as well contact any of the developers in the forum in order to know about the current state of the emulator because the [TODO list](https://docs.google.com/document/d/1SWIop0uBI9IW8VGg97TAtoT_CHNoP42FzYmvG1F4QDA) isn't maintained anymore. ### Building From da88f3b8f0f9f1162b7ad41f70e2126195eee999 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 21 Aug 2017 12:18:52 -0500 Subject: [PATCH 117/195] Warnings: Fixed a few missing-return warnings in video_core. --- src/video_core/regs_framebuffer.h | 10 ++++------ src/video_core/swrasterizer/framebuffer.cpp | 2 ++ src/video_core/swrasterizer/texturing.cpp | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/video_core/regs_framebuffer.h b/src/video_core/regs_framebuffer.h index a50bd4111b..7b565f9111 100644 --- a/src/video_core/regs_framebuffer.h +++ b/src/video_core/regs_framebuffer.h @@ -256,10 +256,9 @@ struct FramebufferRegs { return 3; case DepthFormat::D24S8: return 4; - default: - LOG_CRITICAL(HW_GPU, "Unknown depth format %u", format); - UNIMPLEMENTED(); } + + ASSERT_MSG(false, "Unknown depth format %u", format); } // Returns the number of bits per depth component of the specified depth format @@ -270,10 +269,9 @@ struct FramebufferRegs { case DepthFormat::D24: case DepthFormat::D24S8: return 24; - default: - LOG_CRITICAL(HW_GPU, "Unknown depth format %u", format); - UNIMPLEMENTED(); } + + ASSERT_MSG(false, "Unknown depth format %u", format); } INSERT_PADDING_WORDS(0x20); diff --git a/src/video_core/swrasterizer/framebuffer.cpp b/src/video_core/swrasterizer/framebuffer.cpp index 7de3aac751..f34eab6cf9 100644 --- a/src/video_core/swrasterizer/framebuffer.cpp +++ b/src/video_core/swrasterizer/framebuffer.cpp @@ -352,6 +352,8 @@ u8 LogicOp(u8 src, u8 dest, FramebufferRegs::LogicOp op) { case FramebufferRegs::LogicOp::OrInverted: return ~src | dest; } + + UNREACHABLE(); }; } // namespace Rasterizer diff --git a/src/video_core/swrasterizer/texturing.cpp b/src/video_core/swrasterizer/texturing.cpp index 4f02b93f23..79b1ce8412 100644 --- a/src/video_core/swrasterizer/texturing.cpp +++ b/src/video_core/swrasterizer/texturing.cpp @@ -89,6 +89,8 @@ Math::Vec3 GetColorModifier(TevStageConfig::ColorModifier factor, case ColorModifier::OneMinusSourceBlue: return (Math::Vec3(255, 255, 255) - values.bbb()).Cast(); } + + UNREACHABLE(); }; u8 GetAlphaModifier(TevStageConfig::AlphaModifier factor, const Math::Vec4& values) { @@ -119,6 +121,8 @@ u8 GetAlphaModifier(TevStageConfig::AlphaModifier factor, const Math::Vec4& case AlphaModifier::OneMinusSourceBlue: return 255 - values.b(); } + + UNREACHABLE(); }; Math::Vec3 ColorCombine(TevStageConfig::Operation op, const Math::Vec3 input[3]) { From 7698567fc9b9d0b009264d5d8ab5babc3ea197d8 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 26 Aug 2017 19:02:03 -0400 Subject: [PATCH 118/195] web_backend: Fix CPR bug where Winsock is not properly initializing. --- src/web_service/web_backend.cpp | 42 +++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp index a6070fc0f8..d28a3f757f 100644 --- a/src/web_service/web_backend.cpp +++ b/src/web_service/web_backend.cpp @@ -2,6 +2,10 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#ifdef _WIN32 +#include +#endif + #include #include #include @@ -12,18 +16,7 @@ namespace WebService { static constexpr char API_VERSION[]{"1"}; -static void PostJsonAuthenticated(const std::string& url, const std::string& data, - const std::string& username, const std::string& token) { - cpr::Post(cpr::Url{url}, cpr::Body{data}, cpr::Header{{"Content-Type", "application/json"}, - {"x-username", username}, - {"x-token", token}, - {"api-version", API_VERSION}}); -} - -static void PostJsonAnonymous(const std::string& url, const std::string& data) { - cpr::Post(cpr::Url{url}, cpr::Body{data}, - cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); -} +static std::unique_ptr g_session; void PostJson(const std::string& url, const std::string& data, bool allow_anonymous, const std::string& username, const std::string& token) { @@ -38,14 +31,33 @@ void PostJson(const std::string& url, const std::string& data, bool allow_anonym return; } - // Post JSON asynchronously by spawning a new thread +#ifdef _WIN32 + // On Windows, CPR/libcurl does not properly initialize Winsock. The below code is used to + // initialize Winsock globally, which fixes this problem. Without this, only the first CPR + // session will properly be created, and subsequent ones will fail. + WSADATA wsa_data; + const int wsa_result{WSAStartup(MAKEWORD(2, 2), &wsa_data)}; + if (wsa_result) { + LOG_CRITICAL(WebService, "WSAStartup failed: %d", wsa_result); + } +#endif + + // Built request header + cpr::Header header; if (are_credentials_provided) { // Authenticated request if credentials are provided - std::thread{PostJsonAuthenticated, url, data, username, token}.detach(); + header = {{"Content-Type", "application/json"}, + {"x-username", username.c_str()}, + {"x-token", token.c_str()}, + {"api-version", API_VERSION}}; } else { // Otherwise, anonymous request - std::thread{PostJsonAnonymous, url, data}.detach(); + header = cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}; } + + // Post JSON asynchronously + static cpr::AsyncResponse future; + future = cpr::PostAsync(cpr::Url{url.c_str()}, cpr::Body{data.c_str()}, header); } } // namespace WebService From 54411bef4eb16af0822820205a923690ea7e822a Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 17 Jul 2017 09:25:58 -0500 Subject: [PATCH 119/195] Services/UDS: Add functions to generate 802.11 auth and assoc response frames. --- src/core/CMakeLists.txt | 2 + src/core/hle/service/nwm/nwm_uds.h | 12 ++++ src/core/hle/service/nwm/uds_beacon.h | 11 --- src/core/hle/service/nwm/uds_connection.cpp | 79 +++++++++++++++++++++ src/core/hle/service/nwm/uds_connection.h | 51 +++++++++++++ 5 files changed, 144 insertions(+), 11 deletions(-) create mode 100644 src/core/hle/service/nwm/uds_connection.cpp create mode 100644 src/core/hle/service/nwm/uds_connection.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index ea09819e5e..0719138afe 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -144,6 +144,7 @@ set(SRCS hle/service/nwm/nwm_tst.cpp hle/service/nwm/nwm_uds.cpp hle/service/nwm/uds_beacon.cpp + hle/service/nwm/uds_connection.cpp hle/service/nwm/uds_data.cpp hle/service/pm_app.cpp hle/service/ptm/ptm.cpp @@ -342,6 +343,7 @@ set(HEADERS hle/service/nwm/nwm_tst.h hle/service/nwm/nwm_uds.h hle/service/nwm/uds_beacon.h + hle/service/nwm/uds_connection.h hle/service/nwm/uds_data.h hle/service/pm_app.h hle/service/ptm/ptm.h diff --git a/src/core/hle/service/nwm/nwm_uds.h b/src/core/hle/service/nwm/nwm_uds.h index 141f49f9c0..f1caaf9746 100644 --- a/src/core/hle/service/nwm/nwm_uds.h +++ b/src/core/hle/service/nwm/nwm_uds.h @@ -42,6 +42,7 @@ using NodeList = std::vector; enum class NetworkStatus { NotConnected = 3, ConnectedAsHost = 6, + Connecting = 7, ConnectedAsClient = 9, ConnectedAsSpectator = 10, }; @@ -85,6 +86,17 @@ static_assert(offsetof(NetworkInfo, oui_value) == 0xC, "oui_value is at the wron static_assert(offsetof(NetworkInfo, wlan_comm_id) == 0x10, "wlancommid is at the wrong offset."); static_assert(sizeof(NetworkInfo) == 0x108, "NetworkInfo has incorrect size."); +/// Additional block tag ids in the Beacon and Association Response frames +enum class TagId : u8 { + SSID = 0, + SupportedRates = 1, + DSParameterSet = 2, + TrafficIndicationMap = 5, + CountryInformation = 7, + ERPInformation = 42, + VendorSpecific = 221 +}; + class NWM_UDS final : public Interface { public: NWM_UDS(); diff --git a/src/core/hle/service/nwm/uds_beacon.h b/src/core/hle/service/nwm/uds_beacon.h index caacf4c6fa..c726b04d96 100644 --- a/src/core/hle/service/nwm/uds_beacon.h +++ b/src/core/hle/service/nwm/uds_beacon.h @@ -17,17 +17,6 @@ namespace NWM { using MacAddress = std::array; constexpr std::array NintendoOUI = {0x00, 0x1F, 0x32}; -/// Additional block tag ids in the Beacon frames -enum class TagId : u8 { - SSID = 0, - SupportedRates = 1, - DSParameterSet = 2, - TrafficIndicationMap = 5, - CountryInformation = 7, - ERPInformation = 42, - VendorSpecific = 221 -}; - /** * Internal vendor-specific tag ids as stored inside * VendorSpecific blocks in the Beacon frames. diff --git a/src/core/hle/service/nwm/uds_connection.cpp b/src/core/hle/service/nwm/uds_connection.cpp new file mode 100644 index 0000000000..c8a76ec2aa --- /dev/null +++ b/src/core/hle/service/nwm/uds_connection.cpp @@ -0,0 +1,79 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/service/nwm/nwm_uds.h" +#include "core/hle/service/nwm/uds_connection.h" +#include "fmt/format.h" + +namespace Service { +namespace NWM { + +// Note: These values were taken from a packet capture of an o3DS XL +// broadcasting a Super Smash Bros. 4 lobby. +constexpr u16 DefaultExtraCapabilities = 0x0431; + +std::vector GenerateAuthenticationFrame(AuthenticationSeq seq) { + AuthenticationFrame frame{}; + frame.auth_seq = static_cast(seq); + + std::vector data(sizeof(frame)); + std::memcpy(data.data(), &frame, sizeof(frame)); + + return data; +} + +AuthenticationSeq GetAuthenticationSeqNumber(const std::vector& body) { + AuthenticationFrame frame; + std::memcpy(&frame, body.data(), sizeof(frame)); + + return static_cast(frame.auth_seq); +} + +/** + * Generates an SSID tag of an 802.11 Beacon frame with an 8-byte character representation of the + * specified network id as the SSID value. + * @param network_id The network id to use. + * @returns A buffer with the SSID tag. + */ +static std::vector GenerateSSIDTag(u32 network_id) { + constexpr u8 SSIDSize = 8; + + struct { + u8 id = static_cast(TagId::SSID); + u8 size = SSIDSize; + } tag_header; + + std::vector buffer(sizeof(tag_header) + SSIDSize); + + std::memcpy(buffer.data(), &tag_header, sizeof(tag_header)); + + std::string network_name = fmt::format("{0:08X}", network_id); + + std::memcpy(buffer.data() + sizeof(tag_header), network_name.c_str(), SSIDSize); + + return buffer; +} + +std::vector GenerateAssocResponseFrame(AssocStatus status, u16 association_id, u32 network_id) { + AssociationResponseFrame frame{}; + frame.capabilities = DefaultExtraCapabilities; + frame.status_code = static_cast(status); + // The association id is ORed with this magic value (0xC000) + constexpr u16 AssociationIdMagic = 0xC000; + frame.assoc_id = association_id | AssociationIdMagic; + + std::vector data(sizeof(frame)); + std::memcpy(data.data(), &frame, sizeof(frame)); + + auto ssid_tag = GenerateSSIDTag(network_id); + data.insert(data.end(), ssid_tag.begin(), ssid_tag.end()); + + // TODO(Subv): Add the SupportedRates tag. + // TODO(Subv): Add the DSParameterSet tag. + // TODO(Subv): Add the ERPInformation tag. + return data; +} + +} // namespace NWM +} // namespace Service diff --git a/src/core/hle/service/nwm/uds_connection.h b/src/core/hle/service/nwm/uds_connection.h new file mode 100644 index 0000000000..73f55a4fd9 --- /dev/null +++ b/src/core/hle/service/nwm/uds_connection.h @@ -0,0 +1,51 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include "common/common_types.h" +#include "common/swap.h" +#include "core/hle/service/service.h" + +namespace Service { +namespace NWM { + +/// Sequence number of the 802.11 authentication frames. +enum class AuthenticationSeq : u16 { SEQ1 = 1, SEQ2 = 2 }; + +enum class AuthAlgorithm : u16 { OpenSystem = 0 }; + +enum class AuthStatus : u16 { Successful = 0 }; + +enum class AssocStatus : u16 { Successful = 0 }; + +struct AuthenticationFrame { + u16_le auth_algorithm = static_cast(AuthAlgorithm::OpenSystem); + u16_le auth_seq; + u16_le status_code = static_cast(AuthStatus::Successful); +}; + +static_assert(sizeof(AuthenticationFrame) == 6, "AuthenticationFrame has wrong size"); + +struct AssociationResponseFrame { + u16_le capabilities; + u16_le status_code; + u16_le assoc_id; +}; + +static_assert(sizeof(AssociationResponseFrame) == 6, "AssociationResponseFrame has wrong size"); + +/// Generates an 802.11 authentication frame, starting at the frame body. +std::vector GenerateAuthenticationFrame(AuthenticationSeq seq); + +/// Returns the sequence number from the body of an Authentication frame. +AuthenticationSeq GetAuthenticationSeqNumber(const std::vector& body); + +/// Generates an 802.11 association response frame with the specified status, association id and +/// network id, starting at the frame body. +std::vector GenerateAssocResponseFrame(AssocStatus status, u16 association_id, u32 network_id); + +} // namespace NWM +} // namespace Service From 2e9f544ecc9a01ff59859b43d65c61a2838e7c34 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 17 Jul 2017 09:39:12 -0500 Subject: [PATCH 120/195] Services/UDS: Store the received beacon frames until RecvBeaconBroadcastData is called, up to 15 beacons at the same time, removing any older beacon frames when the limit is exceeded. --- src/core/hle/service/nwm/nwm_uds.cpp | 65 ++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp index 6dbdff0446..8fdf160ff6 100644 --- a/src/core/hle/service/nwm/nwm_uds.cpp +++ b/src/core/hle/service/nwm/nwm_uds.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include "common/common_types.h" @@ -15,8 +16,10 @@ #include "core/hle/result.h" #include "core/hle/service/nwm/nwm_uds.h" #include "core/hle/service/nwm/uds_beacon.h" +#include "core/hle/service/nwm/uds_connection.h" #include "core/hle/service/nwm/uds_data.h" #include "core/memory.h" +#include "network/network.h" namespace Service { namespace NWM { @@ -51,6 +54,52 @@ static NetworkInfo network_info; // Event that will generate and send the 802.11 beacon frames. static int beacon_broadcast_event; +// Mutex to synchronize access to the list of received beacons between the emulation thread and the +// network thread. +static std::mutex beacon_mutex; + +// Number of beacons to store before we start dropping the old ones. +// TODO(Subv): Find a more accurate value for this limit. +constexpr size_t MaxBeaconFrames = 15; + +// List of the last beacons received from the network. +static std::deque received_beacons; + +/** + * Returns a list of received 802.11 beacon frames from the specified sender since the last call. + */ +std::deque GetReceivedBeacons(const MacAddress& sender) { + std::lock_guard lock(beacon_mutex); + // TODO(Subv): Filter by sender. + return std::move(received_beacons); +} + +/// Sends a WifiPacket to the room we're currently connected to. +void SendPacket(Network::WifiPacket& packet) { + // TODO(Subv): Implement. +} + +// Inserts the received beacon frame in the beacon queue and removes any older beacons if the size +// limit is exceeded. +void HandleBeaconFrame(const Network::WifiPacket& packet) { + std::lock_guard lock(beacon_mutex); + + received_beacons.emplace_back(packet); + + // Discard old beacons if the buffer is full. + if (received_beacons.size() > MaxBeaconFrames) + received_beacons.pop_front(); +} + +/// Callback to parse and handle a received wifi packet. +void OnWifiPacketReceived(const Network::WifiPacket& packet) { + switch (packet.type) { + case Network::WifiPacket::PacketType::Beacon: + HandleBeaconFrame(packet); + break; + } +} + /** * NWM_UDS::Shutdown service function * Inputs: @@ -111,8 +160,7 @@ static void RecvBeaconBroadcastData(Interface* self) { u32 total_size = sizeof(BeaconDataReplyHeader); // Retrieve all beacon frames that were received from the desired mac address. - std::deque beacons = - GetReceivedPackets(WifiPacket::PacketType::Beacon, mac_address); + auto beacons = GetReceivedBeacons(mac_address); BeaconDataReplyHeader data_reply_header{}; data_reply_header.total_entries = beacons.size(); @@ -193,6 +241,9 @@ static void InitializeWithVersion(Interface* self) { rb.Push(RESULT_SUCCESS); rb.PushCopyHandles(Kernel::g_handle_table.Create(connection_status_event).Unwrap()); + // TODO(Subv): Connect the OnWifiPacketReceived function to the wifi packet received callback of + // the room we're currently in. + LOG_DEBUG(Service_NWM, "called sharedmem_size=0x%08X, version=0x%08X, sharedmem_handle=0x%08X", sharedmem_size, version, sharedmem_handle); } @@ -610,9 +661,17 @@ static void BeaconBroadcastCallback(u64 userdata, int cycles_late) { if (connection_status.status != static_cast(NetworkStatus::ConnectedAsHost)) return; - // TODO(Subv): Actually send the beacon. std::vector frame = GenerateBeaconFrame(network_info, node_info); + using Network::WifiPacket; + WifiPacket packet; + packet.type = WifiPacket::PacketType::Beacon; + packet.data = std::move(frame); + packet.destination_address = Network::BroadcastMac; + packet.channel = network_channel; + + SendPacket(packet); + // Start broadcasting the network, send a beacon frame every 102.4ms. CoreTiming::ScheduleEvent(msToCycles(DefaultBeaconInterval * MillisecondsPerTU) - cycles_late, beacon_broadcast_event, 0); From d088dbfbe1064bb5212e83c50e71e4b2ea5b00cd Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 17 Jul 2017 09:51:03 -0500 Subject: [PATCH 121/195] Services/UDS: Handle the connection sequence packets. There is currently no stage tracking, a client is considered "Connected" when it receives the EAPoL Logoff packet from the server, this is not yet implemented. --- src/core/hle/service/nwm/nwm_uds.cpp | 100 ++++++++++++++++++++++----- 1 file changed, 83 insertions(+), 17 deletions(-) diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp index 8fdf160ff6..893bbb1e79 100644 --- a/src/core/hle/service/nwm/nwm_uds.cpp +++ b/src/core/hle/service/nwm/nwm_uds.cpp @@ -91,12 +91,95 @@ void HandleBeaconFrame(const Network::WifiPacket& packet) { received_beacons.pop_front(); } +/* + * Returns an available index in the nodes array for the + * currently-hosted UDS network. + */ +static u16 GetNextAvailableNodeId() { + ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost), + "Can not accept clients if we're not hosting a network"); + + for (u16 index = 0; index < connection_status.max_nodes; ++index) { + if ((connection_status.node_bitmask & (1 << index)) == 0) + return index; + } + + // Any connection attempts to an already full network should have been refused. + ASSERT_MSG(false, "No available connection slots in the network"); +} + +/* + * Start a connection sequence with an UDS server. The sequence starts by sending an 802.11 + * authentication frame with SEQ1. + */ +void StartConnectionSequence(const MacAddress& server) { + ASSERT(connection_status.status == static_cast(NetworkStatus::NotConnected)); + + // TODO(Subv): Handle timeout. + + // Send an authentication frame with SEQ1 + using Network::WifiPacket; + WifiPacket auth_request; + auth_request.channel = network_channel; + auth_request.data = GenerateAuthenticationFrame(AuthenticationSeq::SEQ1); + auth_request.destination_address = server; + auth_request.type = WifiPacket::PacketType::Authentication; + + SendPacket(auth_request); +} + +/// Sends an Association Response frame to the specified mac address +void SendAssociationResponseFrame(const MacAddress& address) { + ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost)); + + using Network::WifiPacket; + WifiPacket assoc_response; + assoc_response.channel = network_channel; + // TODO(Subv): This will cause multiple clients to end up with the same association id, but + // we're not using that for anything. + u16 association_id = 1; + assoc_response.data = GenerateAssocResponseFrame(AssocStatus::Successful, association_id, + network_info.network_id); + assoc_response.destination_address = address; + assoc_response.type = WifiPacket::PacketType::AssociationResponse; + + SendPacket(assoc_response); +} + +/* + * Handles the authentication request frame and sends the authentication response and association + * response frames. Once an Authentication frame with SEQ1 is received by the server, it responds + * with an Authentication frame containing SEQ2, and immediately sends an Association response frame + * containing the details of the access point and the assigned association id for the new client. + */ +void HandleAuthenticationFrame(const Network::WifiPacket& packet) { + // Only the SEQ1 auth frame is handled here, the SEQ2 frame doesn't need any special behavior + if (GetAuthenticationSeqNumber(packet.data) == AuthenticationSeq::SEQ1) { + ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost)); + + // Respond with an authentication response frame with SEQ2 + using Network::WifiPacket; + WifiPacket auth_request; + auth_request.channel = network_channel; + auth_request.data = GenerateAuthenticationFrame(AuthenticationSeq::SEQ2); + auth_request.destination_address = packet.transmitter_address; + auth_request.type = WifiPacket::PacketType::Authentication; + + SendPacket(auth_request); + + SendAssociationResponseFrame(packet.transmitter_address); + } +} + /// Callback to parse and handle a received wifi packet. void OnWifiPacketReceived(const Network::WifiPacket& packet) { switch (packet.type) { case Network::WifiPacket::PacketType::Beacon: HandleBeaconFrame(packet); break; + case Network::WifiPacket::PacketType::Authentication: + HandleAuthenticationFrame(packet); + break; } } @@ -677,23 +760,6 @@ static void BeaconBroadcastCallback(u64 userdata, int cycles_late) { beacon_broadcast_event, 0); } -/* - * Returns an available index in the nodes array for the - * currently-hosted UDS network. - */ -static u32 GetNextAvailableNodeId() { - ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost), - "Can not accept clients if we're not hosting a network"); - - for (unsigned index = 0; index < connection_status.max_nodes; ++index) { - if ((connection_status.node_bitmask & (1 << index)) == 0) - return index; - } - - // Any connection attempts to an already full network should have been refused. - ASSERT_MSG(false, "No available connection slots in the network"); -} - /* * Called when a client connects to an UDS network we're hosting, * updates the connection status and signals the update event. From f64cd87604b7a760e2832c76938d83ec6a284b22 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 17 Jul 2017 09:51:40 -0500 Subject: [PATCH 122/195] Services/UDS: Remove an old duplicated declaration of WifiPacket. --- src/core/hle/service/nwm/uds_beacon.cpp | 3 --- src/core/hle/service/nwm/uds_beacon.h | 19 ------------------- 2 files changed, 22 deletions(-) diff --git a/src/core/hle/service/nwm/uds_beacon.cpp b/src/core/hle/service/nwm/uds_beacon.cpp index 6332b404cc..552eaf65ec 100644 --- a/src/core/hle/service/nwm/uds_beacon.cpp +++ b/src/core/hle/service/nwm/uds_beacon.cpp @@ -325,8 +325,5 @@ std::vector GenerateBeaconFrame(const NetworkInfo& network_info, const NodeL return buffer; } -std::deque GetReceivedPackets(WifiPacket::PacketType type, const MacAddress& sender) { - return {}; -} } // namespace NWM } // namespace Service diff --git a/src/core/hle/service/nwm/uds_beacon.h b/src/core/hle/service/nwm/uds_beacon.h index c726b04d96..50cc76da2d 100644 --- a/src/core/hle/service/nwm/uds_beacon.h +++ b/src/core/hle/service/nwm/uds_beacon.h @@ -124,20 +124,6 @@ struct BeaconData { static_assert(sizeof(BeaconData) == 0x12, "BeaconData has incorrect size."); -/// Information about a received WiFi packet. -/// Acts as our own 802.11 header. -struct WifiPacket { - enum class PacketType { Beacon, Data }; - - PacketType type; ///< The type of 802.11 frame, Beacon / Data. - - /// Raw 802.11 frame data, starting at the management frame header for management frames. - std::vector data; - MacAddress transmitter_address; ///< Mac address of the transmitter. - MacAddress destination_address; ///< Mac address of the receiver. - u8 channel; ///< WiFi channel where this frame was transmitted. -}; - /** * Decrypts the beacon data buffer for the network described by `network_info`. */ @@ -150,10 +136,5 @@ void DecryptBeaconData(const NetworkInfo& network_info, std::vector& buffer) */ std::vector GenerateBeaconFrame(const NetworkInfo& network_info, const NodeList& nodes); -/** - * Returns a list of received 802.11 frames from the specified sender - * matching the type since the last call. - */ -std::deque GetReceivedPackets(WifiPacket::PacketType type, const MacAddress& sender); } // namespace NWM } // namespace Service From 933508e2a2f7923cebc15d679b78933df8fb9ee5 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 3 Aug 2017 12:22:51 +0100 Subject: [PATCH 123/195] interpolate: Interpolate on a frame-by-frame basis --- src/audio_core/hle/source.cpp | 49 ++++++++----------- src/audio_core/interpolate.cpp | 86 +++++++++++++++------------------- src/audio_core/interpolate.h | 27 ++++++----- 3 files changed, 74 insertions(+), 88 deletions(-) diff --git a/src/audio_core/hle/source.cpp b/src/audio_core/hle/source.cpp index 92484c5261..de4e88caee 100644 --- a/src/audio_core/hle/source.cpp +++ b/src/audio_core/hle/source.cpp @@ -244,17 +244,27 @@ void Source::GenerateFrame() { break; } - const size_t size_to_copy = - std::min(state.current_buffer.size(), current_frame.size() - frame_position); - - std::copy(state.current_buffer.begin(), state.current_buffer.begin() + size_to_copy, - current_frame.begin() + frame_position); - state.current_buffer.erase(state.current_buffer.begin(), - state.current_buffer.begin() + size_to_copy); - - frame_position += size_to_copy; - state.next_sample_number += static_cast(size_to_copy); + switch (state.interpolation_mode) { + case InterpolationMode::None: + AudioInterp::None(state.interp_state, state.current_buffer, state.rate_multiplier, + current_frame, frame_position); + break; + case InterpolationMode::Linear: + AudioInterp::Linear(state.interp_state, state.current_buffer, state.rate_multiplier, + current_frame, frame_position); + break; + case InterpolationMode::Polyphase: + // TODO(merry): Implement polyphase interpolation + LOG_DEBUG(Audio_DSP, "Polyphase interpolation unimplemented; falling back to linear"); + AudioInterp::Linear(state.interp_state, state.current_buffer, state.rate_multiplier, + current_frame, frame_position); + break; + default: + UNIMPLEMENTED(); + break; + } } + state.next_sample_number += frame_position; state.filters.ProcessFrame(current_frame); } @@ -305,25 +315,6 @@ bool Source::DequeueBuffer() { return true; } - switch (state.interpolation_mode) { - case InterpolationMode::None: - state.current_buffer = - AudioInterp::None(state.interp_state, state.current_buffer, state.rate_multiplier); - break; - case InterpolationMode::Linear: - state.current_buffer = - AudioInterp::Linear(state.interp_state, state.current_buffer, state.rate_multiplier); - break; - case InterpolationMode::Polyphase: - // TODO(merry): Implement polyphase interpolation - state.current_buffer = - AudioInterp::Linear(state.interp_state, state.current_buffer, state.rate_multiplier); - break; - default: - UNIMPLEMENTED(); - break; - } - // the first playthrough starts at play_position, loops start at the beginning of the buffer state.current_sample_number = (!buf.has_played) ? buf.play_position : 0; state.next_sample_number = state.current_sample_number; diff --git a/src/audio_core/interpolate.cpp b/src/audio_core/interpolate.cpp index 8a5d4181af..16e68bc5c4 100644 --- a/src/audio_core/interpolate.cpp +++ b/src/audio_core/interpolate.cpp @@ -13,74 +13,64 @@ namespace AudioInterp { constexpr u64 scale_factor = 1 << 24; constexpr u64 scale_mask = scale_factor - 1; -/// Here we step over the input in steps of rate_multiplier, until we consume all of the input. +/// Here we step over the input in steps of rate, until we consume all of the input. /// Three adjacent samples are passed to fn each step. template -static StereoBuffer16 StepOverSamples(State& state, const StereoBuffer16& input, - float rate_multiplier, Function fn) { - ASSERT(rate_multiplier > 0); +static void StepOverSamples(State& state, StereoBuffer16& input, float rate, + DSP::HLE::StereoFrame16& output, size_t& outputi, Function fn) { + ASSERT(rate > 0); - if (input.size() < 2) - return {}; + if (input.empty()) + return; - StereoBuffer16 output; - output.reserve(static_cast(input.size() / rate_multiplier)); + input.insert(input.begin(), {state.xn2, state.xn1}); - u64 step_size = static_cast(rate_multiplier * scale_factor); + const u64 step_size = static_cast(rate * scale_factor); + u64 fposition = state.fposition; + size_t inputi = 0; - u64 fposition = 0; - const u64 max_fposition = input.size() * scale_factor; + while (outputi < output.size()) { + inputi = static_cast(fposition / scale_factor); + + if (inputi + 2 >= input.size()) { + inputi = input.size() - 2; + break; + } - while (fposition < 1 * scale_factor) { u64 fraction = fposition & scale_mask; - - output.push_back(fn(fraction, state.xn2, state.xn1, input[0])); + output[outputi++] = fn(fraction, input[inputi], input[inputi + 1], input[inputi + 2]); fposition += step_size; } - while (fposition < 2 * scale_factor) { - u64 fraction = fposition & scale_mask; + state.xn2 = input[inputi]; + state.xn1 = input[inputi + 1]; + state.fposition = fposition - inputi * scale_factor; - output.push_back(fn(fraction, state.xn1, input[0], input[1])); - - fposition += step_size; - } - - while (fposition < max_fposition) { - u64 fraction = fposition & scale_mask; - - size_t index = static_cast(fposition / scale_factor); - output.push_back(fn(fraction, input[index - 2], input[index - 1], input[index])); - - fposition += step_size; - } - - state.xn2 = input[input.size() - 2]; - state.xn1 = input[input.size() - 1]; - - return output; + input.erase(input.begin(), input.begin() + inputi + 2); } -StereoBuffer16 None(State& state, const StereoBuffer16& input, float rate_multiplier) { - return StepOverSamples( - state, input, rate_multiplier, +void None(State& state, StereoBuffer16& input, float rate, DSP::HLE::StereoFrame16& output, + size_t& outputi) { + StepOverSamples( + state, input, rate, output, outputi, [](u64 fraction, const auto& x0, const auto& x1, const auto& x2) { return x0; }); } -StereoBuffer16 Linear(State& state, const StereoBuffer16& input, float rate_multiplier) { +void Linear(State& state, StereoBuffer16& input, float rate, DSP::HLE::StereoFrame16& output, + size_t& outputi) { // Note on accuracy: Some values that this produces are +/- 1 from the actual firmware. - return StepOverSamples(state, input, rate_multiplier, - [](u64 fraction, const auto& x0, const auto& x1, const auto& x2) { - // This is a saturated subtraction. (Verified by black-box fuzzing.) - s64 delta0 = MathUtil::Clamp(x1[0] - x0[0], -32768, 32767); - s64 delta1 = MathUtil::Clamp(x1[1] - x0[1], -32768, 32767); + StepOverSamples(state, input, rate, output, outputi, + [](u64 fraction, const auto& x0, const auto& x1, const auto& x2) { + // This is a saturated subtraction. (Verified by black-box fuzzing.) + s64 delta0 = MathUtil::Clamp(x1[0] - x0[0], -32768, 32767); + s64 delta1 = MathUtil::Clamp(x1[1] - x0[1], -32768, 32767); - return std::array{ - static_cast(x0[0] + fraction * delta0 / scale_factor), - static_cast(x0[1] + fraction * delta1 / scale_factor), - }; - }); + return std::array{ + static_cast(x0[0] + fraction * delta0 / scale_factor), + static_cast(x0[1] + fraction * delta1 / scale_factor), + }; + }); } } // namespace AudioInterp diff --git a/src/audio_core/interpolate.h b/src/audio_core/interpolate.h index 19a7b66cb0..59f59bc141 100644 --- a/src/audio_core/interpolate.h +++ b/src/audio_core/interpolate.h @@ -6,6 +6,7 @@ #include #include +#include "audio_core/hle/common.h" #include "common/common_types.h" namespace AudioInterp { @@ -14,31 +15,35 @@ namespace AudioInterp { using StereoBuffer16 = std::vector>; struct State { - // Two historical samples. + /// Two historical samples. std::array xn1 = {}; ///< x[n-1] std::array xn2 = {}; ///< x[n-2] + /// Current fractional position. + u64 fposition = 0; }; /** * No interpolation. This is equivalent to a zero-order hold. There is a two-sample predelay. * @param state Interpolation state. * @param input Input buffer. - * @param rate_multiplier Stretch factor. Must be a positive non-zero value. - * rate_multiplier > 1.0 performs decimation and rate_multipler < 1.0 - * performs upsampling. - * @return The resampled audio buffer. + * @param rate Stretch factor. Must be a positive non-zero value. + * rate > 1.0 performs decimation and rate < 1.0 performs upsampling. + * @param output The resampled audio buffer. + * @param outputi The index of output to start writing to. */ -StereoBuffer16 None(State& state, const StereoBuffer16& input, float rate_multiplier); +void None(State& state, StereoBuffer16& input, float rate, DSP::HLE::StereoFrame16& output, + size_t& outputi); /** * Linear interpolation. This is equivalent to a first-order hold. There is a two-sample predelay. * @param state Interpolation state. * @param input Input buffer. - * @param rate_multiplier Stretch factor. Must be a positive non-zero value. - * rate_multiplier > 1.0 performs decimation and rate_multipler < 1.0 - * performs upsampling. - * @return The resampled audio buffer. + * @param rate Stretch factor. Must be a positive non-zero value. + * rate > 1.0 performs decimation and rate < 1.0 performs upsampling. + * @param output The resampled audio buffer. + * @param outputi The index of output to start writing to. */ -StereoBuffer16 Linear(State& state, const StereoBuffer16& input, float rate_multiplier); +void Linear(State& state, StereoBuffer16& input, float rate, DSP::HLE::StereoFrame16& output, + size_t& outputi); } // namespace AudioInterp From 826606479682234c98e4dfa6e616e637a28d4fcc Mon Sep 17 00:00:00 2001 From: danzel Date: Tue, 29 Aug 2017 20:39:55 +1200 Subject: [PATCH 124/195] Use recursive_mutex instead of mutex to fix #2902 --- src/core/hle/lock.cpp | 2 +- src/core/hle/lock.h | 2 +- src/core/hle/svc.cpp | 2 +- src/core/memory.cpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/hle/lock.cpp b/src/core/hle/lock.cpp index 082f689c86..1c24c7ce95 100644 --- a/src/core/hle/lock.cpp +++ b/src/core/hle/lock.cpp @@ -7,5 +7,5 @@ #include namespace HLE { -std::mutex g_hle_lock; +std::recursive_mutex g_hle_lock; } diff --git a/src/core/hle/lock.h b/src/core/hle/lock.h index 8265621e1d..5c99fe9966 100644 --- a/src/core/hle/lock.h +++ b/src/core/hle/lock.h @@ -14,5 +14,5 @@ namespace HLE { * to the emulated memory is not protected by this mutex, and should be avoided in any threads other * than the CPU thread. */ -extern std::mutex g_hle_lock; +extern std::recursive_mutex g_hle_lock; } // namespace HLE diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index b98938cb4c..dfc36748c1 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -1334,7 +1334,7 @@ void CallSVC(u32 immediate) { MICROPROFILE_SCOPE(Kernel_SVC); // Lock the global kernel mutex when we enter the kernel HLE. - std::lock_guard lock(HLE::g_hle_lock); + std::lock_guard lock(HLE::g_hle_lock); const FunctionDef* info = GetSVCInfo(immediate); if (info) { diff --git a/src/core/memory.cpp b/src/core/memory.cpp index a3c5f4a9d0..097bc5b47f 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -183,7 +183,7 @@ T Read(const VAddr vaddr) { } // The memory access might do an MMIO or cached access, so we have to lock the HLE kernel state - std::lock_guard lock(HLE::g_hle_lock); + std::lock_guard lock(HLE::g_hle_lock); PageType type = current_page_table->attributes[vaddr >> PAGE_BITS]; switch (type) { @@ -224,7 +224,7 @@ void Write(const VAddr vaddr, const T data) { } // The memory access might do an MMIO or cached access, so we have to lock the HLE kernel state - std::lock_guard lock(HLE::g_hle_lock); + std::lock_guard lock(HLE::g_hle_lock); PageType type = current_page_table->attributes[vaddr >> PAGE_BITS]; switch (type) { From e2c41a589198ff3162da8047a4c33162b02b0f2b Mon Sep 17 00:00:00 2001 From: wwylele Date: Thu, 31 Aug 2017 12:24:00 +0300 Subject: [PATCH 125/195] video_core: report telemetry for gas mode --- src/video_core/renderer_opengl/gl_shader_gen.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 3f390491ad..c8fc7a0ff0 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -8,6 +8,7 @@ #include "common/assert.h" #include "common/bit_field.h" #include "common/logging/log.h" +#include "core/core.h" #include "video_core/regs_framebuffer.h" #include "video_core/regs_lighting.h" #include "video_core/regs_rasterizer.h" @@ -1155,6 +1156,11 @@ vec4 secondary_fragment_color = vec4(0.0); // Blend the fog out += "last_tex_env_out.rgb = mix(fog_color.rgb, last_tex_env_out.rgb, fog_factor);\n"; + } else if (state.fog_mode == TexturingRegs::FogMode::Gas) { + Core::Telemetry().AddField(Telemetry::FieldType::Session, "VideoCore_Pica_UseGasMode", + true); + LOG_CRITICAL(Render_OpenGL, "Unimplemented gas mode"); + UNIMPLEMENTED(); } out += "gl_FragDepth = depth;\n"; From ab47bf6ad65b870f447fe2c1a39f3c288b906c3d Mon Sep 17 00:00:00 2001 From: James Rowe Date: Wed, 30 Aug 2017 19:39:24 -0600 Subject: [PATCH 126/195] Build: Add mingw64 compile support to appveyor Releases will be built with both mingw and msvc and the binaries of both builds will be uploaded to github releases --- appveyor.yml | 161 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 122 insertions(+), 39 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 94e9969f5e..1c390cdd53 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,6 +7,15 @@ cache: os: Visual Studio 2017 +environment: + # Tell msys2 to add mingw64 to the path + MSYSTEM: MINGW64 + # Tell msys2 to inherit the current directory when starting the shell + CHERE_INVOKING: 1 + matrix: + - BUILD_TYPE: mingw + - BUILD_TYPE: msvc + platform: - x64 @@ -15,72 +24,146 @@ configuration: install: - git submodule update --init --recursive + - ps: | + if ($env:BUILD_TYPE -eq 'mingw') { + $dependencies = "mingw64/mingw-w64-x86_64-cmake", + "mingw64/mingw-w64-x86_64-qt5", + "mingw64/mingw-w64-x86_64-curl", + "mingw64/mingw-w64-x86_64-SDL2" + # redirect err to null to prevent warnings from becoming errors + # workaround to prevent pacman from failing due to cyclical dependencies + C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw64/mingw-w64-x86_64-freetype mingw64/mingw-w64-x86_64-fontconfig" 2> $null + C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S $dependencies" 2> $null + } before_build: - - mkdir build - - cd build - - cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCMAKE_USE_OPENSSL=0 .. + - mkdir %BUILD_TYPE%_build + - cd %BUILD_TYPE%_build + - ps: | + if ($env:BUILD_TYPE -eq 'msvc') { + # redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning + cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCMAKE_USE_OPENSSL=0 .. 2>&1 && exit 0' + } else { + C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1" + } - cd .. -build: - project: build/citra.sln - parallel: true +build_script: + - ps: | + if ($env:BUILD_TYPE -eq 'msvc') { + # https://www.appveyor.com/docs/build-phase + msbuild msvc_build/citra.sln /maxcpucount /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" + } else { + C:\msys64\usr\bin\bash.exe -lc 'mingw32-make -C mingw_build/ 2>&1' + } after_build: - ps: | $GITDATE = $(git show -s --date=short --format='%ad') -replace "-","" $GITREV = $(git show -s --format='%h') - $GIT_LONG_HASH = $(git rev-parse HEAD) - # Where are these spaces coming from? Regardless, let's remove them - $MSVC_BUILD_NAME = "citra-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" - $MSVC_BUILD_PDB = "citra-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" - $MSVC_SEVENZIP = "citra-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" - $BINTRAY_VERSION = "nightly-$GIT_LONG_HASH" -replace " ", "" - - # set the build names as env vars so the artifacts can upload them - $env:MSVC_BUILD_NAME = $MSVC_BUILD_NAME - $env:MSVC_BUILD_PDB = $MSVC_BUILD_PDB - $env:MSVC_SEVENZIP = $MSVC_SEVENZIP - $env:GITREV = $GITREV - - 7z a -tzip $MSVC_BUILD_PDB .\build\bin\release\*.pdb - rm .\build\bin\release\*.pdb # Find out which kind of release we are producing by tag name if ($env:APPVEYOR_REPO_TAG_NAME) { - $RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-') + $RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-') } else { - # There is no repo tag - make assumptions - $RELEASE_DIST = "head" + # There is no repo tag - make assumptions + $RELEASE_DIST = "head" } - mkdir $RELEASE_DIST - Copy-Item .\build\bin\release\* -Destination $RELEASE_DIST -Recurse - Copy-Item .\license.txt -Destination $RELEASE_DIST - Copy-Item .\README.md -Destination $RELEASE_DIST + if ($env:BUILD_TYPE -eq 'msvc') { + # Where are these spaces coming from? Regardless, let's remove them + $MSVC_BUILD_ZIP = "citra-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", "" + $MSVC_BUILD_PDB = "citra-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", "" + $MSVC_SEVENZIP = "citra-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", "" - 7z a -tzip $MSVC_BUILD_NAME $RELEASE_DIST\* - 7z a $MSVC_SEVENZIP $RELEASE_DIST + # set the build names as env vars so the artifacts can upload them + $env:BUILD_ZIP = $MSVC_BUILD_ZIP + $env:BUILD_SYMBOLS = $MSVC_BUILD_PDB + $env:BUILD_UPDATE = $MSVC_SEVENZIP + + 7z a -tzip $MSVC_BUILD_PDB .\msvc_build\bin\release\*.pdb + rm .\msvc_build\bin\release\*.pdb + + mkdir $RELEASE_DIST + Copy-Item .\msvc_build\bin\release\* -Destination $RELEASE_DIST -Recurse + Copy-Item .\license.txt -Destination $RELEASE_DIST + Copy-Item .\README.md -Destination $RELEASE_DIST + 7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\* + 7z a $MSVC_SEVENZIP $RELEASE_DIST + } else { + $MINGW_BUILD_ZIP = "citra-windows-mingw-$GITDATE-$GITREV.zip" -replace " ", "" + $MINGW_SEVENZIP = "citra-windows-mingw-$GITDATE-$GITREV.7z" -replace " ", "" + # not going to bother adding separate debug symbols for mingw, so just upload a README for it + # if someone wants to add them, change mingw to compile with -g and use objdump and strip to separate the symbols from the binary + $MINGW_NO_DEBUG_SYMBOLS = "README_No_Debug_Symbols.txt" + Set-Content -Path $MINGW_NO_DEBUG_SYMBOLS -Value "This is a workaround for Appveyor since msvc has debug symbols but mingw doesnt" -Force + + # store the build information in env vars so we can use them as artifacts + $env:BUILD_ZIP = $MINGW_BUILD_ZIP + $env:BUILD_SYMBOLS = $MINGW_NO_DEBUG_SYMBOLS + $env:BUILD_UPDATE = $MINGW_SEVENZIP + + $CMAKE_SOURCE_DIR = "$env:APPVEYOR_BUILD_FOLDER" + $CMAKE_BINARY_DIR = "$CMAKE_SOURCE_DIR/mingw_build" + $RELEASE_DIST = $RELEASE_DIST + "-mingw" + + mkdir $RELEASE_DIST + mkdir $RELEASE_DIST/platforms + + # copy the compiled binaries and other release files to the release folder + Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "citra*.exe" | Copy-Item -destination $RELEASE_DIST + Copy-Item -path "$CMAKE_SOURCE_DIR/license.txt" -destination $RELEASE_DIST + Copy-Item -path "$CMAKE_SOURCE_DIR/README.md" -destination $RELEASE_DIST + + # copy all the dll dependencies to the release folder + # hardcoded list because we don't build static and determining the list of dlls from the binary is a pain. + $MingwDLLs = "Qt5Core.dll","Qt5Widgets.dll","Qt5Gui.dll","Qt5OpenGL.dll", + # QT dll dependencies + "libbz2-*.dll","libicudt*.dll","libicuin*.dll","libicuuc*.dll","libffi-*.dll", + "libfreetype-*.dll","libglib-*.dll","libgobject-*.dll","libgraphite2.dll","libiconv-*.dll", + "libharfbuzz-*.dll","libintl-*.dll","libpcre-*.dll","libpcre16-*.dll","libpng16-*.dll", + # Runtime/Other dependencies + "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll", + # curl dependencies + "libcurl-*.dll","libnghttp2-*.dll","libeay32.dll","libgmp-*.dll","librtmp-*.dll", + "libgnutls-*.dll","libhogweed-*.dll","libnettle-*.dll","libssh2-*.dll", + "ssleay32.dll","libidn-*.dll","libp11-kit-*.dll","libtasn1-*.dll","libunistring-*.dll" + foreach ($file in $MingwDLLs) { + Copy-Item -path "C:/msys64/mingw64/bin/$file" -force -destination "$RELEASE_DIST" + } + + # copy the qt windows plugin dll to platforms + Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/platforms/qwindows.dll" -force -destination "$RELEASE_DIST/platforms" + + 7z a -tzip $MINGW_BUILD_ZIP $RELEASE_DIST\* + 7z a $MINGW_SEVENZIP $RELEASE_DIST + } test_script: - - cd build && ctest -VV -C Release && cd .. + - cd %BUILD_TYPE%_build + - ps: | + if ($env:BUILD_TYPE -eq 'msvc') { + ctest -VV -C Release + } else { + C:\msys64\usr\bin\bash.exe -lc "ctest -VV -C Release" + } + - cd .. artifacts: - - path: $(MSVC_BUILD_NAME) - name: msvcbuild + - path: $(BUILD_ZIP) + name: build type: zip - - path: $(MSVC_BUILD_PDB) - name: msvcdebug - type: zip - - path: $(MSVC_SEVENZIP) - name: msvcupdate + - path: $(BUILD_SYMBOLS) + name: debugsymbols + - path: $(BUILD_UPDATE) + name: update deploy: provider: GitHub release: $(appveyor_repo_tag_name) auth_token: secure: "dbpsMC/MgPKWFNJCXpQl4cR8FYhepkPLjgNp/pRMktZ8oLKTqPYErfreaIxb/4P1" - artifact: msvcupdate,msvcbuild + artifact: update,build draft: false prerelease: false on: From 40505bc4fcc5cb1043b90b0acdce9e0093422921 Mon Sep 17 00:00:00 2001 From: DaMan Date: Thu, 31 Aug 2017 18:37:11 -0400 Subject: [PATCH 127/195] Add manifest --- CMakeLists.txt | 4 ++-- dist/citra.manifest | 24 ++++++++++++++++++++++++ src/citra/citra.rc | 8 ++++++++ src/citra_qt/citra-qt.rc | 8 ++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 dist/citra.manifest diff --git a/CMakeLists.txt b/CMakeLists.txt index ddba04ef93..f8060270ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -129,8 +129,8 @@ else() set(CMAKE_C_FLAGS_RELEASE "/O2 /GS- /MD" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE) - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG" CACHE STRING "" FORCE) - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF,ICF" CACHE STRING "" FORCE) + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG /MANIFEST:NO" CACHE STRING "" FORCE) + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /MANIFEST:NO /INCREMENTAL:NO /OPT:REF,ICF" CACHE STRING "" FORCE) endif() # Set file offset size to 64 bits. diff --git a/dist/citra.manifest b/dist/citra.manifest new file mode 100644 index 0000000000..fd30b656ff --- /dev/null +++ b/dist/citra.manifest @@ -0,0 +1,24 @@ + + + + + + + + + + + + True/PM + true + + + + + + + + + + + \ No newline at end of file diff --git a/src/citra/citra.rc b/src/citra/citra.rc index fea603004a..c490ef302c 100644 --- a/src/citra/citra.rc +++ b/src/citra/citra.rc @@ -1,3 +1,4 @@ +#include "winresrc.h" ///////////////////////////////////////////////////////////////////////////// // // Icon @@ -7,3 +8,10 @@ // remains consistent on all systems. CITRA_ICON ICON "../../dist/citra.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// RT_MANIFEST +// + +1 RT_MANIFEST "../../dist/citra.manifest" diff --git a/src/citra_qt/citra-qt.rc b/src/citra_qt/citra-qt.rc index fea603004a..c490ef302c 100644 --- a/src/citra_qt/citra-qt.rc +++ b/src/citra_qt/citra-qt.rc @@ -1,3 +1,4 @@ +#include "winresrc.h" ///////////////////////////////////////////////////////////////////////////// // // Icon @@ -7,3 +8,10 @@ // remains consistent on all systems. CITRA_ICON ICON "../../dist/citra.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// RT_MANIFEST +// + +1 RT_MANIFEST "../../dist/citra.manifest" From 12fbc8c8dff3265b03cffdd5bb5e6dd6537cd824 Mon Sep 17 00:00:00 2001 From: wwylele Date: Sun, 27 Aug 2017 07:33:27 +0300 Subject: [PATCH 128/195] pica/lighting: only apply Fresnel factor for the last light --- src/video_core/renderer_opengl/gl_shader_gen.cpp | 9 +++++---- src/video_core/swrasterizer/lighting.cpp | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 3f390491ad..b5f359da60 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -750,7 +750,8 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) { } // Fresnel - if (lighting.lut_fr.enable && + // Note: only the last entry in the light slots applies the Fresnel factor + if (light_index == lighting.src_num - 1 && lighting.lut_fr.enable && LightingRegs::IsLightingSamplerSupported(lighting.config, LightingRegs::LightingSampler::Fresnel)) { // Lookup fresnel LUT value @@ -759,17 +760,17 @@ static void WriteLighting(std::string& out, const PicaShaderConfig& config) { lighting.lut_fr.type, lighting.lut_fr.abs_input); value = "(" + std::to_string(lighting.lut_fr.scale) + " * " + value + ")"; - // Enabled for difffuse lighting alpha component + // Enabled for diffuse lighting alpha component if (lighting.fresnel_selector == LightingRegs::LightingFresnelSelector::PrimaryAlpha || lighting.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { - out += "diffuse_sum.a *= " + value + ";\n"; + out += "diffuse_sum.a = " + value + ";\n"; } // Enabled for the specular lighting alpha component if (lighting.fresnel_selector == LightingRegs::LightingFresnelSelector::SecondaryAlpha || lighting.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { - out += "specular_sum.a *= " + value + ";\n"; + out += "specular_sum.a = " + value + ";\n"; } } diff --git a/src/video_core/swrasterizer/lighting.cpp b/src/video_core/swrasterizer/lighting.cpp index b389645307..5fa7486117 100644 --- a/src/video_core/swrasterizer/lighting.cpp +++ b/src/video_core/swrasterizer/lighting.cpp @@ -230,7 +230,8 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( d1_lut_value * refl_value * light_config.specular_1.ToVec3f(); // Fresnel - if (lighting.config1.disable_lut_fr == 0 && + // Note: only the last entry in the light slots applies the Fresnel factor + if (light_index == lighting.max_light_index && lighting.config1.disable_lut_fr == 0 && LightingRegs::IsLightingSamplerSupported(lighting.config0.config, LightingRegs::LightingSampler::Fresnel)) { @@ -242,14 +243,14 @@ std::tuple, Math::Vec4> ComputeFragmentsColors( if (lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::PrimaryAlpha || lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { - diffuse_sum.a() *= lut_value; + diffuse_sum.a() = lut_value; } // Enabled for the specular lighting alpha component if (lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::SecondaryAlpha || lighting.config0.fresnel_selector == LightingRegs::LightingFresnelSelector::Both) { - specular_sum.a() *= lut_value; + specular_sum.a() = lut_value; } } From 59a9aaf388b71444116a42fe97a969947230908e Mon Sep 17 00:00:00 2001 From: wwylele Date: Wed, 2 Aug 2017 22:56:44 +0300 Subject: [PATCH 129/195] APT: load different shared font depending on the region --- src/core/hle/service/apt/apt.cpp | 286 ++++++++++++++++--------------- src/core/hle/service/cfg/cfg.cpp | 2 +- src/core/hle/service/cfg/cfg.h | 2 + 3 files changed, 155 insertions(+), 135 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 58d94768c3..8c0ba73f2a 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -19,6 +19,7 @@ #include "core/hle/service/apt/apt_s.h" #include "core/hle/service/apt/apt_u.h" #include "core/hle/service/apt/bcfnt/bcfnt.h" +#include "core/hle/service/cfg/cfg.h" #include "core/hle/service/fs/archive.h" #include "core/hle/service/ptm/ptm.h" #include "core/hle/service/service.h" @@ -198,6 +199,143 @@ void Initialize(Service::Interface* self) { Kernel::g_handle_table.Create(slot_data->parameter_event).Unwrap()); } +static u32 DecompressLZ11(const u8* in, u8* out) { + u32_le decompressed_size; + memcpy(&decompressed_size, in, sizeof(u32)); + in += 4; + + u8 type = decompressed_size & 0xFF; + ASSERT(type == 0x11); + decompressed_size >>= 8; + + u32 current_out_size = 0; + u8 flags = 0, mask = 1; + while (current_out_size < decompressed_size) { + if (mask == 1) { + flags = *(in++); + mask = 0x80; + } else { + mask >>= 1; + } + + if (flags & mask) { + u8 byte1 = *(in++); + u32 length = byte1 >> 4; + u32 offset; + if (length == 0) { + u8 byte2 = *(in++); + u8 byte3 = *(in++); + length = (((byte1 & 0x0F) << 4) | (byte2 >> 4)) + 0x11; + offset = (((byte2 & 0x0F) << 8) | byte3) + 0x1; + } else if (length == 1) { + u8 byte2 = *(in++); + u8 byte3 = *(in++); + u8 byte4 = *(in++); + length = (((byte1 & 0x0F) << 12) | (byte2 << 4) | (byte3 >> 4)) + 0x111; + offset = (((byte3 & 0x0F) << 8) | byte4) + 0x1; + } else { + u8 byte2 = *(in++); + length = (byte1 >> 4) + 0x1; + offset = (((byte1 & 0x0F) << 8) | byte2) + 0x1; + } + + for (u32 i = 0; i < length; i++) { + *out = *(out - offset); + ++out; + } + + current_out_size += length; + } else { + *(out++) = *(in++); + current_out_size++; + } + } + return decompressed_size; +} + +static bool LoadSharedFont() { + u8 font_region_code; + switch (CFG::GetRegionValue()) { + case 4: // CHN + font_region_code = 2; + break; + case 5: // KOR + font_region_code = 3; + break; + case 6: // TWN + font_region_code = 4; + break; + default: // JPN/EUR/USA + font_region_code = 1; + break; + } + + const u64_le shared_font_archive_id_low = 0x0004009b00014002 | ((font_region_code - 1) << 8); + const u64_le shared_font_archive_id_high = 0x00000001ffffff00; + std::vector shared_font_archive_id(16); + std::memcpy(&shared_font_archive_id[0], &shared_font_archive_id_low, sizeof(u64)); + std::memcpy(&shared_font_archive_id[8], &shared_font_archive_id_high, sizeof(u64)); + FileSys::Path archive_path(shared_font_archive_id); + auto archive_result = Service::FS::OpenArchive(Service::FS::ArchiveIdCode::NCCH, archive_path); + if (archive_result.Failed()) + return false; + + std::vector romfs_path(20, 0); // 20-byte all zero path for opening RomFS + FileSys::Path file_path(romfs_path); + FileSys::Mode open_mode = {}; + open_mode.read_flag.Assign(1); + auto file_result = Service::FS::OpenFileFromArchive(*archive_result, file_path, open_mode); + if (file_result.Failed()) + return false; + + auto romfs = std::move(file_result).Unwrap(); + std::vector romfs_buffer(romfs->backend->GetSize()); + romfs->backend->Read(0, romfs_buffer.size(), romfs_buffer.data()); + romfs->backend->Close(); + + const char16_t* file_name[4] = {u"cbf_std.bcfnt.lz", u"cbf_zh-Hans-CN.bcfnt.lz", + u"cbf_ko-Hang-KR.bcfnt.lz", u"cbf_zh-Hant-TW.bcfnt.lz"}; + const u8* font_file = + RomFS::GetFilePointer(romfs_buffer.data(), {file_name[font_region_code - 1]}); + if (font_file == nullptr) + return false; + + struct { + u32_le status; + u32_le region; + u32_le decompressed_size; + INSERT_PADDING_WORDS(0x1D); + } shared_font_header{}; + static_assert(sizeof(shared_font_header) == 0x80, "shared_font_header has incorrect size"); + + shared_font_header.status = 2; // successfully loaded + shared_font_header.region = font_region_code; + shared_font_header.decompressed_size = + DecompressLZ11(font_file, shared_font_mem->GetPointer(0x80)); + std::memcpy(shared_font_mem->GetPointer(), &shared_font_header, sizeof(shared_font_header)); + *shared_font_mem->GetPointer(0x83) = 'U'; // Change the magic from "CFNT" to "CFNU" + + return true; +} + +static bool LoadLegacySharedFont() { + // This is the legacy method to load shared font. + // The expected format is a decrypted, uncompressed BCFNT file with the 0x80 byte header + // generated by the APT:U service. The best way to get is by dumping it from RAM. We've provided + // a homebrew app to do this: https://github.com/citra-emu/3dsutils. Put the resulting file + // "shared_font.bin" in the Citra "sysdata" directory. + std::string filepath = FileUtil::GetUserPath(D_SYSDATA_IDX) + SHARED_FONT; + + FileUtil::CreateFullPath(filepath); // Create path if not already created + FileUtil::IOFile file(filepath, "rb"); + if (file.IsOpen()) { + file.ReadBytes(shared_font_mem->GetPointer(), file.GetSize()); + return true; + } + + return false; +} + void GetSharedFont(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x44, 0, 0); // 0x00440000 IPC::RequestBuilder rb = rp.MakeBuilder(2, 2); @@ -206,11 +344,20 @@ void GetSharedFont(Service::Interface* self) { Core::Telemetry().AddField(Telemetry::FieldType::Session, "RequiresSharedFont", true); if (!shared_font_loaded) { - LOG_ERROR(Service_APT, "shared font file missing - go dump it from your 3ds"); - rb.Push(-1); // TODO: Find the right error code - rb.Skip(1 + 2, true); - Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorSharedFont); - return; + // On real 3DS, font loading happens on booting. However, we load it on demand to coordinate + // with CFG region auto configuration, which happens later than APT initialization. + if (LoadSharedFont()) { + shared_font_loaded = true; + } else if (LoadLegacySharedFont()) { + LOG_WARNING(Service_APT, "Loaded shared font by legacy method"); + shared_font_loaded = true; + } else { + LOG_ERROR(Service_APT, "shared font file missing - go dump it from your 3ds"); + rb.Push(-1); // TODO: Find the right error code + rb.Skip(1 + 2, true); + Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorSharedFont); + return; + } } // The shared font has to be relocated to the new address before being passed to the @@ -863,125 +1010,6 @@ void CheckNew3DS(Service::Interface* self) { LOG_WARNING(Service_APT, "(STUBBED) called"); } -static u32 DecompressLZ11(const u8* in, u8* out) { - u32_le decompressed_size; - memcpy(&decompressed_size, in, sizeof(u32)); - in += 4; - - u8 type = decompressed_size & 0xFF; - ASSERT(type == 0x11); - decompressed_size >>= 8; - - u32 current_out_size = 0; - u8 flags = 0, mask = 1; - while (current_out_size < decompressed_size) { - if (mask == 1) { - flags = *(in++); - mask = 0x80; - } else { - mask >>= 1; - } - - if (flags & mask) { - u8 byte1 = *(in++); - u32 length = byte1 >> 4; - u32 offset; - if (length == 0) { - u8 byte2 = *(in++); - u8 byte3 = *(in++); - length = (((byte1 & 0x0F) << 4) | (byte2 >> 4)) + 0x11; - offset = (((byte2 & 0x0F) << 8) | byte3) + 0x1; - } else if (length == 1) { - u8 byte2 = *(in++); - u8 byte3 = *(in++); - u8 byte4 = *(in++); - length = (((byte1 & 0x0F) << 12) | (byte2 << 4) | (byte3 >> 4)) + 0x111; - offset = (((byte3 & 0x0F) << 8) | byte4) + 0x1; - } else { - u8 byte2 = *(in++); - length = (byte1 >> 4) + 0x1; - offset = (((byte1 & 0x0F) << 8) | byte2) + 0x1; - } - - for (u32 i = 0; i < length; i++) { - *out = *(out - offset); - ++out; - } - - current_out_size += length; - } else { - *(out++) = *(in++); - current_out_size++; - } - } - return decompressed_size; -} - -static bool LoadSharedFont() { - // TODO (wwylele): load different font archive for region CHN/KOR/TWN - const u64_le shared_font_archive_id_low = 0x0004009b00014002; - const u64_le shared_font_archive_id_high = 0x00000001ffffff00; - std::vector shared_font_archive_id(16); - std::memcpy(&shared_font_archive_id[0], &shared_font_archive_id_low, sizeof(u64)); - std::memcpy(&shared_font_archive_id[8], &shared_font_archive_id_high, sizeof(u64)); - FileSys::Path archive_path(shared_font_archive_id); - auto archive_result = Service::FS::OpenArchive(Service::FS::ArchiveIdCode::NCCH, archive_path); - if (archive_result.Failed()) - return false; - - std::vector romfs_path(20, 0); // 20-byte all zero path for opening RomFS - FileSys::Path file_path(romfs_path); - FileSys::Mode open_mode = {}; - open_mode.read_flag.Assign(1); - auto file_result = Service::FS::OpenFileFromArchive(*archive_result, file_path, open_mode); - if (file_result.Failed()) - return false; - - auto romfs = std::move(file_result).Unwrap(); - std::vector romfs_buffer(romfs->backend->GetSize()); - romfs->backend->Read(0, romfs_buffer.size(), romfs_buffer.data()); - romfs->backend->Close(); - - const u8* font_file = RomFS::GetFilePointer(romfs_buffer.data(), {u"cbf_std.bcfnt.lz"}); - if (font_file == nullptr) - return false; - - struct { - u32_le status; - u32_le region; - u32_le decompressed_size; - INSERT_PADDING_WORDS(0x1D); - } shared_font_header{}; - static_assert(sizeof(shared_font_header) == 0x80, "shared_font_header has incorrect size"); - - shared_font_header.status = 2; // successfully loaded - shared_font_header.region = 1; // region JPN/EUR/USA - shared_font_header.decompressed_size = - DecompressLZ11(font_file, shared_font_mem->GetPointer(0x80)); - std::memcpy(shared_font_mem->GetPointer(), &shared_font_header, sizeof(shared_font_header)); - *shared_font_mem->GetPointer(0x83) = 'U'; // Change the magic from "CFNT" to "CFNU" - - return true; -} - -static bool LoadLegacySharedFont() { - // This is the legacy method to load shared font. - // The expected format is a decrypted, uncompressed BCFNT file with the 0x80 byte header - // generated by the APT:U service. The best way to get is by dumping it from RAM. We've provided - // a homebrew app to do this: https://github.com/citra-emu/3dsutils. Put the resulting file - // "shared_font.bin" in the Citra "sysdata" directory. - std::string filepath = FileUtil::GetUserPath(D_SYSDATA_IDX) + SHARED_FONT; - - FileUtil::CreateFullPath(filepath); // Create path if not already created - FileUtil::IOFile file(filepath, "rb"); - if (file.IsOpen()) { - file.ReadBytes(shared_font_mem->GetPointer(), file.GetSize()); - return true; - } - - return false; -} - void Init() { AddService(new APT_A_Interface); AddService(new APT_S_Interface); @@ -995,16 +1023,6 @@ void Init() { MemoryPermission::ReadWrite, MemoryPermission::Read, 0, Kernel::MemoryRegion::SYSTEM, "APT:SharedFont"); - if (LoadSharedFont()) { - shared_font_loaded = true; - } else if (LoadLegacySharedFont()) { - LOG_WARNING(Service_APT, "Loaded shared font by legacy method"); - shared_font_loaded = true; - } else { - LOG_WARNING(Service_APT, "Unable to load shared font"); - shared_font_loaded = false; - } - lock = Kernel::Mutex::Create(false, "APT_U:Lock"); cpu_percent = 0; diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp index 3dbeb27cc2..f26a1f65fe 100644 --- a/src/core/hle/service/cfg/cfg.cpp +++ b/src/core/hle/service/cfg/cfg.cpp @@ -168,7 +168,7 @@ void GetCountryCodeID(Service::Interface* self) { cmd_buff[2] = country_code_id; } -static u32 GetRegionValue() { +u32 GetRegionValue() { if (Settings::values.region_value == Settings::REGION_VALUE_AUTO_SELECT) return preferred_region_code; diff --git a/src/core/hle/service/cfg/cfg.h b/src/core/hle/service/cfg/cfg.h index 1659ebf32d..282b6936b4 100644 --- a/src/core/hle/service/cfg/cfg.h +++ b/src/core/hle/service/cfg/cfg.h @@ -101,6 +101,8 @@ void GetCountryCodeString(Service::Interface* self); */ void GetCountryCodeID(Service::Interface* self); +u32 GetRegionValue(); + /** * CFG::SecureInfoGetRegion service function * Inputs: From 79f177c6d28a2e7644e152a97639f66272d9f012 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Sun, 3 Sep 2017 11:26:10 -0600 Subject: [PATCH 130/195] Fix icon for citra qt --- src/citra_qt/citra-qt.rc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/citra_qt/citra-qt.rc b/src/citra_qt/citra-qt.rc index c490ef302c..a48a9440dc 100644 --- a/src/citra_qt/citra-qt.rc +++ b/src/citra_qt/citra-qt.rc @@ -6,7 +6,9 @@ // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. -CITRA_ICON ICON "../../dist/citra.ico" +// QT requires that the default application icon is named IDI_ICON1 + +IDI_ICON1 ICON "../../dist/citra.ico" ///////////////////////////////////////////////////////////////////////////// From 589babbf7477423457dddbefbbb29623fa5c0624 Mon Sep 17 00:00:00 2001 From: mailwl Date: Sat, 12 Aug 2017 11:10:04 +0300 Subject: [PATCH 131/195] Mii Selector Applet: update Mii structures --- src/core/hle/applets/mii_selector.cpp | 6 +-- src/core/hle/applets/mii_selector.h | 57 ++++++++++++--------------- 2 files changed, 29 insertions(+), 34 deletions(-) diff --git a/src/core/hle/applets/mii_selector.cpp b/src/core/hle/applets/mii_selector.cpp index 705859f1e2..f225c23a58 100644 --- a/src/core/hle/applets/mii_selector.cpp +++ b/src/core/hle/applets/mii_selector.cpp @@ -66,7 +66,7 @@ ResultCode MiiSelector::StartImpl(const Service::APT::AppletStartupParameter& pa // continue. MiiResult result; memset(&result, 0, sizeof(result)); - result.result_code = 0; + result.return_code = 0; // Let the application know that we're closing Service::APT::MessageParameter message; @@ -82,5 +82,5 @@ ResultCode MiiSelector::StartImpl(const Service::APT::AppletStartupParameter& pa } void MiiSelector::Update() {} -} -} // namespace +} // namespace Applets +} // namespace HLE diff --git a/src/core/hle/applets/mii_selector.h b/src/core/hle/applets/mii_selector.h index ec00e29d23..69db401d08 100644 --- a/src/core/hle/applets/mii_selector.h +++ b/src/core/hle/applets/mii_selector.h @@ -16,51 +16,46 @@ namespace HLE { namespace Applets { struct MiiConfig { - u8 unk_000; - u8 unk_001; - u8 unk_002; - u8 unk_003; - u8 unk_004; + u8 cancel_button_flag; + u8 enable_guest_mii_flag; + u8 show_on_top_screen_flag; + INSERT_PADDING_BYTES(5); + u16 title[0x40]; + INSERT_PADDING_BYTES(4); + u8 show_guest_miis_flag; INSERT_PADDING_BYTES(3); - u16 unk_008; - INSERT_PADDING_BYTES(0x82); - u8 unk_08C; - INSERT_PADDING_BYTES(3); - u16 unk_090; + u32 initially_selected_mii_index; + u8 guest_mii_whitelist[6]; + u8 user_mii_whitelist[0x64]; INSERT_PADDING_BYTES(2); - u32 unk_094; - u16 unk_098; - u8 unk_09A[0x64]; - u8 unk_0FE; - u8 unk_0FF; - u32 unk_100; + u32 magic_value; }; - static_assert(sizeof(MiiConfig) == 0x104, "MiiConfig structure has incorrect size"); #define ASSERT_REG_POSITION(field_name, position) \ static_assert(offsetof(MiiConfig, field_name) == position, \ "Field " #field_name " has invalid position") -ASSERT_REG_POSITION(unk_008, 0x08); -ASSERT_REG_POSITION(unk_08C, 0x8C); -ASSERT_REG_POSITION(unk_090, 0x90); -ASSERT_REG_POSITION(unk_094, 0x94); -ASSERT_REG_POSITION(unk_0FE, 0xFE); +ASSERT_REG_POSITION(title, 0x08); +ASSERT_REG_POSITION(show_guest_miis_flag, 0x8C); +ASSERT_REG_POSITION(initially_selected_mii_index, 0x90); +ASSERT_REG_POSITION(guest_mii_whitelist, 0x94); #undef ASSERT_REG_POSITION struct MiiResult { - u32 result_code; - u8 unk_04; - INSERT_PADDING_BYTES(7); - u8 unk_0C[0x60]; - u8 unk_6C[0x16]; + u32 return_code; + u32 guest_mii_selected_flag; + u32 selected_guest_mii_index; + // TODO(mailwl): expand to Mii Format structure: https://www.3dbrew.org/wiki/Mii + u8 selected_mii_data[0x5C]; INSERT_PADDING_BYTES(2); + u16 mii_data_checksum; + u16 guest_mii_name[0xC]; }; static_assert(sizeof(MiiResult) == 0x84, "MiiResult structure has incorrect size"); #define ASSERT_REG_POSITION(field_name, position) \ static_assert(offsetof(MiiResult, field_name) == position, \ "Field " #field_name " has invalid position") -ASSERT_REG_POSITION(unk_0C, 0x0C); -ASSERT_REG_POSITION(unk_6C, 0x6C); +ASSERT_REG_POSITION(selected_mii_data, 0x0C); +ASSERT_REG_POSITION(guest_mii_name, 0x6C); #undef ASSERT_REG_POSITION class MiiSelector final : public Applet { @@ -79,5 +74,5 @@ private: MiiConfig config; }; -} -} // namespace +} // namespace Applets +} // namespace HLE From 11f2eff17df600c57aba35384c9f82490368735d Mon Sep 17 00:00:00 2001 From: mailwl Date: Mon, 4 Sep 2017 12:15:15 +0300 Subject: [PATCH 132/195] Remove _flag in var names --- src/core/hle/applets/mii_selector.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/hle/applets/mii_selector.h b/src/core/hle/applets/mii_selector.h index 69db401d08..136ce8948a 100644 --- a/src/core/hle/applets/mii_selector.h +++ b/src/core/hle/applets/mii_selector.h @@ -16,13 +16,13 @@ namespace HLE { namespace Applets { struct MiiConfig { - u8 cancel_button_flag; - u8 enable_guest_mii_flag; - u8 show_on_top_screen_flag; + u8 enable_cancel_button; + u8 enable_guest_mii; + u8 show_on_top_screen; INSERT_PADDING_BYTES(5); u16 title[0x40]; INSERT_PADDING_BYTES(4); - u8 show_guest_miis_flag; + u8 show_guest_miis; INSERT_PADDING_BYTES(3); u32 initially_selected_mii_index; u8 guest_mii_whitelist[6]; @@ -35,14 +35,14 @@ static_assert(sizeof(MiiConfig) == 0x104, "MiiConfig structure has incorrect siz static_assert(offsetof(MiiConfig, field_name) == position, \ "Field " #field_name " has invalid position") ASSERT_REG_POSITION(title, 0x08); -ASSERT_REG_POSITION(show_guest_miis_flag, 0x8C); +ASSERT_REG_POSITION(show_guest_miis, 0x8C); ASSERT_REG_POSITION(initially_selected_mii_index, 0x90); ASSERT_REG_POSITION(guest_mii_whitelist, 0x94); #undef ASSERT_REG_POSITION struct MiiResult { u32 return_code; - u32 guest_mii_selected_flag; + u32 is_guest_mii_selected; u32 selected_guest_mii_index; // TODO(mailwl): expand to Mii Format structure: https://www.3dbrew.org/wiki/Mii u8 selected_mii_data[0x5C]; From ef8925b7acfe03cb83963e3f9ec4592ae308f4ee Mon Sep 17 00:00:00 2001 From: James Rowe Date: Tue, 5 Sep 2017 18:57:47 -0600 Subject: [PATCH 133/195] Remove excess debug dlls for mingw build --- appveyor.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 1c390cdd53..ec9ca3747f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -131,6 +131,12 @@ after_build: foreach ($file in $MingwDLLs) { Copy-Item -path "C:/msys64/mingw64/bin/$file" -force -destination "$RELEASE_DIST" } + # the above list copies a few extra debug dlls that aren't needed (thanks globbing patterns!) + # so we can remove them by hardcoding another list of extra dlls to remove + $DebugDLLs = "libicudtd*.dll","libicuind*.dll","libicuucd*.dll" + foreach ($file in $DebugDLLs) { + Remove-Item -path "$RELEASE_DIST/$file" + } # copy the qt windows plugin dll to platforms Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/platforms/qwindows.dll" -force -destination "$RELEASE_DIST/platforms" From 0c55bed0477fc42dd95b512cbce741723a8878a6 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Sat, 9 Sep 2017 21:21:53 +0200 Subject: [PATCH 134/195] trvis_OSX: build with system curl --- .travis-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis-build.sh b/.travis-build.sh index 64f5aed946..bb4e6fc47e 100755 --- a/.travis-build.sh +++ b/.travis-build.sh @@ -52,7 +52,7 @@ elif [ "$TRAVIS_OS_NAME" = "osx" ]; then export Qt5_DIR=$(brew --prefix)/opt/qt5 mkdir build && cd build - cmake .. -GXcode + cmake .. -DUSE_SYSTEM_CURL=ON -GXcode xcodebuild -configuration Release ctest -VV -C Release From 6d2734a074f44a24129db850339677d8d7b436aa Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 21:17:57 -0500 Subject: [PATCH 135/195] Kernel/Memory: Give each Process its own page table. The loader is in charge of setting the newly created process's page table as the main one during the loading process. --- src/core/core.cpp | 1 - src/core/hle/kernel/vm_manager.cpp | 13 +++-- src/core/hle/kernel/vm_manager.h | 6 ++- src/core/loader/3dsx.cpp | 1 + src/core/loader/elf.cpp | 1 + src/core/loader/ncch.cpp | 1 + src/core/memory.cpp | 87 +++++------------------------- src/core/memory.h | 60 ++++++++++++++++++++- src/core/memory_setup.h | 10 ++-- 9 files changed, 93 insertions(+), 87 deletions(-) diff --git a/src/core/core.cpp b/src/core/core.cpp index 5332318cff..59b8768e71 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -137,7 +137,6 @@ void System::Reschedule() { } System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { - Memory::InitMemoryMap(); LOG_DEBUG(HW_Memory, "initialized OK"); if (Settings::values.use_cpu_jit) { diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp index cef1f7fa83..7a007c0656 100644 --- a/src/core/hle/kernel/vm_manager.cpp +++ b/src/core/hle/kernel/vm_manager.cpp @@ -56,6 +56,10 @@ void VMManager::Reset() { initial_vma.size = MAX_ADDRESS; vma_map.emplace(initial_vma.base, initial_vma); + page_table.pointers.fill(nullptr); + page_table.attributes.fill(Memory::PageType::Unmapped); + page_table.cached_res_count.fill(0); + UpdatePageTableForVMA(initial_vma); } @@ -328,16 +332,17 @@ VMManager::VMAIter VMManager::MergeAdjacent(VMAIter iter) { void VMManager::UpdatePageTableForVMA(const VirtualMemoryArea& vma) { switch (vma.type) { case VMAType::Free: - Memory::UnmapRegion(vma.base, vma.size); + Memory::UnmapRegion(page_table, vma.base, vma.size); break; case VMAType::AllocatedMemoryBlock: - Memory::MapMemoryRegion(vma.base, vma.size, vma.backing_block->data() + vma.offset); + Memory::MapMemoryRegion(page_table, vma.base, vma.size, + vma.backing_block->data() + vma.offset); break; case VMAType::BackingMemory: - Memory::MapMemoryRegion(vma.base, vma.size, vma.backing_memory); + Memory::MapMemoryRegion(page_table, vma.base, vma.size, vma.backing_memory); break; case VMAType::MMIO: - Memory::MapIoRegion(vma.base, vma.size, vma.mmio_handler); + Memory::MapIoRegion(page_table, vma.base, vma.size, vma.mmio_handler); break; } } diff --git a/src/core/hle/kernel/vm_manager.h b/src/core/hle/kernel/vm_manager.h index 38e0d74d0d..1302527bb9 100644 --- a/src/core/hle/kernel/vm_manager.h +++ b/src/core/hle/kernel/vm_manager.h @@ -9,6 +9,7 @@ #include #include "common/common_types.h" #include "core/hle/result.h" +#include "core/memory.h" #include "core/mmio.h" namespace Kernel { @@ -102,7 +103,6 @@ struct VirtualMemoryArea { * - http://duartes.org/gustavo/blog/post/page-cache-the-affair-between-memory-and-files/ */ class VMManager final { - // TODO(yuriks): Make page tables switchable to support multiple VMManagers public: /** * The maximum amount of address space managed by the kernel. Addresses above this are never @@ -184,6 +184,10 @@ public: /// Dumps the address space layout to the log, for debugging void LogLayout(Log::Level log_level) const; + /// Each VMManager has its own page table, which is set as the main one when the owning process + /// is scheduled. + Memory::PageTable page_table; + private: using VMAIter = decltype(vma_map)::iterator; diff --git a/src/core/loader/3dsx.cpp b/src/core/loader/3dsx.cpp index 74e3364874..69cdc0867e 100644 --- a/src/core/loader/3dsx.cpp +++ b/src/core/loader/3dsx.cpp @@ -270,6 +270,7 @@ ResultStatus AppLoader_THREEDSX::Load() { Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); Kernel::g_current_process->svc_access_mask.set(); Kernel::g_current_process->address_mappings = default_address_mappings; + Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; // Attach the default resource limit (APPLICATION) to the process Kernel::g_current_process->resource_limit = diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index cfcde91673..2f27606a18 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp @@ -397,6 +397,7 @@ ResultStatus AppLoader_ELF::Load() { Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); Kernel::g_current_process->svc_access_mask.set(); Kernel::g_current_process->address_mappings = default_address_mappings; + Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; // Attach the default resource limit (APPLICATION) to the process Kernel::g_current_process->resource_limit = diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 7aff7f29b3..79ea501471 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -172,6 +172,7 @@ ResultStatus AppLoader_NCCH::LoadExec() { codeset->memory = std::make_shared>(std::move(code)); Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); + Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; // Attach a resource limit to the process based on the resource limit category Kernel::g_current_process->resource_limit = diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 65649d9d76..ea46b6ead8 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -11,75 +11,18 @@ #include "core/hle/kernel/process.h" #include "core/memory.h" #include "core/memory_setup.h" -#include "core/mmio.h" #include "video_core/renderer_base.h" #include "video_core/video_core.h" namespace Memory { -enum class PageType { - /// Page is unmapped and should cause an access error. - Unmapped, - /// Page is mapped to regular memory. This is the only type you can get pointers to. - Memory, - /// Page is mapped to regular memory, but also needs to check for rasterizer cache flushing and - /// invalidation - RasterizerCachedMemory, - /// Page is mapped to a I/O region. Writing and reading to this page is handled by functions. - Special, - /// Page is mapped to a I/O region, but also needs to check for rasterizer cache flushing and - /// invalidation - RasterizerCachedSpecial, -}; - -struct SpecialRegion { - VAddr base; - u32 size; - MMIORegionPointer handler; -}; - -/** - * A (reasonably) fast way of allowing switchable and remappable process address spaces. It loosely - * mimics the way a real CPU page table works, but instead is optimized for minimal decoding and - * fetching requirements when accessing. In the usual case of an access to regular memory, it only - * requires an indexed fetch and a check for NULL. - */ -struct PageTable { - /** - * Array of memory pointers backing each page. An entry can only be non-null if the - * corresponding entry in the `attributes` array is of type `Memory`. - */ - std::array pointers; - - /** - * Contains MMIO handlers that back memory regions whose entries in the `attribute` array is of - * type `Special`. - */ - std::vector special_regions; - - /** - * Array of fine grained page attributes. If it is set to any value other than `Memory`, then - * the corresponding entry in `pointers` MUST be set to null. - */ - std::array attributes; - - /** - * Indicates the number of externally cached resources touching a page that should be - * flushed before the memory is accessed - */ - std::array cached_res_count; -}; - -/// Singular page table used for the singleton process -static PageTable main_page_table; -/// Currently active page table -static PageTable* current_page_table = &main_page_table; +PageTable* current_page_table = nullptr; std::array* GetCurrentPageTablePointers() { return ¤t_page_table->pointers; } -static void MapPages(u32 base, u32 size, u8* memory, PageType type) { +static void MapPages(PageTable& page_table, u32 base, u32 size, u8* memory, PageType type) { LOG_DEBUG(HW_Memory, "Mapping %p onto %08X-%08X", memory, base * PAGE_SIZE, (base + size) * PAGE_SIZE); @@ -90,9 +33,9 @@ static void MapPages(u32 base, u32 size, u8* memory, PageType type) { while (base != end) { ASSERT_MSG(base < PAGE_TABLE_NUM_ENTRIES, "out of range mapping at %08X", base); - current_page_table->attributes[base] = type; - current_page_table->pointers[base] = memory; - current_page_table->cached_res_count[base] = 0; + page_table.attributes[base] = type; + page_table.pointers[base] = memory; + page_table.cached_res_count[base] = 0; base += 1; if (memory != nullptr) @@ -100,30 +43,24 @@ static void MapPages(u32 base, u32 size, u8* memory, PageType type) { } } -void InitMemoryMap() { - main_page_table.pointers.fill(nullptr); - main_page_table.attributes.fill(PageType::Unmapped); - main_page_table.cached_res_count.fill(0); -} - -void MapMemoryRegion(VAddr base, u32 size, u8* target) { +void MapMemoryRegion(PageTable& page_table, VAddr base, u32 size, u8* target) { ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: %08X", size); ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: %08X", base); - MapPages(base / PAGE_SIZE, size / PAGE_SIZE, target, PageType::Memory); + MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, target, PageType::Memory); } -void MapIoRegion(VAddr base, u32 size, MMIORegionPointer mmio_handler) { +void MapIoRegion(PageTable& page_table, VAddr base, u32 size, MMIORegionPointer mmio_handler) { ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: %08X", size); ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: %08X", base); - MapPages(base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Special); + MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Special); - current_page_table->special_regions.emplace_back(SpecialRegion{base, size, mmio_handler}); + page_table.special_regions.emplace_back(SpecialRegion{base, size, mmio_handler}); } -void UnmapRegion(VAddr base, u32 size) { +void UnmapRegion(PageTable& page_table, VAddr base, u32 size) { ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: %08X", size); ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: %08X", base); - MapPages(base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Unmapped); + MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, nullptr, PageType::Unmapped); } /** diff --git a/src/core/memory.h b/src/core/memory.h index c8c56babd9..859a142022 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -7,8 +7,10 @@ #include #include #include +#include #include #include "common/common_types.h" +#include "core/mmio.h" namespace Memory { @@ -21,6 +23,59 @@ const u32 PAGE_MASK = PAGE_SIZE - 1; const int PAGE_BITS = 12; const size_t PAGE_TABLE_NUM_ENTRIES = 1 << (32 - PAGE_BITS); +enum class PageType { + /// Page is unmapped and should cause an access error. + Unmapped, + /// Page is mapped to regular memory. This is the only type you can get pointers to. + Memory, + /// Page is mapped to regular memory, but also needs to check for rasterizer cache flushing and + /// invalidation + RasterizerCachedMemory, + /// Page is mapped to a I/O region. Writing and reading to this page is handled by functions. + Special, + /// Page is mapped to a I/O region, but also needs to check for rasterizer cache flushing and + /// invalidation + RasterizerCachedSpecial, +}; + +struct SpecialRegion { + VAddr base; + u32 size; + MMIORegionPointer handler; +}; + +/** + * A (reasonably) fast way of allowing switchable and remappable process address spaces. It loosely + * mimics the way a real CPU page table works, but instead is optimized for minimal decoding and + * fetching requirements when accessing. In the usual case of an access to regular memory, it only + * requires an indexed fetch and a check for NULL. + */ +struct PageTable { + /** + * Array of memory pointers backing each page. An entry can only be non-null if the + * corresponding entry in the `attributes` array is of type `Memory`. + */ + std::array pointers; + + /** + * Contains MMIO handlers that back memory regions whose entries in the `attribute` array is of + * type `Special`. + */ + std::vector special_regions; + + /** + * Array of fine grained page attributes. If it is set to any value other than `Memory`, then + * the corresponding entry in `pointers` MUST be set to null. + */ + std::array attributes; + + /** + * Indicates the number of externally cached resources touching a page that should be + * flushed before the memory is accessed + */ + std::array cached_res_count; +}; + /// Physical memory regions as seen from the ARM11 enum : PAddr { /// IO register area @@ -126,6 +181,9 @@ enum : VAddr { NEW_LINEAR_HEAP_VADDR_END = NEW_LINEAR_HEAP_VADDR + NEW_LINEAR_HEAP_SIZE, }; +/// Currently active page table +extern PageTable* current_page_table; + bool IsValidVirtualAddress(const VAddr addr); bool IsValidPhysicalAddress(const PAddr addr); @@ -209,4 +267,4 @@ void RasterizerFlushVirtualRegion(VAddr start, u32 size, FlushMode mode); * retrieve the current page table for that purpose. */ std::array* GetCurrentPageTablePointers(); -} +} // namespace Memory diff --git a/src/core/memory_setup.h b/src/core/memory_setup.h index 3fdf3a87dc..c58baa50b6 100644 --- a/src/core/memory_setup.h +++ b/src/core/memory_setup.h @@ -9,24 +9,24 @@ namespace Memory { -void InitMemoryMap(); - /** * Maps an allocated buffer onto a region of the emulated process address space. * + * @param page_table The page table of the emulated process. * @param base The address to start mapping at. Must be page-aligned. * @param size The amount of bytes to map. Must be page-aligned. * @param target Buffer with the memory backing the mapping. Must be of length at least `size`. */ -void MapMemoryRegion(VAddr base, u32 size, u8* target); +void MapMemoryRegion(PageTable& page_table, VAddr base, u32 size, u8* target); /** * Maps a region of the emulated process address space as a IO region. + * @param page_table The page table of the emulated process. * @param base The address to start mapping at. Must be page-aligned. * @param size The amount of bytes to map. Must be page-aligned. * @param mmio_handler The handler that backs the mapping. */ -void MapIoRegion(VAddr base, u32 size, MMIORegionPointer mmio_handler); +void MapIoRegion(PageTable& page_table, VAddr base, u32 size, MMIORegionPointer mmio_handler); -void UnmapRegion(VAddr base, u32 size); +void UnmapRegion(PageTable& page_table, VAddr base, u32 size); } From c34ec5e77cd9e83fcf5c929f3951557d5269b7a6 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 21:28:03 -0500 Subject: [PATCH 136/195] Kernel/Memory: Switch the current page table when a new process is scheduled. --- src/core/hle/kernel/thread.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index f5f2eb2f7f..b7f094f465 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -178,8 +178,18 @@ static void SwitchContext(Thread* new_thread) { Core::CPU().LoadContext(new_thread->context); Core::CPU().SetCP15Register(CP15_THREAD_URO, new_thread->GetTLSAddress()); + + if (!previous_thread || previous_thread->owner_process != current_thread->owner_process) { + Kernel::g_current_process = current_thread->owner_process; + Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; + // We have switched processes and thus, page tables, clear the instruction cache so we + // don't keep stale data from the previous process. + Core::CPU().ClearInstructionCache(); + } } else { current_thread = nullptr; + // Note: We do not reset the current process and current page table when idling because + // technically we haven't changed processes, our threads are just paused. } } From 9e847b754933f09bdf19be0dc45fc32a65052965 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Sat, 9 Sep 2017 11:24:13 -0600 Subject: [PATCH 137/195] Build: Enable SSL in mingw by linking against WinSSL The mingw builds aren't submitting telemetry because the curl library they are linked against is configured to use openSSL and openSSL looks for the certificates in the users home folder. This keeps it from contacting web services because it can't communicate over SSL. This commit adds a download in mingw builds that will download a precompiled curl for mingw linked against winssl and sspi. --- CMakeLists.txt | 28 ++++++++++------------------ CMakeModules/DownloadExternals.cmake | 18 ++++++++++++++++++ appveyor.yml | 11 ++++------- externals/CMakeLists.txt | 19 +++++++++++++++++-- 4 files changed, 49 insertions(+), 27 deletions(-) create mode 100644 CMakeModules/DownloadExternals.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index f8060270ef..d9c2f78a25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.6) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules") +include(DownloadExternals) project(citra) @@ -12,6 +13,15 @@ option(ENABLE_QT "Enable the Qt frontend" ON) option(CITRA_USE_BUNDLED_QT "Download bundled Qt binaries" OFF) option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON) +option(CITRA_USE_BUNDLED_CURL "FOR MINGW ONLY: Download curl configured against winssl instead of openssl" OFF) +if (ENABLE_WEB_SERVICE AND CITRA_USE_BUNDLED_CURL AND WINDOWS AND MSVC) + message("Turning off use bundled curl as msvc can compile curl on cpr") + SET(CITRA_USE_BUNDLED_CURL OFF CACHE BOOL "" FORCE) +endif() +if (ENABLE_WEB_SERVICE AND NOT CITRA_USE_BUNDLED_CURL AND MINGW) + message(AUTHOR_WARNING "Turning on CITRA_USE_BUNDLED_CURL. Override it only if you know what you are doing.") + SET(CITRA_USE_BUNDLED_CURL ON CACHE BOOL "" FORCE) +endif() if(NOT EXISTS ${CMAKE_SOURCE_DIR}/.git/hooks/pre-commit) message(STATUS "Copying pre-commit hook") @@ -151,24 +161,6 @@ set_property(DIRECTORY APPEND PROPERTY # System imported libraries # ====================== -# This function downloads a binary library package from our external repo. -# Params: -# remote_path: path to the file to download, relative to the remote repository root -# prefix_var: name of a variable which will be set with the path to the extracted contents -function(download_bundled_external remote_path lib_name prefix_var) - set(prefix "${CMAKE_BINARY_DIR}/externals/${lib_name}") - if (NOT EXISTS "${prefix}") - message(STATUS "Downloading binaries for ${lib_name}...") - file(DOWNLOAD - https://github.com/citra-emu/ext-windows-bin/raw/master/${remote_path}${lib_name}.7z - "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") - endif() - message(STATUS "Using bundled binaries at ${prefix}") - set(${prefix_var} "${prefix}" PARENT_SCOPE) -endfunction() - find_package(PNG QUIET) if (NOT PNG_FOUND) message(STATUS "libpng not found. Some debugging features have been disabled.") diff --git a/CMakeModules/DownloadExternals.cmake b/CMakeModules/DownloadExternals.cmake new file mode 100644 index 0000000000..138a15d5a0 --- /dev/null +++ b/CMakeModules/DownloadExternals.cmake @@ -0,0 +1,18 @@ + +# This function downloads a binary library package from our external repo. +# Params: +# remote_path: path to the file to download, relative to the remote repository root +# prefix_var: name of a variable which will be set with the path to the extracted contents +function(download_bundled_external remote_path lib_name prefix_var) +set(prefix "${CMAKE_BINARY_DIR}/externals/${lib_name}") +if (NOT EXISTS "${prefix}") + message(STATUS "Downloading binaries for ${lib_name}...") + file(DOWNLOAD + https://github.com/citra-emu/ext-windows-bin/raw/master/${remote_path}${lib_name}.7z + "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" SHOW_PROGRESS) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") +endif() +message(STATUS "Using bundled binaries at ${prefix}") +set(${prefix_var} "${prefix}" PARENT_SCOPE) +endfunction() \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index ec9ca3747f..5524eb5762 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -44,7 +44,7 @@ before_build: # redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCMAKE_USE_OPENSSL=0 .. 2>&1 && exit 0' } else { - C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1" + C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DUSE_SYSTEM_CURL=1 -DCITRA_USE_BUNDLED_CURL=1 -DCMAKE_BUILD_TYPE=Release .. 2>&1" } - cd .. @@ -112,9 +112,10 @@ after_build: # copy the compiled binaries and other release files to the release folder Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "citra*.exe" | Copy-Item -destination $RELEASE_DIST + # copy the libcurl dll + Get-ChildItem "$CMAKE_BINARY_DIR" -Recurse -Filter "libcurl.dll" | Copy-Item -destination $RELEASE_DIST Copy-Item -path "$CMAKE_SOURCE_DIR/license.txt" -destination $RELEASE_DIST Copy-Item -path "$CMAKE_SOURCE_DIR/README.md" -destination $RELEASE_DIST - # copy all the dll dependencies to the release folder # hardcoded list because we don't build static and determining the list of dlls from the binary is a pain. $MingwDLLs = "Qt5Core.dll","Qt5Widgets.dll","Qt5Gui.dll","Qt5OpenGL.dll", @@ -123,11 +124,7 @@ after_build: "libfreetype-*.dll","libglib-*.dll","libgobject-*.dll","libgraphite2.dll","libiconv-*.dll", "libharfbuzz-*.dll","libintl-*.dll","libpcre-*.dll","libpcre16-*.dll","libpng16-*.dll", # Runtime/Other dependencies - "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll", - # curl dependencies - "libcurl-*.dll","libnghttp2-*.dll","libeay32.dll","libgmp-*.dll","librtmp-*.dll", - "libgnutls-*.dll","libhogweed-*.dll","libnettle-*.dll","libssh2-*.dll", - "ssleay32.dll","libidn-*.dll","libp11-kit-*.dll","libtasn1-*.dll","libunistring-*.dll" + "libgcc_s_seh-*.dll","libstdc++-*.dll","libwinpthread-*.dll","SDL2.dll","zlib1.dll" foreach ($file in $MingwDLLs) { Copy-Item -path "C:/msys64/mingw64/bin/$file" -force -destination "$RELEASE_DIST" } diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 8e4bcf21f8..4a4ba11012 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -1,5 +1,8 @@ # Definitions for all external bundled libraries +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) +include(DownloadExternals) + # Catch add_library(catch-single-include INTERFACE) target_include_directories(catch-single-include INTERFACE catch/single_include) @@ -54,9 +57,21 @@ add_subdirectory(enet) target_include_directories(enet INTERFACE ./enet/include) if (ENABLE_WEB_SERVICE) + # msys installed curl is configured to use openssl, but that isn't portable + # since it relies on having the bundled certs install in the home folder for SSL + # by default on mingw, download the precompiled curl thats linked against windows native ssl + if (MINGW AND CITRA_USE_BUNDLED_CURL) + download_bundled_external("curl/" "curl-7_55_1" CURL_PREFIX) + set(CURL_PREFIX "${CMAKE_BINARY_DIR}/externals/curl-7_55_1") + set(CURL_FOUND YES) + set(CURL_INCLUDE_DIR "${CURL_PREFIX}/include" CACHE PATH "Path to curl headers") + set(CURL_LIBRARY "${CURL_PREFIX}/lib/libcurldll.a" CACHE PATH "Path to curl library") + set(CURL_DLL_DIR "${CURL_PREFIX}/lib/" CACHE PATH "Path to curl.dll") + set(USE_SYSTEM_CURL ON CACHE BOOL "") + endif() # CPR - option(BUILD_TESTING OFF) - option(BUILD_CPR_TESTS OFF) + set(BUILD_TESTING OFF CACHE BOOL "") + set(BUILD_CPR_TESTS OFF CACHE BOOL "") add_subdirectory(cpr) target_include_directories(cpr INTERFACE ./cpr/include) From ad0b57f4071fb7ec9da764b3905e0bb5e4c5eef2 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Thu, 7 Sep 2017 22:05:42 -0600 Subject: [PATCH 138/195] GPU: Add draw for immediate and batch modes PR #1461 introduced a regression where some games would change configuration even while in the poorly named "drawing" mode, which broke the heuristic citra was using to determine when to draw the batch. This change adds back in a draw call for batching, and also adds in a draw call in immediate mode each time it adds a triangle. --- src/video_core/command_processor.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index fb65a3a0a7..fff159058d 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -243,6 +243,15 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { ASSERT(!g_state.geometry_pipeline.NeedIndexInput()); g_state.geometry_pipeline.Setup(shader_engine); g_state.geometry_pipeline.SubmitVertex(output); + + // TODO: If drawing after every immediate mode triangle kills performance, + // change it to flush triangles whenever a draing config register changes + // See: https://github.com/citra-emu/citra/pull/2866#issuecomment-327011550 + VideoCore::g_renderer->Rasterizer()->DrawTriangles(); + if (g_debug_context) { + g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, + nullptr); + } } } } @@ -398,6 +407,12 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { range.second, range.first); } + MICROPROFILE_SCOPE(GPU_Drawing); + VideoCore::g_renderer->Rasterizer()->DrawTriangles(); + if (g_debug_context) { + g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); + } + break; } @@ -632,6 +647,6 @@ void ProcessCommandList(const u32* list, u32 size) { } } -} // namespace +} // namespace CommandProcessor -} // namespace +} // namespace Pica From 214150f00c77474927cbdfb1598dbdb2cb4fcf32 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 21 Jul 2017 22:22:59 -0500 Subject: [PATCH 139/195] Kernel/Memory: Changed GetPhysicalPointer so that it doesn't go through the current process' page table to obtain a pointer. --- src/core/hle/kernel/memory.cpp | 30 +++------------- src/core/hle/kernel/memory.h | 2 ++ src/core/memory.cpp | 65 ++++++++++++++++++++++++++++++++-- src/core/memory.h | 2 -- 4 files changed, 69 insertions(+), 30 deletions(-) diff --git a/src/core/hle/kernel/memory.cpp b/src/core/hle/kernel/memory.cpp index 496d07cb59..7f27e9655c 100644 --- a/src/core/hle/kernel/memory.cpp +++ b/src/core/hle/kernel/memory.cpp @@ -8,7 +8,6 @@ #include #include #include -#include "audio_core/audio_core.h" #include "common/assert.h" #include "common/common_types.h" #include "common/logging/log.h" @@ -24,7 +23,7 @@ namespace Kernel { -static MemoryRegionInfo memory_regions[3]; +MemoryRegionInfo memory_regions[3]; /// Size of the APPLICATION, SYSTEM and BASE memory regions (respectively) for each system /// memory configuration type. @@ -96,9 +95,6 @@ MemoryRegionInfo* GetMemoryRegion(MemoryRegion region) { } } -std::array vram; -std::array n3ds_extra_ram; - void HandleSpecialMapping(VMManager& address_space, const AddressMapping& mapping) { using namespace Memory; @@ -143,30 +139,14 @@ void HandleSpecialMapping(VMManager& address_space, const AddressMapping& mappin return; } - // TODO(yuriks): Use GetPhysicalPointer when that becomes independent of the virtual - // mappings. - u8* target_pointer = nullptr; - switch (area->paddr_base) { - case VRAM_PADDR: - target_pointer = vram.data(); - break; - case DSP_RAM_PADDR: - target_pointer = AudioCore::GetDspMemory().data(); - break; - case N3DS_EXTRA_RAM_PADDR: - target_pointer = n3ds_extra_ram.data(); - break; - default: - UNREACHABLE(); - } + u8* target_pointer = Memory::GetPhysicalPointer(area->paddr_base + offset_into_region); // TODO(yuriks): This flag seems to have some other effect, but it's unknown what MemoryState memory_state = mapping.unk_flag ? MemoryState::Static : MemoryState::IO; - auto vma = address_space - .MapBackingMemory(mapping.address, target_pointer + offset_into_region, - mapping.size, memory_state) - .Unwrap(); + auto vma = + address_space.MapBackingMemory(mapping.address, target_pointer, mapping.size, memory_state) + .Unwrap(); address_space.Reprotect(vma, mapping.read_only ? VMAPermission::Read : VMAPermission::ReadWrite); } diff --git a/src/core/hle/kernel/memory.h b/src/core/hle/kernel/memory.h index 08c1a99892..da6bb35633 100644 --- a/src/core/hle/kernel/memory.h +++ b/src/core/hle/kernel/memory.h @@ -26,4 +26,6 @@ MemoryRegionInfo* GetMemoryRegion(MemoryRegion region); void HandleSpecialMapping(VMManager& address_space, const AddressMapping& mapping); void MapSharedPages(VMManager& address_space); + +extern MemoryRegionInfo memory_regions[3]; } // namespace Kernel diff --git a/src/core/memory.cpp b/src/core/memory.cpp index ea46b6ead8..4dcbf22748 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -4,10 +4,12 @@ #include #include +#include "audio_core/audio_core.h" #include "common/assert.h" #include "common/common_types.h" #include "common/logging/log.h" #include "common/swap.h" +#include "core/hle/kernel/memory.h" #include "core/hle/kernel/process.h" #include "core/memory.h" #include "core/memory_setup.h" @@ -16,6 +18,9 @@ namespace Memory { +static std::array vram; +static std::array n3ds_extra_ram; + PageTable* current_page_table = nullptr; std::array* GetCurrentPageTablePointers() { @@ -236,9 +241,63 @@ std::string ReadCString(VAddr vaddr, std::size_t max_length) { } u8* GetPhysicalPointer(PAddr address) { - // TODO(Subv): This call should not go through the application's memory mapping. - boost::optional vaddr = PhysicalToVirtualAddress(address); - return vaddr ? GetPointer(*vaddr) : nullptr; + struct MemoryArea { + PAddr paddr_base; + u32 size; + }; + + static constexpr MemoryArea memory_areas[] = { + {VRAM_PADDR, VRAM_SIZE}, + {IO_AREA_PADDR, IO_AREA_SIZE}, + {DSP_RAM_PADDR, DSP_RAM_SIZE}, + {FCRAM_PADDR, FCRAM_N3DS_SIZE}, + {N3DS_EXTRA_RAM_PADDR, N3DS_EXTRA_RAM_SIZE}, + }; + + const auto area = + std::find_if(std::begin(memory_areas), std::end(memory_areas), [&](const auto& area) { + return address >= area.paddr_base && address < area.paddr_base + area.size; + }); + + if (area == std::end(memory_areas)) { + LOG_ERROR(HW_Memory, "unknown GetPhysicalPointer @ 0x%08X", address); + return nullptr; + } + + if (area->paddr_base == IO_AREA_PADDR) { + LOG_ERROR(HW_Memory, "MMIO mappings are not supported yet. phys_addr=0x%08X", address); + return nullptr; + } + + u32 offset_into_region = address - area->paddr_base; + + u8* target_pointer = nullptr; + switch (area->paddr_base) { + case VRAM_PADDR: + target_pointer = vram.data() + offset_into_region; + break; + case DSP_RAM_PADDR: + target_pointer = AudioCore::GetDspMemory().data() + offset_into_region; + break; + case FCRAM_PADDR: + for (const auto& region : Kernel::memory_regions) { + if (offset_into_region >= region.base && + offset_into_region < region.base + region.size) { + target_pointer = + region.linear_heap_memory->data() + offset_into_region - region.base; + break; + } + } + ASSERT_MSG(target_pointer != nullptr, "Invalid FCRAM address"); + break; + case N3DS_EXTRA_RAM_PADDR: + target_pointer = n3ds_extra_ram.data() + offset_into_region; + break; + default: + UNREACHABLE(); + } + + return target_pointer; } void RasterizerMarkRegionCached(PAddr start, u32 size, int count_delta) { diff --git a/src/core/memory.h b/src/core/memory.h index 859a142022..b228a48c2e 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -227,8 +227,6 @@ boost::optional PhysicalToVirtualAddress(PAddr addr); /** * Gets a pointer to the memory region beginning at the specified physical address. - * - * @note This is currently implemented using PhysicalToVirtualAddress(). */ u8* GetPhysicalPointer(PAddr address); From b178089251200bd0309afcbcb06b43e7c82dc3bc Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 22 Jul 2017 19:37:26 -0500 Subject: [PATCH 140/195] Kernel/Threads: Don't clear the CPU instruction cache when performing a context switch from an idle thread into a thread in the same process. We were unnecessarily clearing the cache when going from Process A -> Idle -> Process A, this caused extreme performance regressions. --- src/core/hle/kernel/thread.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index b7f094f465..f77c39d18d 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -171,6 +171,8 @@ static void SwitchContext(Thread* new_thread) { // Cancel any outstanding wakeup events for this thread CoreTiming::UnscheduleEvent(ThreadWakeupEventType, new_thread->callback_handle); + auto previous_process = Kernel::g_current_process; + current_thread = new_thread; ready_queue.remove(new_thread->current_priority, new_thread); @@ -179,7 +181,7 @@ static void SwitchContext(Thread* new_thread) { Core::CPU().LoadContext(new_thread->context); Core::CPU().SetCP15Register(CP15_THREAD_URO, new_thread->GetTLSAddress()); - if (!previous_thread || previous_thread->owner_process != current_thread->owner_process) { + if (previous_process != current_thread->owner_process) { Kernel::g_current_process = current_thread->owner_process; Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; // We have switched processes and thus, page tables, clear the instruction cache so we From f18a176b601c8dc15b372607a4e9f289bdc25ee4 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 7 Aug 2017 13:37:16 -0500 Subject: [PATCH 141/195] Kernel/Memory: Make IsValidPhysicalAddress not go through the current process' virtual memory mapping. --- src/core/memory.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 4dcbf22748..4d16736f56 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -208,8 +208,7 @@ bool IsValidVirtualAddress(const VAddr vaddr) { } bool IsValidPhysicalAddress(const PAddr paddr) { - boost::optional vaddr = PhysicalToVirtualAddress(paddr); - return vaddr && IsValidVirtualAddress(*vaddr); + return GetPhysicalPointer(paddr) != nullptr; } u8* GetPointer(const VAddr vaddr) { From 3bde97ea059f7bff4e7ebbc59077a1211ae068f7 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 7 Aug 2017 14:30:01 -0500 Subject: [PATCH 142/195] Tests/VFP: Use a standalone pagetable for the TestEnvironment memory operations. This fixes building the tests --- src/tests/core/arm/arm_test_common.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/tests/core/arm/arm_test_common.cpp b/src/tests/core/arm/arm_test_common.cpp index 1df6c56773..8384ce7440 100644 --- a/src/tests/core/arm/arm_test_common.cpp +++ b/src/tests/core/arm/arm_test_common.cpp @@ -3,20 +3,30 @@ // Refer to the license.txt file included. #include "core/core.h" +#include "core/memory.h" #include "core/memory_setup.h" #include "tests/core/arm/arm_test_common.h" namespace ArmTests { +static Memory::PageTable page_table; + TestEnvironment::TestEnvironment(bool mutable_memory_) : mutable_memory(mutable_memory_), test_memory(std::make_shared(this)) { - Memory::MapIoRegion(0x00000000, 0x80000000, test_memory); - Memory::MapIoRegion(0x80000000, 0x80000000, test_memory); + + page_table.pointers.fill(nullptr); + page_table.attributes.fill(Memory::PageType::Unmapped); + page_table.cached_res_count.fill(0); + + Memory::MapIoRegion(page_table, 0x00000000, 0x80000000, test_memory); + Memory::MapIoRegion(page_table, 0x80000000, 0x80000000, test_memory); + + Memory::current_page_table = &page_table; } TestEnvironment::~TestEnvironment() { - Memory::UnmapRegion(0x80000000, 0x80000000); - Memory::UnmapRegion(0x00000000, 0x80000000); + Memory::UnmapRegion(page_table, 0x80000000, 0x80000000); + Memory::UnmapRegion(page_table, 0x00000000, 0x80000000); } void TestEnvironment::SetMemory64(VAddr vaddr, u64 value) { From 7a3ab7c63ddcc79e9dfa46ae0347065f66052105 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 12 Aug 2017 10:16:35 -0500 Subject: [PATCH 143/195] CPU/Dynarmic: Disable the fast page-table access in dynarmic until it supports switching page tables at runtime. --- src/core/arm/dynarmic/arm_dynarmic.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index 7d2790b08f..f2bd0d2836 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp @@ -56,7 +56,9 @@ static Dynarmic::UserCallbacks GetUserCallbacks( user_callbacks.memory.Write16 = &Memory::Write16; user_callbacks.memory.Write32 = &Memory::Write32; user_callbacks.memory.Write64 = &Memory::Write64; - user_callbacks.page_table = Memory::GetCurrentPageTablePointers(); + // TODO(Subv): Re-add the page table pointers once dynarmic supports switching page tables at + // runtime. + user_callbacks.page_table = nullptr; user_callbacks.coprocessors[15] = std::make_shared(interpeter_state); return user_callbacks; } From 3d86e3afc4b03037fb1ac8c0b637312a5d0e17f8 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 28 Aug 2017 20:26:07 -0500 Subject: [PATCH 144/195] Services/NS: Port ns:s to the new service framework. --- src/core/CMakeLists.txt | 6 +++-- src/core/hle/service/ns/ns.cpp | 16 +++++++++++++ src/core/hle/service/ns/ns.h | 16 +++++++++++++ src/core/hle/service/ns/ns_s.cpp | 34 ++++++++++++++++++++++++++++ src/core/hle/service/{ => ns}/ns_s.h | 9 ++++---- src/core/hle/service/ns_s.cpp | 33 --------------------------- src/core/hle/service/service.cpp | 5 ++-- 7 files changed, 77 insertions(+), 42 deletions(-) create mode 100644 src/core/hle/service/ns/ns.cpp create mode 100644 src/core/hle/service/ns/ns.h create mode 100644 src/core/hle/service/ns/ns_s.cpp rename src/core/hle/service/{ => ns}/ns_s.h (68%) delete mode 100644 src/core/hle/service/ns_s.cpp diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 662030782e..89578024f1 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -135,7 +135,8 @@ set(SRCS hle/service/nim/nim_aoc.cpp hle/service/nim/nim_s.cpp hle/service/nim/nim_u.cpp - hle/service/ns_s.cpp + hle/service/ns/ns.cpp + hle/service/ns/ns_s.cpp hle/service/nwm/nwm.cpp hle/service/nwm/nwm_cec.cpp hle/service/nwm/nwm_ext.cpp @@ -334,7 +335,8 @@ set(HEADERS hle/service/nim/nim_aoc.h hle/service/nim/nim_s.h hle/service/nim/nim_u.h - hle/service/ns_s.h + hle/service/ns/ns.h + hle/service/ns/ns_s.h hle/service/nwm/nwm.h hle/service/nwm/nwm_cec.h hle/service/nwm/nwm_ext.h diff --git a/src/core/hle/service/ns/ns.cpp b/src/core/hle/service/ns/ns.cpp new file mode 100644 index 0000000000..9e19c38bf9 --- /dev/null +++ b/src/core/hle/service/ns/ns.cpp @@ -0,0 +1,16 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/service/ns/ns.h" +#include "core/hle/service/ns/ns_s.h" + +namespace Service { +namespace NS { + +void InstallInterfaces(SM::ServiceManager& service_manager) { + std::make_shared()->InstallAsService(service_manager); +} + +} // namespace NS +} // namespace Service diff --git a/src/core/hle/service/ns/ns.h b/src/core/hle/service/ns/ns.h new file mode 100644 index 0000000000..c3d67d98c8 --- /dev/null +++ b/src/core/hle/service/ns/ns.h @@ -0,0 +1,16 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/service/service.h" + +namespace Service { +namespace NS { + +/// Registers all NS services with the specified service manager. +void InstallInterfaces(SM::ServiceManager& service_manager); + +} // namespace NS +} // namespace Service diff --git a/src/core/hle/service/ns/ns_s.cpp b/src/core/hle/service/ns/ns_s.cpp new file mode 100644 index 0000000000..d952888dcc --- /dev/null +++ b/src/core/hle/service/ns/ns_s.cpp @@ -0,0 +1,34 @@ +// Copyright 2015 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/service/ns/ns_s.h" + +namespace Service { +namespace NS { + +NS_S::NS_S() : ServiceFramework("ns:s", 2) { + static const FunctionInfo functions[] = { + {0x000100C0, nullptr, "LaunchFIRM"}, + {0x000200C0, nullptr, "LaunchTitle"}, + {0x00030000, nullptr, "TerminateApplication"}, + {0x00040040, nullptr, "TerminateProcess"}, + {0x000500C0, nullptr, "LaunchApplicationFIRM"}, + {0x00060042, nullptr, "SetFIRMParams4A0"}, + {0x00070042, nullptr, "CardUpdateInitialize"}, + {0x00080000, nullptr, "CardUpdateShutdown"}, + {0x000D0140, nullptr, "SetTWLBannerHMAC"}, + {0x000E0000, nullptr, "ShutdownAsync"}, + {0x00100180, nullptr, "RebootSystem"}, + {0x00110100, nullptr, "TerminateTitle"}, + {0x001200C0, nullptr, "SetApplicationCpuTimeLimit"}, + {0x00150140, nullptr, "LaunchApplication"}, + {0x00160000, nullptr, "RebootSystemClean"}, + }; + RegisterHandlers(functions); +} + +NS_S::~NS_S() = default; + +} // namespace NS +} // namespace Service diff --git a/src/core/hle/service/ns_s.h b/src/core/hle/service/ns/ns_s.h similarity index 68% rename from src/core/hle/service/ns_s.h rename to src/core/hle/service/ns/ns_s.h index 90288a5219..660ae453f0 100644 --- a/src/core/hle/service/ns_s.h +++ b/src/core/hle/service/ns/ns_s.h @@ -4,18 +4,17 @@ #pragma once +#include "core/hle/kernel/kernel.h" #include "core/hle/service/service.h" namespace Service { namespace NS { -class NS_S final : public Interface { +/// Interface to "ns:s" service +class NS_S final : public ServiceFramework { public: NS_S(); - - std::string GetPortName() const override { - return "ns:s"; - } + ~NS_S(); }; } // namespace NS diff --git a/src/core/hle/service/ns_s.cpp b/src/core/hle/service/ns_s.cpp deleted file mode 100644 index 215c9aacce..0000000000 --- a/src/core/hle/service/ns_s.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2015 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include "core/hle/service/ns_s.h" - -namespace Service { -namespace NS { - -const Interface::FunctionInfo FunctionTable[] = { - {0x000100C0, nullptr, "LaunchFIRM"}, - {0x000200C0, nullptr, "LaunchTitle"}, - {0x00030000, nullptr, "TerminateApplication"}, - {0x00040040, nullptr, "TerminateProcess"}, - {0x000500C0, nullptr, "LaunchApplicationFIRM"}, - {0x00060042, nullptr, "SetFIRMParams4A0"}, - {0x00070042, nullptr, "CardUpdateInitialize"}, - {0x00080000, nullptr, "CardUpdateShutdown"}, - {0x000D0140, nullptr, "SetTWLBannerHMAC"}, - {0x000E0000, nullptr, "ShutdownAsync"}, - {0x00100180, nullptr, "RebootSystem"}, - {0x00110100, nullptr, "TerminateTitle"}, - {0x001200C0, nullptr, "SetApplicationCpuTimeLimit"}, - {0x00150140, nullptr, "LaunchApplication"}, - {0x00160000, nullptr, "RebootSystemClean"}, -}; - -NS_S::NS_S() { - Register(FunctionTable); -} - -} // namespace NS -} // namespace Service diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index aad950e50d..f267aad740 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -38,7 +38,7 @@ #include "core/hle/service/news/news.h" #include "core/hle/service/nfc/nfc.h" #include "core/hle/service/nim/nim.h" -#include "core/hle/service/ns_s.h" +#include "core/hle/service/ns/ns.h" #include "core/hle/service/nwm/nwm.h" #include "core/hle/service/pm_app.h" #include "core/hle/service/ptm/ptm.h" @@ -215,6 +215,8 @@ void Init() { SM::g_service_manager = std::make_shared(); SM::ServiceManager::InstallInterfaces(SM::g_service_manager); + NS::InstallInterfaces(*SM::g_service_manager); + AddNamedPort(new ERR::ERR_F); FS::ArchiveInit(); @@ -246,7 +248,6 @@ void Init() { AddService(new HTTP::HTTP_C); AddService(new LDR::LDR_RO); AddService(new MIC::MIC_U); - AddService(new NS::NS_S); AddService(new PM::PM_APP); AddService(new SOC::SOC_U); AddService(new SSL::SSL_C); From 6a110ac5f55502aa1330cc4dd09d11a4eb502e1b Mon Sep 17 00:00:00 2001 From: Huw Pascoe Date: Sat, 16 Sep 2017 04:30:35 +0100 Subject: [PATCH 145/195] Fixed framebuffer warning --- .../renderer_opengl/gl_rasterizer.cpp | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 7b0cd1b667..7e09e4712a 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -237,13 +237,24 @@ void RasterizerOpenGL::DrawTriangles() { glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, color_surface != nullptr ? color_surface->texture.handle : 0, 0); - glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, - depth_surface != nullptr ? depth_surface->texture.handle : 0, 0); - bool has_stencil = - regs.framebuffer.framebuffer.depth_format == Pica::FramebufferRegs::DepthFormat::D24S8; - glFramebufferTexture2D( - GL_DRAW_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, - (has_stencil && depth_surface != nullptr) ? depth_surface->texture.handle : 0, 0); + if (depth_surface != nullptr) { + if (regs.framebuffer.framebuffer.depth_format == + Pica::FramebufferRegs::DepthFormat::D24S8) { + // attach both depth and stencil + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, + depth_surface->texture.handle, 0); + } else { + // attach depth + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, + depth_surface->texture.handle, 0); + // clear stencil attachment + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, 0); + } + } else { + // clear both depth and stencil attachment + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, 0, + 0); + } // Sync the viewport // These registers hold half-width and half-height, so must be multiplied by 2 From a234e4c2009b08039d0698cbbcc8595a1f04a615 Mon Sep 17 00:00:00 2001 From: Huw Pascoe Date: Sun, 17 Sep 2017 15:42:45 +0100 Subject: [PATCH 146/195] Improved performance of FromAttributeBuffer Ternary operator is optimized by the compiler whereas std::min() is meant to return a value. I've noticed a 5%-10% emulation speed increase. --- src/video_core/shader/shader.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video_core/shader/shader.cpp b/src/video_core/shader/shader.cpp index e9063e6164..2857d28297 100644 --- a/src/video_core/shader/shader.cpp +++ b/src/video_core/shader/shader.cpp @@ -52,7 +52,8 @@ OutputVertex OutputVertex::FromAttributeBuffer(const RasterizerRegs& regs, // The hardware takes the absolute and saturates vertex colors like this, *before* doing // interpolation for (unsigned i = 0; i < 4; ++i) { - ret.color[i] = float24::FromFloat32(std::fmin(std::fabs(ret.color[i].ToFloat32()), 1.0f)); + float c = std::fabs(ret.color[i].ToFloat32()); + ret.color[i] = float24::FromFloat32(c < 1.0f ? c : 1.0f); } LOG_TRACE(HW_GPU, "Output vertex: pos(%.2f, %.2f, %.2f, %.2f), quat(%.2f, %.2f, %.2f, %.2f), " From 28c726f20545744a3052a3e8a0a3bf5ff95a5042 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Tue, 19 Sep 2017 03:18:26 +0200 Subject: [PATCH 147/195] WebService: Verify username and token (#2930) * WebService: Verify username and token; Log errors in PostJson * Fixup: added docstrings to the functions * Webservice: Added Icons to the verification, imrpved error detection in cpr, fixup nits * fixup: fmt warning --- dist/icons/checked.png | Bin 0 -> 451 bytes dist/icons/failed.png | Bin 0 -> 428 bytes dist/icons/icons.qrc | 6 ++ src/citra/config.cpp | 2 + src/citra/default_ini.h | 2 + src/citra_qt/CMakeLists.txt | 5 +- src/citra_qt/configuration/config.cpp | 6 ++ src/citra_qt/configuration/configure_web.cpp | 58 ++++++++++- src/citra_qt/configuration/configure_web.h | 12 ++- src/citra_qt/configuration/configure_web.ui | 75 ++++++++++---- src/core/settings.h | 1 + src/core/telemetry_session.cpp | 12 +++ src/core/telemetry_session.h | 10 ++ src/web_service/CMakeLists.txt | 2 + src/web_service/verify_login.cpp | 28 +++++ src/web_service/verify_login.h | 24 +++++ src/web_service/web_backend.cpp | 101 ++++++++++++++++--- src/web_service/web_backend.h | 16 +++ 18 files changed, 322 insertions(+), 38 deletions(-) create mode 100644 dist/icons/checked.png create mode 100644 dist/icons/failed.png create mode 100644 dist/icons/icons.qrc create mode 100644 src/web_service/verify_login.cpp create mode 100644 src/web_service/verify_login.h diff --git a/dist/icons/checked.png b/dist/icons/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..c277e6b4043b2b9a7c7388e076d2c493a23272c7 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFs6FCIEGZ*O8WEvzddtoW3>9=dI2@>&B@Y-|CigV zH5qpJZhEF3KkNVbTSpj<`R_Mtiaq4C=GoE8vpl!^uNWC@FfuS;I=b(Fefz2tvKh0i z#r9h=n%@5x^QHcpT-$%+#)@xoZU3j+9sOV4RB=#Z-HTJpEfm_k9gajdcG;`_nO`gL z;tjLI*>;Cn!U3kuIkvwKzW@Iw*@4wv^56Wb_y6xNoXObZm^0yr&VnB@3bntQ?N_BK zBsBhRpV|0OKH$}%wY@xBGtCk_1!gyLzDQRH3*MN#V#ca>)(mk=BS9r{i2um2xoBJfQP1mk25eZFnGH9xvX+x!F(Kj5Cs%;_scAJ#+8bmeU5tzMp4?THa`AIn)^-DEIG0`Juf9tNw`2OrB;Th}u8_g8L?=$PK zjON|E>&T9{E%&Fdz3O5A)8^>hzP6ig%^F=MeY<15zD?OH`$O6#+Pl-L@#iOj2P+R0 ztz?`&@8bH4X$-ze>IU=Q|8=lwc=)B~zqI}FNolOS4Qiqyke<; zyZEiiD^K1XDaWQ+#GJe>)Ew5m;<~fn;ktNJjj16kqn0M_&h_SzQ?75G{KA#kF+meS^wGGzi@eo(-y@(1_lNOPgg&ebxsLQ0N9nj?f?J) literal 0 HcmV?d00001 diff --git a/dist/icons/icons.qrc b/dist/icons/icons.qrc new file mode 100644 index 0000000000..f0c44862f7 --- /dev/null +++ b/dist/icons/icons.qrc @@ -0,0 +1,6 @@ + + + checked.png + failed.png + + diff --git a/src/citra/config.cpp b/src/citra/config.cpp index a48ef08c73..45c28ad096 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -162,6 +162,8 @@ void Config::ReadValues() { sdl2_config->GetBoolean("WebService", "enable_telemetry", true); Settings::values.telemetry_endpoint_url = sdl2_config->Get( "WebService", "telemetry_endpoint_url", "https://services.citra-emu.org/api/telemetry"); + Settings::values.verify_endpoint_url = sdl2_config->Get( + "WebService", "verify_endpoint_url", "https://services.citra-emu.org/api/profile"); Settings::values.citra_username = sdl2_config->Get("WebService", "citra_username", ""); Settings::values.citra_token = sdl2_config->Get("WebService", "citra_token", ""); } diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index 4b13a2e1b0..59faf773ff 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -185,6 +185,8 @@ gdbstub_port=24689 enable_telemetry = # Endpoint URL for submitting telemetry data telemetry_endpoint_url = https://services.citra-emu.org/api/telemetry +# Endpoint URL to verify the username and token +verify_endpoint_url = https://services.citra-emu.org/api/profile # Username and token for Citra Web Service # See https://services.citra-emu.org/ for more info citra_username = diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt index e0a19fd9e7..add7566c24 100644 --- a/src/citra_qt/CMakeLists.txt +++ b/src/citra_qt/CMakeLists.txt @@ -79,6 +79,7 @@ set(UIS main.ui ) +file(GLOB_RECURSE ICONS ${CMAKE_SOURCE_DIR}/dist/icons/*) file(GLOB_RECURSE THEMES ${CMAKE_SOURCE_DIR}/dist/qt_themes/*) create_directory_groups(${SRCS} ${HEADERS} ${UIS}) @@ -92,10 +93,10 @@ endif() if (APPLE) set(MACOSX_ICON "../../dist/citra.icns") set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - add_executable(citra-qt MACOSX_BUNDLE ${SRCS} ${HEADERS} ${UI_HDRS} ${THEMES} ${MACOSX_ICON}) + add_executable(citra-qt MACOSX_BUNDLE ${SRCS} ${HEADERS} ${UI_HDRS} ${ICONS} ${THEMES} ${MACOSX_ICON}) set_target_properties(citra-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist) else() - add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS} ${THEMES}) + add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS} ${ICONS} ${THEMES}) endif() target_link_libraries(citra-qt PRIVATE audio_core common core input_common network video_core) target_link_libraries(citra-qt PRIVATE Boost::boost glad nihstro-headers Qt5::OpenGL Qt5::Widgets) diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index ef114aad3b..5261f4c4cc 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -146,6 +146,10 @@ void Config::ReadValues() { qt_config->value("telemetry_endpoint_url", "https://services.citra-emu.org/api/telemetry") .toString() .toStdString(); + Settings::values.verify_endpoint_url = + qt_config->value("verify_endpoint_url", "https://services.citra-emu.org/api/profile") + .toString() + .toStdString(); Settings::values.citra_username = qt_config->value("citra_username").toString().toStdString(); Settings::values.citra_token = qt_config->value("citra_token").toString().toStdString(); qt_config->endGroup(); @@ -293,6 +297,8 @@ void Config::SaveValues() { qt_config->setValue("enable_telemetry", Settings::values.enable_telemetry); qt_config->setValue("telemetry_endpoint_url", QString::fromStdString(Settings::values.telemetry_endpoint_url)); + qt_config->setValue("verify_endpoint_url", + QString::fromStdString(Settings::values.verify_endpoint_url)); qt_config->setValue("citra_username", QString::fromStdString(Settings::values.citra_username)); qt_config->setValue("citra_token", QString::fromStdString(Settings::values.citra_token)); qt_config->endGroup(); diff --git a/src/citra_qt/configuration/configure_web.cpp b/src/citra_qt/configuration/configure_web.cpp index 8715fb0181..38ce19c0fe 100644 --- a/src/citra_qt/configuration/configure_web.cpp +++ b/src/citra_qt/configuration/configure_web.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include "citra_qt/configuration/configure_web.h" #include "core/settings.h" #include "core/telemetry_session.h" @@ -11,7 +12,9 @@ ConfigureWeb::ConfigureWeb(QWidget* parent) : QWidget(parent), ui(std::make_unique()) { ui->setupUi(this); connect(ui->button_regenerate_telemetry_id, &QPushButton::clicked, this, - &ConfigureWeb::refreshTelemetryID); + &ConfigureWeb::RefreshTelemetryID); + connect(ui->button_verify_login, &QPushButton::clicked, this, &ConfigureWeb::VerifyLogin); + connect(this, &ConfigureWeb::LoginVerified, this, &ConfigureWeb::OnLoginVerified); this->setConfiguration(); } @@ -34,19 +37,66 @@ void ConfigureWeb::setConfiguration() { ui->toggle_telemetry->setChecked(Settings::values.enable_telemetry); ui->edit_username->setText(QString::fromStdString(Settings::values.citra_username)); ui->edit_token->setText(QString::fromStdString(Settings::values.citra_token)); + // Connect after setting the values, to avoid calling OnLoginChanged now + connect(ui->edit_token, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged); + connect(ui->edit_username, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged); ui->label_telemetry_id->setText("Telemetry ID: 0x" + QString::number(Core::GetTelemetryId(), 16).toUpper()); + user_verified = true; } void ConfigureWeb::applyConfiguration() { Settings::values.enable_telemetry = ui->toggle_telemetry->isChecked(); - Settings::values.citra_username = ui->edit_username->text().toStdString(); - Settings::values.citra_token = ui->edit_token->text().toStdString(); + if (user_verified) { + Settings::values.citra_username = ui->edit_username->text().toStdString(); + Settings::values.citra_token = ui->edit_token->text().toStdString(); + } else { + QMessageBox::warning(this, tr("Username and token not verfied"), + tr("Username and token were not verified. The changes to your " + "username and/or token have not been saved.")); + } Settings::Apply(); } -void ConfigureWeb::refreshTelemetryID() { +void ConfigureWeb::RefreshTelemetryID() { const u64 new_telemetry_id{Core::RegenerateTelemetryId()}; ui->label_telemetry_id->setText("Telemetry ID: 0x" + QString::number(new_telemetry_id, 16).toUpper()); } + +void ConfigureWeb::OnLoginChanged() { + if (ui->edit_username->text().isEmpty() && ui->edit_token->text().isEmpty()) { + user_verified = true; + ui->label_username_verified->setPixmap(QPixmap(":/icons/checked.png")); + ui->label_token_verified->setPixmap(QPixmap(":/icons/checked.png")); + } else { + user_verified = false; + ui->label_username_verified->setPixmap(QPixmap(":/icons/failed.png")); + ui->label_token_verified->setPixmap(QPixmap(":/icons/failed.png")); + } +} + +void ConfigureWeb::VerifyLogin() { + verified = + Core::VerifyLogin(ui->edit_username->text().toStdString(), + ui->edit_token->text().toStdString(), [&]() { emit LoginVerified(); }); + ui->button_verify_login->setDisabled(true); + ui->button_verify_login->setText(tr("Verifying")); +} + +void ConfigureWeb::OnLoginVerified() { + ui->button_verify_login->setEnabled(true); + ui->button_verify_login->setText(tr("Verify")); + if (verified.get()) { + user_verified = true; + ui->label_username_verified->setPixmap(QPixmap(":/icons/checked.png")); + ui->label_token_verified->setPixmap(QPixmap(":/icons/checked.png")); + } else { + ui->label_username_verified->setPixmap(QPixmap(":/icons/failed.png")); + ui->label_token_verified->setPixmap(QPixmap(":/icons/failed.png")); + QMessageBox::critical( + this, tr("Verification failed"), + tr("Verification failed. Check that you have entered your username and token " + "correctly, and that your internet connection is working.")); + } +} diff --git a/src/citra_qt/configuration/configure_web.h b/src/citra_qt/configuration/configure_web.h index 20bc254b90..ad2d58f6e1 100644 --- a/src/citra_qt/configuration/configure_web.h +++ b/src/citra_qt/configuration/configure_web.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include @@ -21,10 +22,19 @@ public: void applyConfiguration(); public slots: - void refreshTelemetryID(); + void RefreshTelemetryID(); + void OnLoginChanged(); + void VerifyLogin(); + void OnLoginVerified(); + +signals: + void LoginVerified(); private: void setConfiguration(); + bool user_verified = true; + std::future verified; + std::unique_ptr ui; }; diff --git a/src/citra_qt/configuration/configure_web.ui b/src/citra_qt/configuration/configure_web.ui index d8d283fad4..dd996ab62c 100644 --- a/src/citra_qt/configuration/configure_web.ui +++ b/src/citra_qt/configuration/configure_web.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 926 + 561
    @@ -31,14 +31,30 @@ - - + + + + + 0 + 0 + + + + Qt::RightToLeft + - Username: + Verify - + + + + Sign up + + + + 36 @@ -52,7 +68,22 @@ - + + + + + + + + Username: + + + + + + + + 36 @@ -62,13 +93,6 @@ - - - - Sign up - - - @@ -76,6 +100,19 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -105,17 +142,17 @@ - - Telemetry ID: - + + Telemetry ID: + - 0 - 0 + 0 + 0 diff --git a/src/core/settings.h b/src/core/settings.h index 024f146666..8d78cb424d 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -133,6 +133,7 @@ struct Values { // WebService bool enable_telemetry; std::string telemetry_endpoint_url; + std::string verify_endpoint_url; std::string citra_username; std::string citra_token; } extern values; diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 104a16cc9e..ca517ff447 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -15,6 +15,7 @@ #ifdef ENABLE_WEB_SERVICE #include "web_service/telemetry_json.h" +#include "web_service/verify_login.h" #endif namespace Core { @@ -75,6 +76,17 @@ u64 RegenerateTelemetryId() { return new_telemetry_id; } +std::future VerifyLogin(std::string username, std::string token, std::function func) { +#ifdef ENABLE_WEB_SERVICE + return WebService::VerifyLogin(username, token, Settings::values.verify_endpoint_url, func); +#else + return std::async(std::launch::async, [func{std::move(func)}]() { + func(); + return false; + }); +#endif +} + TelemetrySession::TelemetrySession() { #ifdef ENABLE_WEB_SERVICE if (Settings::values.enable_telemetry) { diff --git a/src/core/telemetry_session.h b/src/core/telemetry_session.h index 65613daae4..550c6ea2d7 100644 --- a/src/core/telemetry_session.h +++ b/src/core/telemetry_session.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include "common/telemetry.h" @@ -47,4 +48,13 @@ u64 GetTelemetryId(); */ u64 RegenerateTelemetryId(); +/** + * Verifies the username and token. + * @param username Citra username to use for authentication. + * @param token Citra token to use for authentication. + * @param func A function that gets exectued when the verification is finished + * @returns Future with bool indicating whether the verification succeeded + */ +std::future VerifyLogin(std::string username, std::string token, std::function func); + } // namespace Core diff --git a/src/web_service/CMakeLists.txt b/src/web_service/CMakeLists.txt index 334d82a8ab..c938118920 100644 --- a/src/web_service/CMakeLists.txt +++ b/src/web_service/CMakeLists.txt @@ -1,10 +1,12 @@ set(SRCS telemetry_json.cpp + verify_login.cpp web_backend.cpp ) set(HEADERS telemetry_json.h + verify_login.h web_backend.h ) diff --git a/src/web_service/verify_login.cpp b/src/web_service/verify_login.cpp new file mode 100644 index 0000000000..1bc3b5afe9 --- /dev/null +++ b/src/web_service/verify_login.cpp @@ -0,0 +1,28 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include "web_service/verify_login.h" +#include "web_service/web_backend.h" + +namespace WebService { + +std::future VerifyLogin(std::string& username, std::string& token, + const std::string& endpoint_url, std::function func) { + auto get_func = [func, username](const std::string& reply) -> bool { + func(); + if (reply.empty()) + return false; + nlohmann::json json = nlohmann::json::parse(reply); + std::string result; + try { + result = json["username"]; + } catch (const nlohmann::detail::out_of_range&) { + } + return result == username; + }; + return GetJson(get_func, endpoint_url, false, username, token); +} + +} // namespace WebService diff --git a/src/web_service/verify_login.h b/src/web_service/verify_login.h new file mode 100644 index 0000000000..303f5dbbca --- /dev/null +++ b/src/web_service/verify_login.h @@ -0,0 +1,24 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include + +namespace WebService { + +/** + * Checks if username and token is valid + * @param username Citra username to use for authentication. + * @param token Citra token to use for authentication. + * @param endpoint_url URL of the services.citra-emu.org endpoint. + * @param func A function that gets exectued when the verification is finished + * @returns Future with bool indicating whether the verification succeeded + */ +std::future VerifyLogin(std::string& username, std::string& token, + const std::string& endpoint_url, std::function func); + +} // namespace WebService diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp index d28a3f757f..b17d82f9cb 100644 --- a/src/web_service/web_backend.cpp +++ b/src/web_service/web_backend.cpp @@ -18,6 +18,19 @@ static constexpr char API_VERSION[]{"1"}; static std::unique_ptr g_session; +void Win32WSAStartup() { +#ifdef _WIN32 + // On Windows, CPR/libcurl does not properly initialize Winsock. The below code is used to + // initialize Winsock globally, which fixes this problem. Without this, only the first CPR + // session will properly be created, and subsequent ones will fail. + WSADATA wsa_data; + const int wsa_result{WSAStartup(MAKEWORD(2, 2), &wsa_data)}; + if (wsa_result) { + LOG_CRITICAL(WebService, "WSAStartup failed: %d", wsa_result); + } +#endif +} + void PostJson(const std::string& url, const std::string& data, bool allow_anonymous, const std::string& username, const std::string& token) { if (url.empty()) { @@ -31,16 +44,7 @@ void PostJson(const std::string& url, const std::string& data, bool allow_anonym return; } -#ifdef _WIN32 - // On Windows, CPR/libcurl does not properly initialize Winsock. The below code is used to - // initialize Winsock globally, which fixes this problem. Without this, only the first CPR - // session will properly be created, and subsequent ones will fail. - WSADATA wsa_data; - const int wsa_result{WSAStartup(MAKEWORD(2, 2), &wsa_data)}; - if (wsa_result) { - LOG_CRITICAL(WebService, "WSAStartup failed: %d", wsa_result); - } -#endif + Win32WSAStartup(); // Built request header cpr::Header header; @@ -56,8 +60,81 @@ void PostJson(const std::string& url, const std::string& data, bool allow_anonym } // Post JSON asynchronously - static cpr::AsyncResponse future; - future = cpr::PostAsync(cpr::Url{url.c_str()}, cpr::Body{data.c_str()}, header); + static std::future future; + future = cpr::PostCallback( + [](cpr::Response r) { + if (r.error) { + LOG_ERROR(WebService, "POST returned cpr error: %u:%s", + static_cast(r.error.code), r.error.message.c_str()); + return; + } + if (r.status_code >= 400) { + LOG_ERROR(WebService, "POST returned error status code: %u", r.status_code); + return; + } + if (r.header["content-type"].find("application/json") == std::string::npos) { + LOG_ERROR(WebService, "POST returned wrong content: %s", + r.header["content-type"].c_str()); + return; + } + }, + cpr::Url{url}, cpr::Body{data}, header); } +template +std::future GetJson(std::function func, const std::string& url, + bool allow_anonymous, const std::string& username, + const std::string& token) { + if (url.empty()) { + LOG_ERROR(WebService, "URL is invalid"); + return std::async(std::launch::async, [func{std::move(func)}]() { return func(""); }); + } + + const bool are_credentials_provided{!token.empty() && !username.empty()}; + if (!allow_anonymous && !are_credentials_provided) { + LOG_ERROR(WebService, "Credentials must be provided for authenticated requests"); + return std::async(std::launch::async, [func{std::move(func)}]() { return func(""); }); + } + + Win32WSAStartup(); + + // Built request header + cpr::Header header; + if (are_credentials_provided) { + // Authenticated request if credentials are provided + header = {{"Content-Type", "application/json"}, + {"x-username", username.c_str()}, + {"x-token", token.c_str()}, + {"api-version", API_VERSION}}; + } else { + // Otherwise, anonymous request + header = cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}; + } + + // Get JSON asynchronously + return cpr::GetCallback( + [func{std::move(func)}](cpr::Response r) { + if (r.error) { + LOG_ERROR(WebService, "GET returned cpr error: %u:%s", + static_cast(r.error.code), r.error.message.c_str()); + return func(""); + } + if (r.status_code >= 400) { + LOG_ERROR(WebService, "GET returned error code: %u", r.status_code); + return func(""); + } + if (r.header["content-type"].find("application/json") == std::string::npos) { + LOG_ERROR(WebService, "GET returned wrong content: %s", + r.header["content-type"].c_str()); + return func(""); + } + return func(r.text); + }, + cpr::Url{url}, header); +} + +template std::future GetJson(std::function func, + const std::string& url, bool allow_anonymous, + const std::string& username, const std::string& token); + } // namespace WebService diff --git a/src/web_service/web_backend.h b/src/web_service/web_backend.h index d171003986..a63c75d133 100644 --- a/src/web_service/web_backend.h +++ b/src/web_service/web_backend.h @@ -4,6 +4,8 @@ #pragma once +#include +#include #include #include "common/common_types.h" @@ -20,4 +22,18 @@ namespace WebService { void PostJson(const std::string& url, const std::string& data, bool allow_anonymous, const std::string& username = {}, const std::string& token = {}); +/** + * Gets JSON from services.citra-emu.org. + * @param func A function that gets exectued when the json as a string is received + * @param url URL of the services.citra-emu.org endpoint to post data to. + * @param allow_anonymous If true, allow anonymous unauthenticated requests. + * @param username Citra username to use for authentication. + * @param token Citra token to use for authentication. + * @return future that holds the return value T of the func + */ +template +std::future GetJson(std::function func, const std::string& url, + bool allow_anonymous, const std::string& username = {}, + const std::string& token = {}); + } // namespace WebService From 1aa66ed5eda649ade3abb1781e74592cd10b6d98 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Tue, 19 Sep 2017 10:28:57 +0200 Subject: [PATCH 148/195] WebService: Set USE_SYSTEM_CURL for travis linux builds --- .travis-build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis-build-docker.sh b/.travis-build-docker.sh index ca6fae42b3..01249ace00 100644 --- a/.travis-build-docker.sh +++ b/.travis-build-docker.sh @@ -14,7 +14,7 @@ echo y | sh cmake-3.9.0-Linux-x86_64.sh --prefix=cmake export PATH=/citra/cmake/cmake-3.9.0-Linux-x86_64/bin:$PATH mkdir build && cd build -cmake .. -DCMAKE_BUILD_TYPE=Release +cmake .. -DUSE_SYSTEM_CURL=ON -DCMAKE_BUILD_TYPE=Release make -j4 ctest -VV -C Release From 19d41dcc6e6892125f1123b34db3dc284f04b744 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Sat, 23 Sep 2017 09:28:20 -0600 Subject: [PATCH 149/195] Remove pipeline.gpu_mode and fix minor issues --- src/video_core/command_processor.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index fff159058d..3ab4af3747 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -245,7 +245,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { g_state.geometry_pipeline.SubmitVertex(output); // TODO: If drawing after every immediate mode triangle kills performance, - // change it to flush triangles whenever a draing config register changes + // change it to flush triangles whenever a drawing config register changes // See: https://github.com/citra-emu/citra/pull/2866#issuecomment-327011550 VideoCore::g_renderer->Rasterizer()->DrawTriangles(); if (g_debug_context) { @@ -259,16 +259,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { } case PICA_REG_INDEX(pipeline.gpu_mode): - if (regs.pipeline.gpu_mode == PipelineRegs::GPUMode::Configuring) { - MICROPROFILE_SCOPE(GPU_Drawing); - - // Draw immediate mode triangles when GPU Mode is set to GPUMode::Configuring - VideoCore::g_renderer->Rasterizer()->DrawTriangles(); - - if (g_debug_context) { - g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); - } - } + // This register likely just enables vertex processing and doesn't need any special handling break; case PICA_REG_INDEX_WORKAROUND(pipeline.command_buffer.trigger[0], 0x23c): @@ -407,7 +398,6 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { range.second, range.first); } - MICROPROFILE_SCOPE(GPU_Drawing); VideoCore::g_renderer->Rasterizer()->DrawTriangles(); if (g_debug_context) { g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); From 0b33e36292ca44151da32c7866e4c4394add564b Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 24 Sep 2017 00:12:58 -0500 Subject: [PATCH 150/195] HLE/SRV: Implemented RegisterService. Now system modules can do more than just crash immediately on startup. --- src/core/hle/service/sm/sm.cpp | 4 ++++ src/core/hle/service/sm/sm.h | 3 +++ src/core/hle/service/sm/srv.cpp | 26 +++++++++++++++++++++++++- src/core/hle/service/sm/srv.h | 1 + 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp index 5e7fc68f94..854ab9a054 100644 --- a/src/core/hle/service/sm/sm.cpp +++ b/src/core/hle/service/sm/sm.cpp @@ -36,6 +36,10 @@ ResultVal> ServiceManager::RegisterService std::string name, unsigned int max_sessions) { CASCADE_CODE(ValidateServiceName(name)); + + if (registered_services.find(name) != registered_services.end()) + return ERR_ALREADY_REGISTERED; + Kernel::SharedPtr server_port; Kernel::SharedPtr client_port; std::tie(server_port, client_port) = Kernel::ServerPort::CreatePortPair(max_sessions, name); diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index 8f0dbf2db4..9f60a79654 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h @@ -32,6 +32,9 @@ constexpr ResultCode ERR_ACCESS_DENIED(6, ErrorModule::SRV, ErrorSummary::Invali ErrorLevel::Permanent); // 0xD8E06406 constexpr ResultCode ERR_NAME_CONTAINS_NUL(7, ErrorModule::SRV, ErrorSummary::WrongArgument, ErrorLevel::Permanent); // 0xD9006407 +constexpr ResultCode ERR_ALREADY_REGISTERED(ErrorDescription::AlreadyExists, ErrorModule::OS, + ErrorSummary::WrongArgument, + ErrorLevel::Permanent); // 0xD9001BFC class ServiceManager { public: diff --git a/src/core/hle/service/sm/srv.cpp b/src/core/hle/service/sm/srv.cpp index 352941e697..5c955cf541 100644 --- a/src/core/hle/service/sm/srv.cpp +++ b/src/core/hle/service/sm/srv.cpp @@ -13,6 +13,7 @@ #include "core/hle/kernel/errors.h" #include "core/hle/kernel/hle_ipc.h" #include "core/hle/kernel/semaphore.h" +#include "core/hle/kernel/server_port.h" #include "core/hle/kernel/server_session.h" #include "core/hle/service/sm/sm.h" #include "core/hle/service/sm/srv.h" @@ -184,12 +185,35 @@ void SRV::PublishToSubscriber(Kernel::HLERequestContext& ctx) { flags); } +void SRV::RegisterService(Kernel::HLERequestContext& ctx) { + IPC::RequestParser rp(ctx, 0x3, 4, 0); + + auto name_buf = rp.PopRaw>(); + size_t name_len = rp.Pop(); + u32 max_sessions = rp.Pop(); + + std::string name(name_buf.data(), std::min(name_len, name_buf.size())); + + auto port = service_manager->RegisterService(name, max_sessions); + + if (port.Failed()) { + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + rb.Push(port.Code()); + LOG_ERROR(Service_SRV, "called service=%s -> error 0x%08X", name.c_str(), port.Code().raw); + return; + } + + IPC::RequestBuilder rb = rp.MakeBuilder(1, 2); + rb.Push(RESULT_SUCCESS); + rb.PushObjects(port.Unwrap()); +} + SRV::SRV(std::shared_ptr service_manager) : ServiceFramework("srv:", 4), service_manager(std::move(service_manager)) { static const FunctionInfo functions[] = { {0x00010002, &SRV::RegisterClient, "RegisterClient"}, {0x00020000, &SRV::EnableNotification, "EnableNotification"}, - {0x00030100, nullptr, "RegisterService"}, + {0x00030100, &SRV::RegisterService, "RegisterService"}, {0x000400C0, nullptr, "UnregisterService"}, {0x00050100, &SRV::GetServiceHandle, "GetServiceHandle"}, {0x000600C2, nullptr, "RegisterPort"}, diff --git a/src/core/hle/service/sm/srv.h b/src/core/hle/service/sm/srv.h index 75cca5184b..aad839563e 100644 --- a/src/core/hle/service/sm/srv.h +++ b/src/core/hle/service/sm/srv.h @@ -28,6 +28,7 @@ private: void Subscribe(Kernel::HLERequestContext& ctx); void Unsubscribe(Kernel::HLERequestContext& ctx); void PublishToSubscriber(Kernel::HLERequestContext& ctx); + void RegisterService(Kernel::HLERequestContext& ctx); std::shared_ptr service_manager; Kernel::SharedPtr notification_semaphore; From b57d58c0dc94857d28a3ef197d9656f0fbad8e08 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 23 Sep 2017 13:59:07 -0500 Subject: [PATCH 151/195] HLE/APT: Prepare the APT Wakeup parameter when the game calls Initialize We need to know what is being run so we can set the APT parameter destination AppId correctly. Delaying the preparation of the parameter until we know which AppId is running lets us support booting both the Home Menu and normal game Applications. --- src/core/hle/service/apt/apt.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 8c0ba73f2a..ea964bab19 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -65,6 +65,7 @@ union AppletAttributes { u32 raw; BitField<0, 3, u32> applet_pos; + BitField<29, 1, u32> is_home_menu; AppletAttributes() : raw(0) {} AppletAttributes(u32 attributes) : raw(attributes) {} @@ -158,6 +159,11 @@ static AppletSlotData* GetAppletSlotData(AppletAttributes attributes) { if (slot == AppletSlot::Error) return nullptr; + // The Home Menu is a system applet, however, it has its own applet slot so that it can run + // concurrently with other system applets. + if (slot == AppletSlot::SystemApplet && attributes.is_home_menu) + return &applet_slots[static_cast(AppletSlot::HomeMenu)]; + return &applet_slots[static_cast(slot)]; } @@ -197,6 +203,19 @@ void Initialize(Service::Interface* self) { rb.Push(RESULT_SUCCESS); rb.PushCopyHandles(Kernel::g_handle_table.Create(slot_data->notification_event).Unwrap(), Kernel::g_handle_table.Create(slot_data->parameter_event).Unwrap()); + + if (slot_data->applet_id == AppletId::Application || + slot_data->applet_id == AppletId::HomeMenu) { + // Initialize the APT parameter to wake up the application. + next_parameter.emplace(); + next_parameter->signal = static_cast(SignalType::Wakeup); + next_parameter->sender_id = static_cast(AppletId::None); + next_parameter->destination_id = app_id; + // Not signaling the parameter event will cause the application (or Home Menu) to hang + // during startup. In the real console, it is usually the Kernel and Home Menu who cause NS + // to signal the HomeMenu and Application parameter events, respectively. + slot_data->parameter_event->Signal(); + } } static u32 DecompressLZ11(const u8* in, u8* out) { @@ -1041,12 +1060,6 @@ void Init() { slot_data.parameter_event = Kernel::Event::Create(Kernel::ResetType::OneShot, "APT:Parameter"); } - - // Initialize the parameter to wake up the application. - next_parameter.emplace(); - next_parameter->signal = static_cast(SignalType::Wakeup); - next_parameter->destination_id = static_cast(AppletId::Application); - applet_slots[static_cast(AppletSlot::Application)].parameter_event->Signal(); } void Shutdown() { From 7096f01c14ff76aefd829ae449a8ab5d474eacf7 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 23 Sep 2017 14:01:04 -0500 Subject: [PATCH 152/195] HLE/APT: Always return an error from PrepareToStartNewestHomeMenu so that the Home Menu doesn't try to reboot the system. As per 3dbrew: "During Home Menu start-up it uses APT:PrepareToStartNewestHomeMenu. If that doesn't return an error(normally NS returns 0xC8A0CFFC for that), Home Menu starts a hardware reboot with APT:StartNewestHomeMenu etc. " --- src/core/hle/service/apt/apt.cpp | 14 ++++++++++++++ src/core/hle/service/apt/apt.h | 10 ++++++++++ src/core/hle/service/apt/apt_s.cpp | 4 ++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index ea964bab19..490c146059 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -776,6 +776,20 @@ void PrepareToStartLibraryApplet(Service::Interface* self) { LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); } +void PrepareToStartNewestHomeMenu(Service::Interface* self) { + IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x1A, 0, 0); // 0x1A0000 + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + + // TODO(Subv): This command can only be called by a System Applet (return 0xC8A0CC04 otherwise). + + // This command must return an error when called, otherwise the Home Menu will try to reboot the + // system. + rb.Push(ResultCode(ErrorDescription::AlreadyExists, ErrorModule::Applet, + ErrorSummary::InvalidState, ErrorLevel::Status)); + + LOG_DEBUG(Service_APT, "called"); +} + void PreloadLibraryApplet(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x16, 1, 0); // 0x160040 AppletId applet_id = static_cast(rp.Pop()); diff --git a/src/core/hle/service/apt/apt.h b/src/core/hle/service/apt/apt.h index 96b28b438a..7b79e1f3e4 100644 --- a/src/core/hle/service/apt/apt.h +++ b/src/core/hle/service/apt/apt.h @@ -419,6 +419,16 @@ void GetAppCpuTimeLimit(Service::Interface* self); */ void PrepareToStartLibraryApplet(Service::Interface* self); +/** + * APT::PrepareToStartNewestHomeMenu service function + * Inputs: + * 0 : Command header [0x001A0000] + * Outputs: + * 0 : Return header + * 1 : Result of function + */ +void PrepareToStartNewestHomeMenu(Service::Interface* self); + /** * APT::PreloadLibraryApplet service function * Inputs: diff --git a/src/core/hle/service/apt/apt_s.cpp b/src/core/hle/service/apt/apt_s.cpp index ec5668d05f..fe1d21fff6 100644 --- a/src/core/hle/service/apt/apt_s.cpp +++ b/src/core/hle/service/apt/apt_s.cpp @@ -17,7 +17,7 @@ const Interface::FunctionInfo FunctionTable[] = { {0x00060040, GetAppletInfo, "GetAppletInfo"}, {0x00070000, nullptr, "GetLastSignaledAppletId"}, {0x00080000, nullptr, "CountRegisteredApplet"}, - {0x00090040, nullptr, "IsRegistered"}, + {0x00090040, IsRegistered, "IsRegistered"}, {0x000A0040, nullptr, "GetAttribute"}, {0x000B0040, InquireNotification, "InquireNotification"}, {0x000C0104, nullptr, "SendParameter"}, @@ -34,7 +34,7 @@ const Interface::FunctionInfo FunctionTable[] = { {0x00170040, nullptr, "FinishPreloadingLibraryApplet"}, {0x00180040, PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, {0x00190040, nullptr, "PrepareToStartSystemApplet"}, - {0x001A0000, nullptr, "PrepareToStartNewestHomeMenu"}, + {0x001A0000, PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, {0x001B00C4, nullptr, "StartApplication"}, {0x001C0000, nullptr, "WakeupApplication"}, {0x001D0000, nullptr, "CancelApplication"}, From 7117fcc02452c264f39d270188e6d2123a6e26ac Mon Sep 17 00:00:00 2001 From: wwylele Date: Sun, 24 Sep 2017 17:52:11 +0300 Subject: [PATCH 153/195] citra-qt: fix some untranslated strings --- .../configuration/configure_graphics.ui | 22 +++++++++---------- .../configuration/configure_system.cpp | 3 ++- src/citra_qt/configuration/configure_web.cpp | 18 +++++++-------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/citra_qt/configuration/configure_graphics.ui b/src/citra_qt/configuration/configure_graphics.ui index b340149d52..5667b14b61 100644 --- a/src/citra_qt/configuration/configure_graphics.ui +++ b/src/citra_qt/configuration/configure_graphics.ui @@ -63,57 +63,57 @@ - Auto (Window Size) + Auto (Window Size) - Native (400x240) + Native (400x240) - 2x Native (800x480) + 2x Native (800x480) - 3x Native (1200x720) + 3x Native (1200x720) - 4x Native (1600x960) + 4x Native (1600x960) - 5x Native (2000x1200) + 5x Native (2000x1200) - 6x Native (2400x1440) + 6x Native (2400x1440) - 7x Native (2800x1680) + 7x Native (2800x1680) - 8x Native (3200x1920) + 8x Native (3200x1920) - 9x Native (3600x2160) + 9x Native (3600x2160) - 10x Native (4000x2400) + 10x Native (4000x2400) diff --git a/src/citra_qt/configuration/configure_system.cpp b/src/citra_qt/configuration/configure_system.cpp index 9b1e6711d5..88a067c12f 100644 --- a/src/citra_qt/configuration/configure_system.cpp +++ b/src/citra_qt/configuration/configure_system.cpp @@ -78,7 +78,8 @@ void ConfigureSystem::ReadSystemSettings() { // set the console id u64 console_id = Service::CFG::GetConsoleUniqueId(); - ui->label_console_id->setText("Console ID: 0x" + QString::number(console_id, 16).toUpper()); + ui->label_console_id->setText( + tr("Console ID: 0x%1").arg(QString::number(console_id, 16).toUpper())); } void ConfigureSystem::applyConfiguration() { diff --git a/src/citra_qt/configuration/configure_web.cpp b/src/citra_qt/configuration/configure_web.cpp index 38ce19c0fe..bf8c21ac73 100644 --- a/src/citra_qt/configuration/configure_web.cpp +++ b/src/citra_qt/configuration/configure_web.cpp @@ -24,15 +24,15 @@ ConfigureWeb::~ConfigureWeb() {} void ConfigureWeb::setConfiguration() { ui->web_credentials_disclaimer->setWordWrap(true); ui->telemetry_learn_more->setOpenExternalLinks(true); - ui->telemetry_learn_more->setText("Learn more"); + ui->telemetry_learn_more->setText(tr("Learn more")); ui->web_signup_link->setOpenExternalLinks(true); - ui->web_signup_link->setText("Sign up"); + ui->web_signup_link->setText(tr("Sign up")); ui->web_token_info_link->setOpenExternalLinks(true); ui->web_token_info_link->setText( - "What is my token?"); + tr("What is my token?")); ui->toggle_telemetry->setChecked(Settings::values.enable_telemetry); ui->edit_username->setText(QString::fromStdString(Settings::values.citra_username)); @@ -40,8 +40,8 @@ void ConfigureWeb::setConfiguration() { // Connect after setting the values, to avoid calling OnLoginChanged now connect(ui->edit_token, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged); connect(ui->edit_username, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged); - ui->label_telemetry_id->setText("Telemetry ID: 0x" + - QString::number(Core::GetTelemetryId(), 16).toUpper()); + ui->label_telemetry_id->setText( + tr("Telemetry ID: 0x%1").arg(QString::number(Core::GetTelemetryId(), 16).toUpper())); user_verified = true; } @@ -60,8 +60,8 @@ void ConfigureWeb::applyConfiguration() { void ConfigureWeb::RefreshTelemetryID() { const u64 new_telemetry_id{Core::RegenerateTelemetryId()}; - ui->label_telemetry_id->setText("Telemetry ID: 0x" + - QString::number(new_telemetry_id, 16).toUpper()); + ui->label_telemetry_id->setText( + tr("Telemetry ID: 0x%1").arg(QString::number(new_telemetry_id, 16).toUpper())); } void ConfigureWeb::OnLoginChanged() { From 876aa82c29d2e17f8b5a4f74155971cba78c00b6 Mon Sep 17 00:00:00 2001 From: Huw Pascoe Date: Sun, 24 Sep 2017 22:24:45 +0100 Subject: [PATCH 154/195] Optimized Morton --- src/video_core/utils.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/video_core/utils.h b/src/video_core/utils.h index 7ce83a055f..d8567f3148 100644 --- a/src/video_core/utils.h +++ b/src/video_core/utils.h @@ -8,17 +8,11 @@ namespace VideoCore { -/** - * Interleave the lower 3 bits of each coordinate to get the intra-block offsets, which are - * arranged in a Z-order curve. More details on the bit manipulation at: - * https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/ - */ +// 8x8 Z-Order coordinate from 2D coordinates static inline u32 MortonInterleave(u32 x, u32 y) { - u32 i = (x & 7) | ((y & 7) << 8); // ---- -210 - i = (i ^ (i << 2)) & 0x1313; // ---2 --10 - i = (i ^ (i << 1)) & 0x1515; // ---2 -1-0 - i = (i | (i >> 7)) & 0x3F; - return i; + static const u32 xlut[] = {0x00, 0x01, 0x04, 0x05, 0x10, 0x11, 0x14, 0x15}; + static const u32 ylut[] = {0x00, 0x02, 0x08, 0x0a, 0x20, 0x22, 0x28, 0x2a}; + return xlut[x % 8] + ylut[y % 8]; } /** From c02bbb7030efd072511bd0051a44d9e503016f74 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 24 Sep 2017 22:42:42 +0100 Subject: [PATCH 155/195] memory: Add GetCurrentPageTable/SetCurrentPageTable Don't expose Memory::current_page_table as a global. --- src/core/hle/kernel/thread.cpp | 11 ++++------- src/core/loader/3dsx.cpp | 2 +- src/core/loader/elf.cpp | 2 +- src/core/loader/ncch.cpp | 2 +- src/core/memory.cpp | 10 +++++++++- src/core/memory.h | 3 ++- src/tests/core/arm/arm_test_common.cpp | 2 +- 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 324415a367..61378211fc 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -178,16 +178,13 @@ static void SwitchContext(Thread* new_thread) { ready_queue.remove(new_thread->current_priority, new_thread); new_thread->status = THREADSTATUS_RUNNING; - Core::CPU().LoadContext(new_thread->context); - Core::CPU().SetCP15Register(CP15_THREAD_URO, new_thread->GetTLSAddress()); - if (previous_process != current_thread->owner_process) { Kernel::g_current_process = current_thread->owner_process; - Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; - // We have switched processes and thus, page tables, clear the instruction cache so we - // don't keep stale data from the previous process. - Core::CPU().ClearInstructionCache(); + SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); } + + Core::CPU().LoadContext(new_thread->context); + Core::CPU().SetCP15Register(CP15_THREAD_URO, new_thread->GetTLSAddress()); } else { current_thread = nullptr; // Note: We do not reset the current process and current page table when idling because diff --git a/src/core/loader/3dsx.cpp b/src/core/loader/3dsx.cpp index 69cdc0867e..a03515e6ec 100644 --- a/src/core/loader/3dsx.cpp +++ b/src/core/loader/3dsx.cpp @@ -270,7 +270,7 @@ ResultStatus AppLoader_THREEDSX::Load() { Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); Kernel::g_current_process->svc_access_mask.set(); Kernel::g_current_process->address_mappings = default_address_mappings; - Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; + Memory::SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); // Attach the default resource limit (APPLICATION) to the process Kernel::g_current_process->resource_limit = diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index 2f27606a18..2de1f4e816 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp @@ -397,7 +397,7 @@ ResultStatus AppLoader_ELF::Load() { Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); Kernel::g_current_process->svc_access_mask.set(); Kernel::g_current_process->address_mappings = default_address_mappings; - Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; + Memory::SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); // Attach the default resource limit (APPLICATION) to the process Kernel::g_current_process->resource_limit = diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 79ea501471..ca282f9352 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -172,7 +172,7 @@ ResultStatus AppLoader_NCCH::LoadExec() { codeset->memory = std::make_shared>(std::move(code)); Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); - Memory::current_page_table = &Kernel::g_current_process->vm_manager.page_table; + Memory::SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); // Attach a resource limit to the process based on the resource limit category Kernel::g_current_process->resource_limit = diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 68a6b1ac26..17fa10b499 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -22,12 +22,20 @@ namespace Memory { static std::array vram; static std::array n3ds_extra_ram; -PageTable* current_page_table = nullptr; +static PageTable* current_page_table = nullptr; std::array* GetCurrentPageTablePointers() { return ¤t_page_table->pointers; } +void SetCurrentPageTable(PageTable* page_table) { + current_page_table = page_table; +} + +PageTable* GetCurrentPageTable() { + return current_page_table; +} + static void MapPages(PageTable& page_table, u32 base, u32 size, u8* memory, PageType type) { LOG_DEBUG(HW_Memory, "Mapping %p onto %08X-%08X", memory, base * PAGE_SIZE, (base + size) * PAGE_SIZE); diff --git a/src/core/memory.h b/src/core/memory.h index b228a48c2e..db5a704d0f 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -182,7 +182,8 @@ enum : VAddr { }; /// Currently active page table -extern PageTable* current_page_table; +void SetCurrentPageTable(PageTable* page_table); +PageTable* GetCurrentPageTable(); bool IsValidVirtualAddress(const VAddr addr); bool IsValidPhysicalAddress(const PAddr addr); diff --git a/src/tests/core/arm/arm_test_common.cpp b/src/tests/core/arm/arm_test_common.cpp index 8384ce7440..cfe0d503ae 100644 --- a/src/tests/core/arm/arm_test_common.cpp +++ b/src/tests/core/arm/arm_test_common.cpp @@ -21,7 +21,7 @@ TestEnvironment::TestEnvironment(bool mutable_memory_) Memory::MapIoRegion(page_table, 0x00000000, 0x80000000, test_memory); Memory::MapIoRegion(page_table, 0x80000000, 0x80000000, test_memory); - Memory::current_page_table = &page_table; + Memory::SetCurrentPageTable(&page_table); } TestEnvironment::~TestEnvironment() { From 4e5eb2044acc304fc2068b53eb03e3a626832996 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 24 Sep 2017 22:43:28 +0100 Subject: [PATCH 156/195] memory: Remove GetCurrentPageTablePointers --- src/core/memory.cpp | 4 ---- src/core/memory.h | 6 ------ 2 files changed, 10 deletions(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 17fa10b499..67ba732ad0 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -24,10 +24,6 @@ static std::array n3ds_extra_ram; static PageTable* current_page_table = nullptr; -std::array* GetCurrentPageTablePointers() { - return ¤t_page_table->pointers; -} - void SetCurrentPageTable(PageTable* page_table) { current_page_table = page_table; } diff --git a/src/core/memory.h b/src/core/memory.h index db5a704d0f..1865bfea04 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -260,10 +260,4 @@ enum class FlushMode { */ void RasterizerFlushVirtualRegion(VAddr start, u32 size, FlushMode mode); -/** - * Dynarmic has an optimization to memory accesses when the pointer to the page exists that - * can be used by setting up the current page table as a callback. This function is used to - * retrieve the current page table for that purpose. - */ -std::array* GetCurrentPageTablePointers(); } // namespace Memory From 67a70bd9e1655dfd705550c1d561f3ba444360c8 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 24 Sep 2017 22:44:13 +0100 Subject: [PATCH 157/195] ARM_Interface: Implement PageTableChanged --- src/core/arm/arm_interface.h | 3 +++ src/core/arm/dynarmic/arm_dynarmic.cpp | 22 +++++++++++++++++----- src/core/arm/dynarmic/arm_dynarmic.h | 10 +++++++++- src/core/arm/dyncom/arm_dyncom.cpp | 4 ++++ src/core/arm/dyncom/arm_dyncom.h | 1 + src/core/memory.cpp | 5 +++++ 6 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h index ccd43f4314..2aa017a54a 100644 --- a/src/core/arm/arm_interface.h +++ b/src/core/arm/arm_interface.h @@ -41,6 +41,9 @@ public: /// Clear all instruction cache virtual void ClearInstructionCache() = 0; + /// Notify CPU emulation that page tables have changed + virtual void PageTableChanged() = 0; + /** * Set the Program Counter to an address * @param addr Address to set PC to diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index 34c5aa3811..42ae93ae8c 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp @@ -41,7 +41,7 @@ static bool IsReadOnlyMemory(u32 vaddr) { } static Dynarmic::UserCallbacks GetUserCallbacks( - const std::shared_ptr& interpeter_state) { + const std::shared_ptr& interpeter_state, Memory::PageTable* current_page_table) { Dynarmic::UserCallbacks user_callbacks{}; user_callbacks.InterpreterFallback = &InterpreterFallback; user_callbacks.user_arg = static_cast(interpeter_state.get()); @@ -56,16 +56,14 @@ static Dynarmic::UserCallbacks GetUserCallbacks( user_callbacks.memory.Write16 = &Memory::Write16; user_callbacks.memory.Write32 = &Memory::Write32; user_callbacks.memory.Write64 = &Memory::Write64; - // TODO(Subv): Re-add the page table pointers once dynarmic supports switching page tables at - // runtime. - user_callbacks.page_table = nullptr; + user_callbacks.page_table = ¤t_page_table->pointers; user_callbacks.coprocessors[15] = std::make_shared(interpeter_state); return user_callbacks; } ARM_Dynarmic::ARM_Dynarmic(PrivilegeMode initial_mode) { interpreter_state = std::make_shared(initial_mode); - jit = std::make_unique(GetUserCallbacks(interpreter_state)); + PageTableChanged(); } void ARM_Dynarmic::SetPC(u32 pc) { @@ -136,6 +134,7 @@ void ARM_Dynarmic::AddTicks(u64 ticks) { MICROPROFILE_DEFINE(ARM_Jit, "ARM JIT", "ARM JIT", MP_RGB(255, 64, 64)); void ARM_Dynarmic::ExecuteInstructions(int num_instructions) { + ASSERT(Memory::GetCurrentPageTable() == current_page_table); MICROPROFILE_SCOPE(ARM_Jit); std::size_t ticks_executed = jit->Run(static_cast(num_instructions)); @@ -178,3 +177,16 @@ void ARM_Dynarmic::PrepareReschedule() { void ARM_Dynarmic::ClearInstructionCache() { jit->ClearCache(); } + +void ARM_Dynarmic::PageTableChanged() { + current_page_table = Memory::GetCurrentPageTable(); + + auto iter = jits.find(current_page_table); + if (iter != jits.end()) { + jit = iter->second.get(); + return; + } + + jit = new Dynarmic::Jit(GetUserCallbacks(interpreter_state, current_page_table)); + jits.emplace(current_page_table, std::unique_ptr(jit)); +} diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h index 834dc989e0..96148a1a53 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.h +++ b/src/core/arm/dynarmic/arm_dynarmic.h @@ -4,12 +4,17 @@ #pragma once +#include #include #include #include "common/common_types.h" #include "core/arm/arm_interface.h" #include "core/arm/skyeye_common/armstate.h" +namespace Memory { +struct PageTable; +} // namespace Memory + class ARM_Dynarmic final : public ARM_Interface { public: ARM_Dynarmic(PrivilegeMode initial_mode); @@ -36,8 +41,11 @@ public: void ExecuteInstructions(int num_instructions) override; void ClearInstructionCache() override; + void PageTableChanged() override; private: - std::unique_ptr jit; + Dynarmic::Jit* jit = nullptr; + Memory::PageTable* current_page_table = nullptr; + std::map> jits; std::shared_ptr interpreter_state; }; diff --git a/src/core/arm/dyncom/arm_dyncom.cpp b/src/core/arm/dyncom/arm_dyncom.cpp index 81f9bf99e0..da955c9b91 100644 --- a/src/core/arm/dyncom/arm_dyncom.cpp +++ b/src/core/arm/dyncom/arm_dyncom.cpp @@ -25,6 +25,10 @@ void ARM_DynCom::ClearInstructionCache() { trans_cache_buf_top = 0; } +void ARM_DynCom::PageTableChanged() { + ClearInstructionCache(); +} + void ARM_DynCom::SetPC(u32 pc) { state->Reg[15] = pc; } diff --git a/src/core/arm/dyncom/arm_dyncom.h b/src/core/arm/dyncom/arm_dyncom.h index 62c174f3ce..0ae5356713 100644 --- a/src/core/arm/dyncom/arm_dyncom.h +++ b/src/core/arm/dyncom/arm_dyncom.h @@ -16,6 +16,7 @@ public: ~ARM_DynCom(); void ClearInstructionCache() override; + void PageTableChanged() override; void SetPC(u32 pc) override; u32 GetPC() const override; diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 67ba732ad0..a6b5f6c999 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -9,6 +9,8 @@ #include "common/common_types.h" #include "common/logging/log.h" #include "common/swap.h" +#include "core/arm/arm_interface.h" +#include "core/core.h" #include "core/hle/kernel/memory.h" #include "core/hle/kernel/process.h" #include "core/hle/lock.h" @@ -26,6 +28,9 @@ static PageTable* current_page_table = nullptr; void SetCurrentPageTable(PageTable* page_table) { current_page_table = page_table; + if (Core::System::GetInstance().IsPoweredOn()) { + Core::CPU().PageTableChanged(); + } } PageTable* GetCurrentPageTable() { From 903906da3b9b274836510adcabf8adf8e2c15954 Mon Sep 17 00:00:00 2001 From: Huw Pascoe Date: Fri, 22 Sep 2017 15:37:42 +0100 Subject: [PATCH 158/195] Optimized Float multiplication Before: ucomiss xmm1, xmm1 jp .L9 pxor xmm2, xmm2 mov edx, 1 ucomiss xmm0, xmm2 setp al cmovne eax, edx test al, al jne .L9 .L3: movaps xmm0, xmm2 ret .L9: ucomiss xmm0, xmm0 jp .L10 pxor xmm2, xmm2 mov edx, 1 ucomiss xmm1, xmm2 setp al cmovne eax, edx test al, al je .L3 After: movaps xmm2, xmm1 mulss xmm2, xmm0 ucomiss xmm2, xmm2 jnp .L3 ucomiss xmm1, xmm0 jnp .L11 .L3: movaps xmm0, xmm2 ret .L11: pxor xmm2, xmm2 jmp .L3 --- src/video_core/pica_types.h | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/video_core/pica_types.h b/src/video_core/pica_types.h index 5d7e100665..2eafa7e9e4 100644 --- a/src/video_core/pica_types.h +++ b/src/video_core/pica_types.h @@ -58,11 +58,12 @@ public: } Float operator*(const Float& flt) const { - if ((this->value == 0.f && !std::isnan(flt.value)) || - (flt.value == 0.f && !std::isnan(this->value))) - // PICA gives 0 instead of NaN when multiplying by inf - return Zero(); - return Float::FromFloat32(ToFloat32() * flt.ToFloat32()); + float result = value * flt.ToFloat32(); + // PICA gives 0 instead of NaN when multiplying by inf + if (!std::isnan(value) && !std::isnan(flt.ToFloat32())) + if (std::isnan(result)) + result = 0.f; + return Float::FromFloat32(result); } Float operator/(const Float& flt) const { @@ -78,12 +79,7 @@ public: } Float& operator*=(const Float& flt) { - if ((this->value == 0.f && !std::isnan(flt.value)) || - (flt.value == 0.f && !std::isnan(this->value))) - // PICA gives 0 instead of NaN when multiplying by inf - *this = Zero(); - else - value *= flt.ToFloat32(); + value = operator*(flt).value; return *this; } From d673d508dd1ca463dc72ff68b5582ee56d62f142 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Mon, 25 Sep 2017 08:16:27 +0200 Subject: [PATCH 159/195] Services/UDS: Added a function to send EAPoL-Start packets (#2920) * Services/UDS: Added a function to generate the EAPoL-Start packet body. * Services/UDS: Added filter for beacons. * Services/UDS: Lock a mutex when accessing connection_status from both the emulation and network thread. * Services/UDS: Handle the Association Response frame and respond with the EAPoL-Start frame. * fixup: make use of current_node, changed received_beacons into a list, mutex and assert corrections * fixup: fix damn clang-format --- src/core/hle/service/nwm/nwm_uds.cpp | 261 ++++++++++++++------ src/core/hle/service/nwm/uds_connection.cpp | 9 + src/core/hle/service/nwm/uds_connection.h | 5 + src/core/hle/service/nwm/uds_data.cpp | 21 ++ src/core/hle/service/nwm/uds_data.h | 28 +++ 5 files changed, 243 insertions(+), 81 deletions(-) diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp index 893bbb1e79..4e2af9ae67 100644 --- a/src/core/hle/service/nwm/nwm_uds.cpp +++ b/src/core/hle/service/nwm/nwm_uds.cpp @@ -2,8 +2,10 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include #include +#include #include #include #include @@ -37,9 +39,12 @@ static ConnectionStatus connection_status{}; /* Node information about the current network. * The amount of elements in this vector is always the maximum number * of nodes specified in the network configuration. - * The first node is always the host, so this always contains at least 1 entry. + * The first node is always the host. */ -static NodeList node_info(1); +static NodeList node_info; + +// Node information about our own system. +static NodeInfo current_node; // Mapping of bind node ids to their respective events. static std::unordered_map> bind_node_events; @@ -54,6 +59,10 @@ static NetworkInfo network_info; // Event that will generate and send the 802.11 beacon frames. static int beacon_broadcast_event; +// Mutex to synchronize access to the connection status between the emulation thread and the +// network thread. +static std::mutex connection_status_mutex; + // Mutex to synchronize access to the list of received beacons between the emulation thread and the // network thread. static std::mutex beacon_mutex; @@ -63,14 +72,26 @@ static std::mutex beacon_mutex; constexpr size_t MaxBeaconFrames = 15; // List of the last beacons received from the network. -static std::deque received_beacons; +static std::list received_beacons; /** * Returns a list of received 802.11 beacon frames from the specified sender since the last call. */ -std::deque GetReceivedBeacons(const MacAddress& sender) { +std::list GetReceivedBeacons(const MacAddress& sender) { std::lock_guard lock(beacon_mutex); - // TODO(Subv): Filter by sender. + if (sender != Network::BroadcastMac) { + std::list filtered_list; + const auto beacon = std::find_if(received_beacons.begin(), received_beacons.end(), + [&sender](const Network::WifiPacket& packet) { + return packet.transmitter_address == sender; + }); + if (beacon != received_beacons.end()) { + filtered_list.push_back(*beacon); + // TODO(B3N30): Check if the complete deque is cleared or just the fetched entries + received_beacons.erase(beacon); + } + return filtered_list; + } return std::move(received_beacons); } @@ -83,6 +104,15 @@ void SendPacket(Network::WifiPacket& packet) { // limit is exceeded. void HandleBeaconFrame(const Network::WifiPacket& packet) { std::lock_guard lock(beacon_mutex); + const auto unique_beacon = + std::find_if(received_beacons.begin(), received_beacons.end(), + [&packet](const Network::WifiPacket& new_packet) { + return new_packet.transmitter_address == packet.transmitter_address; + }); + if (unique_beacon != received_beacons.end()) { + // We already have a beacon from the same mac in the deque, remove the old one; + received_beacons.erase(unique_beacon); + } received_beacons.emplace_back(packet); @@ -91,14 +121,33 @@ void HandleBeaconFrame(const Network::WifiPacket& packet) { received_beacons.pop_front(); } +void HandleAssociationResponseFrame(const Network::WifiPacket& packet) { + auto assoc_result = GetAssociationResult(packet.data); + + ASSERT_MSG(std::get(assoc_result) == AssocStatus::Successful, + "Could not join network"); + { + std::lock_guard lock(connection_status_mutex); + ASSERT(connection_status.status == static_cast(NetworkStatus::Connecting)); + } + + // Send the EAPoL-Start packet to the server. + using Network::WifiPacket; + WifiPacket eapol_start; + eapol_start.channel = network_channel; + eapol_start.data = GenerateEAPoLStartFrame(std::get(assoc_result), current_node); + // TODO(B3N30): Encrypt the packet. + eapol_start.destination_address = packet.transmitter_address; + eapol_start.type = WifiPacket::PacketType::Data; + + SendPacket(eapol_start); +} + /* * Returns an available index in the nodes array for the * currently-hosted UDS network. */ static u16 GetNextAvailableNodeId() { - ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost), - "Can not accept clients if we're not hosting a network"); - for (u16 index = 0; index < connection_status.max_nodes; ++index) { if ((connection_status.node_bitmask & (1 << index)) == 0) return index; @@ -113,35 +162,46 @@ static u16 GetNextAvailableNodeId() { * authentication frame with SEQ1. */ void StartConnectionSequence(const MacAddress& server) { - ASSERT(connection_status.status == static_cast(NetworkStatus::NotConnected)); - - // TODO(Subv): Handle timeout. - - // Send an authentication frame with SEQ1 using Network::WifiPacket; WifiPacket auth_request; - auth_request.channel = network_channel; - auth_request.data = GenerateAuthenticationFrame(AuthenticationSeq::SEQ1); - auth_request.destination_address = server; - auth_request.type = WifiPacket::PacketType::Authentication; + { + std::lock_guard lock(connection_status_mutex); + ASSERT(connection_status.status == static_cast(NetworkStatus::NotConnected)); + + // TODO(Subv): Handle timeout. + + // Send an authentication frame with SEQ1 + auth_request.channel = network_channel; + auth_request.data = GenerateAuthenticationFrame(AuthenticationSeq::SEQ1); + auth_request.destination_address = server; + auth_request.type = WifiPacket::PacketType::Authentication; + } SendPacket(auth_request); } /// Sends an Association Response frame to the specified mac address void SendAssociationResponseFrame(const MacAddress& address) { - ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost)); - using Network::WifiPacket; WifiPacket assoc_response; - assoc_response.channel = network_channel; - // TODO(Subv): This will cause multiple clients to end up with the same association id, but - // we're not using that for anything. - u16 association_id = 1; - assoc_response.data = GenerateAssocResponseFrame(AssocStatus::Successful, association_id, - network_info.network_id); - assoc_response.destination_address = address; - assoc_response.type = WifiPacket::PacketType::AssociationResponse; + + { + std::lock_guard lock(connection_status_mutex); + if (connection_status.status != static_cast(NetworkStatus::ConnectedAsHost)) { + LOG_ERROR(Service_NWM, "Connection sequence aborted, because connection status is %u", + connection_status.status); + return; + } + + assoc_response.channel = network_channel; + // TODO(Subv): This will cause multiple clients to end up with the same association id, but + // we're not using that for anything. + u16 association_id = 1; + assoc_response.data = GenerateAssocResponseFrame(AssocStatus::Successful, association_id, + network_info.network_id); + assoc_response.destination_address = address; + assoc_response.type = WifiPacket::PacketType::AssociationResponse; + } SendPacket(assoc_response); } @@ -155,16 +215,23 @@ void SendAssociationResponseFrame(const MacAddress& address) { void HandleAuthenticationFrame(const Network::WifiPacket& packet) { // Only the SEQ1 auth frame is handled here, the SEQ2 frame doesn't need any special behavior if (GetAuthenticationSeqNumber(packet.data) == AuthenticationSeq::SEQ1) { - ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost)); - - // Respond with an authentication response frame with SEQ2 using Network::WifiPacket; WifiPacket auth_request; - auth_request.channel = network_channel; - auth_request.data = GenerateAuthenticationFrame(AuthenticationSeq::SEQ2); - auth_request.destination_address = packet.transmitter_address; - auth_request.type = WifiPacket::PacketType::Authentication; + { + std::lock_guard lock(connection_status_mutex); + if (connection_status.status != static_cast(NetworkStatus::ConnectedAsHost)) { + LOG_ERROR(Service_NWM, + "Connection sequence aborted, because connection status is %u", + connection_status.status); + return; + } + // Respond with an authentication response frame with SEQ2 + auth_request.channel = network_channel; + auth_request.data = GenerateAuthenticationFrame(AuthenticationSeq::SEQ2); + auth_request.destination_address = packet.transmitter_address; + auth_request.type = WifiPacket::PacketType::Authentication; + } SendPacket(auth_request); SendAssociationResponseFrame(packet.transmitter_address); @@ -180,6 +247,9 @@ void OnWifiPacketReceived(const Network::WifiPacket& packet) { case Network::WifiPacket::PacketType::Authentication: HandleAuthenticationFrame(packet); break; + case Network::WifiPacket::PacketType::AssociationResponse: + HandleAssociationResponseFrame(packet); + break; } } @@ -305,7 +375,7 @@ static void InitializeWithVersion(Interface* self) { u32 sharedmem_size = rp.Pop(); // Update the node information with the data the game gave us. - rp.PopRaw(node_info[0]); + rp.PopRaw(current_node); u16 version = rp.Pop(); @@ -315,10 +385,14 @@ static void InitializeWithVersion(Interface* self) { ASSERT_MSG(recv_buffer_memory->size == sharedmem_size, "Invalid shared memory size."); - // Reset the connection status, it contains all zeros after initialization, - // except for the actual status value. - connection_status = {}; - connection_status.status = static_cast(NetworkStatus::NotConnected); + { + std::lock_guard lock(connection_status_mutex); + + // Reset the connection status, it contains all zeros after initialization, + // except for the actual status value. + connection_status = {}; + connection_status.status = static_cast(NetworkStatus::NotConnected); + } IPC::RequestBuilder rb = rp.MakeBuilder(1, 2); rb.Push(RESULT_SUCCESS); @@ -348,12 +422,16 @@ static void GetConnectionStatus(Interface* self) { IPC::RequestBuilder rb = rp.MakeBuilder(13, 0); rb.Push(RESULT_SUCCESS); - rb.PushRaw(connection_status); + { + std::lock_guard lock(connection_status_mutex); + rb.PushRaw(connection_status); - // Reset the bitmask of changed nodes after each call to this - // function to prevent falsely informing games of outstanding - // changes in subsequent calls. - connection_status.changed_nodes = 0; + // Reset the bitmask of changed nodes after each call to this + // function to prevent falsely informing games of outstanding + // changes in subsequent calls. + // TODO(Subv): Find exactly where the NWM module resets this value. + connection_status.changed_nodes = 0; + } LOG_DEBUG(Service_NWM, "called"); } @@ -434,31 +512,36 @@ static void BeginHostingNetwork(Interface* self) { // The real UDS module throws a fatal error if this assert fails. ASSERT_MSG(network_info.max_nodes > 1, "Trying to host a network of only one member."); - connection_status.status = static_cast(NetworkStatus::ConnectedAsHost); + { + std::lock_guard lock(connection_status_mutex); + connection_status.status = static_cast(NetworkStatus::ConnectedAsHost); - // Ensure the application data size is less than the maximum value. - ASSERT_MSG(network_info.application_data_size <= ApplicationDataSize, "Data size is too big."); + // Ensure the application data size is less than the maximum value. + ASSERT_MSG(network_info.application_data_size <= ApplicationDataSize, + "Data size is too big."); - // Set up basic information for this network. - network_info.oui_value = NintendoOUI; - network_info.oui_type = static_cast(NintendoTagId::NetworkInfo); + // Set up basic information for this network. + network_info.oui_value = NintendoOUI; + network_info.oui_type = static_cast(NintendoTagId::NetworkInfo); - connection_status.max_nodes = network_info.max_nodes; + connection_status.max_nodes = network_info.max_nodes; - // Resize the nodes list to hold max_nodes. - node_info.resize(network_info.max_nodes); + // Resize the nodes list to hold max_nodes. + node_info.resize(network_info.max_nodes); - // There's currently only one node in the network (the host). - connection_status.total_nodes = 1; - network_info.total_nodes = 1; - // The host is always the first node - connection_status.network_node_id = 1; - node_info[0].network_node_id = 1; - connection_status.nodes[0] = connection_status.network_node_id; - // Set the bit 0 in the nodes bitmask to indicate that node 1 is already taken. - connection_status.node_bitmask |= 1; - // Notify the application that the first node was set. - connection_status.changed_nodes |= 1; + // There's currently only one node in the network (the host). + connection_status.total_nodes = 1; + network_info.total_nodes = 1; + // The host is always the first node + connection_status.network_node_id = 1; + current_node.network_node_id = 1; + connection_status.nodes[0] = connection_status.network_node_id; + // Set the bit 0 in the nodes bitmask to indicate that node 1 is already taken. + connection_status.node_bitmask |= 1; + // Notify the application that the first node was set. + connection_status.changed_nodes |= 1; + node_info[0] = current_node; + } // If the game has a preferred channel, use that instead. if (network_info.channel != 0) @@ -495,9 +578,13 @@ static void DestroyNetwork(Interface* self) { // Unschedule the beacon broadcast event. CoreTiming::UnscheduleEvent(beacon_broadcast_event, 0); - // TODO(Subv): Check if connection_status is indeed reset after this call. - connection_status = {}; - connection_status.status = static_cast(NetworkStatus::NotConnected); + { + std::lock_guard lock(connection_status_mutex); + + // TODO(Subv): Check if connection_status is indeed reset after this call. + connection_status = {}; + connection_status.status = static_cast(NetworkStatus::NotConnected); + } connection_status_event->Signal(); IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); @@ -540,17 +627,24 @@ static void SendTo(Interface* self) { IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); - if (connection_status.status != static_cast(NetworkStatus::ConnectedAsClient) && - connection_status.status != static_cast(NetworkStatus::ConnectedAsHost)) { - rb.Push(ResultCode(ErrorDescription::NotAuthorized, ErrorModule::UDS, - ErrorSummary::InvalidState, ErrorLevel::Status)); - return; - } + u16 network_node_id; - if (dest_node_id == connection_status.network_node_id) { - rb.Push(ResultCode(ErrorDescription::NotFound, ErrorModule::UDS, - ErrorSummary::WrongArgument, ErrorLevel::Status)); - return; + { + std::lock_guard lock(connection_status_mutex); + if (connection_status.status != static_cast(NetworkStatus::ConnectedAsClient) && + connection_status.status != static_cast(NetworkStatus::ConnectedAsHost)) { + rb.Push(ResultCode(ErrorDescription::NotAuthorized, ErrorModule::UDS, + ErrorSummary::InvalidState, ErrorLevel::Status)); + return; + } + + if (dest_node_id == connection_status.network_node_id) { + rb.Push(ResultCode(ErrorDescription::NotFound, ErrorModule::UDS, + ErrorSummary::WrongArgument, ErrorLevel::Status)); + return; + } + + network_node_id = connection_status.network_node_id; } // TODO(Subv): Do something with the flags. @@ -567,8 +661,8 @@ static void SendTo(Interface* self) { // TODO(Subv): Increment the sequence number after each sent packet. u16 sequence_number = 0; - std::vector data_payload = GenerateDataPayload( - data, data_channel, dest_node_id, connection_status.network_node_id, sequence_number); + std::vector data_payload = + GenerateDataPayload(data, data_channel, dest_node_id, network_node_id, sequence_number); // TODO(Subv): Retrieve the MAC address of the dest_node_id and our own to encrypt // and encapsulate the payload. @@ -595,6 +689,7 @@ static void GetChannel(Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x1A, 0, 0); IPC::RequestBuilder rb = rp.MakeBuilder(2, 0); + std::lock_guard lock(connection_status_mutex); bool is_connected = connection_status.status != static_cast(NetworkStatus::NotConnected); u8 channel = is_connected ? network_channel : 0; @@ -766,6 +861,7 @@ static void BeaconBroadcastCallback(u64 userdata, int cycles_late) { * @param network_node_id Network Node Id of the connecting client. */ void OnClientConnected(u16 network_node_id) { + std::lock_guard lock(connection_status_mutex); ASSERT_MSG(connection_status.status == static_cast(NetworkStatus::ConnectedAsHost), "Can not accept clients if we're not hosting a network"); ASSERT_MSG(connection_status.total_nodes < connection_status.max_nodes, @@ -827,8 +923,11 @@ NWM_UDS::~NWM_UDS() { connection_status_event = nullptr; recv_buffer_memory = nullptr; - connection_status = {}; - connection_status.status = static_cast(NetworkStatus::NotConnected); + { + std::lock_guard lock(connection_status_mutex); + connection_status = {}; + connection_status.status = static_cast(NetworkStatus::NotConnected); + } CoreTiming::UnscheduleEvent(beacon_broadcast_event, 0); } diff --git a/src/core/hle/service/nwm/uds_connection.cpp b/src/core/hle/service/nwm/uds_connection.cpp index c8a76ec2aa..c74f51253a 100644 --- a/src/core/hle/service/nwm/uds_connection.cpp +++ b/src/core/hle/service/nwm/uds_connection.cpp @@ -75,5 +75,14 @@ std::vector GenerateAssocResponseFrame(AssocStatus status, u16 association_i return data; } +std::tuple GetAssociationResult(const std::vector& body) { + AssociationResponseFrame frame; + memcpy(&frame, body.data(), sizeof(frame)); + + constexpr u16 AssociationIdMask = 0x3FFF; + return std::make_tuple(static_cast(frame.status_code), + frame.assoc_id & AssociationIdMask); +} + } // namespace NWM } // namespace Service diff --git a/src/core/hle/service/nwm/uds_connection.h b/src/core/hle/service/nwm/uds_connection.h index 73f55a4fd9..a664f8471b 100644 --- a/src/core/hle/service/nwm/uds_connection.h +++ b/src/core/hle/service/nwm/uds_connection.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include "common/common_types.h" #include "common/swap.h" @@ -47,5 +48,9 @@ AuthenticationSeq GetAuthenticationSeqNumber(const std::vector& body); /// network id, starting at the frame body. std::vector GenerateAssocResponseFrame(AssocStatus status, u16 association_id, u32 network_id); +/// Returns a tuple of (association status, association id) from the body of an AssociationResponse +/// frame. +std::tuple GetAssociationResult(const std::vector& body); + } // namespace NWM } // namespace Service diff --git a/src/core/hle/service/nwm/uds_data.cpp b/src/core/hle/service/nwm/uds_data.cpp index 8c6742dba1..0fd9b8b8c6 100644 --- a/src/core/hle/service/nwm/uds_data.cpp +++ b/src/core/hle/service/nwm/uds_data.cpp @@ -274,5 +274,26 @@ std::vector GenerateDataPayload(const std::vector& data, u8 channel, u16 return buffer; } +std::vector GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node_info) { + EAPoLStartPacket eapol_start{}; + eapol_start.association_id = association_id; + eapol_start.friend_code_seed = node_info.friend_code_seed; + + for (int i = 0; i < node_info.username.size(); ++i) + eapol_start.username[i] = node_info.username[i]; + + // Note: The network_node_id and unknown bytes seem to be uninitialized in the NWM module. + // TODO(B3N30): The last 8 bytes seem to have a fixed value of 07 88 15 00 04 e9 13 00 in + // EAPoL-Start packets from different 3DSs to the same host during a Super Smash Bros. 4 game. + // Find out what that means. + + std::vector eapol_buffer(sizeof(EAPoLStartPacket)); + std::memcpy(eapol_buffer.data(), &eapol_start, sizeof(eapol_start)); + + std::vector buffer = GenerateLLCHeader(EtherType::EAPoL); + buffer.insert(buffer.end(), eapol_buffer.begin(), eapol_buffer.end()); + return buffer; +} + } // namespace NWM } // namespace Service diff --git a/src/core/hle/service/nwm/uds_data.h b/src/core/hle/service/nwm/uds_data.h index a23520a41a..76e8f546b5 100644 --- a/src/core/hle/service/nwm/uds_data.h +++ b/src/core/hle/service/nwm/uds_data.h @@ -67,6 +67,27 @@ struct DataFrameCryptoCTR { static_assert(sizeof(DataFrameCryptoCTR) == 16, "DataFrameCryptoCTR has the wrong size"); +constexpr u16 EAPoLStartMagic = 0x201; + +/* + * Nintendo EAPoLStartPacket, is used to initaliaze a connection between client and host + */ +struct EAPoLStartPacket { + u16_be magic = EAPoLStartMagic; + u16_be association_id; + // This value is hardcoded to 1 in the NWM module. + u16_be unknown = 1; + INSERT_PADDING_BYTES(2); + + u64_be friend_code_seed; + std::array username; + INSERT_PADDING_BYTES(4); + u16_be network_node_id; + INSERT_PADDING_BYTES(6); +}; + +static_assert(sizeof(EAPoLStartPacket) == 0x30, "EAPoLStartPacket has the wrong size"); + /** * Generates an unencrypted 802.11 data payload. * @returns The generated frame payload. @@ -74,5 +95,12 @@ static_assert(sizeof(DataFrameCryptoCTR) == 16, "DataFrameCryptoCTR has the wron std::vector GenerateDataPayload(const std::vector& data, u8 channel, u16 dest_node, u16 src_node, u16 sequence_number); +/* + * Generates an unencrypted 802.11 data frame body with the EAPoL-Start format for UDS + * communication. + * @returns The generated frame body. + */ +std::vector GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node_info); + } // namespace NWM } // namespace Service From c91ccbd0ba4118554d7377bbc3bd4c64f9bccf84 Mon Sep 17 00:00:00 2001 From: Max Thomas Date: Mon, 25 Sep 2017 00:17:38 -0600 Subject: [PATCH 160/195] Loader/NCCH: Add support for loading application updates (#2927) * loader/ncch: split NCCH parsing into its own file * loader/ncch: add support for loading update NCCHs from the SD card * loader/ncch: fix formatting * file_sys/ncch_container: Return a value for OpenFile * loader/ncch: cleanup, always instantiate overlay_ncch to base_ncch * file_sys/ncch_container: better encryption checks, allow non-app NCCHs to load properly and for the existence of NCCH structures to be checked * file_sys/ncch_container: pass filepath as a const reference --- src/core/CMakeLists.txt | 1 + src/core/file_sys/archive_selfncch.cpp | 28 ++- src/core/file_sys/archive_selfncch.h | 4 + src/core/file_sys/ncch_container.cpp | 316 ++++++++++++++++++++++++ src/core/file_sys/ncch_container.h | 244 +++++++++++++++++++ src/core/loader/loader.h | 13 + src/core/loader/ncch.cpp | 319 +++++-------------------- src/core/loader/ncch.h | 184 +------------- 8 files changed, 670 insertions(+), 439 deletions(-) create mode 100644 src/core/file_sys/ncch_container.cpp create mode 100644 src/core/file_sys/ncch_container.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index cd1a8de2d2..3ed6199916 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -26,6 +26,7 @@ set(SRCS file_sys/archive_systemsavedata.cpp file_sys/disk_archive.cpp file_sys/ivfc_archive.cpp + file_sys/ncch_container.cpp file_sys/path_parser.cpp file_sys/savedata_archive.cpp frontend/camera/blank_camera.cpp diff --git a/src/core/file_sys/archive_selfncch.cpp b/src/core/file_sys/archive_selfncch.cpp index 298a37a448..7dc91a4050 100644 --- a/src/core/file_sys/archive_selfncch.cpp +++ b/src/core/file_sys/archive_selfncch.cpp @@ -102,8 +102,7 @@ public: switch (static_cast(file_path.type)) { case SelfNCCHFilePathType::UpdateRomFS: - LOG_WARNING(Service_FS, "(STUBBED) open update RomFS"); - return OpenRomFS(); + return OpenUpdateRomFS(); case SelfNCCHFilePathType::RomFS: return OpenRomFS(); @@ -179,6 +178,17 @@ private: } } + ResultVal> OpenUpdateRomFS() const { + if (ncch_data.update_romfs_file) { + return MakeResult>(std::make_unique( + ncch_data.update_romfs_file, ncch_data.update_romfs_offset, + ncch_data.update_romfs_size)); + } else { + LOG_INFO(Service_FS, "Unable to read update RomFS"); + return ERROR_ROMFS_NOT_FOUND; + } + } + ResultVal> OpenExeFS(const std::string& filename) const { if (filename == "icon") { if (ncch_data.icon) { @@ -218,11 +228,19 @@ private: }; ArchiveFactory_SelfNCCH::ArchiveFactory_SelfNCCH(Loader::AppLoader& app_loader) { - std::shared_ptr romfs_file_; + std::shared_ptr romfs_file; if (Loader::ResultStatus::Success == - app_loader.ReadRomFS(romfs_file_, ncch_data.romfs_offset, ncch_data.romfs_size)) { + app_loader.ReadRomFS(romfs_file, ncch_data.romfs_offset, ncch_data.romfs_size)) { - ncch_data.romfs_file = std::move(romfs_file_); + ncch_data.romfs_file = std::move(romfs_file); + } + + std::shared_ptr update_romfs_file; + if (Loader::ResultStatus::Success == + app_loader.ReadUpdateRomFS(update_romfs_file, ncch_data.update_romfs_offset, + ncch_data.update_romfs_size)) { + + ncch_data.update_romfs_file = std::move(update_romfs_file); } std::vector buffer; diff --git a/src/core/file_sys/archive_selfncch.h b/src/core/file_sys/archive_selfncch.h index f1b9712964..f1c6599481 100644 --- a/src/core/file_sys/archive_selfncch.h +++ b/src/core/file_sys/archive_selfncch.h @@ -24,6 +24,10 @@ struct NCCHData { std::shared_ptr romfs_file; u64 romfs_offset = 0; u64 romfs_size = 0; + + std::shared_ptr update_romfs_file; + u64 update_romfs_offset = 0; + u64 update_romfs_size = 0; }; /// File system interface to the SelfNCCH archive diff --git a/src/core/file_sys/ncch_container.cpp b/src/core/file_sys/ncch_container.cpp new file mode 100644 index 0000000000..59c72f3e91 --- /dev/null +++ b/src/core/file_sys/ncch_container.cpp @@ -0,0 +1,316 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include +#include +#include "common/common_types.h" +#include "common/logging/log.h" +#include "core/core.h" +#include "core/file_sys/ncch_container.h" +#include "core/loader/loader.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// FileSys namespace + +namespace FileSys { + +static const int kMaxSections = 8; ///< Maximum number of sections (files) in an ExeFs +static const int kBlockSize = 0x200; ///< Size of ExeFS blocks (in bytes) + +/** + * Get the decompressed size of an LZSS compressed ExeFS file + * @param buffer Buffer of compressed file + * @param size Size of compressed buffer + * @return Size of decompressed buffer + */ +static u32 LZSS_GetDecompressedSize(const u8* buffer, u32 size) { + u32 offset_size = *(u32*)(buffer + size - 4); + return offset_size + size; +} + +/** + * Decompress ExeFS file (compressed with LZSS) + * @param compressed Compressed buffer + * @param compressed_size Size of compressed buffer + * @param decompressed Decompressed buffer + * @param decompressed_size Size of decompressed buffer + * @return True on success, otherwise false + */ +static bool LZSS_Decompress(const u8* compressed, u32 compressed_size, u8* decompressed, + u32 decompressed_size) { + const u8* footer = compressed + compressed_size - 8; + u32 buffer_top_and_bottom = *reinterpret_cast(footer); + u32 out = decompressed_size; + u32 index = compressed_size - ((buffer_top_and_bottom >> 24) & 0xFF); + u32 stop_index = compressed_size - (buffer_top_and_bottom & 0xFFFFFF); + + memset(decompressed, 0, decompressed_size); + memcpy(decompressed, compressed, compressed_size); + + while (index > stop_index) { + u8 control = compressed[--index]; + + for (unsigned i = 0; i < 8; i++) { + if (index <= stop_index) + break; + if (index <= 0) + break; + if (out <= 0) + break; + + if (control & 0x80) { + // Check if compression is out of bounds + if (index < 2) + return false; + index -= 2; + + u32 segment_offset = compressed[index] | (compressed[index + 1] << 8); + u32 segment_size = ((segment_offset >> 12) & 15) + 3; + segment_offset &= 0x0FFF; + segment_offset += 2; + + // Check if compression is out of bounds + if (out < segment_size) + return false; + + for (unsigned j = 0; j < segment_size; j++) { + // Check if compression is out of bounds + if (out + segment_offset >= decompressed_size) + return false; + + u8 data = decompressed[out + segment_offset]; + decompressed[--out] = data; + } + } else { + // Check if compression is out of bounds + if (out < 1) + return false; + decompressed[--out] = compressed[--index]; + } + control <<= 1; + } + } + return true; +} + +NCCHContainer::NCCHContainer(const std::string& filepath) : filepath(filepath) { + file = FileUtil::IOFile(filepath, "rb"); +} + +Loader::ResultStatus NCCHContainer::OpenFile(const std::string& filepath) { + this->filepath = filepath; + file = FileUtil::IOFile(filepath, "rb"); + + if (!file.IsOpen()) { + LOG_WARNING(Service_FS, "Failed to open %s", filepath.c_str()); + return Loader::ResultStatus::Error; + } + + LOG_DEBUG(Service_FS, "Opened %s", filepath.c_str()); + return Loader::ResultStatus::Success; +} + +Loader::ResultStatus NCCHContainer::Load() { + if (is_loaded) + return Loader::ResultStatus::Success; + + // Reset read pointer in case this file has been read before. + file.Seek(0, SEEK_SET); + + if (file.ReadBytes(&ncch_header, sizeof(NCCH_Header)) != sizeof(NCCH_Header)) + return Loader::ResultStatus::Error; + + // Skip NCSD header and load first NCCH (NCSD is just a container of NCCH files)... + if (Loader::MakeMagic('N', 'C', 'S', 'D') == ncch_header.magic) { + LOG_DEBUG(Service_FS, "Only loading the first (bootable) NCCH within the NCSD file!"); + ncch_offset = 0x4000; + file.Seek(ncch_offset, SEEK_SET); + file.ReadBytes(&ncch_header, sizeof(NCCH_Header)); + } + + // Verify we are loading the correct file type... + if (Loader::MakeMagic('N', 'C', 'C', 'H') != ncch_header.magic) + return Loader::ResultStatus::ErrorInvalidFormat; + + // System archives and DLC don't have an extended header but have RomFS + if (ncch_header.extended_header_size) { + if (file.ReadBytes(&exheader_header, sizeof(ExHeader_Header)) != sizeof(ExHeader_Header)) + return Loader::ResultStatus::Error; + + is_compressed = (exheader_header.codeset_info.flags.flag & 1) == 1; + u32 entry_point = exheader_header.codeset_info.text.address; + u32 code_size = exheader_header.codeset_info.text.code_size; + u32 stack_size = exheader_header.codeset_info.stack_size; + u32 bss_size = exheader_header.codeset_info.bss_size; + u32 core_version = exheader_header.arm11_system_local_caps.core_version; + u8 priority = exheader_header.arm11_system_local_caps.priority; + u8 resource_limit_category = + exheader_header.arm11_system_local_caps.resource_limit_category; + + LOG_DEBUG(Service_FS, "Name: %s", exheader_header.codeset_info.name); + LOG_DEBUG(Service_FS, "Program ID: %016" PRIX64, ncch_header.program_id); + LOG_DEBUG(Service_FS, "Code compressed: %s", is_compressed ? "yes" : "no"); + LOG_DEBUG(Service_FS, "Entry point: 0x%08X", entry_point); + LOG_DEBUG(Service_FS, "Code size: 0x%08X", code_size); + LOG_DEBUG(Service_FS, "Stack size: 0x%08X", stack_size); + LOG_DEBUG(Service_FS, "Bss size: 0x%08X", bss_size); + LOG_DEBUG(Service_FS, "Core version: %d", core_version); + LOG_DEBUG(Service_FS, "Thread priority: 0x%X", priority); + LOG_DEBUG(Service_FS, "Resource limit category: %d", resource_limit_category); + LOG_DEBUG(Service_FS, "System Mode: %d", + static_cast(exheader_header.arm11_system_local_caps.system_mode)); + + if (exheader_header.system_info.jump_id != ncch_header.program_id) { + LOG_ERROR(Service_FS, "ExHeader Program ID mismatch: the ROM is probably encrypted."); + return Loader::ResultStatus::ErrorEncrypted; + } + + has_exheader = true; + } + + // DLC can have an ExeFS and a RomFS but no extended header + if (ncch_header.exefs_size) { + exefs_offset = ncch_header.exefs_offset * kBlockSize; + u32 exefs_size = ncch_header.exefs_size * kBlockSize; + + LOG_DEBUG(Service_FS, "ExeFS offset: 0x%08X", exefs_offset); + LOG_DEBUG(Service_FS, "ExeFS size: 0x%08X", exefs_size); + + file.Seek(exefs_offset + ncch_offset, SEEK_SET); + if (file.ReadBytes(&exefs_header, sizeof(ExeFs_Header)) != sizeof(ExeFs_Header)) + return Loader::ResultStatus::Error; + + has_exefs = true; + } + + if (ncch_header.romfs_offset != 0 && ncch_header.romfs_size != 0) + has_romfs = true; + + is_loaded = true; + return Loader::ResultStatus::Success; +} + +Loader::ResultStatus NCCHContainer::LoadSectionExeFS(const char* name, std::vector& buffer) { + if (!file.IsOpen()) + return Loader::ResultStatus::Error; + + Loader::ResultStatus result = Load(); + if (result != Loader::ResultStatus::Success) + return result; + + if (!has_exefs) + return Loader::ResultStatus::ErrorNotUsed; + + LOG_DEBUG(Service_FS, "%d sections:", kMaxSections); + // Iterate through the ExeFs archive until we find a section with the specified name... + for (unsigned section_number = 0; section_number < kMaxSections; section_number++) { + const auto& section = exefs_header.section[section_number]; + + // Load the specified section... + if (strcmp(section.name, name) == 0) { + LOG_DEBUG(Service_FS, "%d - offset: 0x%08X, size: 0x%08X, name: %s", section_number, + section.offset, section.size, section.name); + + s64 section_offset = + (section.offset + exefs_offset + sizeof(ExeFs_Header) + ncch_offset); + file.Seek(section_offset, SEEK_SET); + + if (strcmp(section.name, ".code") == 0 && is_compressed) { + // Section is compressed, read compressed .code section... + std::unique_ptr temp_buffer; + try { + temp_buffer.reset(new u8[section.size]); + } catch (std::bad_alloc&) { + return Loader::ResultStatus::ErrorMemoryAllocationFailed; + } + + if (file.ReadBytes(&temp_buffer[0], section.size) != section.size) + return Loader::ResultStatus::Error; + + // Decompress .code section... + u32 decompressed_size = LZSS_GetDecompressedSize(&temp_buffer[0], section.size); + buffer.resize(decompressed_size); + if (!LZSS_Decompress(&temp_buffer[0], section.size, &buffer[0], decompressed_size)) + return Loader::ResultStatus::ErrorInvalidFormat; + } else { + // Section is uncompressed... + buffer.resize(section.size); + if (file.ReadBytes(&buffer[0], section.size) != section.size) + return Loader::ResultStatus::Error; + } + return Loader::ResultStatus::Success; + } + } + return Loader::ResultStatus::ErrorNotUsed; +} + +Loader::ResultStatus NCCHContainer::ReadRomFS(std::shared_ptr& romfs_file, + u64& offset, u64& size) { + if (!file.IsOpen()) + return Loader::ResultStatus::Error; + + Loader::ResultStatus result = Load(); + if (result != Loader::ResultStatus::Success) + return result; + + if (!has_romfs) { + LOG_DEBUG(Service_FS, "RomFS requested from NCCH which has no RomFS"); + return Loader::ResultStatus::ErrorNotUsed; + } + + u32 romfs_offset = ncch_offset + (ncch_header.romfs_offset * kBlockSize) + 0x1000; + u32 romfs_size = (ncch_header.romfs_size * kBlockSize) - 0x1000; + + LOG_DEBUG(Service_FS, "RomFS offset: 0x%08X", romfs_offset); + LOG_DEBUG(Service_FS, "RomFS size: 0x%08X", romfs_size); + + if (file.GetSize() < romfs_offset + romfs_size) + return Loader::ResultStatus::Error; + + // We reopen the file, to allow its position to be independent from file's + romfs_file = std::make_shared(filepath, "rb"); + if (!romfs_file->IsOpen()) + return Loader::ResultStatus::Error; + + offset = romfs_offset; + size = romfs_size; + + return Loader::ResultStatus::Success; +} + +Loader::ResultStatus NCCHContainer::ReadProgramId(u64_le& program_id) { + Loader::ResultStatus result = Load(); + if (result != Loader::ResultStatus::Success) + return result; + + program_id = ncch_header.program_id; + return Loader::ResultStatus::Success; +} + +bool NCCHContainer::HasExeFS() { + Loader::ResultStatus result = Load(); + if (result != Loader::ResultStatus::Success) + return false; + + return has_exefs; +} + +bool NCCHContainer::HasRomFS() { + Loader::ResultStatus result = Load(); + if (result != Loader::ResultStatus::Success) + return false; + + return has_romfs; +} + +bool NCCHContainer::HasExHeader() { + Loader::ResultStatus result = Load(); + if (result != Loader::ResultStatus::Success) + return false; + + return has_exheader; +} + +} // namespace FileSys diff --git a/src/core/file_sys/ncch_container.h b/src/core/file_sys/ncch_container.h new file mode 100644 index 0000000000..8af9032b42 --- /dev/null +++ b/src/core/file_sys/ncch_container.h @@ -0,0 +1,244 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include +#include +#include "common/bit_field.h" +#include "common/common_types.h" +#include "common/file_util.h" +#include "common/swap.h" +#include "core/core.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////// +/// NCCH header (Note: "NCCH" appears to be a publicly unknown acronym) + +struct NCCH_Header { + u8 signature[0x100]; + u32_le magic; + u32_le content_size; + u8 partition_id[8]; + u16_le maker_code; + u16_le version; + u8 reserved_0[4]; + u64_le program_id; + u8 reserved_1[0x10]; + u8 logo_region_hash[0x20]; + u8 product_code[0x10]; + u8 extended_header_hash[0x20]; + u32_le extended_header_size; + u8 reserved_2[4]; + u8 flags[8]; + u32_le plain_region_offset; + u32_le plain_region_size; + u32_le logo_region_offset; + u32_le logo_region_size; + u32_le exefs_offset; + u32_le exefs_size; + u32_le exefs_hash_region_size; + u8 reserved_3[4]; + u32_le romfs_offset; + u32_le romfs_size; + u32_le romfs_hash_region_size; + u8 reserved_4[4]; + u8 exefs_super_block_hash[0x20]; + u8 romfs_super_block_hash[0x20]; +}; + +static_assert(sizeof(NCCH_Header) == 0x200, "NCCH header structure size is wrong"); + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ExeFS (executable file system) headers + +struct ExeFs_SectionHeader { + char name[8]; + u32 offset; + u32 size; +}; + +struct ExeFs_Header { + ExeFs_SectionHeader section[8]; + u8 reserved[0x80]; + u8 hashes[8][0x20]; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ExHeader (executable file system header) headers + +struct ExHeader_SystemInfoFlags { + u8 reserved[5]; + u8 flag; + u8 remaster_version[2]; +}; + +struct ExHeader_CodeSegmentInfo { + u32 address; + u32 num_max_pages; + u32 code_size; +}; + +struct ExHeader_CodeSetInfo { + u8 name[8]; + ExHeader_SystemInfoFlags flags; + ExHeader_CodeSegmentInfo text; + u32 stack_size; + ExHeader_CodeSegmentInfo ro; + u8 reserved[4]; + ExHeader_CodeSegmentInfo data; + u32 bss_size; +}; + +struct ExHeader_DependencyList { + u8 program_id[0x30][8]; +}; + +struct ExHeader_SystemInfo { + u64 save_data_size; + u64_le jump_id; + u8 reserved_2[0x30]; +}; + +struct ExHeader_StorageInfo { + u8 ext_save_data_id[8]; + u8 system_save_data_id[8]; + u8 reserved[8]; + u8 access_info[7]; + u8 other_attributes; +}; + +struct ExHeader_ARM11_SystemLocalCaps { + u64_le program_id; + u32_le core_version; + u8 reserved_flags[2]; + union { + u8 flags0; + BitField<0, 2, u8> ideal_processor; + BitField<2, 2, u8> affinity_mask; + BitField<4, 4, u8> system_mode; + }; + u8 priority; + u8 resource_limit_descriptor[0x10][2]; + ExHeader_StorageInfo storage_info; + u8 service_access_control[0x20][8]; + u8 ex_service_access_control[0x2][8]; + u8 reserved[0xf]; + u8 resource_limit_category; +}; + +struct ExHeader_ARM11_KernelCaps { + u32_le descriptors[28]; + u8 reserved[0x10]; +}; + +struct ExHeader_ARM9_AccessControl { + u8 descriptors[15]; + u8 descversion; +}; + +struct ExHeader_Header { + ExHeader_CodeSetInfo codeset_info; + ExHeader_DependencyList dependency_list; + ExHeader_SystemInfo system_info; + ExHeader_ARM11_SystemLocalCaps arm11_system_local_caps; + ExHeader_ARM11_KernelCaps arm11_kernel_caps; + ExHeader_ARM9_AccessControl arm9_access_control; + struct { + u8 signature[0x100]; + u8 ncch_public_key_modulus[0x100]; + ExHeader_ARM11_SystemLocalCaps arm11_system_local_caps; + ExHeader_ARM11_KernelCaps arm11_kernel_caps; + ExHeader_ARM9_AccessControl arm9_access_control; + } access_desc; +}; + +static_assert(sizeof(ExHeader_Header) == 0x800, "ExHeader structure size is wrong"); + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// FileSys namespace + +namespace FileSys { + +/** + * Helper which implements an interface to deal with NCCH containers which can + * contain ExeFS archives or RomFS archives for games or other applications. + */ +class NCCHContainer { +public: + NCCHContainer(const std::string& filepath); + NCCHContainer() {} + + Loader::ResultStatus OpenFile(const std::string& filepath); + + /** + * Ensure ExeFS and exheader is loaded and ready for reading sections + * @return ResultStatus result of function + */ + Loader::ResultStatus Load(); + + /** + * Reads an application ExeFS section of an NCCH file (e.g. .code, .logo, etc.) + * @param name Name of section to read out of NCCH file + * @param buffer Vector to read data into + * @return ResultStatus result of function + */ + Loader::ResultStatus LoadSectionExeFS(const char* name, std::vector& buffer); + + /** + * Get the RomFS of the NCCH container + * Since the RomFS can be huge, we return a file reference instead of copying to a buffer + * @param romfs_file The file containing the RomFS + * @param offset The offset the romfs begins on + * @param size The size of the romfs + * @return ResultStatus result of function + */ + Loader::ResultStatus ReadRomFS(std::shared_ptr& romfs_file, u64& offset, + u64& size); + + /** + * Get the Program ID of the NCCH container + * @return ResultStatus result of function + */ + Loader::ResultStatus ReadProgramId(u64_le& program_id); + + /** + * Checks whether the NCCH container contains an ExeFS + * @return bool check result + */ + bool HasExeFS(); + + /** + * Checks whether the NCCH container contains a RomFS + * @return bool check result + */ + bool HasRomFS(); + + /** + * Checks whether the NCCH container contains an ExHeader + * @return bool check result + */ + bool HasExHeader(); + + NCCH_Header ncch_header; + ExeFs_Header exefs_header; + ExHeader_Header exheader_header; + +private: + bool has_exheader = false; + bool has_exefs = false; + bool has_romfs = false; + + bool is_loaded = false; + bool is_compressed = false; + + u32 ncch_offset = 0; // Offset to NCCH header, can be 0 or after NCSD header + u32 exefs_offset = 0; + + std::string filepath; + FileUtil::IOFile file; +}; + +} // namespace FileSys diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index e731888a27..3160fd2fdc 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -166,6 +166,19 @@ public: return ResultStatus::ErrorNotImplemented; } + /** + * Get the update RomFS of the application + * Since the RomFS can be huge, we return a file reference instead of copying to a buffer + * @param romfs_file The file containing the RomFS + * @param offset The offset the romfs begins on + * @param size The size of the romfs + * @return ResultStatus result of function + */ + virtual ResultStatus ReadUpdateRomFS(std::shared_ptr& romfs_file, u64& offset, + u64& size) { + return ResultStatus::ErrorNotImplemented; + } + /** * Get the title of the application * @param title Reference to store the application title into diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 79ea501471..bef7fa567d 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -13,6 +13,7 @@ #include "common/swap.h" #include "core/core.h" #include "core/file_sys/archive_selfncch.h" +#include "core/file_sys/ncch_container.h" #include "core/hle/kernel/process.h" #include "core/hle/kernel/resource_limit.h" #include "core/hle/service/cfg/cfg.h" @@ -27,87 +28,7 @@ namespace Loader { -static const int kMaxSections = 8; ///< Maximum number of sections (files) in an ExeFs -static const int kBlockSize = 0x200; ///< Size of ExeFS blocks (in bytes) - -/** - * Get the decompressed size of an LZSS compressed ExeFS file - * @param buffer Buffer of compressed file - * @param size Size of compressed buffer - * @return Size of decompressed buffer - */ -static u32 LZSS_GetDecompressedSize(const u8* buffer, u32 size) { - u32 offset_size = *(u32*)(buffer + size - 4); - return offset_size + size; -} - -/** - * Decompress ExeFS file (compressed with LZSS) - * @param compressed Compressed buffer - * @param compressed_size Size of compressed buffer - * @param decompressed Decompressed buffer - * @param decompressed_size Size of decompressed buffer - * @return True on success, otherwise false - */ -static bool LZSS_Decompress(const u8* compressed, u32 compressed_size, u8* decompressed, - u32 decompressed_size) { - const u8* footer = compressed + compressed_size - 8; - u32 buffer_top_and_bottom = *reinterpret_cast(footer); - u32 out = decompressed_size; - u32 index = compressed_size - ((buffer_top_and_bottom >> 24) & 0xFF); - u32 stop_index = compressed_size - (buffer_top_and_bottom & 0xFFFFFF); - - memset(decompressed, 0, decompressed_size); - memcpy(decompressed, compressed, compressed_size); - - while (index > stop_index) { - u8 control = compressed[--index]; - - for (unsigned i = 0; i < 8; i++) { - if (index <= stop_index) - break; - if (index <= 0) - break; - if (out <= 0) - break; - - if (control & 0x80) { - // Check if compression is out of bounds - if (index < 2) - return false; - index -= 2; - - u32 segment_offset = compressed[index] | (compressed[index + 1] << 8); - u32 segment_size = ((segment_offset >> 12) & 15) + 3; - segment_offset &= 0x0FFF; - segment_offset += 2; - - // Check if compression is out of bounds - if (out < segment_size) - return false; - - for (unsigned j = 0; j < segment_size; j++) { - // Check if compression is out of bounds - if (out + segment_offset >= decompressed_size) - return false; - - u8 data = decompressed[out + segment_offset]; - decompressed[--out] = data; - } - } else { - // Check if compression is out of bounds - if (out < 1) - return false; - decompressed[--out] = compressed[--index]; - } - control <<= 1; - } - } - return true; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// AppLoader_NCCH class +static const u64 UPDATE_MASK = 0x0000000e00000000; FileType AppLoader_NCCH::IdentifyType(FileUtil::IOFile& file) { u32 magic; @@ -124,15 +45,25 @@ FileType AppLoader_NCCH::IdentifyType(FileUtil::IOFile& file) { return FileType::Error; } +static std::string GetUpdateNCCHPath(u64_le program_id) { + u32 high = static_cast((program_id | UPDATE_MASK) >> 32); + u32 low = static_cast((program_id | UPDATE_MASK) & 0xFFFFFFFF); + + return Common::StringFromFormat("%sNintendo 3DS/%s/%s/title/%08x/%08x/content/00000000.app", + FileUtil::GetUserPath(D_SDMC_IDX).c_str(), SYSTEM_ID, SDCARD_ID, + high, low); +} + std::pair, ResultStatus> AppLoader_NCCH::LoadKernelSystemMode() { if (!is_loaded) { - ResultStatus res = LoadExeFS(); + ResultStatus res = base_ncch.Load(); if (res != ResultStatus::Success) { return std::make_pair(boost::none, res); } } + // Set the system mode as the one from the exheader. - return std::make_pair(exheader_header.arm11_system_local_caps.system_mode.Value(), + return std::make_pair(overlay_ncch->exheader_header.arm11_system_local_caps.system_mode.Value(), ResultStatus::Success); } @@ -144,29 +75,34 @@ ResultStatus AppLoader_NCCH::LoadExec() { return ResultStatus::ErrorNotLoaded; std::vector code; - if (ResultStatus::Success == ReadCode(code)) { + u64_le program_id; + if (ResultStatus::Success == ReadCode(code) && + ResultStatus::Success == ReadProgramId(program_id)) { std::string process_name = Common::StringFromFixedZeroTerminatedBuffer( - (const char*)exheader_header.codeset_info.name, 8); + (const char*)overlay_ncch->exheader_header.codeset_info.name, 8); - SharedPtr codeset = CodeSet::Create(process_name, ncch_header.program_id); + SharedPtr codeset = CodeSet::Create(process_name, program_id); codeset->code.offset = 0; - codeset->code.addr = exheader_header.codeset_info.text.address; - codeset->code.size = exheader_header.codeset_info.text.num_max_pages * Memory::PAGE_SIZE; + codeset->code.addr = overlay_ncch->exheader_header.codeset_info.text.address; + codeset->code.size = + overlay_ncch->exheader_header.codeset_info.text.num_max_pages * Memory::PAGE_SIZE; codeset->rodata.offset = codeset->code.offset + codeset->code.size; - codeset->rodata.addr = exheader_header.codeset_info.ro.address; - codeset->rodata.size = exheader_header.codeset_info.ro.num_max_pages * Memory::PAGE_SIZE; + codeset->rodata.addr = overlay_ncch->exheader_header.codeset_info.ro.address; + codeset->rodata.size = + overlay_ncch->exheader_header.codeset_info.ro.num_max_pages * Memory::PAGE_SIZE; // TODO(yuriks): Not sure if the bss size is added to the page-aligned .data size or just // to the regular size. Playing it safe for now. - u32 bss_page_size = (exheader_header.codeset_info.bss_size + 0xFFF) & ~0xFFF; + u32 bss_page_size = (overlay_ncch->exheader_header.codeset_info.bss_size + 0xFFF) & ~0xFFF; code.resize(code.size() + bss_page_size, 0); codeset->data.offset = codeset->rodata.offset + codeset->rodata.size; - codeset->data.addr = exheader_header.codeset_info.data.address; + codeset->data.addr = overlay_ncch->exheader_header.codeset_info.data.address; codeset->data.size = - exheader_header.codeset_info.data.num_max_pages * Memory::PAGE_SIZE + bss_page_size; + overlay_ncch->exheader_header.codeset_info.data.num_max_pages * Memory::PAGE_SIZE + + bss_page_size; codeset->entrypoint = codeset->code.addr; codeset->memory = std::make_shared>(std::move(code)); @@ -177,150 +113,27 @@ ResultStatus AppLoader_NCCH::LoadExec() { // Attach a resource limit to the process based on the resource limit category Kernel::g_current_process->resource_limit = Kernel::ResourceLimit::GetForCategory(static_cast( - exheader_header.arm11_system_local_caps.resource_limit_category)); + overlay_ncch->exheader_header.arm11_system_local_caps.resource_limit_category)); // Set the default CPU core for this process Kernel::g_current_process->ideal_processor = - exheader_header.arm11_system_local_caps.ideal_processor; + overlay_ncch->exheader_header.arm11_system_local_caps.ideal_processor; // Copy data while converting endianness - std::array kernel_caps; - std::copy_n(exheader_header.arm11_kernel_caps.descriptors, kernel_caps.size(), + std::arrayexheader_header.arm11_kernel_caps.descriptors)> + kernel_caps; + std::copy_n(overlay_ncch->exheader_header.arm11_kernel_caps.descriptors, kernel_caps.size(), begin(kernel_caps)); Kernel::g_current_process->ParseKernelCaps(kernel_caps.data(), kernel_caps.size()); - s32 priority = exheader_header.arm11_system_local_caps.priority; - u32 stack_size = exheader_header.codeset_info.stack_size; + s32 priority = overlay_ncch->exheader_header.arm11_system_local_caps.priority; + u32 stack_size = overlay_ncch->exheader_header.codeset_info.stack_size; Kernel::g_current_process->Run(priority, stack_size); return ResultStatus::Success; } return ResultStatus::Error; } -ResultStatus AppLoader_NCCH::LoadSectionExeFS(const char* name, std::vector& buffer) { - if (!file.IsOpen()) - return ResultStatus::Error; - - ResultStatus result = LoadExeFS(); - if (result != ResultStatus::Success) - return result; - - LOG_DEBUG(Loader, "%d sections:", kMaxSections); - // Iterate through the ExeFs archive until we find a section with the specified name... - for (unsigned section_number = 0; section_number < kMaxSections; section_number++) { - const auto& section = exefs_header.section[section_number]; - - // Load the specified section... - if (strcmp(section.name, name) == 0) { - LOG_DEBUG(Loader, "%d - offset: 0x%08X, size: 0x%08X, name: %s", section_number, - section.offset, section.size, section.name); - - s64 section_offset = - (section.offset + exefs_offset + sizeof(ExeFs_Header) + ncch_offset); - file.Seek(section_offset, SEEK_SET); - - if (strcmp(section.name, ".code") == 0 && is_compressed) { - // Section is compressed, read compressed .code section... - std::unique_ptr temp_buffer; - try { - temp_buffer.reset(new u8[section.size]); - } catch (std::bad_alloc&) { - return ResultStatus::ErrorMemoryAllocationFailed; - } - - if (file.ReadBytes(&temp_buffer[0], section.size) != section.size) - return ResultStatus::Error; - - // Decompress .code section... - u32 decompressed_size = LZSS_GetDecompressedSize(&temp_buffer[0], section.size); - buffer.resize(decompressed_size); - if (!LZSS_Decompress(&temp_buffer[0], section.size, &buffer[0], decompressed_size)) - return ResultStatus::ErrorInvalidFormat; - } else { - // Section is uncompressed... - buffer.resize(section.size); - if (file.ReadBytes(&buffer[0], section.size) != section.size) - return ResultStatus::Error; - } - return ResultStatus::Success; - } - } - return ResultStatus::ErrorNotUsed; -} - -ResultStatus AppLoader_NCCH::LoadExeFS() { - if (is_exefs_loaded) - return ResultStatus::Success; - - if (!file.IsOpen()) - return ResultStatus::Error; - - // Reset read pointer in case this file has been read before. - file.Seek(0, SEEK_SET); - - if (file.ReadBytes(&ncch_header, sizeof(NCCH_Header)) != sizeof(NCCH_Header)) - return ResultStatus::Error; - - // Skip NCSD header and load first NCCH (NCSD is just a container of NCCH files)... - if (MakeMagic('N', 'C', 'S', 'D') == ncch_header.magic) { - LOG_DEBUG(Loader, "Only loading the first (bootable) NCCH within the NCSD file!"); - ncch_offset = 0x4000; - file.Seek(ncch_offset, SEEK_SET); - file.ReadBytes(&ncch_header, sizeof(NCCH_Header)); - } - - // Verify we are loading the correct file type... - if (MakeMagic('N', 'C', 'C', 'H') != ncch_header.magic) - return ResultStatus::ErrorInvalidFormat; - - // Read ExHeader... - - if (file.ReadBytes(&exheader_header, sizeof(ExHeader_Header)) != sizeof(ExHeader_Header)) - return ResultStatus::Error; - - is_compressed = (exheader_header.codeset_info.flags.flag & 1) == 1; - entry_point = exheader_header.codeset_info.text.address; - code_size = exheader_header.codeset_info.text.code_size; - stack_size = exheader_header.codeset_info.stack_size; - bss_size = exheader_header.codeset_info.bss_size; - core_version = exheader_header.arm11_system_local_caps.core_version; - priority = exheader_header.arm11_system_local_caps.priority; - resource_limit_category = exheader_header.arm11_system_local_caps.resource_limit_category; - - LOG_DEBUG(Loader, "Name: %s", exheader_header.codeset_info.name); - LOG_DEBUG(Loader, "Program ID: %016" PRIX64, ncch_header.program_id); - LOG_DEBUG(Loader, "Code compressed: %s", is_compressed ? "yes" : "no"); - LOG_DEBUG(Loader, "Entry point: 0x%08X", entry_point); - LOG_DEBUG(Loader, "Code size: 0x%08X", code_size); - LOG_DEBUG(Loader, "Stack size: 0x%08X", stack_size); - LOG_DEBUG(Loader, "Bss size: 0x%08X", bss_size); - LOG_DEBUG(Loader, "Core version: %d", core_version); - LOG_DEBUG(Loader, "Thread priority: 0x%X", priority); - LOG_DEBUG(Loader, "Resource limit category: %d", resource_limit_category); - LOG_DEBUG(Loader, "System Mode: %d", - static_cast(exheader_header.arm11_system_local_caps.system_mode)); - - if (exheader_header.arm11_system_local_caps.program_id != ncch_header.program_id) { - LOG_ERROR(Loader, "ExHeader Program ID mismatch: the ROM is probably encrypted."); - return ResultStatus::ErrorEncrypted; - } - - // Read ExeFS... - - exefs_offset = ncch_header.exefs_offset * kBlockSize; - u32 exefs_size = ncch_header.exefs_size * kBlockSize; - - LOG_DEBUG(Loader, "ExeFS offset: 0x%08X", exefs_offset); - LOG_DEBUG(Loader, "ExeFS size: 0x%08X", exefs_size); - - file.Seek(exefs_offset + ncch_offset, SEEK_SET); - if (file.ReadBytes(&exefs_header, sizeof(ExeFs_Header)) != sizeof(ExeFs_Header)) - return ResultStatus::Error; - - is_exefs_loaded = true; - return ResultStatus::Success; -} - void AppLoader_NCCH::ParseRegionLockoutInfo() { std::vector smdh_buffer; if (ReadIcon(smdh_buffer) == ResultStatus::Success && smdh_buffer.size() >= sizeof(SMDH)) { @@ -339,23 +152,32 @@ void AppLoader_NCCH::ParseRegionLockoutInfo() { } ResultStatus AppLoader_NCCH::Load() { + u64_le ncch_program_id; + if (is_loaded) return ResultStatus::ErrorAlreadyLoaded; - ResultStatus result = LoadExeFS(); + ResultStatus result = base_ncch.Load(); if (result != ResultStatus::Success) return result; - std::string program_id{Common::StringFromFormat("%016" PRIX64, ncch_header.program_id)}; + ReadProgramId(ncch_program_id); + std::string program_id{Common::StringFromFormat("%016" PRIX64, ncch_program_id)}; LOG_INFO(Loader, "Program ID: %s", program_id.c_str()); + update_ncch.OpenFile(GetUpdateNCCHPath(ncch_program_id)); + result = update_ncch.Load(); + if (result == ResultStatus::Success) { + overlay_ncch = &update_ncch; + } + Core::Telemetry().AddField(Telemetry::FieldType::Session, "ProgramId", program_id); if (auto room_member = Network::GetRoomMember().lock()) { Network::GameInfo game_info; ReadTitle(game_info.name); - game_info.id = ncch_header.program_id; + game_info.id = ncch_program_id; room_member->SendGameInfo(game_info); } @@ -374,61 +196,40 @@ ResultStatus AppLoader_NCCH::Load() { } ResultStatus AppLoader_NCCH::ReadCode(std::vector& buffer) { - return LoadSectionExeFS(".code", buffer); + return overlay_ncch->LoadSectionExeFS(".code", buffer); } ResultStatus AppLoader_NCCH::ReadIcon(std::vector& buffer) { - return LoadSectionExeFS("icon", buffer); + return overlay_ncch->LoadSectionExeFS("icon", buffer); } ResultStatus AppLoader_NCCH::ReadBanner(std::vector& buffer) { - return LoadSectionExeFS("banner", buffer); + return overlay_ncch->LoadSectionExeFS("banner", buffer); } ResultStatus AppLoader_NCCH::ReadLogo(std::vector& buffer) { - return LoadSectionExeFS("logo", buffer); + return overlay_ncch->LoadSectionExeFS("logo", buffer); } ResultStatus AppLoader_NCCH::ReadProgramId(u64& out_program_id) { - if (!file.IsOpen()) - return ResultStatus::Error; - - ResultStatus result = LoadExeFS(); + ResultStatus result = base_ncch.ReadProgramId(out_program_id); if (result != ResultStatus::Success) return result; - out_program_id = ncch_header.program_id; return ResultStatus::Success; } ResultStatus AppLoader_NCCH::ReadRomFS(std::shared_ptr& romfs_file, u64& offset, u64& size) { - if (!file.IsOpen()) - return ResultStatus::Error; + return base_ncch.ReadRomFS(romfs_file, offset, size); +} - // Check if the NCCH has a RomFS... - if (ncch_header.romfs_offset != 0 && ncch_header.romfs_size != 0) { - u32 romfs_offset = ncch_offset + (ncch_header.romfs_offset * kBlockSize) + 0x1000; - u32 romfs_size = (ncch_header.romfs_size * kBlockSize) - 0x1000; +ResultStatus AppLoader_NCCH::ReadUpdateRomFS(std::shared_ptr& romfs_file, + u64& offset, u64& size) { + ResultStatus result = update_ncch.ReadRomFS(romfs_file, offset, size); - LOG_DEBUG(Loader, "RomFS offset: 0x%08X", romfs_offset); - LOG_DEBUG(Loader, "RomFS size: 0x%08X", romfs_size); - - if (file.GetSize() < romfs_offset + romfs_size) - return ResultStatus::Error; - - // We reopen the file, to allow its position to be independent from file's - romfs_file = std::make_shared(filepath, "rb"); - if (!romfs_file->IsOpen()) - return ResultStatus::Error; - - offset = romfs_offset; - size = romfs_size; - - return ResultStatus::Success; - } - LOG_DEBUG(Loader, "NCCH has no RomFS"); - return ResultStatus::ErrorNotUsed; + if (result != ResultStatus::Success) + return base_ncch.ReadRomFS(romfs_file, offset, size); } ResultStatus AppLoader_NCCH::ReadTitle(std::string& title) { diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index e40cef7649..9b56465cb2 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -5,154 +5,11 @@ #pragma once #include -#include "common/bit_field.h" #include "common/common_types.h" #include "common/swap.h" +#include "core/file_sys/ncch_container.h" #include "core/loader/loader.h" -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// NCCH header (Note: "NCCH" appears to be a publicly unknown acronym) - -struct NCCH_Header { - u8 signature[0x100]; - u32_le magic; - u32_le content_size; - u8 partition_id[8]; - u16_le maker_code; - u16_le version; - u8 reserved_0[4]; - u64_le program_id; - u8 reserved_1[0x10]; - u8 logo_region_hash[0x20]; - u8 product_code[0x10]; - u8 extended_header_hash[0x20]; - u32_le extended_header_size; - u8 reserved_2[4]; - u8 flags[8]; - u32_le plain_region_offset; - u32_le plain_region_size; - u32_le logo_region_offset; - u32_le logo_region_size; - u32_le exefs_offset; - u32_le exefs_size; - u32_le exefs_hash_region_size; - u8 reserved_3[4]; - u32_le romfs_offset; - u32_le romfs_size; - u32_le romfs_hash_region_size; - u8 reserved_4[4]; - u8 exefs_super_block_hash[0x20]; - u8 romfs_super_block_hash[0x20]; -}; - -static_assert(sizeof(NCCH_Header) == 0x200, "NCCH header structure size is wrong"); - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// ExeFS (executable file system) headers - -struct ExeFs_SectionHeader { - char name[8]; - u32 offset; - u32 size; -}; - -struct ExeFs_Header { - ExeFs_SectionHeader section[8]; - u8 reserved[0x80]; - u8 hashes[8][0x20]; -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// ExHeader (executable file system header) headers - -struct ExHeader_SystemInfoFlags { - u8 reserved[5]; - u8 flag; - u8 remaster_version[2]; -}; - -struct ExHeader_CodeSegmentInfo { - u32 address; - u32 num_max_pages; - u32 code_size; -}; - -struct ExHeader_CodeSetInfo { - u8 name[8]; - ExHeader_SystemInfoFlags flags; - ExHeader_CodeSegmentInfo text; - u32 stack_size; - ExHeader_CodeSegmentInfo ro; - u8 reserved[4]; - ExHeader_CodeSegmentInfo data; - u32 bss_size; -}; - -struct ExHeader_DependencyList { - u8 program_id[0x30][8]; -}; - -struct ExHeader_SystemInfo { - u64 save_data_size; - u8 jump_id[8]; - u8 reserved_2[0x30]; -}; - -struct ExHeader_StorageInfo { - u8 ext_save_data_id[8]; - u8 system_save_data_id[8]; - u8 reserved[8]; - u8 access_info[7]; - u8 other_attributes; -}; - -struct ExHeader_ARM11_SystemLocalCaps { - u64_le program_id; - u32_le core_version; - u8 reserved_flags[2]; - union { - u8 flags0; - BitField<0, 2, u8> ideal_processor; - BitField<2, 2, u8> affinity_mask; - BitField<4, 4, u8> system_mode; - }; - u8 priority; - u8 resource_limit_descriptor[0x10][2]; - ExHeader_StorageInfo storage_info; - u8 service_access_control[0x20][8]; - u8 ex_service_access_control[0x2][8]; - u8 reserved[0xf]; - u8 resource_limit_category; -}; - -struct ExHeader_ARM11_KernelCaps { - u32_le descriptors[28]; - u8 reserved[0x10]; -}; - -struct ExHeader_ARM9_AccessControl { - u8 descriptors[15]; - u8 descversion; -}; - -struct ExHeader_Header { - ExHeader_CodeSetInfo codeset_info; - ExHeader_DependencyList dependency_list; - ExHeader_SystemInfo system_info; - ExHeader_ARM11_SystemLocalCaps arm11_system_local_caps; - ExHeader_ARM11_KernelCaps arm11_kernel_caps; - ExHeader_ARM9_AccessControl arm9_access_control; - struct { - u8 signature[0x100]; - u8 ncch_public_key_modulus[0x100]; - ExHeader_ARM11_SystemLocalCaps arm11_system_local_caps; - ExHeader_ARM11_KernelCaps arm11_kernel_caps; - ExHeader_ARM9_AccessControl arm9_access_control; - } access_desc; -}; - -static_assert(sizeof(ExHeader_Header) == 0x800, "ExHeader structure size is wrong"); - //////////////////////////////////////////////////////////////////////////////////////////////////// // Loader namespace @@ -162,7 +19,8 @@ namespace Loader { class AppLoader_NCCH final : public AppLoader { public: AppLoader_NCCH(FileUtil::IOFile&& file, const std::string& filepath) - : AppLoader(std::move(file)), filepath(filepath) {} + : AppLoader(std::move(file)), filepath(filepath), base_ncch(filepath), + overlay_ncch(&base_ncch) {} /** * Returns the type of the file @@ -196,48 +54,24 @@ public: ResultStatus ReadRomFS(std::shared_ptr& romfs_file, u64& offset, u64& size) override; + ResultStatus ReadUpdateRomFS(std::shared_ptr& romfs_file, u64& offset, + u64& size) override; + ResultStatus ReadTitle(std::string& title) override; private: - /** - * Reads an application ExeFS section of an NCCH file into AppLoader (e.g. .code, .logo, etc.) - * @param name Name of section to read out of NCCH file - * @param buffer Vector to read data into - * @return ResultStatus result of function - */ - ResultStatus LoadSectionExeFS(const char* name, std::vector& buffer); - /** * Loads .code section into memory for booting * @return ResultStatus result of function */ ResultStatus LoadExec(); - /** - * Ensure ExeFS is loaded and ready for reading sections - * @return ResultStatus result of function - */ - ResultStatus LoadExeFS(); - /// Reads the region lockout info in the SMDH and send it to CFG service void ParseRegionLockoutInfo(); - bool is_exefs_loaded = false; - bool is_compressed = false; - - u32 entry_point = 0; - u32 code_size = 0; - u32 stack_size = 0; - u32 bss_size = 0; - u32 core_version = 0; - u8 priority = 0; - u8 resource_limit_category = 0; - u32 ncch_offset = 0; // Offset to NCCH header, can be 0 or after NCSD header - u32 exefs_offset = 0; - - NCCH_Header ncch_header; - ExeFs_Header exefs_header; - ExHeader_Header exheader_header; + FileSys::NCCHContainer base_ncch; + FileSys::NCCHContainer update_ncch; + FileSys::NCCHContainer* overlay_ncch; std::string filepath; }; From 774e7deae8655a6f09530770c56ae2e75d55309b Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 23 Sep 2017 20:32:18 -0500 Subject: [PATCH 161/195] HLE/Archives: Allow multiple loaded applications to access their SelfNCCH archive independently. The loaders now register each loaded ROM with the SelfNCCH factory, which keeps the data around for the duration of the emulation session. When opening the SelfNCCH archive, the factory queries the current program's programid and uses that as a key to the map that contains the NCCHData structure (RomFS, Icon, Banner, etc). 3dsx files do not have a programid and will use a default of 0 for this value, thus, only 1 3dsx file with RomFS is loadable at the same time. --- src/core/file_sys/archive_selfncch.cpp | 45 +++++++++++++++++++------- src/core/file_sys/archive_selfncch.h | 9 ++++-- src/core/hle/service/fs/archive.cpp | 18 ++++++++++- src/core/hle/service/fs/archive.h | 7 ++++ src/core/loader/3dsx.cpp | 3 +- src/core/loader/ncch.cpp | 3 +- 6 files changed, 66 insertions(+), 19 deletions(-) diff --git a/src/core/file_sys/archive_selfncch.cpp b/src/core/file_sys/archive_selfncch.cpp index 7dc91a4050..a16941c70e 100644 --- a/src/core/file_sys/archive_selfncch.cpp +++ b/src/core/file_sys/archive_selfncch.cpp @@ -3,12 +3,14 @@ // Refer to the license.txt file included. #include +#include #include "common/common_types.h" #include "common/logging/log.h" #include "common/swap.h" #include "core/file_sys/archive_selfncch.h" #include "core/file_sys/errors.h" #include "core/file_sys/ivfc_archive.h" +#include "core/hle/kernel/process.h" //////////////////////////////////////////////////////////////////////////////////////////////////// // FileSys namespace @@ -227,38 +229,57 @@ private: NCCHData ncch_data; }; -ArchiveFactory_SelfNCCH::ArchiveFactory_SelfNCCH(Loader::AppLoader& app_loader) { - std::shared_ptr romfs_file; - if (Loader::ResultStatus::Success == - app_loader.ReadRomFS(romfs_file, ncch_data.romfs_offset, ncch_data.romfs_size)) { +void ArchiveFactory_SelfNCCH::Register(Loader::AppLoader& app_loader) { + u64 program_id = 0; + if (app_loader.ReadProgramId(program_id) != Loader::ResultStatus::Success) { + LOG_WARNING( + Service_FS, + "Could not read program id when registering with SelfNCCH, this might be a 3dsx file"); + } - ncch_data.romfs_file = std::move(romfs_file); + LOG_DEBUG(Service_FS, "Registering program %016" PRIX64 " with the SelfNCCH archive factory", + program_id); + + if (ncch_data.find(program_id) != ncch_data.end()) { + LOG_WARNING(Service_FS, "Registering program %016" PRIX64 + " with SelfNCCH will override existing mapping", + program_id); + } + + NCCHData& data = ncch_data[program_id]; + + std::shared_ptr romfs_file_; + if (Loader::ResultStatus::Success == + app_loader.ReadRomFS(romfs_file_, data.romfs_offset, data.romfs_size)) { + + data.romfs_file = std::move(romfs_file_); } std::shared_ptr update_romfs_file; if (Loader::ResultStatus::Success == - app_loader.ReadUpdateRomFS(update_romfs_file, ncch_data.update_romfs_offset, - ncch_data.update_romfs_size)) { + app_loader.ReadUpdateRomFS(update_romfs_file, data.update_romfs_offset, + data.update_romfs_size)) { - ncch_data.update_romfs_file = std::move(update_romfs_file); + data.update_romfs_file = std::move(update_romfs_file); } std::vector buffer; if (Loader::ResultStatus::Success == app_loader.ReadIcon(buffer)) - ncch_data.icon = std::make_shared>(std::move(buffer)); + data.icon = std::make_shared>(std::move(buffer)); buffer.clear(); if (Loader::ResultStatus::Success == app_loader.ReadLogo(buffer)) - ncch_data.logo = std::make_shared>(std::move(buffer)); + data.logo = std::make_shared>(std::move(buffer)); buffer.clear(); if (Loader::ResultStatus::Success == app_loader.ReadBanner(buffer)) - ncch_data.banner = std::make_shared>(std::move(buffer)); + data.banner = std::make_shared>(std::move(buffer)); } ResultVal> ArchiveFactory_SelfNCCH::Open(const Path& path) { - auto archive = std::make_unique(ncch_data); + auto archive = std::make_unique( + ncch_data[Kernel::g_current_process->codeset->program_id]); return MakeResult>(std::move(archive)); } diff --git a/src/core/file_sys/archive_selfncch.h b/src/core/file_sys/archive_selfncch.h index f1c6599481..0d6d6766ee 100644 --- a/src/core/file_sys/archive_selfncch.h +++ b/src/core/file_sys/archive_selfncch.h @@ -6,6 +6,7 @@ #include #include +#include #include #include "common/common_types.h" #include "core/file_sys/archive_backend.h" @@ -33,7 +34,10 @@ struct NCCHData { /// File system interface to the SelfNCCH archive class ArchiveFactory_SelfNCCH final : public ArchiveFactory { public: - explicit ArchiveFactory_SelfNCCH(Loader::AppLoader& app_loader); + ArchiveFactory_SelfNCCH() = default; + + /// Registers a loaded application so that we can open its SelfNCCH archive when requested. + void Register(Loader::AppLoader& app_loader); std::string GetName() const override { return "SelfNCCH"; @@ -43,7 +47,8 @@ public: ResultVal GetFormatInfo(const Path& path) const override; private: - NCCHData ncch_data; + /// Mapping of ProgramId -> NCCHData + std::unordered_map ncch_data; }; } // namespace FileSys diff --git a/src/core/hle/service/fs/archive.cpp b/src/core/hle/service/fs/archive.cpp index 033fbc9aa8..4ccb3cd32a 100644 --- a/src/core/hle/service/fs/archive.cpp +++ b/src/core/hle/service/fs/archive.cpp @@ -20,6 +20,7 @@ #include "core/file_sys/archive_savedata.h" #include "core/file_sys/archive_sdmc.h" #include "core/file_sys/archive_sdmcwriteonly.h" +#include "core/file_sys/archive_selfncch.h" #include "core/file_sys/archive_systemsavedata.h" #include "core/file_sys/directory_backend.h" #include "core/file_sys/errors.h" @@ -48,7 +49,7 @@ struct hash { return std::hash()(static_cast(id_code)); } }; -} +} // namespace std static constexpr Kernel::Handle INVALID_HANDLE{}; @@ -564,6 +565,21 @@ void RegisterArchiveTypes() { auto systemsavedata_factory = std::make_unique(nand_directory); RegisterArchiveType(std::move(systemsavedata_factory), ArchiveIdCode::SystemSaveData); + + auto selfncch_factory = std::make_unique(); + RegisterArchiveType(std::move(selfncch_factory), ArchiveIdCode::SelfNCCH); +} + +void RegisterSelfNCCH(Loader::AppLoader& app_loader) { + auto itr = id_code_map.find(ArchiveIdCode::SelfNCCH); + if (itr == id_code_map.end()) { + LOG_ERROR(Service_FS, + "Could not register a new NCCH because the SelfNCCH archive hasn't been created"); + return; + } + + auto* factory = static_cast(itr->second.get()); + factory->Register(app_loader); } void UnregisterArchiveTypes() { diff --git a/src/core/hle/service/fs/archive.h b/src/core/hle/service/fs/archive.h index 3a3371c882..e3c8fc2ef4 100644 --- a/src/core/hle/service/fs/archive.h +++ b/src/core/hle/service/fs/archive.h @@ -21,6 +21,10 @@ static constexpr char SYSTEM_ID[]{"00000000000000000000000000000000"}; /// The scrambled SD card CID, also known as ID1 static constexpr char SDCARD_ID[]{"00000000000000000000000000000000"}; +namespace Loader { +class AppLoader; +} + namespace Service { namespace FS { @@ -259,6 +263,9 @@ void ArchiveInit(); /// Shutdown archives void ArchiveShutdown(); +/// Registers a new NCCH file with the SelfNCCH archive factory +void RegisterSelfNCCH(Loader::AppLoader& app_loader); + /// Register all archive types void RegisterArchiveTypes(); diff --git a/src/core/loader/3dsx.cpp b/src/core/loader/3dsx.cpp index a03515e6ec..5ad5c52876 100644 --- a/src/core/loader/3dsx.cpp +++ b/src/core/loader/3dsx.cpp @@ -278,8 +278,7 @@ ResultStatus AppLoader_THREEDSX::Load() { Kernel::g_current_process->Run(48, Kernel::DEFAULT_STACK_SIZE); - Service::FS::RegisterArchiveType(std::make_unique(*this), - Service::FS::ArchiveIdCode::SelfNCCH); + Service::FS::RegisterSelfNCCH(*this); is_loaded = true; return ResultStatus::Success; diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index c46d7cfc66..5107135f98 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -187,8 +187,7 @@ ResultStatus AppLoader_NCCH::Load() { if (ResultStatus::Success != result) return result; - Service::FS::RegisterArchiveType(std::make_unique(*this), - Service::FS::ArchiveIdCode::SelfNCCH); + Service::FS::RegisterSelfNCCH(*this); ParseRegionLockoutInfo(); From d7459354f58d1b71fc0c5ec48de9242e6a2fd00c Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 25 Sep 2017 13:06:42 -0500 Subject: [PATCH 162/195] Audio: Use std::deque instead of std::vector for the audio buffer type (StereoBuffer16). The current code inserts and deletes elements from the beginning of the audio buffer, which is very inefficient in an std::vector. Profiling was done using VisualStudio2017's Performance Analyzer in Super Mario 3D Land. Before this change: AudioInterp::Linear had 14.14% of the runtime (inclusive) and most of that time was spent in std::vector's insert implementation. After this change: AudioInterp::Linear has 0.36% of the runtime (inclusive) --- src/audio_core/codec.cpp | 4 +++- src/audio_core/codec.h | 4 ++-- src/audio_core/hle/source.h | 2 +- src/audio_core/interpolate.cpp | 2 +- src/audio_core/interpolate.h | 4 ++-- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/audio_core/codec.cpp b/src/audio_core/codec.cpp index 7a3bd7eb3e..6fba9fdae7 100644 --- a/src/audio_core/codec.cpp +++ b/src/audio_core/codec.cpp @@ -117,7 +117,9 @@ StereoBuffer16 DecodePCM16(const unsigned num_channels, const u8* const data, ret[i].fill(sample); } } else { - std::memcpy(ret.data(), data, sample_count * 2 * sizeof(u16)); + for (size_t i = 0; i < sample_count; ++i) { + std::memcpy(&ret[i], data + i * sizeof(s16) * 2, 2 * sizeof(s16)); + } } return ret; diff --git a/src/audio_core/codec.h b/src/audio_core/codec.h index 2b0c395e69..877b2202d4 100644 --- a/src/audio_core/codec.h +++ b/src/audio_core/codec.h @@ -5,13 +5,13 @@ #pragma once #include -#include +#include #include "common/common_types.h" namespace Codec { /// A variable length buffer of signed PCM16 stereo samples. -using StereoBuffer16 = std::vector>; +using StereoBuffer16 = std::deque>; /// See: Codec::DecodeADPCM struct ADPCMState { diff --git a/src/audio_core/hle/source.h b/src/audio_core/hle/source.h index ccb7f064fd..c4d2debc23 100644 --- a/src/audio_core/hle/source.h +++ b/src/audio_core/hle/source.h @@ -108,7 +108,7 @@ private: u32 current_sample_number = 0; u32 next_sample_number = 0; - std::vector> current_buffer; + AudioInterp::StereoBuffer16 current_buffer; // buffer_id state diff --git a/src/audio_core/interpolate.cpp b/src/audio_core/interpolate.cpp index 16e68bc5c4..83573d7721 100644 --- a/src/audio_core/interpolate.cpp +++ b/src/audio_core/interpolate.cpp @@ -47,7 +47,7 @@ static void StepOverSamples(State& state, StereoBuffer16& input, float rate, state.xn1 = input[inputi + 1]; state.fposition = fposition - inputi * scale_factor; - input.erase(input.begin(), input.begin() + inputi + 2); + input.erase(input.begin(), std::next(input.begin(), inputi + 2)); } void None(State& state, StereoBuffer16& input, float rate, DSP::HLE::StereoFrame16& output, diff --git a/src/audio_core/interpolate.h b/src/audio_core/interpolate.h index 59f59bc141..8dff6111a3 100644 --- a/src/audio_core/interpolate.h +++ b/src/audio_core/interpolate.h @@ -5,14 +5,14 @@ #pragma once #include -#include +#include #include "audio_core/hle/common.h" #include "common/common_types.h" namespace AudioInterp { /// A variable length buffer of signed PCM16 stereo samples. -using StereoBuffer16 = std::vector>; +using StereoBuffer16 = std::deque>; struct State { /// Two historical samples. From 41f6c9f87f3cd231954cd401be39653c4f78740a Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 24 Sep 2017 20:52:46 -0500 Subject: [PATCH 163/195] Memory/RasterizerCache: Ignore unmapped memory regions when caching physical regions. Not all physical regions need to be mapped into the address space of every process, for example, system modules do not have a VRAM mapping. This fixes a crash when loading applets and system modules. --- src/core/memory.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 68a6b1ac26..2f5cdcefe4 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -316,8 +316,15 @@ void RasterizerMarkRegionCached(PAddr start, u32 size, int count_delta) { for (unsigned i = 0; i < num_pages; ++i, paddr += PAGE_SIZE) { boost::optional maybe_vaddr = PhysicalToVirtualAddress(paddr); - if (!maybe_vaddr) + // While the physical <-> virtual mapping is 1:1 for the regions supported by the cache, + // some games (like Pokemon Super Mystery Dungeon) will try to use textures that go beyond + // the end address of VRAM, causing the Virtual->Physical translation to fail when flushing + // parts of the texture. + if (!maybe_vaddr) { + LOG_ERROR(HW_Memory, + "Trying to flush a cached region to an invalid physical address %08X", paddr); continue; + } VAddr vaddr = *maybe_vaddr; u8& res_count = current_page_table->cached_res_count[vaddr >> PAGE_BITS]; @@ -329,6 +336,10 @@ void RasterizerMarkRegionCached(PAddr start, u32 size, int count_delta) { if (res_count == 0) { PageType& page_type = current_page_table->attributes[vaddr >> PAGE_BITS]; switch (page_type) { + case PageType::Unmapped: + // It is not necessary for a process to have this region mapped into its address + // space, for example, a system module need not have a VRAM mapping. + break; case PageType::Memory: page_type = PageType::RasterizerCachedMemory; current_page_table->pointers[vaddr >> PAGE_BITS] = nullptr; @@ -347,6 +358,10 @@ void RasterizerMarkRegionCached(PAddr start, u32 size, int count_delta) { if (res_count == 0) { PageType& page_type = current_page_table->attributes[vaddr >> PAGE_BITS]; switch (page_type) { + case PageType::Unmapped: + // It is not necessary for a process to have this region mapped into its address + // space, for example, a system module need not have a VRAM mapping. + break; case PageType::RasterizerCachedMemory: { u8* pointer = GetPointerFromVMA(vaddr & ~PAGE_MASK); if (pointer == nullptr) { From e27ae046960e20144892cf8252d8a672a48b0123 Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 24 Sep 2017 19:09:13 -0500 Subject: [PATCH 164/195] HLE/APT: Always set up the APT parameter when starting a library applet. Only use the HLE interface if an HLE applet with the desired id was started. This commit reorganizes the APT code surrounding parameter creation and delivery to make it easier to support LLE applets in the future. As future work, the HLE applet interface can be reworked to utilize the same facilities as the LLE interface. --- src/core/hle/service/apt/apt.cpp | 73 ++++++++++++++++++------------ src/core/hle/service/apt/apt_s.cpp | 4 +- 2 files changed, 47 insertions(+), 30 deletions(-) diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 8c0ba73f2a..c36775473d 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -165,7 +165,11 @@ void SendParameter(const MessageParameter& parameter) { next_parameter = parameter; // Signal the event to let the receiver know that a new parameter is ready to be read auto* const slot_data = GetAppletSlotData(static_cast(parameter.destination_id)); - ASSERT(slot_data); + if (slot_data == nullptr) { + LOG_DEBUG(Service_APT, "No applet was registered with the id %03X", + parameter.destination_id); + return; + } slot_data->parameter_event->Signal(); } @@ -486,9 +490,6 @@ void SendParameter(Service::Interface* self) { size_t size; VAddr buffer = rp.PopStaticBuffer(&size); - std::shared_ptr dest_applet = - HLE::Applets::Applet::Get(static_cast(dst_app_id)); - LOG_DEBUG(Service_APT, "called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X," "buffer_size=0x%08X, handle=0x%08X, size=0x%08zX, in_param_buffer_ptr=0x%08X", @@ -503,12 +504,6 @@ void SendParameter(Service::Interface* self) { return; } - if (dest_applet == nullptr) { - LOG_ERROR(Service_APT, "Unknown applet id=0x%08X", dst_app_id); - rb.Push(-1); // TODO(Subv): Find the right error code - return; - } - MessageParameter param; param.destination_id = dst_app_id; param.sender_id = src_app_id; @@ -517,7 +512,14 @@ void SendParameter(Service::Interface* self) { param.buffer.resize(buffer_size); Memory::ReadBlock(buffer, param.buffer.data(), param.buffer.size()); - rb.Push(dest_applet->ReceiveParameter(param)); + SendParameter(param); + + // If the applet is running in HLE mode, use the HLE interface to communicate with it. + if (auto dest_applet = HLE::Applets::Applet::Get(static_cast(dst_app_id))) { + rb.Push(dest_applet->ReceiveParameter(param)); + } else { + rb.Push(RESULT_SUCCESS); + } } void ReceiveParameter(Service::Interface* self) { @@ -746,7 +748,12 @@ void PrepareToStartLibraryApplet(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x18, 1, 0); // 0x180040 AppletId applet_id = static_cast(rp.Pop()); + LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + + // TODO(Subv): Launch the requested applet application. + auto applet = HLE::Applets::Applet::Get(applet_id); if (applet) { LOG_WARNING(Service_APT, "applet has already been started id=%08X", applet_id); @@ -754,14 +761,18 @@ void PrepareToStartLibraryApplet(Service::Interface* self) { } else { rb.Push(HLE::Applets::Applet::Create(applet_id)); } - LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); } void PreloadLibraryApplet(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x16, 1, 0); // 0x160040 AppletId applet_id = static_cast(rp.Pop()); + LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); + IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); + + // TODO(Subv): Launch the requested applet application. + auto applet = HLE::Applets::Applet::Get(applet_id); if (applet) { LOG_WARNING(Service_APT, "applet has already been started id=%08X", applet_id); @@ -769,34 +780,40 @@ void PreloadLibraryApplet(Service::Interface* self) { } else { rb.Push(HLE::Applets::Applet::Create(applet_id)); } - LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); } void StartLibraryApplet(Service::Interface* self) { IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x1E, 2, 4); // 0x1E0084 AppletId applet_id = static_cast(rp.Pop()); - std::shared_ptr applet = HLE::Applets::Applet::Get(applet_id); - - LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); - - if (applet == nullptr) { - LOG_ERROR(Service_APT, "unknown applet id=%08X", applet_id); - IPC::RequestBuilder rb = rp.MakeBuilder(1, 0, false); - rb.Push(-1); // TODO(Subv): Find the right error code - return; - } size_t buffer_size = rp.Pop(); Kernel::Handle handle = rp.PopHandle(); VAddr buffer_addr = rp.PopStaticBuffer(); - AppletStartupParameter parameter; - parameter.object = Kernel::g_handle_table.GetGeneric(handle); - parameter.buffer.resize(buffer_size); - Memory::ReadBlock(buffer_addr, parameter.buffer.data(), parameter.buffer.size()); + LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); - rb.Push(applet->Start(parameter)); + + // Send the Wakeup signal to the applet + MessageParameter param; + param.destination_id = static_cast(applet_id); + param.sender_id = static_cast(AppletId::Application); + param.object = Kernel::g_handle_table.GetGeneric(handle); + param.signal = static_cast(SignalType::Wakeup); + param.buffer.resize(buffer_size); + Memory::ReadBlock(buffer_addr, param.buffer.data(), param.buffer.size()); + SendParameter(param); + + // In case the applet is being HLEd, attempt to communicate with it. + if (auto applet = HLE::Applets::Applet::Get(applet_id)) { + AppletStartupParameter parameter; + parameter.object = Kernel::g_handle_table.GetGeneric(handle); + parameter.buffer.resize(buffer_size); + Memory::ReadBlock(buffer_addr, parameter.buffer.data(), parameter.buffer.size()); + rb.Push(applet->Start(parameter)); + } else { + rb.Push(RESULT_SUCCESS); + } } void CancelLibraryApplet(Service::Interface* self) { diff --git a/src/core/hle/service/apt/apt_s.cpp b/src/core/hle/service/apt/apt_s.cpp index ec5668d05f..cf74c2a364 100644 --- a/src/core/hle/service/apt/apt_s.cpp +++ b/src/core/hle/service/apt/apt_s.cpp @@ -20,7 +20,7 @@ const Interface::FunctionInfo FunctionTable[] = { {0x00090040, nullptr, "IsRegistered"}, {0x000A0040, nullptr, "GetAttribute"}, {0x000B0040, InquireNotification, "InquireNotification"}, - {0x000C0104, nullptr, "SendParameter"}, + {0x000C0104, SendParameter, "SendParameter"}, {0x000D0080, ReceiveParameter, "ReceiveParameter"}, {0x000E0080, GlanceParameter, "GlanceParameter"}, {0x000F0100, nullptr, "CancelParameter"}, @@ -38,7 +38,7 @@ const Interface::FunctionInfo FunctionTable[] = { {0x001B00C4, nullptr, "StartApplication"}, {0x001C0000, nullptr, "WakeupApplication"}, {0x001D0000, nullptr, "CancelApplication"}, - {0x001E0084, nullptr, "StartLibraryApplet"}, + {0x001E0084, StartLibraryApplet, "StartLibraryApplet"}, {0x001F0084, nullptr, "StartSystemApplet"}, {0x00200044, nullptr, "StartNewestHomeMenu"}, {0x00210000, nullptr, "OrderToCloseApplication"}, From 35da7f57efd5153be37a05ffcbb57412da74265a Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 26 Sep 2017 17:27:44 -0500 Subject: [PATCH 165/195] Memory: Allow IsValidVirtualAddress to be called with a specific process parameter. There is still an overload of IsValidVirtualAddress that only takes the VAddr and will default to the current process. --- src/core/memory.cpp | 25 ++++++++++++++++++------- src/core/memory.h | 7 +++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index a6b5f6c999..c42f4326b2 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -110,8 +110,8 @@ static u8* GetPointerFromVMA(VAddr vaddr) { /** * This function should only be called for virtual addreses with attribute `PageType::Special`. */ -static MMIORegionPointer GetMMIOHandler(VAddr vaddr) { - for (const auto& region : current_page_table->special_regions) { +static MMIORegionPointer GetMMIOHandler(const PageTable& page_table, VAddr vaddr) { + for (const auto& region : page_table.special_regions) { if (vaddr >= region.base && vaddr < (region.base + region.size)) { return region.handler; } @@ -120,6 +120,11 @@ static MMIORegionPointer GetMMIOHandler(VAddr vaddr) { return nullptr; // Should never happen } +static MMIORegionPointer GetMMIOHandler(VAddr vaddr) { + const PageTable& page_table = Kernel::g_current_process->vm_manager.page_table; + return GetMMIOHandler(page_table, vaddr); +} + template T ReadMMIO(MMIORegionPointer mmio_handler, VAddr addr); @@ -204,18 +209,20 @@ void Write(const VAddr vaddr, const T data) { } } -bool IsValidVirtualAddress(const VAddr vaddr) { - const u8* page_pointer = current_page_table->pointers[vaddr >> PAGE_BITS]; +bool IsValidVirtualAddress(const Kernel::Process& process, const VAddr vaddr) { + auto& page_table = process.vm_manager.page_table; + + const u8* page_pointer = page_table.pointers[vaddr >> PAGE_BITS]; if (page_pointer) return true; - if (current_page_table->attributes[vaddr >> PAGE_BITS] == PageType::RasterizerCachedMemory) + if (page_table.attributes[vaddr >> PAGE_BITS] == PageType::RasterizerCachedMemory) return true; - if (current_page_table->attributes[vaddr >> PAGE_BITS] != PageType::Special) + if (page_table.attributes[vaddr >> PAGE_BITS] != PageType::Special) return false; - MMIORegionPointer mmio_region = GetMMIOHandler(vaddr); + MMIORegionPointer mmio_region = GetMMIOHandler(page_table, vaddr); if (mmio_region) { return mmio_region->IsValidAddress(vaddr); } @@ -223,6 +230,10 @@ bool IsValidVirtualAddress(const VAddr vaddr) { return false; } +bool IsValidVirtualAddress(const VAddr vaddr) { + return IsValidVirtualAddress(*Kernel::g_current_process, vaddr); +} + bool IsValidPhysicalAddress(const PAddr paddr) { return GetPhysicalPointer(paddr) != nullptr; } diff --git a/src/core/memory.h b/src/core/memory.h index 1865bfea04..347c08c781 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -12,6 +12,10 @@ #include "common/common_types.h" #include "core/mmio.h" +namespace Kernel { +class Process; +} + namespace Memory { /** @@ -185,7 +189,10 @@ enum : VAddr { void SetCurrentPageTable(PageTable* page_table); PageTable* GetCurrentPageTable(); +/// Determines if the given VAddr is valid for the specified process. +bool IsValidVirtualAddress(const Kernel::Process& process, const VAddr vaddr); bool IsValidVirtualAddress(const VAddr addr); + bool IsValidPhysicalAddress(const PAddr addr); u8 Read8(VAddr addr); From c102e3ae282ae849667ae91f5f0213a80adf474f Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 26 Sep 2017 17:29:06 -0500 Subject: [PATCH 166/195] Tests: Fixed ARM VFP tests --- src/tests/core/arm/arm_test_common.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/tests/core/arm/arm_test_common.cpp b/src/tests/core/arm/arm_test_common.cpp index cfe0d503ae..484713a92c 100644 --- a/src/tests/core/arm/arm_test_common.cpp +++ b/src/tests/core/arm/arm_test_common.cpp @@ -3,30 +3,34 @@ // Refer to the license.txt file included. #include "core/core.h" +#include "core/hle/kernel/process.h" #include "core/memory.h" #include "core/memory_setup.h" #include "tests/core/arm/arm_test_common.h" namespace ArmTests { -static Memory::PageTable page_table; +static Memory::PageTable* page_table = nullptr; TestEnvironment::TestEnvironment(bool mutable_memory_) : mutable_memory(mutable_memory_), test_memory(std::make_shared(this)) { - page_table.pointers.fill(nullptr); - page_table.attributes.fill(Memory::PageType::Unmapped); - page_table.cached_res_count.fill(0); + Kernel::g_current_process = Kernel::Process::Create(Kernel::CodeSet::Create("", 0)); + page_table = &Kernel::g_current_process->vm_manager.page_table; - Memory::MapIoRegion(page_table, 0x00000000, 0x80000000, test_memory); - Memory::MapIoRegion(page_table, 0x80000000, 0x80000000, test_memory); + page_table->pointers.fill(nullptr); + page_table->attributes.fill(Memory::PageType::Unmapped); + page_table->cached_res_count.fill(0); - Memory::SetCurrentPageTable(&page_table); + Memory::MapIoRegion(*page_table, 0x00000000, 0x80000000, test_memory); + Memory::MapIoRegion(*page_table, 0x80000000, 0x80000000, test_memory); + + Memory::SetCurrentPageTable(page_table); } TestEnvironment::~TestEnvironment() { - Memory::UnmapRegion(page_table, 0x80000000, 0x80000000); - Memory::UnmapRegion(page_table, 0x00000000, 0x80000000); + Memory::UnmapRegion(*page_table, 0x80000000, 0x80000000); + Memory::UnmapRegion(*page_table, 0x00000000, 0x80000000); } void TestEnvironment::SetMemory64(VAddr vaddr, u64 value) { From a8d2f5787f998e08eccaa66c2fe0cdab997c2253 Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 26 Sep 2017 17:31:50 -0500 Subject: [PATCH 167/195] Tests: Added Memory::IsValidVirtualAddress tests. --- src/tests/CMakeLists.txt | 1 + src/tests/core/memory/memory.cpp | 56 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 src/tests/core/memory/memory.cpp diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 5e9c4c2bff..1aac0daa23 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -4,6 +4,7 @@ set(SRCS core/arm/dyncom/arm_dyncom_vfp_tests.cpp core/file_sys/path_parser.cpp core/hle/kernel/hle_ipc.cpp + core/memory/memory.cpp glad.cpp tests.cpp ) diff --git a/src/tests/core/memory/memory.cpp b/src/tests/core/memory/memory.cpp new file mode 100644 index 0000000000..a01b896f70 --- /dev/null +++ b/src/tests/core/memory/memory.cpp @@ -0,0 +1,56 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include "core/hle/kernel/memory.h" +#include "core/hle/kernel/process.h" +#include "core/memory.h" + +TEST_CASE("Memory::IsValidVirtualAddress", "[core][memory]") { + SECTION("these regions should not be mapped on an empty process") { + auto process = Kernel::Process::Create(Kernel::CodeSet::Create("", 0)); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::PROCESS_IMAGE_VADDR) == false); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::HEAP_VADDR) == false); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::LINEAR_HEAP_VADDR) == false); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::VRAM_VADDR) == false); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::CONFIG_MEMORY_VADDR) == false); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::SHARED_PAGE_VADDR) == false); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::TLS_AREA_VADDR) == false); + } + + SECTION("CONFIG_MEMORY_VADDR and SHARED_PAGE_VADDR should be valid after mapping them") { + auto process = Kernel::Process::Create(Kernel::CodeSet::Create("", 0)); + Kernel::MapSharedPages(process->vm_manager); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::CONFIG_MEMORY_VADDR) == true); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::SHARED_PAGE_VADDR) == true); + } + + SECTION("special regions should be valid after mapping them") { + auto process = Kernel::Process::Create(Kernel::CodeSet::Create("", 0)); + SECTION("VRAM") { + Kernel::HandleSpecialMapping(process->vm_manager, + {Memory::VRAM_VADDR, Memory::VRAM_SIZE, false, false}); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::VRAM_VADDR) == true); + } + + SECTION("IO (Not yet implemented)") { + Kernel::HandleSpecialMapping( + process->vm_manager, {Memory::IO_AREA_VADDR, Memory::IO_AREA_SIZE, false, false}); + CHECK_FALSE(Memory::IsValidVirtualAddress(*process, Memory::IO_AREA_VADDR) == true); + } + + SECTION("DSP") { + Kernel::HandleSpecialMapping( + process->vm_manager, {Memory::DSP_RAM_VADDR, Memory::DSP_RAM_SIZE, false, false}); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::DSP_RAM_VADDR) == true); + } + } + + SECTION("Unmapping a VAddr should make it invalid") { + auto process = Kernel::Process::Create(Kernel::CodeSet::Create("", 0)); + Kernel::MapSharedPages(process->vm_manager); + process->vm_manager.UnmapRange(Memory::CONFIG_MEMORY_VADDR, Memory::CONFIG_MEMORY_SIZE); + CHECK(Memory::IsValidVirtualAddress(*process, Memory::CONFIG_MEMORY_VADDR) == false); + } +} From 3165466b665185ecbc3e33b02b0b90e25e7248ba Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 26 Sep 2017 17:40:49 -0500 Subject: [PATCH 168/195] Kernel/Thread: Allow specifying which process a thread belongs to when creating it. Don't automatically assume that Thread::Create will only be called when the parent process is currently scheduled. This assumption will be broken when applets or system modules are loaded. --- src/core/hle/kernel/process.cpp | 2 +- src/core/hle/kernel/thread.cpp | 17 +++++++++-------- src/core/hle/kernel/thread.h | 15 +++++++++------ src/core/hle/svc.cpp | 5 +++-- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp index 522ad2333c..cf3163e0fe 100644 --- a/src/core/hle/kernel/process.cpp +++ b/src/core/hle/kernel/process.cpp @@ -147,7 +147,7 @@ void Process::Run(s32 main_thread_priority, u32 stack_size) { } vm_manager.LogLayout(Log::Level::Debug); - Kernel::SetupMainThread(codeset->entrypoint, main_thread_priority); + Kernel::SetupMainThread(codeset->entrypoint, main_thread_priority, this); } VAddr Process::GetLinearHeapAreaAddress() const { diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 61378211fc..1033f8552e 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -361,7 +361,8 @@ static void ResetThreadContext(ARM_Interface::ThreadContext& context, u32 stack_ } ResultVal> Thread::Create(std::string name, VAddr entry_point, u32 priority, - u32 arg, s32 processor_id, VAddr stack_top) { + u32 arg, s32 processor_id, VAddr stack_top, + SharedPtr owner_process) { // Check if priority is in ranged. Lowest priority -> highest priority id. if (priority > THREADPRIO_LOWEST) { LOG_ERROR(Kernel_SVC, "Invalid thread priority: %d", priority); @@ -375,7 +376,7 @@ ResultVal> Thread::Create(std::string name, VAddr entry_point, // TODO(yuriks): Other checks, returning 0xD9001BEA - if (!Memory::IsValidVirtualAddress(entry_point)) { + if (!Memory::IsValidVirtualAddress(*owner_process, entry_point)) { LOG_ERROR(Kernel_SVC, "(name=%s): invalid entry %08x", name.c_str(), entry_point); // TODO: Verify error return ResultCode(ErrorDescription::InvalidAddress, ErrorModule::Kernel, @@ -399,10 +400,10 @@ ResultVal> Thread::Create(std::string name, VAddr entry_point, thread->wait_address = 0; thread->name = std::move(name); thread->callback_handle = wakeup_callback_handle_table.Create(thread).Unwrap(); - thread->owner_process = g_current_process; + thread->owner_process = owner_process; // Find the next available TLS index, and mark it as used - auto& tls_slots = Kernel::g_current_process->tls_slots; + auto& tls_slots = owner_process->tls_slots; bool needs_allocation = true; u32 available_page; // Which allocated page has free space u32 available_slot; // Which slot within the page is free @@ -426,13 +427,13 @@ ResultVal> Thread::Create(std::string name, VAddr entry_point, // Allocate some memory from the end of the linear heap for this region. linheap_memory->insert(linheap_memory->end(), Memory::PAGE_SIZE, 0); memory_region->used += Memory::PAGE_SIZE; - Kernel::g_current_process->linear_heap_used += Memory::PAGE_SIZE; + owner_process->linear_heap_used += Memory::PAGE_SIZE; tls_slots.emplace_back(0); // The page is completely available at the start available_page = tls_slots.size() - 1; available_slot = 0; // Use the first slot in the new page - auto& vm_manager = Kernel::g_current_process->vm_manager; + auto& vm_manager = owner_process->vm_manager; vm_manager.RefreshMemoryBlockMappings(linheap_memory.get()); // Map the page to the current process' address space. @@ -486,10 +487,10 @@ void Thread::BoostPriority(s32 priority) { current_priority = priority; } -SharedPtr SetupMainThread(u32 entry_point, s32 priority) { +SharedPtr SetupMainThread(u32 entry_point, s32 priority, SharedPtr owner_process) { // Initialize new "main" thread auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0, - Memory::HEAP_VADDR_END); + Memory::HEAP_VADDR_END, owner_process); SharedPtr thread = std::move(thread_res).Unwrap(); diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index 6a3566f15b..ddc0d15c56 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -56,10 +56,12 @@ public: * @param arg User data to pass to the thread * @param processor_id The ID(s) of the processors on which the thread is desired to be run * @param stack_top The address of the thread's stack top + * @param owner_process The parent process for the thread * @return A shared pointer to the newly created thread */ static ResultVal> Create(std::string name, VAddr entry_point, u32 priority, - u32 arg, s32 processor_id, VAddr stack_top); + u32 arg, s32 processor_id, VAddr stack_top, + SharedPtr owner_process); std::string GetName() const override { return name; @@ -116,9 +118,9 @@ public: void ResumeFromWait(); /** - * Schedules an event to wake up the specified thread after the specified delay - * @param nanoseconds The time this thread will be allowed to sleep for - */ + * Schedules an event to wake up the specified thread after the specified delay + * @param nanoseconds The time this thread will be allowed to sleep for + */ void WakeAfterDelay(s64 nanoseconds); /** @@ -214,9 +216,10 @@ private: * Sets up the primary application thread * @param entry_point The address at which the thread should start execution * @param priority The priority to give the main thread + * @param owner_process The parent process for the main thread * @return A shared pointer to the main thread */ -SharedPtr SetupMainThread(u32 entry_point, s32 priority); +SharedPtr SetupMainThread(u32 entry_point, s32 priority, SharedPtr owner_process); /** * Returns whether there are any threads that are ready to run. @@ -276,4 +279,4 @@ void ThreadingShutdown(); */ const std::vector>& GetThreadList(); -} // namespace +} // namespace Kernel diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index dfc36748c1..05c6897bf8 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -656,8 +656,9 @@ static ResultCode CreateThread(Kernel::Handle* out_handle, u32 priority, u32 ent "Newly created thread must run in the SysCore (Core1), unimplemented."); } - CASCADE_RESULT(SharedPtr thread, Kernel::Thread::Create(name, entry_point, priority, - arg, processor_id, stack_top)); + CASCADE_RESULT(SharedPtr thread, + Kernel::Thread::Create(name, entry_point, priority, arg, processor_id, stack_top, + Kernel::g_current_process)); thread->context.fpscr = FPSCR_DEFAULT_NAN | FPSCR_FLUSH_TO_ZERO | FPSCR_ROUND_TOZERO; // 0x03C00000 From 7f48aa8d2580da6b3b83a389e31804e493aba69f Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 26 Sep 2017 18:17:47 -0500 Subject: [PATCH 169/195] Loaders: Don't automatically set the current process every time we load an application. The loaders will now just create a Kernel::Process, construct it and return it to the caller, which is responsible for setting it as the current process and configuring the global page table. --- src/core/core.cpp | 6 ++++-- src/core/loader/3dsx.cpp | 15 +++++++-------- src/core/loader/3dsx.h | 2 +- src/core/loader/elf.cpp | 15 +++++++-------- src/core/loader/elf.h | 2 +- src/core/loader/loader.h | 13 ++++++++----- src/core/loader/ncch.cpp | 19 +++++++++---------- src/core/loader/ncch.h | 5 +++-- 8 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/core/core.cpp b/src/core/core.cpp index 59b8768e71..0c7a729871 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -13,6 +13,7 @@ #include "core/core_timing.h" #include "core/gdbstub/gdbstub.h" #include "core/hle/kernel/kernel.h" +#include "core/hle/kernel/process.h" #include "core/hle/kernel/thread.h" #include "core/hle/service/service.h" #include "core/hw/hw.h" @@ -100,7 +101,7 @@ System::ResultStatus System::Load(EmuWindow* emu_window, const std::string& file return init_result; } - const Loader::ResultStatus load_result{app_loader->Load()}; + const Loader::ResultStatus load_result{app_loader->Load(Kernel::g_current_process)}; if (Loader::ResultStatus::Success != load_result) { LOG_CRITICAL(Core, "Failed to load ROM (Error %i)!", load_result); System::Shutdown(); @@ -114,6 +115,7 @@ System::ResultStatus System::Load(EmuWindow* emu_window, const std::string& file return ResultStatus::ErrorLoader; } } + Memory::SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); status = ResultStatus::Success; return status; } @@ -196,4 +198,4 @@ void System::Shutdown() { LOG_DEBUG(Core, "Shutdown OK"); } -} // namespace +} // namespace Core diff --git a/src/core/loader/3dsx.cpp b/src/core/loader/3dsx.cpp index 5ad5c52876..918038f1e3 100644 --- a/src/core/loader/3dsx.cpp +++ b/src/core/loader/3dsx.cpp @@ -91,8 +91,8 @@ static u32 TranslateAddr(u32 addr, const THREEloadinfo* loadinfo, u32* offsets) return loadinfo->seg_addrs[2] + addr - offsets[1]; } -using Kernel::SharedPtr; using Kernel::CodeSet; +using Kernel::SharedPtr; static THREEDSX_Error Load3DSXFile(FileUtil::IOFile& file, u32 base_addr, SharedPtr* out_codeset) { @@ -255,7 +255,7 @@ FileType AppLoader_THREEDSX::IdentifyType(FileUtil::IOFile& file) { return FileType::Error; } -ResultStatus AppLoader_THREEDSX::Load() { +ResultStatus AppLoader_THREEDSX::Load(Kernel::SharedPtr& process) { if (is_loaded) return ResultStatus::ErrorAlreadyLoaded; @@ -267,16 +267,15 @@ ResultStatus AppLoader_THREEDSX::Load() { return ResultStatus::Error; codeset->name = filename; - Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); - Kernel::g_current_process->svc_access_mask.set(); - Kernel::g_current_process->address_mappings = default_address_mappings; - Memory::SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); + process = Kernel::Process::Create(std::move(codeset)); + process->svc_access_mask.set(); + process->address_mappings = default_address_mappings; // Attach the default resource limit (APPLICATION) to the process - Kernel::g_current_process->resource_limit = + process->resource_limit = Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); - Kernel::g_current_process->Run(48, Kernel::DEFAULT_STACK_SIZE); + process->Run(48, Kernel::DEFAULT_STACK_SIZE); Service::FS::RegisterSelfNCCH(*this); diff --git a/src/core/loader/3dsx.h b/src/core/loader/3dsx.h index 3f376778a3..1e59bbb9d1 100644 --- a/src/core/loader/3dsx.h +++ b/src/core/loader/3dsx.h @@ -31,7 +31,7 @@ public: return IdentifyType(file); } - ResultStatus Load() override; + ResultStatus Load(Kernel::SharedPtr& process) override; ResultStatus ReadIcon(std::vector& buffer) override; diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index 2de1f4e816..e36e421200 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp @@ -13,8 +13,8 @@ #include "core/loader/elf.h" #include "core/memory.h" -using Kernel::SharedPtr; using Kernel::CodeSet; +using Kernel::SharedPtr; //////////////////////////////////////////////////////////////////////////////////////////////////// // ELF Header Constants @@ -375,7 +375,7 @@ FileType AppLoader_ELF::IdentifyType(FileUtil::IOFile& file) { return FileType::Error; } -ResultStatus AppLoader_ELF::Load() { +ResultStatus AppLoader_ELF::Load(Kernel::SharedPtr& process) { if (is_loaded) return ResultStatus::ErrorAlreadyLoaded; @@ -394,16 +394,15 @@ ResultStatus AppLoader_ELF::Load() { SharedPtr codeset = elf_reader.LoadInto(Memory::PROCESS_IMAGE_VADDR); codeset->name = filename; - Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); - Kernel::g_current_process->svc_access_mask.set(); - Kernel::g_current_process->address_mappings = default_address_mappings; - Memory::SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); + process = Kernel::Process::Create(std::move(codeset)); + process->svc_access_mask.set(); + process->address_mappings = default_address_mappings; // Attach the default resource limit (APPLICATION) to the process - Kernel::g_current_process->resource_limit = + process->resource_limit = Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); - Kernel::g_current_process->Run(48, Kernel::DEFAULT_STACK_SIZE); + process->Run(48, Kernel::DEFAULT_STACK_SIZE); is_loaded = true; return ResultStatus::Success; diff --git a/src/core/loader/elf.h b/src/core/loader/elf.h index 862aa90d87..113da59179 100644 --- a/src/core/loader/elf.h +++ b/src/core/loader/elf.h @@ -30,7 +30,7 @@ public: return IdentifyType(file); } - ResultStatus Load() override; + ResultStatus Load(Kernel::SharedPtr& process) override; private: std::string filename; diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 3160fd2fdc..82b2be6a37 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -13,10 +13,12 @@ #include #include "common/common_types.h" #include "common/file_util.h" +#include "core/hle/kernel/kernel.h" namespace Kernel { struct AddressMapping; -} +class Process; +} // namespace Kernel //////////////////////////////////////////////////////////////////////////////////////////////////// // Loader namespace @@ -92,10 +94,11 @@ public: virtual FileType GetFileType() = 0; /** - * Load the application - * @return ResultStatus result of function + * Load the application and return the created Process instance + * @param process The newly created process. + * @return The status result of the operation. */ - virtual ResultStatus Load() = 0; + virtual ResultStatus Load(Kernel::SharedPtr& process) = 0; /** * Loads the system mode that this application needs. @@ -206,4 +209,4 @@ extern const std::initializer_list default_address_mappi */ std::unique_ptr GetLoader(const std::string& filename); -} // namespace +} // namespace Loader diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 5107135f98..66bc5823d2 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -67,9 +67,9 @@ std::pair, ResultStatus> AppLoader_NCCH::LoadKernelSystemMo ResultStatus::Success); } -ResultStatus AppLoader_NCCH::LoadExec() { - using Kernel::SharedPtr; +ResultStatus AppLoader_NCCH::LoadExec(Kernel::SharedPtr& process) { using Kernel::CodeSet; + using Kernel::SharedPtr; if (!is_loaded) return ResultStatus::ErrorNotLoaded; @@ -107,16 +107,15 @@ ResultStatus AppLoader_NCCH::LoadExec() { codeset->entrypoint = codeset->code.addr; codeset->memory = std::make_shared>(std::move(code)); - Kernel::g_current_process = Kernel::Process::Create(std::move(codeset)); - Memory::SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); + process = Kernel::Process::Create(std::move(codeset)); // Attach a resource limit to the process based on the resource limit category - Kernel::g_current_process->resource_limit = + process->resource_limit = Kernel::ResourceLimit::GetForCategory(static_cast( overlay_ncch->exheader_header.arm11_system_local_caps.resource_limit_category)); // Set the default CPU core for this process - Kernel::g_current_process->ideal_processor = + process->ideal_processor = overlay_ncch->exheader_header.arm11_system_local_caps.ideal_processor; // Copy data while converting endianness @@ -124,11 +123,11 @@ ResultStatus AppLoader_NCCH::LoadExec() { kernel_caps; std::copy_n(overlay_ncch->exheader_header.arm11_kernel_caps.descriptors, kernel_caps.size(), begin(kernel_caps)); - Kernel::g_current_process->ParseKernelCaps(kernel_caps.data(), kernel_caps.size()); + process->ParseKernelCaps(kernel_caps.data(), kernel_caps.size()); s32 priority = overlay_ncch->exheader_header.arm11_system_local_caps.priority; u32 stack_size = overlay_ncch->exheader_header.codeset_info.stack_size; - Kernel::g_current_process->Run(priority, stack_size); + process->Run(priority, stack_size); return ResultStatus::Success; } return ResultStatus::Error; @@ -151,7 +150,7 @@ void AppLoader_NCCH::ParseRegionLockoutInfo() { } } -ResultStatus AppLoader_NCCH::Load() { +ResultStatus AppLoader_NCCH::Load(Kernel::SharedPtr& process) { u64_le ncch_program_id; if (is_loaded) @@ -183,7 +182,7 @@ ResultStatus AppLoader_NCCH::Load() { is_loaded = true; // Set state to loaded - result = LoadExec(); // Load the executable into memory for booting + result = LoadExec(process); // Load the executable into memory for booting if (ResultStatus::Success != result) return result; diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index 9b56465cb2..09230ae33f 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -33,7 +33,7 @@ public: return IdentifyType(file); } - ResultStatus Load() override; + ResultStatus Load(Kernel::SharedPtr& process) override; /** * Loads the Exheader and returns the system mode for this application. @@ -62,9 +62,10 @@ public: private: /** * Loads .code section into memory for booting + * @param process The newly created process * @return ResultStatus result of function */ - ResultStatus LoadExec(); + ResultStatus LoadExec(Kernel::SharedPtr& process); /// Reads the region lockout info in the SMDH and send it to CFG service void ParseRegionLockoutInfo(); From a321bce37834c1f3034bd87df14fc71c13e6b84a Mon Sep 17 00:00:00 2001 From: Subv Date: Tue, 29 Aug 2017 12:59:54 -0500 Subject: [PATCH 170/195] Disable unary operator- on Math::Vec2/Vec3/Vec4 for unsigned types. It is unlikely we will ever use this without first doing a Cast to a signed type. Fixes 9 "unary minus operator applied to unsigned type, result still unsigned" warnings on MSVC2017.3 --- src/common/vector_math.h | 12 ++++++++---- src/video_core/swrasterizer/clipper.cpp | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/common/vector_math.h b/src/common/vector_math.h index 6e2a5ad601..2b05f66eef 100644 --- a/src/common/vector_math.h +++ b/src/common/vector_math.h @@ -31,6 +31,7 @@ #pragma once #include +#include namespace Math { @@ -90,7 +91,8 @@ public: y -= other.y; } - Vec2 operator-() const { + template + Vec2::value, U>> operator-() const { return MakeVec(-x, -y); } Vec2 operator*(const Vec2& other) const { @@ -247,7 +249,8 @@ public: z -= other.z; } - Vec3 operator-() const { + template + Vec3::value, U>> operator-() const { return MakeVec(-x, -y, -z); } Vec3 operator*(const Vec3& other) const { @@ -462,7 +465,8 @@ public: w -= other.w; } - Vec4 operator-() const { + template + Vec4::value, U>> operator-() const { return MakeVec(-x, -y, -z, -w); } Vec4 operator*(const Vec4& other) const { @@ -720,4 +724,4 @@ static inline Vec4 MakeVec(const T& x, const Vec3& yzw) { return MakeVec(x, yzw[0], yzw[1], yzw[2]); } -} // namespace +} // namespace Math diff --git a/src/video_core/swrasterizer/clipper.cpp b/src/video_core/swrasterizer/clipper.cpp index a52129eb76..c1ed48398c 100644 --- a/src/video_core/swrasterizer/clipper.cpp +++ b/src/video_core/swrasterizer/clipper.cpp @@ -98,7 +98,7 @@ void ProcessTriangle(const OutputVertex& v0, const OutputVertex& v1, const Outpu auto FlipQuaternionIfOpposite = [](auto& a, const auto& b) { if (Math::Dot(a, b) < float24::Zero()) - a = -a; + a = a * float24::FromFloat32(-1.0f); }; // Flip the quaternions if they are opposite to prevent interpolating them over the wrong From 8432749db7afecc9beea20f993cc036418caaa15 Mon Sep 17 00:00:00 2001 From: Subv Date: Thu, 28 Sep 2017 11:53:32 -0500 Subject: [PATCH 171/195] Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken. This change makes for a clearer (less confusing) path of execution in the scheduler, now the code to execute when a thread awakes is closer to the code that puts the thread to sleep (WaitSynch1, WaitSynchN). It also allows us to implement the special wake up behavior of ReplyAndReceive without hacking up WaitObject::WakeupAllWaitingThreads. If savestates are desired in the future, we can change this implementation to one similar to the CoreTiming event system, where we first register the callback functions at startup and assign their identifiers to the Thread callback variable instead of directly assigning a lambda to the wake up callback variable. --- src/core/hle/kernel/thread.cpp | 13 ++++-- src/core/hle/kernel/thread.h | 15 +++++-- src/core/hle/kernel/wait_object.cpp | 11 ++--- src/core/hle/svc.cpp | 69 +++++++++++++++++++++++++++-- 4 files changed, 91 insertions(+), 17 deletions(-) diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 61378211fc..690cb20b39 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -247,12 +247,15 @@ static void ThreadWakeupCallback(u64 thread_handle, int cycles_late) { if (thread->status == THREADSTATUS_WAIT_SYNCH_ANY || thread->status == THREADSTATUS_WAIT_SYNCH_ALL || thread->status == THREADSTATUS_WAIT_ARB) { - thread->wait_set_output = false; + + // Invoke the wakeup callback before clearing the wait objects + if (thread->wakeup_callback) + thread->wakeup_callback(ThreadWakeupReason::Timeout, thread, nullptr); + // Remove the thread from each of its waiting objects' waitlists for (auto& object : thread->wait_objects) object->RemoveWaitingThread(thread.get()); thread->wait_objects.clear(); - thread->SetWaitSynchronizationResult(RESULT_TIMEOUT); } thread->ResumeFromWait(); @@ -278,6 +281,9 @@ void Thread::ResumeFromWait() { break; case THREADSTATUS_READY: + // The thread's wakeup callback must have already been cleared when the thread was first + // awoken. + ASSERT(wakeup_callback == nullptr); // If the thread is waiting on multiple wait objects, it might be awoken more than once // before actually resuming. We can ignore subsequent wakeups if the thread status has // already been set to THREADSTATUS_READY. @@ -293,6 +299,8 @@ void Thread::ResumeFromWait() { return; } + wakeup_callback = nullptr; + ready_queue.push_back(current_priority, this); status = THREADSTATUS_READY; Core::System::GetInstance().PrepareReschedule(); @@ -394,7 +402,6 @@ ResultVal> Thread::Create(std::string name, VAddr entry_point, thread->nominal_priority = thread->current_priority = priority; thread->last_running_ticks = CoreTiming::GetTicks(); thread->processor_id = processor_id; - thread->wait_set_output = false; thread->wait_objects.clear(); thread->wait_address = 0; thread->name = std::move(name); diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index 6a3566f15b..328f1a86aa 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -41,6 +41,11 @@ enum ThreadStatus { THREADSTATUS_DEAD ///< Run to completion, or forcefully terminated }; +enum class ThreadWakeupReason { + Signal, // The thread was woken up by WakeupAllWaitingThreads due to an object signal. + Timeout // The thread was woken up due to a wait timeout. +}; + namespace Kernel { class Mutex; @@ -197,14 +202,18 @@ public: VAddr wait_address; ///< If waiting on an AddressArbiter, this is the arbitration address - /// True if the WaitSynchronizationN output parameter should be set on thread wakeup. - bool wait_set_output; - std::string name; /// Handle used as userdata to reference this object when inserting into the CoreTiming queue. Handle callback_handle; + using WakeupCallback = void(ThreadWakeupReason reason, SharedPtr thread, + SharedPtr object); + // Callback that will be invoked when the thread is resumed from a waiting state. If the thread + // was waiting via WaitSynchronizationN then the object will be the last object that became + // available. In case of a timeout, the object will be nullptr. + std::function wakeup_callback; + private: Thread(); ~Thread() override; diff --git a/src/core/hle/kernel/wait_object.cpp b/src/core/hle/kernel/wait_object.cpp index f245eda6cd..1ced26905a 100644 --- a/src/core/hle/kernel/wait_object.cpp +++ b/src/core/hle/kernel/wait_object.cpp @@ -71,23 +71,20 @@ void WaitObject::WakeupAllWaitingThreads() { while (auto thread = GetHighestPriorityReadyThread()) { if (!thread->IsSleepingOnWaitAll()) { Acquire(thread.get()); - // Set the output index of the WaitSynchronizationN call to the index of this object. - if (thread->wait_set_output) { - thread->SetWaitSynchronizationOutput(thread->GetWaitObjectIndex(this)); - thread->wait_set_output = false; - } } else { for (auto& object : thread->wait_objects) { object->Acquire(thread.get()); } - // Note: This case doesn't update the output index of WaitSynchronizationN. } + // Invoke the wakeup callback before clearing the wait objects + if (thread->wakeup_callback) + thread->wakeup_callback(ThreadWakeupReason::Signal, thread, this); + for (auto& object : thread->wait_objects) object->RemoveWaitingThread(thread.get()); thread->wait_objects.clear(); - thread->SetWaitSynchronizationResult(RESULT_SUCCESS); thread->ResumeFromWait(); } } diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index dfc36748c1..41e62cf622 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -271,6 +271,24 @@ static ResultCode WaitSynchronization1(Kernel::Handle handle, s64 nano_seconds) // Create an event to wake the thread up after the specified nanosecond delay has passed thread->WakeAfterDelay(nano_seconds); + thread->wakeup_callback = [](ThreadWakeupReason reason, + Kernel::SharedPtr thread, + Kernel::SharedPtr object) { + + ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY); + + if (reason == ThreadWakeupReason::Timeout) { + thread->SetWaitSynchronizationResult(Kernel::RESULT_TIMEOUT); + return; + } + + ASSERT(reason == ThreadWakeupReason::Signal); + thread->SetWaitSynchronizationResult(RESULT_SUCCESS); + + // WaitSynchronization1 doesn't have an output index like WaitSynchronizationN, so we + // don't have to do anything else here. + }; + Core::System::GetInstance().PrepareReschedule(); // Note: The output of this SVC will be set to RESULT_SUCCESS if the thread @@ -344,6 +362,23 @@ static ResultCode WaitSynchronizationN(s32* out, Kernel::Handle* handles, s32 ha // Create an event to wake the thread up after the specified nanosecond delay has passed thread->WakeAfterDelay(nano_seconds); + thread->wakeup_callback = [](ThreadWakeupReason reason, + Kernel::SharedPtr thread, + Kernel::SharedPtr object) { + + ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ALL); + + if (reason == ThreadWakeupReason::Timeout) { + thread->SetWaitSynchronizationResult(Kernel::RESULT_TIMEOUT); + return; + } + + ASSERT(reason == ThreadWakeupReason::Signal); + + thread->SetWaitSynchronizationResult(RESULT_SUCCESS); + // The wait_all case does not update the output index. + }; + Core::System::GetInstance().PrepareReschedule(); // This value gets set to -1 by default in this case, it is not modified after this. @@ -389,12 +424,28 @@ static ResultCode WaitSynchronizationN(s32* out, Kernel::Handle* handles, s32 ha // Create an event to wake the thread up after the specified nanosecond delay has passed thread->WakeAfterDelay(nano_seconds); + thread->wakeup_callback = [](ThreadWakeupReason reason, + Kernel::SharedPtr thread, + Kernel::SharedPtr object) { + + ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY); + + if (reason == ThreadWakeupReason::Timeout) { + thread->SetWaitSynchronizationResult(Kernel::RESULT_TIMEOUT); + return; + } + + ASSERT(reason == ThreadWakeupReason::Signal); + + thread->SetWaitSynchronizationResult(RESULT_SUCCESS); + thread->SetWaitSynchronizationOutput(thread->GetWaitObjectIndex(object.get())); + }; + Core::System::GetInstance().PrepareReschedule(); // Note: The output of this SVC will be set to RESULT_SUCCESS if the thread resumes due to a // signal in one of its wait objects. // Otherwise we retain the default value of timeout, and -1 in the out parameter - thread->wait_set_output = true; *out = -1; return Kernel::RESULT_TIMEOUT; } @@ -483,8 +534,6 @@ static ResultCode ReplyAndReceive(s32* index, Kernel::Handle* handles, s32 handl // No objects were ready to be acquired, prepare to suspend the thread. - // TODO(Subv): Perform IPC translation upon wakeup. - // Put the thread to sleep thread->status = THREADSTATUS_WAIT_SYNCH_ANY; @@ -496,12 +545,24 @@ static ResultCode ReplyAndReceive(s32* index, Kernel::Handle* handles, s32 handl thread->wait_objects = std::move(objects); + thread->wakeup_callback = [](ThreadWakeupReason reason, + Kernel::SharedPtr thread, + Kernel::SharedPtr object) { + + ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY); + ASSERT(reason == ThreadWakeupReason::Signal); + + thread->SetWaitSynchronizationResult(RESULT_SUCCESS); + thread->SetWaitSynchronizationOutput(thread->GetWaitObjectIndex(object.get())); + + // TODO(Subv): Perform IPC translation upon wakeup. + }; + Core::System::GetInstance().PrepareReschedule(); // Note: The output of this SVC will be set to RESULT_SUCCESS if the thread resumes due to a // signal in one of its wait objects, or to 0xC8A01836 if there was a translation error. // By default the index is set to -1. - thread->wait_set_output = true; *index = -1; return RESULT_SUCCESS; } From a13ab958cbba75bc9abd1ca50f3030a10a75784e Mon Sep 17 00:00:00 2001 From: Huw Pascoe Date: Wed, 27 Sep 2017 00:26:09 +0100 Subject: [PATCH 172/195] Fixed type conversion ambiguity --- src/audio_core/hle/source.cpp | 2 +- .../debugger/graphics/graphics_cmdlists.cpp | 4 +-- .../debugger/graphics/graphics_surface.cpp | 3 +- src/common/string_util.cpp | 2 +- src/common/string_util.h | 2 +- src/common/vector_math.h | 12 ++----- src/core/gdbstub/gdbstub.cpp | 4 +-- src/core/hle/ipc.h | 8 ++--- src/core/hle/ipc_helpers.h | 12 +++---- src/core/hle/kernel/hle_ipc.cpp | 2 +- src/core/hle/kernel/mutex.cpp | 2 +- src/core/hle/kernel/resource_limit.cpp | 2 +- src/core/hle/kernel/resource_limit.h | 2 +- src/core/hle/kernel/shared_memory.cpp | 3 +- src/core/hle/kernel/shared_memory.h | 2 +- src/core/hle/kernel/thread.cpp | 18 +++++----- src/core/hle/kernel/thread.h | 14 ++++---- src/core/hle/kernel/wait_object.cpp | 2 +- src/core/hle/service/apt/apt.cpp | 4 +-- src/core/hle/service/cam/cam.cpp | 2 +- src/core/hle/service/cfg/cfg.cpp | 2 +- src/core/hle/service/fs/archive.cpp | 2 +- src/core/hle/service/hid/hid.cpp | 2 +- src/core/hle/service/ldr_ro/cro_helper.h | 6 ++-- src/core/hle/service/nwm/nwm_uds.cpp | 10 +++--- src/core/hle/service/nwm/uds_beacon.cpp | 4 +-- src/core/hle/service/nwm/uds_data.cpp | 8 ++--- src/core/hle/svc.cpp | 8 ++--- src/core/memory.cpp | 36 +++++++++++-------- src/network/packet.cpp | 2 +- src/video_core/geometry_pipeline.cpp | 2 +- src/video_core/renderer_opengl/gl_state.cpp | 4 +-- 32 files changed, 97 insertions(+), 91 deletions(-) diff --git a/src/audio_core/hle/source.cpp b/src/audio_core/hle/source.cpp index de4e88caee..c122877002 100644 --- a/src/audio_core/hle/source.cpp +++ b/src/audio_core/hle/source.cpp @@ -264,7 +264,7 @@ void Source::GenerateFrame() { break; } } - state.next_sample_number += frame_position; + state.next_sample_number += static_cast(frame_position); state.filters.ProcessFrame(current_frame); } diff --git a/src/citra_qt/debugger/graphics/graphics_cmdlists.cpp b/src/citra_qt/debugger/graphics/graphics_cmdlists.cpp index 7d06ec28a4..ce2b9fa505 100644 --- a/src/citra_qt/debugger/graphics/graphics_cmdlists.cpp +++ b/src/citra_qt/debugger/graphics/graphics_cmdlists.cpp @@ -26,8 +26,8 @@ namespace { QImage LoadTexture(const u8* src, const Pica::Texture::TextureInfo& info) { QImage decoded_image(info.width, info.height, QImage::Format_ARGB32); - for (int y = 0; y < info.height; ++y) { - for (int x = 0; x < info.width; ++x) { + for (u32 y = 0; y < info.height; ++y) { + for (u32 x = 0; x < info.width; ++x) { Math::Vec4 color = Pica::Texture::LookupTexture(src, x, y, info, true); decoded_image.setPixel(x, y, qRgba(color.r(), color.g(), color.b(), color.a())); } diff --git a/src/citra_qt/debugger/graphics/graphics_surface.cpp b/src/citra_qt/debugger/graphics/graphics_surface.cpp index 47d9924e1a..c974545ef2 100644 --- a/src/citra_qt/debugger/graphics/graphics_surface.cpp +++ b/src/citra_qt/debugger/graphics/graphics_surface.cpp @@ -273,7 +273,8 @@ void GraphicsSurfaceWidget::Pick(int x, int y) { surface_picker_x_control->setValue(x); surface_picker_y_control->setValue(y); - if (x < 0 || x >= surface_width || y < 0 || y >= surface_height) { + if (x < 0 || x >= static_cast(surface_width) || y < 0 || + y >= static_cast(surface_height)) { surface_info_label->setText(tr("Pixel out of bounds")); surface_info_label->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); return; diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index bad311793d..6959915faa 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -117,7 +117,7 @@ std::string StringFromFormat(const char* format, ...) { } // For Debugging. Read out an u8 array. -std::string ArrayToString(const u8* data, u32 size, int line_len, bool spaces) { +std::string ArrayToString(const u8* data, size_t size, int line_len, bool spaces) { std::ostringstream oss; oss << std::setfill('0') << std::hex; diff --git a/src/common/string_util.h b/src/common/string_util.h index 075bf4ecb2..259360aecb 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -33,7 +33,7 @@ inline void CharArrayFromFormat(char (&out)[Count], const char* format, ...) { } // Good -std::string ArrayToString(const u8* data, u32 size, int line_len = 20, bool spaces = true); +std::string ArrayToString(const u8* data, size_t size, int line_len = 20, bool spaces = true); std::string StripSpaces(const std::string& s); std::string StripQuotes(const std::string& s); diff --git a/src/common/vector_math.h b/src/common/vector_math.h index 2b05f66eef..3f0057d9e5 100644 --- a/src/common/vector_math.h +++ b/src/common/vector_math.h @@ -104,8 +104,7 @@ public: } template void operator*=(const V& f) { - x *= f; - y *= f; + *this = *this * f; } template Vec2 operator/(const V& f) const { @@ -262,9 +261,7 @@ public: } template void operator*=(const V& f) { - x *= f; - y *= f; - z *= f; + *this = *this * f; } template Vec3 operator/(const V& f) const { @@ -478,10 +475,7 @@ public: } template void operator*=(const V& f) { - x *= f; - y *= f; - z *= f; - w *= f; + *this = *this * f; } template Vec4 operator/(const V& f) const { diff --git a/src/core/gdbstub/gdbstub.cpp b/src/core/gdbstub/gdbstub.cpp index 123fe7cd4b..be2b2e25f3 100644 --- a/src/core/gdbstub/gdbstub.cpp +++ b/src/core/gdbstub/gdbstub.cpp @@ -946,7 +946,7 @@ static void Init(u16 port) { WSAStartup(MAKEWORD(2, 2), &InitData); #endif - int tmpsock = socket(PF_INET, SOCK_STREAM, 0); + int tmpsock = static_cast(socket(PF_INET, SOCK_STREAM, 0)); if (tmpsock == -1) { LOG_ERROR(Debug_GDBStub, "Failed to create gdb socket"); } @@ -973,7 +973,7 @@ static void Init(u16 port) { sockaddr_in saddr_client; sockaddr* client_addr = reinterpret_cast(&saddr_client); socklen_t client_addrlen = sizeof(saddr_client); - gdbserver_socket = accept(tmpsock, client_addr, &client_addrlen); + gdbserver_socket = static_cast(accept(tmpsock, client_addr, &client_addrlen)); if (gdbserver_socket < 0) { // In the case that we couldn't start the server for whatever reason, just start CPU // execution like normal. diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h index f7f96125ab..87ed85df68 100644 --- a/src/core/hle/ipc.h +++ b/src/core/hle/ipc.h @@ -122,11 +122,11 @@ union StaticBufferDescInfo { BitField<14, 18, u32> size; }; -inline u32 StaticBufferDesc(u32 size, u8 buffer_id) { +inline u32 StaticBufferDesc(size_t size, u8 buffer_id) { StaticBufferDescInfo info{}; info.descriptor_type.Assign(StaticBuffer); info.buffer_id.Assign(buffer_id); - info.size.Assign(size); + info.size.Assign(static_cast(size)); return info.raw; } @@ -160,11 +160,11 @@ union MappedBufferDescInfo { BitField<4, 28, u32> size; }; -inline u32 MappedBufferDesc(u32 size, MappedBufferPermissions perms) { +inline u32 MappedBufferDesc(size_t size, MappedBufferPermissions perms) { MappedBufferDescInfo info{}; info.flags.Assign(MappedBuffer); info.perms.Assign(perms); - info.size.Assign(size); + info.size.Assign(static_cast(size)); return info.raw; } diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index f0d89cffe6..7cb95cbacb 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h @@ -117,9 +117,9 @@ public: void PushCurrentPIDHandle(); - void PushStaticBuffer(VAddr buffer_vaddr, u32 size, u8 buffer_id); + void PushStaticBuffer(VAddr buffer_vaddr, size_t size, u8 buffer_id); - void PushMappedBuffer(VAddr buffer_vaddr, u32 size, MappedBufferPermissions perms); + void PushMappedBuffer(VAddr buffer_vaddr, size_t size, MappedBufferPermissions perms); }; /// Push /// @@ -190,12 +190,12 @@ inline void RequestBuilder::PushCurrentPIDHandle() { Push(u32(0)); } -inline void RequestBuilder::PushStaticBuffer(VAddr buffer_vaddr, u32 size, u8 buffer_id) { +inline void RequestBuilder::PushStaticBuffer(VAddr buffer_vaddr, size_t size, u8 buffer_id) { Push(StaticBufferDesc(size, buffer_id)); Push(buffer_vaddr); } -inline void RequestBuilder::PushMappedBuffer(VAddr buffer_vaddr, u32 size, +inline void RequestBuilder::PushMappedBuffer(VAddr buffer_vaddr, size_t size, MappedBufferPermissions perms) { Push(MappedBufferDesc(size, perms)); Push(buffer_vaddr); @@ -227,8 +227,8 @@ public: bool validateHeader = true) { if (validateHeader) ValidateHeader(); - Header builderHeader{ - MakeHeader(header.command_id, normal_params_size, translate_params_size)}; + Header builderHeader{MakeHeader(static_cast(header.command_id), normal_params_size, + translate_params_size)}; if (context != nullptr) return {*context, builderHeader}; else diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 5ebe2eca4a..6020e9764e 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -37,7 +37,7 @@ SharedPtr HLERequestContext::GetIncomingHandle(u32 id_from_cmdbuf) const u32 HLERequestContext::AddOutgoingHandle(SharedPtr object) { request_handles.push_back(std::move(object)); - return request_handles.size() - 1; + return static_cast(request_handles.size() - 1); } void HLERequestContext::ClearIncomingObjects() { diff --git a/src/core/hle/kernel/mutex.cpp b/src/core/hle/kernel/mutex.cpp index cef9612899..2cbca5e5be 100644 --- a/src/core/hle/kernel/mutex.cpp +++ b/src/core/hle/kernel/mutex.cpp @@ -90,7 +90,7 @@ void Mutex::UpdatePriority() { if (!holding_thread) return; - s32 best_priority = THREADPRIO_LOWEST; + u32 best_priority = THREADPRIO_LOWEST; for (auto& waiter : GetWaitingThreads()) { if (waiter->current_priority < best_priority) best_priority = waiter->current_priority; diff --git a/src/core/hle/kernel/resource_limit.cpp b/src/core/hle/kernel/resource_limit.cpp index a8f10a3eeb..517dc47a8c 100644 --- a/src/core/hle/kernel/resource_limit.cpp +++ b/src/core/hle/kernel/resource_limit.cpp @@ -61,7 +61,7 @@ s32 ResourceLimit::GetCurrentResourceValue(u32 resource) const { } } -s32 ResourceLimit::GetMaxResourceValue(u32 resource) const { +u32 ResourceLimit::GetMaxResourceValue(u32 resource) const { switch (resource) { case PRIORITY: return max_priority; diff --git a/src/core/hle/kernel/resource_limit.h b/src/core/hle/kernel/resource_limit.h index 6cdfbcf8db..42874eb8dd 100644 --- a/src/core/hle/kernel/resource_limit.h +++ b/src/core/hle/kernel/resource_limit.h @@ -67,7 +67,7 @@ public: * @param resource Requested resource type * @returns The max value of the resource type */ - s32 GetMaxResourceValue(u32 resource) const; + u32 GetMaxResourceValue(u32 resource) const; /// Name of resource limit object. std::string name; diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index a7b66142f6..02d5a7a360 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -42,7 +42,8 @@ SharedPtr SharedMemory::Create(SharedPtr owner_process, u memory_region->used += size; shared_memory->linear_heap_phys_address = - Memory::FCRAM_PADDR + memory_region->base + shared_memory->backing_block_offset; + Memory::FCRAM_PADDR + memory_region->base + + static_cast(shared_memory->backing_block_offset); // Increase the amount of used linear heap memory for the owner process. if (shared_memory->owner_process != nullptr) { diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h index 94b335ed12..93a6f21822 100644 --- a/src/core/hle/kernel/shared_memory.h +++ b/src/core/hle/kernel/shared_memory.h @@ -114,7 +114,7 @@ public: /// Backing memory for this shared memory block. std::shared_ptr> backing_block; /// Offset into the backing block for this shared memory. - u32 backing_block_offset; + size_t backing_block_offset; /// Size of the memory block. Page-aligned. u32 size; /// Permission restrictions applied to the process which created the block. diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 1033f8552e..11f7d21277 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -111,7 +111,7 @@ void Thread::Stop() { Thread* ArbitrateHighestPriorityThread(u32 address) { Thread* highest_priority_thread = nullptr; - s32 priority = THREADPRIO_LOWEST; + u32 priority = THREADPRIO_LOWEST; // Iterate through threads, find highest priority thread that is waiting to be arbitrated... for (auto& thread : thread_list) { @@ -311,7 +311,7 @@ static void DebugThreadQueue() { } for (auto& t : thread_list) { - s32 priority = ready_queue.contains(t.get()); + u32 priority = ready_queue.contains(t.get()); if (priority != -1) { LOG_DEBUG(Kernel, "0x%02X %u", priority, t->GetObjectId()); } @@ -422,7 +422,7 @@ ResultVal> Thread::Create(std::string name, VAddr entry_point, return ERR_OUT_OF_MEMORY; } - u32 offset = linheap_memory->size(); + size_t offset = linheap_memory->size(); // Allocate some memory from the end of the linear heap for this region. linheap_memory->insert(linheap_memory->end(), Memory::PAGE_SIZE, 0); @@ -430,7 +430,7 @@ ResultVal> Thread::Create(std::string name, VAddr entry_point, owner_process->linear_heap_used += Memory::PAGE_SIZE; tls_slots.emplace_back(0); // The page is completely available at the start - available_page = tls_slots.size() - 1; + available_page = static_cast(tls_slots.size() - 1); available_slot = 0; // Use the first slot in the new page auto& vm_manager = owner_process->vm_manager; @@ -457,7 +457,7 @@ ResultVal> Thread::Create(std::string name, VAddr entry_point, return MakeResult>(std::move(thread)); } -void Thread::SetPriority(s32 priority) { +void Thread::SetPriority(u32 priority) { ASSERT_MSG(priority <= THREADPRIO_LOWEST && priority >= THREADPRIO_HIGHEST, "Invalid priority value."); // If thread was ready, adjust queues @@ -470,7 +470,7 @@ void Thread::SetPriority(s32 priority) { } void Thread::UpdatePriority() { - s32 best_priority = nominal_priority; + u32 best_priority = nominal_priority; for (auto& mutex : held_mutexes) { if (mutex->priority < best_priority) best_priority = mutex->priority; @@ -478,7 +478,7 @@ void Thread::UpdatePriority() { BoostPriority(best_priority); } -void Thread::BoostPriority(s32 priority) { +void Thread::BoostPriority(u32 priority) { // If thread was ready, adjust queues if (status == THREADSTATUS_READY) ready_queue.move(this, current_priority, priority); @@ -487,7 +487,7 @@ void Thread::BoostPriority(s32 priority) { current_priority = priority; } -SharedPtr SetupMainThread(u32 entry_point, s32 priority, SharedPtr owner_process) { +SharedPtr SetupMainThread(u32 entry_point, u32 priority, SharedPtr owner_process) { // Initialize new "main" thread auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0, Memory::HEAP_VADDR_END, owner_process); @@ -531,7 +531,7 @@ void Thread::SetWaitSynchronizationOutput(s32 output) { s32 Thread::GetWaitObjectIndex(WaitObject* object) const { ASSERT_MSG(!wait_objects.empty(), "Thread is not waiting for anything"); auto match = std::find(wait_objects.rbegin(), wait_objects.rend(), object); - return std::distance(match, wait_objects.rend()) - 1; + return static_cast(std::distance(match, wait_objects.rend()) - 1); } //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index ddc0d15c56..f02e1d43af 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -15,7 +15,7 @@ #include "core/hle/kernel/wait_object.h" #include "core/hle/result.h" -enum ThreadPriority : s32 { +enum ThreadPriority : u32 { THREADPRIO_HIGHEST = 0, ///< Highest thread priority THREADPRIO_USERLAND_MAX = 24, ///< Highest thread priority for userland apps THREADPRIO_DEFAULT = 48, ///< Default thread priority for userland apps @@ -82,7 +82,7 @@ public: * Gets the thread's current priority * @return The current thread's priority */ - s32 GetPriority() const { + u32 GetPriority() const { return current_priority; } @@ -90,7 +90,7 @@ public: * Sets the thread's current priority * @param priority The new priority */ - void SetPriority(s32 priority); + void SetPriority(u32 priority); /** * Boost's a thread's priority to the best priority among the thread's held mutexes. @@ -102,7 +102,7 @@ public: * Temporarily boosts the thread's priority until the next time it is scheduled * @param priority The new priority */ - void BoostPriority(s32 priority); + void BoostPriority(u32 priority); /** * Gets the thread's thread ID @@ -176,8 +176,8 @@ public: u32 entry_point; u32 stack_top; - s32 nominal_priority; ///< Nominal thread priority, as set by the emulated application - s32 current_priority; ///< Current thread priority, can be temporarily changed + u32 nominal_priority; ///< Nominal thread priority, as set by the emulated application + u32 current_priority; ///< Current thread priority, can be temporarily changed u64 last_running_ticks; ///< CPU tick when thread was last running @@ -219,7 +219,7 @@ private: * @param owner_process The parent process for the main thread * @return A shared pointer to the main thread */ -SharedPtr SetupMainThread(u32 entry_point, s32 priority, SharedPtr owner_process); +SharedPtr SetupMainThread(u32 entry_point, u32 priority, SharedPtr owner_process); /** * Returns whether there are any threads that are ready to run. diff --git a/src/core/hle/kernel/wait_object.cpp b/src/core/hle/kernel/wait_object.cpp index f245eda6cd..56fdd977fd 100644 --- a/src/core/hle/kernel/wait_object.cpp +++ b/src/core/hle/kernel/wait_object.cpp @@ -34,7 +34,7 @@ void WaitObject::RemoveWaitingThread(Thread* thread) { SharedPtr WaitObject::GetHighestPriorityReadyThread() { Thread* candidate = nullptr; - s32 candidate_priority = THREADPRIO_LOWEST + 1; + u32 candidate_priority = THREADPRIO_LOWEST + 1; for (const auto& thread : waiting_threads) { // The list of waiting threads must not contain threads that are not waiting to be awakened. diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp index 8c0ba73f2a..4c61563456 100644 --- a/src/core/hle/service/apt/apt.cpp +++ b/src/core/hle/service/apt/apt.cpp @@ -561,7 +561,7 @@ void ReceiveParameter(Service::Interface* self) { ? Kernel::g_handle_table.Create(next_parameter->object).Unwrap() : 0); - rb.PushStaticBuffer(buffer, static_cast(next_parameter->buffer.size()), 0); + rb.PushStaticBuffer(buffer, next_parameter->buffer.size(), 0); Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); @@ -609,7 +609,7 @@ void GlanceParameter(Service::Interface* self) { ? Kernel::g_handle_table.Create(next_parameter->object).Unwrap() : 0); - rb.PushStaticBuffer(buffer, static_cast(next_parameter->buffer.size()), 0); + rb.PushStaticBuffer(buffer, next_parameter->buffer.size(), 0); Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); diff --git a/src/core/hle/service/cam/cam.cpp b/src/core/hle/service/cam/cam.cpp index c9f9e9d95b..8172edae89 100644 --- a/src/core/hle/service/cam/cam.cpp +++ b/src/core/hle/service/cam/cam.cpp @@ -177,7 +177,7 @@ void CompletionEventCallBack(u64 port_id, int) { LOG_ERROR(Service_CAM, "The destination size (%u) doesn't match the source (%zu)!", port.dest_size, buffer_size); } - Memory::WriteBlock(port.dest, buffer.data(), std::min(port.dest_size, buffer_size)); + Memory::WriteBlock(port.dest, buffer.data(), std::min(port.dest_size, buffer_size)); } port.is_receiving = false; diff --git a/src/core/hle/service/cfg/cfg.cpp b/src/core/hle/service/cfg/cfg.cpp index f26a1f65fe..f78c25fb24 100644 --- a/src/core/hle/service/cfg/cfg.cpp +++ b/src/core/hle/service/cfg/cfg.cpp @@ -141,7 +141,7 @@ void GetCountryCodeString(Service::Interface* self) { void GetCountryCodeID(Service::Interface* self) { u32* cmd_buff = Kernel::GetCommandBuffer(); - u16 country_code = cmd_buff[1]; + u16 country_code = static_cast(cmd_buff[1]); u16 country_code_id = 0; // The following algorithm will fail if the first country code isn't 0. diff --git a/src/core/hle/service/fs/archive.cpp b/src/core/hle/service/fs/archive.cpp index 4ccb3cd32a..4ee7df73c7 100644 --- a/src/core/hle/service/fs/archive.cpp +++ b/src/core/hle/service/fs/archive.cpp @@ -217,7 +217,7 @@ void Directory::HandleSyncRequest(Kernel::SharedPtr serve LOG_TRACE(Service_FS, "Read %s: count=%d", GetName().c_str(), count); // Number of entries actually read - u32 read = backend->Read(entries.size(), entries.data()); + u32 read = backend->Read(static_cast(entries.size()), entries.data()); cmd_buff[2] = read; Memory::WriteBlock(address, entries.data(), read * sizeof(FileSys::Entry)); break; diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index aa5d821f92..379fbd71c1 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -251,7 +251,7 @@ static void UpdateGyroscopeCallback(u64 userdata, int cycles_late) { Math::Vec3 gyro; std::tie(std::ignore, gyro) = motion_device->GetStatus(); double stretch = Core::System::GetInstance().perf_stats.GetLastFrameTimeScale(); - gyro *= gyroscope_coef * stretch; + gyro *= gyroscope_coef * static_cast(stretch); gyroscope_entry.x = static_cast(gyro.x); gyroscope_entry.y = static_cast(gyro.y); gyroscope_entry.z = static_cast(gyro.z); diff --git a/src/core/hle/service/ldr_ro/cro_helper.h b/src/core/hle/service/ldr_ro/cro_helper.h index 3bc10dbdc0..57b4fb6df9 100644 --- a/src/core/hle/service/ldr_ro/cro_helper.h +++ b/src/core/hle/service/ldr_ro/cro_helper.h @@ -413,7 +413,8 @@ private: */ template void GetEntry(std::size_t index, T& data) const { - Memory::ReadBlock(GetField(T::TABLE_OFFSET_FIELD) + index * sizeof(T), &data, sizeof(T)); + Memory::ReadBlock(GetField(T::TABLE_OFFSET_FIELD) + static_cast(index * sizeof(T)), + &data, sizeof(T)); } /** @@ -425,7 +426,8 @@ private: */ template void SetEntry(std::size_t index, const T& data) { - Memory::WriteBlock(GetField(T::TABLE_OFFSET_FIELD) + index * sizeof(T), &data, sizeof(T)); + Memory::WriteBlock(GetField(T::TABLE_OFFSET_FIELD) + static_cast(index * sizeof(T)), + &data, sizeof(T)); } /** diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp index 4e2af9ae67..8ef0cda091 100644 --- a/src/core/hle/service/nwm/nwm_uds.cpp +++ b/src/core/hle/service/nwm/nwm_uds.cpp @@ -316,7 +316,7 @@ static void RecvBeaconBroadcastData(Interface* self) { auto beacons = GetReceivedBeacons(mac_address); BeaconDataReplyHeader data_reply_header{}; - data_reply_header.total_entries = beacons.size(); + data_reply_header.total_entries = static_cast(beacons.size()); data_reply_header.max_output_size = out_buffer_size; Memory::WriteBlock(current_buffer_pos, &data_reply_header, sizeof(BeaconDataReplyHeader)); @@ -326,8 +326,8 @@ static void RecvBeaconBroadcastData(Interface* self) { for (const auto& beacon : beacons) { BeaconEntryHeader entry{}; // TODO(Subv): Figure out what this size is used for. - entry.unk_size = sizeof(BeaconEntryHeader) + beacon.data.size(); - entry.total_size = sizeof(BeaconEntryHeader) + beacon.data.size(); + entry.unk_size = static_cast(sizeof(BeaconEntryHeader) + beacon.data.size()); + entry.total_size = static_cast(sizeof(BeaconEntryHeader) + beacon.data.size()); entry.wifi_channel = beacon.channel; entry.header_size = sizeof(BeaconEntryHeader); entry.mac_address = beacon.transmitter_address; @@ -338,9 +338,9 @@ static void RecvBeaconBroadcastData(Interface* self) { current_buffer_pos += sizeof(BeaconEntryHeader); Memory::WriteBlock(current_buffer_pos, beacon.data.data(), beacon.data.size()); - current_buffer_pos += beacon.data.size(); + current_buffer_pos += static_cast(beacon.data.size()); - total_size += sizeof(BeaconEntryHeader) + beacon.data.size(); + total_size += static_cast(sizeof(BeaconEntryHeader) + beacon.data.size()); } // Update the total size in the structure and write it to the buffer again. diff --git a/src/core/hle/service/nwm/uds_beacon.cpp b/src/core/hle/service/nwm/uds_beacon.cpp index 552eaf65ec..73a80d940f 100644 --- a/src/core/hle/service/nwm/uds_beacon.cpp +++ b/src/core/hle/service/nwm/uds_beacon.cpp @@ -243,7 +243,7 @@ std::vector GenerateNintendoFirstEncryptedDataTag(const NetworkInfo& network EncryptedDataTag tag{}; tag.header.tag_id = static_cast(TagId::VendorSpecific); - tag.header.length = sizeof(tag) - sizeof(TagHeader) + payload_size; + tag.header.length = static_cast(sizeof(tag) - sizeof(TagHeader) + payload_size); tag.oui_type = static_cast(NintendoTagId::EncryptedData0); tag.oui = NintendoOUI; @@ -279,7 +279,7 @@ std::vector GenerateNintendoSecondEncryptedDataTag(const NetworkInfo& networ EncryptedDataTag tag{}; tag.header.tag_id = static_cast(TagId::VendorSpecific); - tag.header.length = tag_length; + tag.header.length = static_cast(tag_length); tag.oui_type = static_cast(NintendoTagId::EncryptedData1); tag.oui = NintendoOUI; diff --git a/src/core/hle/service/nwm/uds_data.cpp b/src/core/hle/service/nwm/uds_data.cpp index 0fd9b8b8c6..3ef2a84b63 100644 --- a/src/core/hle/service/nwm/uds_data.cpp +++ b/src/core/hle/service/nwm/uds_data.cpp @@ -197,7 +197,7 @@ static std::vector DecryptDataFrame(const std::vector& encrypted_payload df.ChannelMessageEnd(CryptoPP::DEFAULT_CHANNEL); df.SetRetrievalChannel(CryptoPP::DEFAULT_CHANNEL); - int size = df.MaxRetrievable(); + size_t size = df.MaxRetrievable(); std::vector pdata(size); df.Get(pdata.data(), size); @@ -251,7 +251,7 @@ static std::vector EncryptDataFrame(const std::vector& payload, df.SetRetrievalChannel(CryptoPP::DEFAULT_CHANNEL); - int size = df.MaxRetrievable(); + size_t size = df.MaxRetrievable(); std::vector cipher(size); df.Get(cipher.data(), size); @@ -266,8 +266,8 @@ static std::vector EncryptDataFrame(const std::vector& payload, std::vector GenerateDataPayload(const std::vector& data, u8 channel, u16 dest_node, u16 src_node, u16 sequence_number) { std::vector buffer = GenerateLLCHeader(EtherType::SecureData); - std::vector securedata_header = - GenerateSecureDataHeader(data.size(), channel, dest_node, src_node, sequence_number); + std::vector securedata_header = GenerateSecureDataHeader( + static_cast(data.size()), channel, dest_node, src_node, sequence_number); buffer.insert(buffer.end(), securedata_header.begin(), securedata_header.end()); buffer.insert(buffer.end(), data.begin(), data.end()); diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 05c6897bf8..41c82c9226 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -361,7 +361,7 @@ static ResultCode WaitSynchronizationN(s32* out, Kernel::Handle* handles, s32 ha // We found a ready object, acquire it and set the result value Kernel::WaitObject* object = itr->get(); object->Acquire(thread); - *out = std::distance(objects.begin(), itr); + *out = static_cast(std::distance(objects.begin(), itr)); return RESULT_SUCCESS; } @@ -469,7 +469,7 @@ static ResultCode ReplyAndReceive(s32* index, Kernel::Handle* handles, s32 handl // We found a ready object, acquire it and set the result value Kernel::WaitObject* object = itr->get(); object->Acquire(thread); - *index = std::distance(objects.begin(), itr); + *index = static_cast(std::distance(objects.begin(), itr)); if (object->GetHandleType() == Kernel::HandleType::ServerSession) { auto server_session = static_cast(object); @@ -683,7 +683,7 @@ static void ExitThread() { } /// Gets the priority for the specified thread -static ResultCode GetThreadPriority(s32* priority, Kernel::Handle handle) { +static ResultCode GetThreadPriority(u32* priority, Kernel::Handle handle) { const SharedPtr thread = Kernel::g_handle_table.Get(handle); if (thread == nullptr) return ERR_INVALID_HANDLE; @@ -693,7 +693,7 @@ static ResultCode GetThreadPriority(s32* priority, Kernel::Handle handle) { } /// Sets the priority for the specified thread -static ResultCode SetThreadPriority(Kernel::Handle handle, s32 priority) { +static ResultCode SetThreadPriority(Kernel::Handle handle, u32 priority) { if (priority > THREADPRIO_LOWEST) { return Kernel::ERR_OUT_OF_RANGE; } diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 5ea0694a97..847e697106 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -477,7 +477,7 @@ void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { while (remaining_size > 0) { const size_t copy_amount = std::min(PAGE_SIZE - page_offset, remaining_size); - const VAddr current_vaddr = (page_index << PAGE_BITS) + page_offset; + const VAddr current_vaddr = static_cast((page_index << PAGE_BITS) + page_offset); switch (current_page_table->attributes[page_index]) { case PageType::Unmapped: { @@ -500,13 +500,15 @@ void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { break; } case PageType::RasterizerCachedMemory: { - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::Flush); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::Flush); std::memcpy(dest_buffer, GetPointerFromVMA(current_vaddr), copy_amount); break; } case PageType::RasterizerCachedSpecial: { DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::Flush); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::Flush); GetMMIOHandler(current_vaddr)->ReadBlock(current_vaddr, dest_buffer, copy_amount); break; } @@ -544,7 +546,7 @@ void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size while (remaining_size > 0) { const size_t copy_amount = std::min(PAGE_SIZE - page_offset, remaining_size); - const VAddr current_vaddr = (page_index << PAGE_BITS) + page_offset; + const VAddr current_vaddr = static_cast((page_index << PAGE_BITS) + page_offset); switch (current_page_table->attributes[page_index]) { case PageType::Unmapped: { @@ -567,13 +569,15 @@ void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size break; } case PageType::RasterizerCachedMemory: { - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::FlushAndInvalidate); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::FlushAndInvalidate); std::memcpy(GetPointerFromVMA(current_vaddr), src_buffer, copy_amount); break; } case PageType::RasterizerCachedSpecial: { DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::FlushAndInvalidate); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::FlushAndInvalidate); GetMMIOHandler(current_vaddr)->WriteBlock(current_vaddr, src_buffer, copy_amount); break; } @@ -597,7 +601,7 @@ void ZeroBlock(const VAddr dest_addr, const size_t size) { while (remaining_size > 0) { const size_t copy_amount = std::min(PAGE_SIZE - page_offset, remaining_size); - const VAddr current_vaddr = (page_index << PAGE_BITS) + page_offset; + const VAddr current_vaddr = static_cast((page_index << PAGE_BITS) + page_offset); switch (current_page_table->attributes[page_index]) { case PageType::Unmapped: { @@ -619,13 +623,15 @@ void ZeroBlock(const VAddr dest_addr, const size_t size) { break; } case PageType::RasterizerCachedMemory: { - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::FlushAndInvalidate); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::FlushAndInvalidate); std::memset(GetPointerFromVMA(current_vaddr), 0, copy_amount); break; } case PageType::RasterizerCachedSpecial: { DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::FlushAndInvalidate); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::FlushAndInvalidate); GetMMIOHandler(current_vaddr)->WriteBlock(current_vaddr, zeros.data(), copy_amount); break; } @@ -646,7 +652,7 @@ void CopyBlock(VAddr dest_addr, VAddr src_addr, const size_t size) { while (remaining_size > 0) { const size_t copy_amount = std::min(PAGE_SIZE - page_offset, remaining_size); - const VAddr current_vaddr = (page_index << PAGE_BITS) + page_offset; + const VAddr current_vaddr = static_cast((page_index << PAGE_BITS) + page_offset); switch (current_page_table->attributes[page_index]) { case PageType::Unmapped: { @@ -670,13 +676,15 @@ void CopyBlock(VAddr dest_addr, VAddr src_addr, const size_t size) { break; } case PageType::RasterizerCachedMemory: { - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::Flush); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::Flush); WriteBlock(dest_addr, GetPointerFromVMA(current_vaddr), copy_amount); break; } case PageType::RasterizerCachedSpecial: { DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); - RasterizerFlushVirtualRegion(current_vaddr, copy_amount, FlushMode::Flush); + RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), + FlushMode::Flush); std::vector buffer(copy_amount); GetMMIOHandler(current_vaddr)->ReadBlock(current_vaddr, buffer.data(), buffer.size()); @@ -689,8 +697,8 @@ void CopyBlock(VAddr dest_addr, VAddr src_addr, const size_t size) { page_index++; page_offset = 0; - dest_addr += copy_amount; - src_addr += copy_amount; + dest_addr += static_cast(copy_amount); + src_addr += static_cast(copy_amount); remaining_size -= copy_amount; } } diff --git a/src/network/packet.cpp b/src/network/packet.cpp index cc60f2fbca..7e1a812f34 100644 --- a/src/network/packet.cpp +++ b/src/network/packet.cpp @@ -233,7 +233,7 @@ Packet& Packet::operator<<(double in_data) { Packet& Packet::operator<<(const char* in_data) { // First insert string length - u32 length = std::strlen(in_data); + u32 length = static_cast(std::strlen(in_data)); *this << length; // Then insert characters diff --git a/src/video_core/geometry_pipeline.cpp b/src/video_core/geometry_pipeline.cpp index b146e2ecb1..98ff2ccd38 100644 --- a/src/video_core/geometry_pipeline.cpp +++ b/src/video_core/geometry_pipeline.cpp @@ -105,7 +105,7 @@ public: DEBUG_ASSERT(need_index); // The number of vertex input is put to the uniform register - float24 vertex_num = float24::FromFloat32(val); + float24 vertex_num = float24::FromFloat32(static_cast(val)); setup.uniforms.f[0] = Math::MakeVec(vertex_num, vertex_num, vertex_num, vertex_num); // The second uniform register and so on are used for receiving input vertices diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp index 06a905766f..5770ae08f2 100644 --- a/src/video_core/renderer_opengl/gl_state.cpp +++ b/src/video_core/renderer_opengl/gl_state.cpp @@ -267,9 +267,9 @@ void OpenGLState::Apply() const { for (size_t i = 0; i < clip_distance.size(); ++i) { if (clip_distance[i] != cur_state.clip_distance[i]) { if (clip_distance[i]) { - glEnable(GL_CLIP_DISTANCE0 + i); + glEnable(GL_CLIP_DISTANCE0 + static_cast(i)); } else { - glDisable(GL_CLIP_DISTANCE0 + i); + glDisable(GL_CLIP_DISTANCE0 + static_cast(i)); } } } From 1f99d53e2c2c7e3f605ee6f57934b3316848c657 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 30 Sep 2017 11:07:57 -0500 Subject: [PATCH 173/195] Add the .vs folder and the CMakeSettings.json file from Visual Studio to gitignore. --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index ec74b0fa49..7999a40e19 100644 --- a/.gitignore +++ b/.gitignore @@ -9,12 +9,16 @@ src/common/scm_rev.cpp # Project/editor files *.swp .idea/ +.vs/ .vscode/ # *nix related # Common convention for backup or temporary files *~ +# Visual Studio CMake settings +CMakeSettings.json + # OSX global filetypes # Created by Finder or Spotlight in directories for various OS functionality (indexing, etc) .DS_Store From afb1012bcd7e7aea2428aadb195b04ef72fcf861 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Sat, 30 Sep 2017 18:18:45 +0200 Subject: [PATCH 174/195] Services/UDS: Handle the rest of the connection sequence. (#2963) Services/UDS: Handle the rest of the connection sequence. --- src/core/hle/service/nwm/nwm_uds.cpp | 121 +++++++++++++++++++++++--- src/core/hle/service/nwm/uds_data.cpp | 80 ++++++++++++++++- src/core/hle/service/nwm/uds_data.h | 70 +++++++++++++-- 3 files changed, 251 insertions(+), 20 deletions(-) diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp index 8ef0cda091..0aa63cc1e1 100644 --- a/src/core/hle/service/nwm/nwm_uds.cpp +++ b/src/core/hle/service/nwm/nwm_uds.cpp @@ -15,6 +15,7 @@ #include "core/hle/ipc_helpers.h" #include "core/hle/kernel/event.h" #include "core/hle/kernel/shared_memory.h" +#include "core/hle/lock.h" #include "core/hle/result.h" #include "core/hle/service/nwm/nwm_uds.h" #include "core/hle/service/nwm/uds_beacon.h" @@ -100,6 +101,20 @@ void SendPacket(Network::WifiPacket& packet) { // TODO(Subv): Implement. } +/* + * Returns an available index in the nodes array for the + * currently-hosted UDS network. + */ +static u16 GetNextAvailableNodeId() { + for (u16 index = 0; index < connection_status.max_nodes; ++index) { + if ((connection_status.node_bitmask & (1 << index)) == 0) + return index; + } + + // Any connection attempts to an already full network should have been refused. + ASSERT_MSG(false, "No available connection slots in the network"); +} + // Inserts the received beacon frame in the beacon queue and removes any older beacons if the size // limit is exceeded. void HandleBeaconFrame(const Network::WifiPacket& packet) { @@ -143,18 +158,88 @@ void HandleAssociationResponseFrame(const Network::WifiPacket& packet) { SendPacket(eapol_start); } -/* - * Returns an available index in the nodes array for the - * currently-hosted UDS network. - */ -static u16 GetNextAvailableNodeId() { - for (u16 index = 0; index < connection_status.max_nodes; ++index) { - if ((connection_status.node_bitmask & (1 << index)) == 0) - return index; - } +static void HandleEAPoLPacket(const Network::WifiPacket& packet) { + std::lock_guard lock(connection_status_mutex); - // Any connection attempts to an already full network should have been refused. - ASSERT_MSG(false, "No available connection slots in the network"); + if (GetEAPoLFrameType(packet.data) == EAPoLStartMagic) { + if (connection_status.status != static_cast(NetworkStatus::ConnectedAsHost)) { + LOG_DEBUG(Service_NWM, "Connection sequence aborted, because connection status is %u", + connection_status.status); + return; + } + + auto node = DeserializeNodeInfoFromFrame(packet.data); + + if (connection_status.max_nodes == connection_status.total_nodes) { + // Reject connection attempt + LOG_ERROR(Service_NWM, "Reached maximum nodes, but reject packet wasn't sent."); + // TODO(B3N30): Figure out what packet is sent here + return; + } + + // Get an unused network node id + u16 node_id = GetNextAvailableNodeId(); + node.network_node_id = node_id + 1; + + connection_status.node_bitmask |= 1 << node_id; + connection_status.changed_nodes |= 1 << node_id; + connection_status.nodes[node_id] = node.network_node_id; + connection_status.total_nodes++; + + u8 current_nodes = network_info.total_nodes; + node_info[current_nodes] = node; + + network_info.total_nodes++; + + // Send the EAPoL-Logoff packet. + using Network::WifiPacket; + WifiPacket eapol_logoff; + eapol_logoff.channel = network_channel; + eapol_logoff.data = + GenerateEAPoLLogoffFrame(packet.transmitter_address, node.network_node_id, node_info, + network_info.max_nodes, network_info.total_nodes); + // TODO(Subv): Encrypt the packet. + eapol_logoff.destination_address = packet.transmitter_address; + eapol_logoff.type = WifiPacket::PacketType::Data; + + SendPacket(eapol_logoff); + // TODO(B3N30): Broadcast updated node list + // The 3ds does this presumably to support spectators. + std::lock_guard lock(HLE::g_hle_lock); + connection_status_event->Signal(); + } else { + if (connection_status.status != static_cast(NetworkStatus::NotConnected)) { + LOG_DEBUG(Service_NWM, "Connection sequence aborted, because connection status is %u", + connection_status.status); + return; + } + auto logoff = ParseEAPoLLogoffFrame(packet.data); + + network_info.total_nodes = logoff.connected_nodes; + network_info.max_nodes = logoff.max_nodes; + + connection_status.network_node_id = logoff.assigned_node_id; + connection_status.total_nodes = logoff.connected_nodes; + connection_status.max_nodes = logoff.max_nodes; + + node_info.clear(); + node_info.reserve(network_info.max_nodes); + for (size_t index = 0; index < logoff.connected_nodes; ++index) { + connection_status.node_bitmask |= 1 << index; + connection_status.changed_nodes |= 1 << index; + connection_status.nodes[index] = logoff.nodes[index].network_node_id; + + node_info.emplace_back(DeserializeNodeInfo(logoff.nodes[index])); + } + + // We're now connected, signal the application + connection_status.status = static_cast(NetworkStatus::ConnectedAsClient); + // Some games require ConnectToNetwork to block, for now it doesn't + // If blocking is implemented this lock needs to be changed, + // otherwise it might cause deadlocks + std::lock_guard lock(HLE::g_hle_lock); + connection_status_event->Signal(); + } } /* @@ -238,6 +323,17 @@ void HandleAuthenticationFrame(const Network::WifiPacket& packet) { } } +static void HandleDataFrame(const Network::WifiPacket& packet) { + switch (GetFrameEtherType(packet.data)) { + case EtherType::EAPoL: + HandleEAPoLPacket(packet); + break; + case EtherType::SecureData: + // TODO(B3N30): Handle SecureData packets + break; + } +} + /// Callback to parse and handle a received wifi packet. void OnWifiPacketReceived(const Network::WifiPacket& packet) { switch (packet.type) { @@ -250,6 +346,9 @@ void OnWifiPacketReceived(const Network::WifiPacket& packet) { case Network::WifiPacket::PacketType::AssociationResponse: HandleAssociationResponseFrame(packet); break; + case Network::WifiPacket::PacketType::Data: + HandleDataFrame(packet); + break; } } diff --git a/src/core/hle/service/nwm/uds_data.cpp b/src/core/hle/service/nwm/uds_data.cpp index 3ef2a84b63..4b389710fa 100644 --- a/src/core/hle/service/nwm/uds_data.cpp +++ b/src/core/hle/service/nwm/uds_data.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include #include #include #include @@ -277,10 +278,10 @@ std::vector GenerateDataPayload(const std::vector& data, u8 channel, u16 std::vector GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node_info) { EAPoLStartPacket eapol_start{}; eapol_start.association_id = association_id; - eapol_start.friend_code_seed = node_info.friend_code_seed; + eapol_start.node.friend_code_seed = node_info.friend_code_seed; - for (int i = 0; i < node_info.username.size(); ++i) - eapol_start.username[i] = node_info.username[i]; + std::copy(node_info.username.begin(), node_info.username.end(), + eapol_start.node.username.begin()); // Note: The network_node_id and unknown bytes seem to be uninitialized in the NWM module. // TODO(B3N30): The last 8 bytes seem to have a fixed value of 07 88 15 00 04 e9 13 00 in @@ -295,5 +296,78 @@ std::vector GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node return buffer; } +EtherType GetFrameEtherType(const std::vector& frame) { + LLCHeader header; + std::memcpy(&header, frame.data(), sizeof(header)); + + u16 ethertype = header.protocol; + return static_cast(ethertype); +} + +u16 GetEAPoLFrameType(const std::vector& frame) { + // Ignore the LLC header + u16_be eapol_type; + std::memcpy(&eapol_type, frame.data() + sizeof(LLCHeader), sizeof(eapol_type)); + return eapol_type; +} + +NodeInfo DeserializeNodeInfoFromFrame(const std::vector& frame) { + EAPoLStartPacket eapol_start; + + // Skip the LLC header + std::memcpy(&eapol_start, frame.data() + sizeof(LLCHeader), sizeof(eapol_start)); + + NodeInfo node{}; + node.friend_code_seed = eapol_start.node.friend_code_seed; + + std::copy(eapol_start.node.username.begin(), eapol_start.node.username.end(), + node.username.begin()); + + return node; +} + +NodeInfo DeserializeNodeInfo(const EAPoLNodeInfo& node) { + NodeInfo node_info{}; + node_info.friend_code_seed = node.friend_code_seed; + node_info.network_node_id = node.network_node_id; + + std::copy(node.username.begin(), node.username.end(), node_info.username.begin()); + + return node_info; +} + +std::vector GenerateEAPoLLogoffFrame(const MacAddress& mac_address, u16 network_node_id, + const NodeList& nodes, u8 max_nodes, u8 total_nodes) { + EAPoLLogoffPacket eapol_logoff{}; + eapol_logoff.assigned_node_id = network_node_id; + eapol_logoff.connected_nodes = total_nodes; + eapol_logoff.max_nodes = max_nodes; + + for (size_t index = 0; index < total_nodes; ++index) { + const auto& node_info = nodes[index]; + auto& node = eapol_logoff.nodes[index]; + + node.friend_code_seed = node_info.friend_code_seed; + node.network_node_id = node_info.network_node_id; + + std::copy(node_info.username.begin(), node_info.username.end(), node.username.begin()); + } + + std::vector eapol_buffer(sizeof(EAPoLLogoffPacket)); + std::memcpy(eapol_buffer.data(), &eapol_logoff, sizeof(eapol_logoff)); + + std::vector buffer = GenerateLLCHeader(EtherType::EAPoL); + buffer.insert(buffer.end(), eapol_buffer.begin(), eapol_buffer.end()); + return buffer; +} + +EAPoLLogoffPacket ParseEAPoLLogoffFrame(const std::vector& frame) { + EAPoLLogoffPacket eapol_logoff; + + // Skip the LLC header + std::memcpy(&eapol_logoff, frame.data() + sizeof(LLCHeader), sizeof(eapol_logoff)); + return eapol_logoff; +} + } // namespace NWM } // namespace Service diff --git a/src/core/hle/service/nwm/uds_data.h b/src/core/hle/service/nwm/uds_data.h index 76e8f546b5..76bccb1bfa 100644 --- a/src/core/hle/service/nwm/uds_data.h +++ b/src/core/hle/service/nwm/uds_data.h @@ -8,6 +8,7 @@ #include #include "common/common_types.h" #include "common/swap.h" +#include "core/hle/service/nwm/uds_beacon.h" #include "core/hle/service/service.h" namespace Service { @@ -67,6 +68,16 @@ struct DataFrameCryptoCTR { static_assert(sizeof(DataFrameCryptoCTR) == 16, "DataFrameCryptoCTR has the wrong size"); +struct EAPoLNodeInfo { + u64_be friend_code_seed; + std::array username; + INSERT_PADDING_BYTES(4); + u16_be network_node_id; + INSERT_PADDING_BYTES(6); +}; + +static_assert(sizeof(EAPoLNodeInfo) == 0x28, "EAPoLNodeInfo has the wrong size"); + constexpr u16 EAPoLStartMagic = 0x201; /* @@ -78,16 +89,28 @@ struct EAPoLStartPacket { // This value is hardcoded to 1 in the NWM module. u16_be unknown = 1; INSERT_PADDING_BYTES(2); - - u64_be friend_code_seed; - std::array username; - INSERT_PADDING_BYTES(4); - u16_be network_node_id; - INSERT_PADDING_BYTES(6); + EAPoLNodeInfo node; }; static_assert(sizeof(EAPoLStartPacket) == 0x30, "EAPoLStartPacket has the wrong size"); +constexpr u16 EAPoLLogoffMagic = 0x202; + +struct EAPoLLogoffPacket { + u16_be magic = EAPoLLogoffMagic; + INSERT_PADDING_BYTES(2); + u16_be assigned_node_id; + MacAddress client_mac_address; + INSERT_PADDING_BYTES(6); + u8 connected_nodes; + u8 max_nodes; + INSERT_PADDING_BYTES(4); + + std::array nodes; +}; + +static_assert(sizeof(EAPoLLogoffPacket) == 0x298, "EAPoLLogoffPacket has the wrong size"); + /** * Generates an unencrypted 802.11 data payload. * @returns The generated frame payload. @@ -102,5 +125,40 @@ std::vector GenerateDataPayload(const std::vector& data, u8 channel, u16 */ std::vector GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node_info); +/* + * Returns the EtherType of the specified 802.11 frame. + */ +EtherType GetFrameEtherType(const std::vector& frame); + +/* + * Returns the EAPoL type (Start / Logoff) of the specified 802.11 frame. + * Note: The frame *must* be an EAPoL frame. + */ +u16 GetEAPoLFrameType(const std::vector& frame); + +/* + * Returns a deserialized NodeInfo structure from the information inside an EAPoL-Start packet + * encapsulated in an 802.11 data frame. + */ +NodeInfo DeserializeNodeInfoFromFrame(const std::vector& frame); + +/* + * Returns a NodeInfo constructed from the data in the specified EAPoLNodeInfo. + */ +NodeInfo DeserializeNodeInfo(const EAPoLNodeInfo& node); + +/* + * Generates an unencrypted 802.11 data frame body with the EAPoL-Logoff format for UDS + * communication. + * @returns The generated frame body. + */ +std::vector GenerateEAPoLLogoffFrame(const MacAddress& mac_address, u16 network_node_id, + const NodeList& nodes, u8 max_nodes, u8 total_nodes); + +/* + * Returns a EAPoLLogoffPacket representing the specified 802.11-encapsulated data frame. + */ +EAPoLLogoffPacket ParseEAPoLLogoffFrame(const std::vector& frame); + } // namespace NWM } // namespace Service From 529f4a01318a450f999ffa7e01c5c26f801d22e0 Mon Sep 17 00:00:00 2001 From: Huw Pascoe Date: Sat, 30 Sep 2017 17:25:49 +0100 Subject: [PATCH 175/195] Moved down_count to CoreTiming --- src/core/arm/arm_interface.h | 9 ----- src/core/arm/dynarmic/arm_dynarmic.cpp | 9 +---- src/core/arm/dynarmic/arm_dynarmic.h | 2 -- src/core/arm/dyncom/arm_dyncom.cpp | 8 +---- src/core/arm/dyncom/arm_dyncom.h | 2 -- src/core/core_timing.cpp | 36 ++++++++++++------- src/core/core_timing.h | 6 ++++ src/core/hle/svc.cpp | 2 +- .../core/arm/dyncom/arm_dyncom_vfp_tests.cpp | 2 +- 9 files changed, 33 insertions(+), 43 deletions(-) diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h index 2aa017a54a..ba528403c4 100644 --- a/src/core/arm/arm_interface.h +++ b/src/core/arm/arm_interface.h @@ -124,12 +124,6 @@ public: */ virtual void SetCP15Register(CP15Register reg, u32 value) = 0; - /** - * Advance the CPU core by the specified number of ticks (e.g. to simulate CPU execution time) - * @param ticks Number of ticks to advance the CPU core - */ - virtual void AddTicks(u64 ticks) = 0; - /** * Saves the current CPU context * @param ctx Thread context to save @@ -150,9 +144,6 @@ public: return num_instructions; } - s64 down_count = 0; ///< A decreasing counter of remaining cycles before the next event, - /// decreased by the cpu run loop - protected: /** * Executes the given number of instructions diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index 42ae93ae8c..2cb56d12fc 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp @@ -124,13 +124,6 @@ void ARM_Dynarmic::SetCP15Register(CP15Register reg, u32 value) { interpreter_state->CP15[reg] = value; } -void ARM_Dynarmic::AddTicks(u64 ticks) { - down_count -= ticks; - if (down_count < 0) { - CoreTiming::Advance(); - } -} - MICROPROFILE_DEFINE(ARM_Jit, "ARM JIT", "ARM JIT", MP_RGB(255, 64, 64)); void ARM_Dynarmic::ExecuteInstructions(int num_instructions) { @@ -139,7 +132,7 @@ void ARM_Dynarmic::ExecuteInstructions(int num_instructions) { std::size_t ticks_executed = jit->Run(static_cast(num_instructions)); - AddTicks(ticks_executed); + CoreTiming::AddTicks(ticks_executed); } void ARM_Dynarmic::SaveContext(ARM_Interface::ThreadContext& ctx) { diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h index 96148a1a53..0b00158a52 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.h +++ b/src/core/arm/dynarmic/arm_dynarmic.h @@ -32,8 +32,6 @@ public: u32 GetCP15Register(CP15Register reg) override; void SetCP15Register(CP15Register reg, u32 value) override; - void AddTicks(u64 ticks) override; - void SaveContext(ThreadContext& ctx) override; void LoadContext(const ThreadContext& ctx) override; diff --git a/src/core/arm/dyncom/arm_dyncom.cpp b/src/core/arm/dyncom/arm_dyncom.cpp index da955c9b91..4d72aef775 100644 --- a/src/core/arm/dyncom/arm_dyncom.cpp +++ b/src/core/arm/dyncom/arm_dyncom.cpp @@ -77,12 +77,6 @@ void ARM_DynCom::SetCP15Register(CP15Register reg, u32 value) { state->CP15[reg] = value; } -void ARM_DynCom::AddTicks(u64 ticks) { - down_count -= ticks; - if (down_count < 0) - CoreTiming::Advance(); -} - void ARM_DynCom::ExecuteInstructions(int num_instructions) { state->NumInstrsToExecute = num_instructions; @@ -90,7 +84,7 @@ void ARM_DynCom::ExecuteInstructions(int num_instructions) { // executing one instruction at a time. Otherwise, if a block is being executed, more // instructions may actually be executed than specified. unsigned ticks_executed = InterpreterMainLoop(state.get()); - AddTicks(ticks_executed); + CoreTiming::AddTicks(ticks_executed); } void ARM_DynCom::SaveContext(ThreadContext& ctx) { diff --git a/src/core/arm/dyncom/arm_dyncom.h b/src/core/arm/dyncom/arm_dyncom.h index 0ae5356713..fc1ffed6aa 100644 --- a/src/core/arm/dyncom/arm_dyncom.h +++ b/src/core/arm/dyncom/arm_dyncom.h @@ -31,8 +31,6 @@ public: u32 GetCP15Register(CP15Register reg) override; void SetCP15Register(CP15Register reg, u32 value) override; - void AddTicks(u64 ticks) override; - void SaveContext(ThreadContext& ctx) override; void LoadContext(const ThreadContext& ctx) override; diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp index 276ecfdf68..5e2a5d00fc 100644 --- a/src/core/core_timing.cpp +++ b/src/core/core_timing.cpp @@ -57,6 +57,9 @@ static s64 idled_cycles; static s64 last_global_time_ticks; static s64 last_global_time_us; +static s64 down_count = 0; ///< A decreasing counter of remaining cycles before the next event, + /// decreased by the cpu run loop + static std::recursive_mutex external_event_section; // Warning: not included in save state. @@ -146,7 +149,7 @@ void UnregisterAllEvents() { } void Init() { - Core::CPU().down_count = INITIAL_SLICE_LENGTH; + down_count = INITIAL_SLICE_LENGTH; g_slice_length = INITIAL_SLICE_LENGTH; global_timer = 0; idled_cycles = 0; @@ -185,8 +188,15 @@ void Shutdown() { } } +void AddTicks(u64 ticks) { + down_count -= ticks; + if (down_count < 0) { + Advance(); + } +} + u64 GetTicks() { - return (u64)global_timer + g_slice_length - Core::CPU().down_count; + return (u64)global_timer + g_slice_length - down_count; } u64 GetIdleTicks() { @@ -460,18 +470,18 @@ void MoveEvents() { } void ForceCheck() { - s64 cycles_executed = g_slice_length - Core::CPU().down_count; + s64 cycles_executed = g_slice_length - down_count; global_timer += cycles_executed; // This will cause us to check for new events immediately. - Core::CPU().down_count = 0; + down_count = 0; // But let's not eat a bunch more time in Advance() because of this. g_slice_length = 0; } void Advance() { - s64 cycles_executed = g_slice_length - Core::CPU().down_count; + s64 cycles_executed = g_slice_length - down_count; global_timer += cycles_executed; - Core::CPU().down_count = g_slice_length; + down_count = g_slice_length; if (has_ts_events) MoveEvents(); @@ -480,7 +490,7 @@ void Advance() { if (!first) { if (g_slice_length < 10000) { g_slice_length += 10000; - Core::CPU().down_count += g_slice_length; + down_count += g_slice_length; } } else { // Note that events can eat cycles as well. @@ -490,7 +500,7 @@ void Advance() { const int diff = target - g_slice_length; g_slice_length += diff; - Core::CPU().down_count += diff; + down_count += diff; } if (advance_callback) advance_callback(static_cast(cycles_executed)); @@ -506,12 +516,12 @@ void LogPendingEvents() { } void Idle(int max_idle) { - s64 cycles_down = Core::CPU().down_count; + s64 cycles_down = down_count; if (max_idle != 0 && cycles_down > max_idle) cycles_down = max_idle; if (first && cycles_down > 0) { - s64 cycles_executed = g_slice_length - Core::CPU().down_count; + s64 cycles_executed = g_slice_length - down_count; s64 cycles_next_event = first->time - global_timer; if (cycles_next_event < cycles_executed + cycles_down) { @@ -526,9 +536,9 @@ void Idle(int max_idle) { cycles_down / (float)(g_clock_rate_arm11 * 0.001f)); idled_cycles += cycles_down; - Core::CPU().down_count -= cycles_down; - if (Core::CPU().down_count == 0) - Core::CPU().down_count = -1; + down_count -= cycles_down; + if (down_count == 0) + down_count = -1; } std::string GetScheduledEventsSummary() { diff --git a/src/core/core_timing.h b/src/core/core_timing.h index d2f85cd4d6..897350801d 100644 --- a/src/core/core_timing.h +++ b/src/core/core_timing.h @@ -67,6 +67,12 @@ void Shutdown(); typedef void (*MHzChangeCallback)(); typedef std::function TimedCallback; +/** +* Advance the CPU core by the specified number of ticks (e.g. to simulate CPU execution time) +* @param ticks Number of ticks to advance the CPU core +*/ +void AddTicks(u64 ticks); + u64 GetTicks(); u64 GetIdleTicks(); u64 GetGlobalTimeUs(); diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index fefd508054..6be5db13ff 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -1039,7 +1039,7 @@ static void SleepThread(s64 nanoseconds) { static s64 GetSystemTick() { s64 result = CoreTiming::GetTicks(); // Advance time to defeat dumb games (like Cubic Ninja) that busy-wait for the frame to end. - Core::CPU().AddTicks(150); // Measured time between two calls on a 9.2 o3DS with Ninjhax 1.1b + CoreTiming::AddTicks(150); // Measured time between two calls on a 9.2 o3DS with Ninjhax 1.1b return result; } diff --git a/src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp b/src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp index 86de41773c..83719a58e7 100644 --- a/src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp +++ b/src/tests/core/arm/dyncom/arm_dyncom_vfp_tests.cpp @@ -5,6 +5,7 @@ #include #include "core/arm/dyncom/arm_dyncom.h" +#include "core/core_timing.h" #include "tests/core/arm/arm_test_common.h" namespace ArmTests { @@ -29,7 +30,6 @@ TEST_CASE("ARM_DynCom (vfp): vadd", "[arm_dyncom]") { }}; for (const auto& test_case : test_cases) { - dyncom.down_count = 1000; // Ensure that CoreTimeing will not be called. dyncom.SetPC(0); dyncom.SetVFPSystemReg(VFP_FPSCR, test_case.initial_fpscr); dyncom.SetVFPReg(4, test_case.a); From 5bae5a48b90cc9f6c847040e6f486296ed135017 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 30 Sep 2017 13:19:58 -0500 Subject: [PATCH 176/195] Services/NIM: Implement CheckForSysUpdateEvent. Implementation verified by reverse engineering. This lets the Home Menu boot without crashing on startup. --- src/core/hle/service/nim/nim.cpp | 18 +++++++++++++++++- src/core/hle/service/nim/nim.h | 11 +++++++++++ src/core/hle/service/nim/nim_u.cpp | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/nim/nim.cpp b/src/core/hle/service/nim/nim.cpp index d5624fe54f..b10d5852ba 100644 --- a/src/core/hle/service/nim/nim.cpp +++ b/src/core/hle/service/nim/nim.cpp @@ -5,6 +5,8 @@ #include "common/common_types.h" #include "common/logging/log.h" #include "core/hle/ipc.h" +#include "core/hle/ipc_helpers.h" +#include "core/hle/kernel/event.h" #include "core/hle/service/nim/nim.h" #include "core/hle/service/nim/nim_aoc.h" #include "core/hle/service/nim/nim_s.h" @@ -14,6 +16,16 @@ namespace Service { namespace NIM { +static Kernel::SharedPtr nim_system_update_event; + +void CheckForSysUpdateEvent(Service::Interface* self) { + IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x5, 0, 0); // 0x50000 + IPC::RequestBuilder rb = rp.MakeBuilder(1, 2); + rb.Push(RESULT_SUCCESS); + rb.PushCopyHandles(Kernel::g_handle_table.Create(nim_system_update_event).Unwrap()); + LOG_TRACE(Service_NIM, "called"); +} + void CheckSysUpdateAvailable(Service::Interface* self) { u32* cmd_buff = Kernel::GetCommandBuffer(); @@ -29,9 +41,13 @@ void Init() { AddService(new NIM_AOC_Interface); AddService(new NIM_S_Interface); AddService(new NIM_U_Interface); + + nim_system_update_event = Kernel::Event::Create(ResetType::OneShot, "NIM System Update Event"); } -void Shutdown() {} +void Shutdown() { + nim_system_update_event = nullptr; +} } // namespace NIM diff --git a/src/core/hle/service/nim/nim.h b/src/core/hle/service/nim/nim.h index c3106f18b0..dbf605e5a6 100644 --- a/src/core/hle/service/nim/nim.h +++ b/src/core/hle/service/nim/nim.h @@ -10,6 +10,17 @@ class Interface; namespace NIM { +/** + * NIM::CheckForSysUpdateEvent service function + * Inputs: + * 1 : None + * Outputs: + * 1 : Result of function, 0 on success, otherwise error code + * 2 : Copy handle descriptor + * 3 : System Update event handle + */ +void CheckForSysUpdateEvent(Service::Interface* self); + /** * NIM::CheckSysUpdateAvailable service function * Inputs: diff --git a/src/core/hle/service/nim/nim_u.cpp b/src/core/hle/service/nim/nim_u.cpp index 7664bad60e..5696602780 100644 --- a/src/core/hle/service/nim/nim_u.cpp +++ b/src/core/hle/service/nim/nim_u.cpp @@ -12,7 +12,7 @@ const Interface::FunctionInfo FunctionTable[] = { {0x00010000, nullptr, "StartSysUpdate"}, {0x00020000, nullptr, "GetUpdateDownloadProgress"}, {0x00040000, nullptr, "FinishTitlesInstall"}, - {0x00050000, nullptr, "CheckForSysUpdateEvent"}, + {0x00050000, CheckForSysUpdateEvent, "CheckForSysUpdateEvent"}, {0x00090000, CheckSysUpdateAvailable, "CheckSysUpdateAvailable"}, {0x000A0000, nullptr, "GetState"}, {0x000B0000, nullptr, "GetSystemTitleHash"}, From c93e5ecfe68028c75e36a861fff2e287875f5794 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Mon, 25 Sep 2017 22:21:39 -0600 Subject: [PATCH 177/195] file_sys/archive_ncch: use NCCHContainer instead of loading .romfs files --- src/core/file_sys/archive_ncch.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/core/file_sys/archive_ncch.cpp b/src/core/file_sys/archive_ncch.cpp index 6d90077313..19e1eb981f 100644 --- a/src/core/file_sys/archive_ncch.cpp +++ b/src/core/file_sys/archive_ncch.cpp @@ -13,7 +13,9 @@ #include "core/file_sys/archive_ncch.h" #include "core/file_sys/errors.h" #include "core/file_sys/ivfc_archive.h" +#include "core/file_sys/ncch_container.h" #include "core/hle/service/fs/archive.h" +#include "core/loader/loader.h" //////////////////////////////////////////////////////////////////////////////////////////////////// // FileSys namespace @@ -25,8 +27,8 @@ static std::string GetNCCHContainerPath(const std::string& nand_directory) { } static std::string GetNCCHPath(const std::string& mount_point, u32 high, u32 low) { - return Common::StringFromFormat("%s%08x/%08x/content/00000000.app.romfs", mount_point.c_str(), - high, low); + return Common::StringFromFormat("%s%08x/%08x/content/00000000.app", mount_point.c_str(), high, + low); } ArchiveFactory_NCCH::ArchiveFactory_NCCH(const std::string& nand_directory) @@ -38,9 +40,14 @@ ResultVal> ArchiveFactory_NCCH::Open(const Path& u32 high = data[1]; u32 low = data[0]; std::string file_path = GetNCCHPath(mount_point, high, low); - auto file = std::make_shared(file_path, "rb"); - if (!file->IsOpen()) { + std::shared_ptr romfs_file; + u64 romfs_offset = 0; + u64 romfs_size = 0; + auto ncch_container = NCCHContainer(file_path); + + if (ncch_container.ReadRomFS(romfs_file, romfs_offset, romfs_size) != + Loader::ResultStatus::Success) { // High Title ID of the archive: The category (https://3dbrew.org/wiki/Title_list). constexpr u32 shared_data_archive = 0x0004009B; constexpr u32 system_data_archive = 0x000400DB; @@ -74,9 +81,8 @@ ResultVal> ArchiveFactory_NCCH::Open(const Path& } return ERROR_NOT_FOUND; } - auto size = file->GetSize(); - auto archive = std::make_unique(file, 0, size); + auto archive = std::make_unique(romfs_file, romfs_offset, romfs_size); return MakeResult>(std::move(archive)); } From e21f2348e7da4ba2de9fe287276e8c215bcfe9d0 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 1 Oct 2017 10:30:47 -0600 Subject: [PATCH 178/195] file_sys/ncch_container: add RomFS, ExeFS override to allow for backward compatibility with existing .romfs system archive dumps --- src/core/file_sys/ncch_container.cpp | 255 +++++++++++++++++++-------- src/core/file_sys/ncch_container.h | 30 ++++ 2 files changed, 211 insertions(+), 74 deletions(-) diff --git a/src/core/file_sys/ncch_container.cpp b/src/core/file_sys/ncch_container.cpp index 59c72f3e91..b9fb940c7b 100644 --- a/src/core/file_sys/ncch_container.cpp +++ b/src/core/file_sys/ncch_container.cpp @@ -116,92 +116,143 @@ Loader::ResultStatus NCCHContainer::Load() { if (is_loaded) return Loader::ResultStatus::Success; - // Reset read pointer in case this file has been read before. - file.Seek(0, SEEK_SET); + if (file.IsOpen()) { + // Reset read pointer in case this file has been read before. + file.Seek(0, SEEK_SET); - if (file.ReadBytes(&ncch_header, sizeof(NCCH_Header)) != sizeof(NCCH_Header)) - return Loader::ResultStatus::Error; - - // Skip NCSD header and load first NCCH (NCSD is just a container of NCCH files)... - if (Loader::MakeMagic('N', 'C', 'S', 'D') == ncch_header.magic) { - LOG_DEBUG(Service_FS, "Only loading the first (bootable) NCCH within the NCSD file!"); - ncch_offset = 0x4000; - file.Seek(ncch_offset, SEEK_SET); - file.ReadBytes(&ncch_header, sizeof(NCCH_Header)); - } - - // Verify we are loading the correct file type... - if (Loader::MakeMagic('N', 'C', 'C', 'H') != ncch_header.magic) - return Loader::ResultStatus::ErrorInvalidFormat; - - // System archives and DLC don't have an extended header but have RomFS - if (ncch_header.extended_header_size) { - if (file.ReadBytes(&exheader_header, sizeof(ExHeader_Header)) != sizeof(ExHeader_Header)) + if (file.ReadBytes(&ncch_header, sizeof(NCCH_Header)) != sizeof(NCCH_Header)) return Loader::ResultStatus::Error; - is_compressed = (exheader_header.codeset_info.flags.flag & 1) == 1; - u32 entry_point = exheader_header.codeset_info.text.address; - u32 code_size = exheader_header.codeset_info.text.code_size; - u32 stack_size = exheader_header.codeset_info.stack_size; - u32 bss_size = exheader_header.codeset_info.bss_size; - u32 core_version = exheader_header.arm11_system_local_caps.core_version; - u8 priority = exheader_header.arm11_system_local_caps.priority; - u8 resource_limit_category = - exheader_header.arm11_system_local_caps.resource_limit_category; - - LOG_DEBUG(Service_FS, "Name: %s", exheader_header.codeset_info.name); - LOG_DEBUG(Service_FS, "Program ID: %016" PRIX64, ncch_header.program_id); - LOG_DEBUG(Service_FS, "Code compressed: %s", is_compressed ? "yes" : "no"); - LOG_DEBUG(Service_FS, "Entry point: 0x%08X", entry_point); - LOG_DEBUG(Service_FS, "Code size: 0x%08X", code_size); - LOG_DEBUG(Service_FS, "Stack size: 0x%08X", stack_size); - LOG_DEBUG(Service_FS, "Bss size: 0x%08X", bss_size); - LOG_DEBUG(Service_FS, "Core version: %d", core_version); - LOG_DEBUG(Service_FS, "Thread priority: 0x%X", priority); - LOG_DEBUG(Service_FS, "Resource limit category: %d", resource_limit_category); - LOG_DEBUG(Service_FS, "System Mode: %d", - static_cast(exheader_header.arm11_system_local_caps.system_mode)); - - if (exheader_header.system_info.jump_id != ncch_header.program_id) { - LOG_ERROR(Service_FS, "ExHeader Program ID mismatch: the ROM is probably encrypted."); - return Loader::ResultStatus::ErrorEncrypted; + // Skip NCSD header and load first NCCH (NCSD is just a container of NCCH files)... + if (Loader::MakeMagic('N', 'C', 'S', 'D') == ncch_header.magic) { + LOG_DEBUG(Service_FS, "Only loading the first (bootable) NCCH within the NCSD file!"); + ncch_offset = 0x4000; + file.Seek(ncch_offset, SEEK_SET); + file.ReadBytes(&ncch_header, sizeof(NCCH_Header)); } - has_exheader = true; + // Verify we are loading the correct file type... + if (Loader::MakeMagic('N', 'C', 'C', 'H') != ncch_header.magic) + return Loader::ResultStatus::ErrorInvalidFormat; + + has_header = true; + + // System archives and DLC don't have an extended header but have RomFS + if (ncch_header.extended_header_size) { + if (file.ReadBytes(&exheader_header, sizeof(ExHeader_Header)) != + sizeof(ExHeader_Header)) + return Loader::ResultStatus::Error; + + is_compressed = (exheader_header.codeset_info.flags.flag & 1) == 1; + u32 entry_point = exheader_header.codeset_info.text.address; + u32 code_size = exheader_header.codeset_info.text.code_size; + u32 stack_size = exheader_header.codeset_info.stack_size; + u32 bss_size = exheader_header.codeset_info.bss_size; + u32 core_version = exheader_header.arm11_system_local_caps.core_version; + u8 priority = exheader_header.arm11_system_local_caps.priority; + u8 resource_limit_category = + exheader_header.arm11_system_local_caps.resource_limit_category; + + LOG_DEBUG(Service_FS, "Name: %s", + exheader_header.codeset_info.name); + LOG_DEBUG(Service_FS, "Program ID: %016" PRIX64, + ncch_header.program_id); + LOG_DEBUG(Service_FS, "Code compressed: %s", is_compressed ? "yes" : "no"); + LOG_DEBUG(Service_FS, "Entry point: 0x%08X", entry_point); + LOG_DEBUG(Service_FS, "Code size: 0x%08X", code_size); + LOG_DEBUG(Service_FS, "Stack size: 0x%08X", stack_size); + LOG_DEBUG(Service_FS, "Bss size: 0x%08X", bss_size); + LOG_DEBUG(Service_FS, "Core version: %d", core_version); + LOG_DEBUG(Service_FS, "Thread priority: 0x%X", priority); + LOG_DEBUG(Service_FS, "Resource limit category: %d", resource_limit_category); + LOG_DEBUG(Service_FS, "System Mode: %d", + static_cast(exheader_header.arm11_system_local_caps.system_mode)); + + if (exheader_header.system_info.jump_id != ncch_header.program_id) { + LOG_ERROR(Service_FS, + "ExHeader Program ID mismatch: the ROM is probably encrypted."); + return Loader::ResultStatus::ErrorEncrypted; + } + + has_exheader = true; + } + + // DLC can have an ExeFS and a RomFS but no extended header + if (ncch_header.exefs_size) { + exefs_offset = ncch_header.exefs_offset * kBlockSize; + u32 exefs_size = ncch_header.exefs_size * kBlockSize; + + LOG_DEBUG(Service_FS, "ExeFS offset: 0x%08X", exefs_offset); + LOG_DEBUG(Service_FS, "ExeFS size: 0x%08X", exefs_size); + + file.Seek(exefs_offset + ncch_offset, SEEK_SET); + if (file.ReadBytes(&exefs_header, sizeof(ExeFs_Header)) != sizeof(ExeFs_Header)) + return Loader::ResultStatus::Error; + + exefs_file = FileUtil::IOFile(filepath, "rb"); + has_exefs = true; + } + + if (ncch_header.romfs_offset != 0 && ncch_header.romfs_size != 0) + has_romfs = true; } - // DLC can have an ExeFS and a RomFS but no extended header - if (ncch_header.exefs_size) { - exefs_offset = ncch_header.exefs_offset * kBlockSize; - u32 exefs_size = ncch_header.exefs_size * kBlockSize; + LoadOverrides(); - LOG_DEBUG(Service_FS, "ExeFS offset: 0x%08X", exefs_offset); - LOG_DEBUG(Service_FS, "ExeFS size: 0x%08X", exefs_size); - - file.Seek(exefs_offset + ncch_offset, SEEK_SET); - if (file.ReadBytes(&exefs_header, sizeof(ExeFs_Header)) != sizeof(ExeFs_Header)) - return Loader::ResultStatus::Error; - - has_exefs = true; - } - - if (ncch_header.romfs_offset != 0 && ncch_header.romfs_size != 0) - has_romfs = true; + // We need at least one of these or overrides, practically + if (!(has_exefs || has_romfs || is_tainted)) + return Loader::ResultStatus::Error; is_loaded = true; return Loader::ResultStatus::Success; } -Loader::ResultStatus NCCHContainer::LoadSectionExeFS(const char* name, std::vector& buffer) { - if (!file.IsOpen()) - return Loader::ResultStatus::Error; +Loader::ResultStatus NCCHContainer::LoadOverrides() { + // Check for split-off files, mark the archive as tainted if we will use them + std::string romfs_override = filepath + ".romfs"; + if (FileUtil::Exists(romfs_override)) { + is_tainted = true; + } + // If we have a split-off exefs file/folder, it takes priority + std::string exefs_override = filepath + ".exefs"; + std::string exefsdir_override = filepath + ".exefsdir/"; + if (FileUtil::Exists(exefs_override)) { + exefs_file = FileUtil::IOFile(exefs_override, "rb"); + + if (exefs_file.ReadBytes(&exefs_header, sizeof(ExeFs_Header)) == sizeof(ExeFs_Header)) { + LOG_DEBUG(Service_FS, "Loading ExeFS section from %s", exefs_override.c_str()); + exefs_offset = 0; + is_tainted = true; + has_exefs = true; + } else { + exefs_file = FileUtil::IOFile(filepath, "rb"); + } + } else if (FileUtil::Exists(exefsdir_override) && FileUtil::IsDirectory(exefsdir_override)) { + is_tainted = true; + } + + if (is_tainted) + LOG_WARNING(Service_FS, + "Loaded NCCH %s is tainted, application behavior may not be as expected!", + filepath.c_str()); + + return Loader::ResultStatus::Success; +} + +Loader::ResultStatus NCCHContainer::LoadSectionExeFS(const char* name, std::vector& buffer) { Loader::ResultStatus result = Load(); if (result != Loader::ResultStatus::Success) return result; - if (!has_exefs) - return Loader::ResultStatus::ErrorNotUsed; + // Check if we have files that can drop-in and replace + result = LoadOverrideExeFSSection(name, buffer); + if (result == Loader::ResultStatus::Success || !has_exefs) + return result; + + // If we don't have any separate files, we'll need a full ExeFS + if (!exefs_file.IsOpen()) + return Loader::ResultStatus::Error; LOG_DEBUG(Service_FS, "%d sections:", kMaxSections); // Iterate through the ExeFs archive until we find a section with the specified name... @@ -215,7 +266,7 @@ Loader::ResultStatus NCCHContainer::LoadSectionExeFS(const char* name, std::vect s64 section_offset = (section.offset + exefs_offset + sizeof(ExeFs_Header) + ncch_offset); - file.Seek(section_offset, SEEK_SET); + exefs_file.Seek(section_offset, SEEK_SET); if (strcmp(section.name, ".code") == 0 && is_compressed) { // Section is compressed, read compressed .code section... @@ -226,7 +277,7 @@ Loader::ResultStatus NCCHContainer::LoadSectionExeFS(const char* name, std::vect return Loader::ResultStatus::ErrorMemoryAllocationFailed; } - if (file.ReadBytes(&temp_buffer[0], section.size) != section.size) + if (exefs_file.ReadBytes(&temp_buffer[0], section.size) != section.size) return Loader::ResultStatus::Error; // Decompress .code section... @@ -237,7 +288,7 @@ Loader::ResultStatus NCCHContainer::LoadSectionExeFS(const char* name, std::vect } else { // Section is uncompressed... buffer.resize(section.size); - if (file.ReadBytes(&buffer[0], section.size) != section.size) + if (exefs_file.ReadBytes(&buffer[0], section.size) != section.size) return Loader::ResultStatus::Error; } return Loader::ResultStatus::Success; @@ -246,20 +297,56 @@ Loader::ResultStatus NCCHContainer::LoadSectionExeFS(const char* name, std::vect return Loader::ResultStatus::ErrorNotUsed; } -Loader::ResultStatus NCCHContainer::ReadRomFS(std::shared_ptr& romfs_file, - u64& offset, u64& size) { - if (!file.IsOpen()) +Loader::ResultStatus NCCHContainer::LoadOverrideExeFSSection(const char* name, + std::vector& buffer) { + std::string override_name; + + // Map our section name to the extracted equivalent + if (!strcmp(name, ".code")) + override_name = "code.bin"; + else if (!strcmp(name, "icon")) + override_name = "code.bin"; + else if (!strcmp(name, "banner")) + override_name = "banner.bnr"; + else if (!strcmp(name, "logo")) + override_name = "logo.bcma.lz"; + else return Loader::ResultStatus::Error; + std::string section_override = filepath + ".exefsdir/" + override_name; + FileUtil::IOFile section_file(section_override, "rb"); + + if (section_file.IsOpen()) { + auto section_size = section_file.GetSize(); + buffer.resize(section_size); + + section_file.Seek(0, SEEK_SET); + if (section_file.ReadBytes(&buffer[0], section_size) == section_size) { + LOG_WARNING(Service_FS, "File %s overriding built-in ExeFS file", + section_override.c_str()); + return Loader::ResultStatus::Success; + } + } + return Loader::ResultStatus::ErrorNotUsed; +} + +Loader::ResultStatus NCCHContainer::ReadRomFS(std::shared_ptr& romfs_file, + u64& offset, u64& size) { Loader::ResultStatus result = Load(); if (result != Loader::ResultStatus::Success) return result; + if (ReadOverrideRomFS(romfs_file, offset, size) == Loader::ResultStatus::Success) + return Loader::ResultStatus::Success; + if (!has_romfs) { LOG_DEBUG(Service_FS, "RomFS requested from NCCH which has no RomFS"); return Loader::ResultStatus::ErrorNotUsed; } + if (!file.IsOpen()) + return Loader::ResultStatus::Error; + u32 romfs_offset = ncch_offset + (ncch_header.romfs_offset * kBlockSize) + 0x1000; u32 romfs_size = (ncch_header.romfs_size * kBlockSize) - 0x1000; @@ -280,11 +367,31 @@ Loader::ResultStatus NCCHContainer::ReadRomFS(std::shared_ptr& return Loader::ResultStatus::Success; } +Loader::ResultStatus NCCHContainer::ReadOverrideRomFS(std::shared_ptr& romfs_file, + u64& offset, u64& size) { + // Check for RomFS overrides + std::string split_filepath = filepath + ".romfs"; + if (FileUtil::Exists(split_filepath)) { + romfs_file = std::make_shared(split_filepath, "rb"); + if (romfs_file->IsOpen()) { + LOG_WARNING(Service_FS, "File %s overriding built-in RomFS", split_filepath.c_str()); + offset = 0; + size = romfs_file->GetSize(); + return Loader::ResultStatus::Success; + } + } + + return Loader::ResultStatus::ErrorNotUsed; +} + Loader::ResultStatus NCCHContainer::ReadProgramId(u64_le& program_id) { Loader::ResultStatus result = Load(); if (result != Loader::ResultStatus::Success) return result; + if (!has_header) + return Loader::ResultStatus::ErrorNotUsed; + program_id = ncch_header.program_id; return Loader::ResultStatus::Success; } diff --git a/src/core/file_sys/ncch_container.h b/src/core/file_sys/ncch_container.h index 8af9032b42..2cc9d13dcf 100644 --- a/src/core/file_sys/ncch_container.h +++ b/src/core/file_sys/ncch_container.h @@ -179,6 +179,13 @@ public: */ Loader::ResultStatus Load(); + /** + * Attempt to find overridden sections for the NCCH and mark the container as tainted + * if any are found. + * @return ResultStatus result of function + */ + Loader::ResultStatus LoadOverrides(); + /** * Reads an application ExeFS section of an NCCH file (e.g. .code, .logo, etc.) * @param name Name of section to read out of NCCH file @@ -187,6 +194,15 @@ public: */ Loader::ResultStatus LoadSectionExeFS(const char* name, std::vector& buffer); + /** + * Reads an application ExeFS section from external files instead of an NCCH file, + * (e.g. code.bin, logo.bcma.lz, icon.icn, banner.bnr) + * @param name Name of section to read from external files + * @param buffer Vector to read data into + * @return ResultStatus result of function + */ + Loader::ResultStatus LoadOverrideExeFSSection(const char* name, std::vector& buffer); + /** * Get the RomFS of the NCCH container * Since the RomFS can be huge, we return a file reference instead of copying to a buffer @@ -198,6 +214,17 @@ public: Loader::ResultStatus ReadRomFS(std::shared_ptr& romfs_file, u64& offset, u64& size); + /** + * Get the override RomFS of the NCCH container + * Since the RomFS can be huge, we return a file reference instead of copying to a buffer + * @param romfs_file The file containing the RomFS + * @param offset The offset the romfs begins on + * @param size The size of the romfs + * @return ResultStatus result of function + */ + Loader::ResultStatus ReadOverrideRomFS(std::shared_ptr& romfs_file, + u64& offset, u64& size); + /** * Get the Program ID of the NCCH container * @return ResultStatus result of function @@ -227,10 +254,12 @@ public: ExHeader_Header exheader_header; private: + bool has_header = false; bool has_exheader = false; bool has_exefs = false; bool has_romfs = false; + bool is_tainted = false; // Are there parts of this container being overridden? bool is_loaded = false; bool is_compressed = false; @@ -239,6 +268,7 @@ private: std::string filepath; FileUtil::IOFile file; + FileUtil::IOFile exefs_file; }; } // namespace FileSys From 8e10c9bb2e8690055ba07003ebd53a5215f82f8f Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 1 Oct 2017 10:32:43 -0600 Subject: [PATCH 179/195] file_sys: add class for Title Metadata (TMD) --- src/core/CMakeLists.txt | 1 + src/core/file_sys/title_metadata.cpp | 212 +++++++++++++++++++++++++++ src/core/file_sys/title_metadata.h | 125 ++++++++++++++++ 3 files changed, 338 insertions(+) create mode 100644 src/core/file_sys/title_metadata.cpp create mode 100644 src/core/file_sys/title_metadata.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 3ed6199916..2618da18c4 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -29,6 +29,7 @@ set(SRCS file_sys/ncch_container.cpp file_sys/path_parser.cpp file_sys/savedata_archive.cpp + file_sys/title_metadata.cpp frontend/camera/blank_camera.cpp frontend/camera/factory.cpp frontend/camera/interface.cpp diff --git a/src/core/file_sys/title_metadata.cpp b/src/core/file_sys/title_metadata.cpp new file mode 100644 index 0000000000..1ef8840a0a --- /dev/null +++ b/src/core/file_sys/title_metadata.cpp @@ -0,0 +1,212 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include +#include +#include "common/alignment.h" +#include "common/file_util.h" +#include "common/logging/log.h" +#include "core/file_sys/title_metadata.h" +#include "core/loader/loader.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// FileSys namespace + +namespace FileSys { + +static u32 GetSignatureSize(u32 signature_type) { + switch (signature_type) { + case Rsa4096Sha1: + case Rsa4096Sha256: + return 0x200; + + case Rsa2048Sha1: + case Rsa2048Sha256: + return 0x100; + + case EllipticSha1: + case EcdsaSha256: + return 0x3C; + } +} + +Loader::ResultStatus TitleMetadata::Load() { + FileUtil::IOFile file(filepath, "rb"); + if (!file.IsOpen()) + return Loader::ResultStatus::Error; + + if (!file.ReadBytes(&signature_type, sizeof(u32_be))) + return Loader::ResultStatus::Error; + + // Signature lengths are variable, and the body follows the signature + u32 signature_size = GetSignatureSize(signature_type); + + tmd_signature.resize(signature_size); + if (!file.ReadBytes(&tmd_signature[0], signature_size)) + return Loader::ResultStatus::Error; + + // The TMD body start position is rounded to the nearest 0x40 after the signature + size_t body_start = Common::AlignUp(signature_size + sizeof(u32), 0x40); + file.Seek(body_start, SEEK_SET); + + // Read our TMD body, then load the amount of ContentChunks specified + if (file.ReadBytes(&tmd_body, sizeof(TitleMetadata::Body)) != sizeof(TitleMetadata::Body)) + return Loader::ResultStatus::Error; + + for (u16 i = 0; i < tmd_body.content_count; i++) { + ContentChunk chunk; + if (file.ReadBytes(&chunk, sizeof(ContentChunk)) == sizeof(ContentChunk)) { + tmd_chunks.push_back(chunk); + } else { + LOG_ERROR(Service_FS, "Malformed TMD %s, failed to load content chunk index %u!", + filepath.c_str(), i); + return Loader::ResultStatus::ErrorInvalidFormat; + } + } + + return Loader::ResultStatus::Success; +} + +Loader::ResultStatus TitleMetadata::Save() { + FileUtil::IOFile file(filepath, "wb"); + if (!file.IsOpen()) + return Loader::ResultStatus::Error; + + if (!file.WriteBytes(&signature_type, sizeof(u32_be))) + return Loader::ResultStatus::Error; + + // Signature lengths are variable, and the body follows the signature + u32 signature_size = GetSignatureSize(signature_type); + + if (!file.WriteBytes(tmd_signature.data(), signature_size)) + return Loader::ResultStatus::Error; + + // The TMD body start position is rounded to the nearest 0x40 after the signature + size_t body_start = Common::AlignUp(signature_size + sizeof(u32), 0x40); + file.Seek(body_start, SEEK_SET); + + // Update our TMD body values and hashes + tmd_body.content_count = static_cast(tmd_chunks.size()); + + // TODO(shinyquagsire23): Do TMDs with more than one contentinfo exist? + // For now we'll just adjust the first index to hold all content chunks + // and ensure that no further content info data exists. + tmd_body.contentinfo = {}; + tmd_body.contentinfo[0].index = 0; + tmd_body.contentinfo[0].command_count = static_cast(tmd_chunks.size()); + + CryptoPP::SHA256 chunk_hash; + for (u16 i = 0; i < tmd_body.content_count; i++) { + chunk_hash.Update(reinterpret_cast(&tmd_chunks[i]), sizeof(ContentChunk)); + } + chunk_hash.Final(tmd_body.contentinfo[0].hash.data()); + + CryptoPP::SHA256 contentinfo_hash; + for (size_t i = 0; i < tmd_body.contentinfo.size(); i++) { + chunk_hash.Update(reinterpret_cast(&tmd_body.contentinfo[i]), sizeof(ContentInfo)); + } + chunk_hash.Final(tmd_body.contentinfo_hash.data()); + + // Write our TMD body, then write each of our ContentChunks + if (file.WriteBytes(&tmd_body, sizeof(TitleMetadata::Body)) != sizeof(TitleMetadata::Body)) + return Loader::ResultStatus::Error; + + for (u16 i = 0; i < tmd_body.content_count; i++) { + ContentChunk chunk = tmd_chunks[i]; + if (file.WriteBytes(&chunk, sizeof(ContentChunk)) != sizeof(ContentChunk)) + return Loader::ResultStatus::Error; + } + + return Loader::ResultStatus::Success; +} + +u64 TitleMetadata::GetTitleID() const { + return tmd_body.title_id; +} + +u32 TitleMetadata::GetTitleType() const { + return tmd_body.title_type; +} + +u16 TitleMetadata::GetTitleVersion() const { + return tmd_body.title_version; +} + +u64 TitleMetadata::GetSystemVersion() const { + return tmd_body.system_version; +} + +size_t TitleMetadata::GetContentCount() const { + return tmd_chunks.size(); +} + +u32 TitleMetadata::GetBootContentID() const { + return tmd_chunks[TMDContentIndex::Main].id; +} + +u32 TitleMetadata::GetManualContentID() const { + return tmd_chunks[TMDContentIndex::Manual].id; +} + +u32 TitleMetadata::GetDLPContentID() const { + return tmd_chunks[TMDContentIndex::DLP].id; +} + +void TitleMetadata::SetTitleID(u64 title_id) { + tmd_body.title_id = title_id; +} + +void TitleMetadata::SetTitleType(u32 type) { + tmd_body.title_type = type; +} + +void TitleMetadata::SetTitleVersion(u16 version) { + tmd_body.title_version = version; +} + +void TitleMetadata::SetSystemVersion(u64 version) { + tmd_body.system_version = version; +} + +void TitleMetadata::AddContentChunk(const ContentChunk& chunk) { + tmd_chunks.push_back(chunk); +} + +void TitleMetadata::Print() const { + LOG_DEBUG(Service_FS, "%s - %u chunks", filepath.c_str(), + static_cast(tmd_body.content_count)); + + // Content info describes ranges of content chunks + LOG_DEBUG(Service_FS, "Content info:"); + for (size_t i = 0; i < tmd_body.contentinfo.size(); i++) { + if (tmd_body.contentinfo[i].command_count == 0) + break; + + LOG_DEBUG(Service_FS, " Index %04X, Command Count %04X", + static_cast(tmd_body.contentinfo[i].index), + static_cast(tmd_body.contentinfo[i].command_count)); + } + + // For each content info, print their content chunk range + for (size_t i = 0; i < tmd_body.contentinfo.size(); i++) { + u16 index = static_cast(tmd_body.contentinfo[i].index); + u16 count = static_cast(tmd_body.contentinfo[i].command_count); + + if (count == 0) + continue; + + LOG_DEBUG(Service_FS, "Content chunks for content info index %zu:", i); + for (u16 j = index; j < index + count; j++) { + // Don't attempt to print content we don't have + if (j > tmd_body.content_count) + break; + + const ContentChunk& chunk = tmd_chunks[j]; + LOG_DEBUG(Service_FS, " ID %08X, Index %04X, Type %04x, Size %016" PRIX64, + static_cast(chunk.id), static_cast(chunk.index), + static_cast(chunk.type), static_cast(chunk.size)); + } + } +} +} // namespace FileSys diff --git a/src/core/file_sys/title_metadata.h b/src/core/file_sys/title_metadata.h new file mode 100644 index 0000000000..1fc157bf3f --- /dev/null +++ b/src/core/file_sys/title_metadata.h @@ -0,0 +1,125 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include +#include "common/common_types.h" +#include "common/swap.h" + +namespace Loader { +enum class ResultStatus; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// FileSys namespace + +namespace FileSys { + +enum TMDSignatureType : u32 { + Rsa4096Sha1 = 0x10000, + Rsa2048Sha1 = 0x10001, + EllipticSha1 = 0x10002, + Rsa4096Sha256 = 0x10003, + Rsa2048Sha256 = 0x10004, + EcdsaSha256 = 0x10005 +}; + +enum TMDContentTypeFlag : u16 { + Encrypted = 1 << 1, + Disc = 1 << 2, + CFM = 1 << 3, + Optional = 1 << 14, + Shared = 1 << 15 +}; + +/** + * Helper which implements an interface to read and write Title Metadata (TMD) files. + * If a file path is provided and the file exists, it can be parsed and used, otherwise + * it must be created. The TMD file can then be interpreted, modified and/or saved. + */ +class TitleMetadata { +public: + struct ContentChunk { + u32_be id; + u16_be index; + u16_be type; + u64_be size; + std::array hash; + }; + + static_assert(sizeof(ContentChunk) == 0x30, "TMD ContentChunk structure size is wrong"); + + struct ContentInfo { + u16_be index; + u16_be command_count; + std::array hash; + }; + + static_assert(sizeof(ContentInfo) == 0x24, "TMD ContentInfo structure size is wrong"); + +#pragma pack(push, 1) + + struct Body { + std::array issuer; + u8 version; + u8 ca_crl_version; + u8 signer_crl_version; + u8 reserved; + u64_be system_version; + u64_be title_id; + u32_be title_type; + u16_be group_id; + u32_be savedata_size; + u32_be srl_private_savedata_size; + std::array reserved_2; + u8 srl_flag; + std::array reserved_3; + u32_be access_rights; + u16_be title_version; + u16_be content_count; + u16_be boot_content; + std::array reserved_4; + std::array contentinfo_hash; + std::array contentinfo; + }; + + static_assert(sizeof(Body) == 0x9C4, "TMD body structure size is wrong"); + +#pragma pack(pop) + + explicit TitleMetadata(std::string& path) : filepath(std::move(path)) {} + Loader::ResultStatus Load(); + Loader::ResultStatus Save(); + + u64 GetTitleID() const; + u32 GetTitleType() const; + u16 GetTitleVersion() const; + u64 GetSystemVersion() const; + size_t GetContentCount() const; + u32 GetBootContentID() const; + u32 GetManualContentID() const; + u32 GetDLPContentID() const; + + void SetTitleID(u64 title_id); + void SetTitleType(u32 type); + void SetTitleVersion(u16 version); + void SetSystemVersion(u64 version); + void AddContentChunk(const ContentChunk& chunk); + + void Print() const; + +private: + enum TMDContentIndex { Main = 0, Manual = 1, DLP = 2 }; + + Body tmd_body; + u32_be signature_type; + std::vector tmd_signature; + std::vector tmd_chunks; + + std::string filepath; +}; + +} // namespace FileSys From 4887d1859102234c594c3140c31217ff64791f37 Mon Sep 17 00:00:00 2001 From: shinyquagsire23 Date: Sun, 1 Oct 2017 10:41:40 -0600 Subject: [PATCH 180/195] file_sys, loader: add support for reading TMDs to determine app paths --- src/core/file_sys/archive_ncch.cpp | 15 +++++++++++++-- src/core/loader/ncch.cpp | 17 ++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/core/file_sys/archive_ncch.cpp b/src/core/file_sys/archive_ncch.cpp index 19e1eb981f..e8c5be983f 100644 --- a/src/core/file_sys/archive_ncch.cpp +++ b/src/core/file_sys/archive_ncch.cpp @@ -14,6 +14,7 @@ #include "core/file_sys/errors.h" #include "core/file_sys/ivfc_archive.h" #include "core/file_sys/ncch_container.h" +#include "core/file_sys/title_metadata.h" #include "core/hle/service/fs/archive.h" #include "core/loader/loader.h" @@ -27,8 +28,18 @@ static std::string GetNCCHContainerPath(const std::string& nand_directory) { } static std::string GetNCCHPath(const std::string& mount_point, u32 high, u32 low) { - return Common::StringFromFormat("%s%08x/%08x/content/00000000.app", mount_point.c_str(), high, - low); + u32 content_id = 0; + + // TODO(shinyquagsire23): Title database should be doing this path lookup + std::string content_path = + Common::StringFromFormat("%s%08x/%08x/content/", mount_point.c_str(), high, low); + std::string tmd_path = content_path + "00000000.tmd"; + TitleMetadata tmd(tmd_path); + if (tmd.Load() == Loader::ResultStatus::Success) { + content_id = tmd.GetBootContentID(); + } + + return Common::StringFromFormat("%s%08x.app", content_path.c_str(), content_id); } ArchiveFactory_NCCH::ArchiveFactory_NCCH(const std::string& nand_directory) diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index 66bc5823d2..52686e3641 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -14,6 +14,7 @@ #include "core/core.h" #include "core/file_sys/archive_selfncch.h" #include "core/file_sys/ncch_container.h" +#include "core/file_sys/title_metadata.h" #include "core/hle/kernel/process.h" #include "core/hle/kernel/resource_limit.h" #include "core/hle/service/cfg/cfg.h" @@ -49,9 +50,19 @@ static std::string GetUpdateNCCHPath(u64_le program_id) { u32 high = static_cast((program_id | UPDATE_MASK) >> 32); u32 low = static_cast((program_id | UPDATE_MASK) & 0xFFFFFFFF); - return Common::StringFromFormat("%sNintendo 3DS/%s/%s/title/%08x/%08x/content/00000000.app", - FileUtil::GetUserPath(D_SDMC_IDX).c_str(), SYSTEM_ID, SDCARD_ID, - high, low); + // TODO(shinyquagsire23): Title database should be doing this path lookup + std::string content_path = Common::StringFromFormat( + "%sNintendo 3DS/%s/%s/title/%08x/%08x/content/", FileUtil::GetUserPath(D_SDMC_IDX).c_str(), + SYSTEM_ID, SDCARD_ID, high, low); + std::string tmd_path = content_path + "00000000.tmd"; + + u32 content_id = 0; + FileSys::TitleMetadata tmd(tmd_path); + if (tmd.Load() == ResultStatus::Success) { + content_id = tmd.GetBootContentID(); + } + + return Common::StringFromFormat("%s%08x.app", content_path.c_str(), content_id); } std::pair, ResultStatus> AppLoader_NCCH::LoadKernelSystemMode() { From 8217ed7acb71bfa574e0a29e69b902a0c539c814 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 29 Sep 2017 14:47:52 -0500 Subject: [PATCH 181/195] Kernel/Thread: Added a helper function to get a thread's command buffer VAddr. --- src/core/hle/kernel/thread.cpp | 6 ++++++ src/core/hle/kernel/thread.h | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 11f7d21277..6ebc8c151c 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -534,6 +534,12 @@ s32 Thread::GetWaitObjectIndex(WaitObject* object) const { return static_cast(std::distance(match, wait_objects.rend()) - 1); } +VAddr Thread::GetCommandBufferAddress() const { + // Offset from the start of TLS at which the IPC command buffer begins. + static constexpr int CommandHeaderOffset = 0x80; + return GetTLSAddress() + CommandHeaderOffset; +} + //////////////////////////////////////////////////////////////////////////////////////////////////// void ThreadingInit() { diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index f02e1d43af..520ac22c2c 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -159,6 +159,12 @@ public: return tls_address; } + /* + * Returns the address of the current thread's command buffer, located in the TLS. + * @returns VAddr of the thread's command buffer. + */ + VAddr GetCommandBufferAddress() const; + /** * Returns whether this thread is waiting for all the objects in * its wait list to become ready, as a result of a WaitSynchronizationN call From 811c01e5fec3a1cc7a6faf5eaed11d1aaef31768 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 29 Sep 2017 19:38:54 -0500 Subject: [PATCH 182/195] Memory: Make ReadBlock take a Process parameter on which to operate --- src/core/memory.cpp | 40 ++++++++++++++++++++++++++++------------ src/core/memory.h | 2 ++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 847e697106..da97038c65 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -82,10 +82,10 @@ void UnmapRegion(PageTable& page_table, VAddr base, u32 size) { * Gets a pointer to the exact memory at the virtual address (i.e. not page aligned) * using a VMA from the current process */ -static u8* GetPointerFromVMA(VAddr vaddr) { +static u8* GetPointerFromVMA(const Kernel::Process& process, VAddr vaddr) { u8* direct_pointer = nullptr; - auto& vm_manager = Kernel::g_current_process->vm_manager; + auto& vm_manager = process.vm_manager; auto it = vm_manager.FindVMA(vaddr); ASSERT(it != vm_manager.vma_map.end()); @@ -107,6 +107,14 @@ static u8* GetPointerFromVMA(VAddr vaddr) { return direct_pointer + (vaddr - vma.base); } +/** + * Gets a pointer to the exact memory at the virtual address (i.e. not page aligned) + * using a VMA from the current process. + */ +static u8* GetPointerFromVMA(VAddr vaddr) { + return GetPointerFromVMA(*Kernel::g_current_process, vaddr); +} + /** * This function should only be called for virtual addreses with attribute `PageType::Special`. */ @@ -470,7 +478,10 @@ u64 Read64(const VAddr addr) { return Read(addr); } -void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { +void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_buffer, + const size_t size) { + auto& page_table = process.vm_manager.page_table; + size_t remaining_size = size; size_t page_index = src_addr >> PAGE_BITS; size_t page_offset = src_addr & PAGE_MASK; @@ -479,7 +490,7 @@ void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { const size_t copy_amount = std::min(PAGE_SIZE - page_offset, remaining_size); const VAddr current_vaddr = static_cast((page_index << PAGE_BITS) + page_offset); - switch (current_page_table->attributes[page_index]) { + switch (page_table.attributes[page_index]) { case PageType::Unmapped: { LOG_ERROR(HW_Memory, "unmapped ReadBlock @ 0x%08X (start address = 0x%08X, size = %zu)", current_vaddr, src_addr, size); @@ -487,29 +498,30 @@ void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { break; } case PageType::Memory: { - DEBUG_ASSERT(current_page_table->pointers[page_index]); + DEBUG_ASSERT(page_table.pointers[page_index]); - const u8* src_ptr = current_page_table->pointers[page_index] + page_offset; + const u8* src_ptr = page_table.pointers[page_index] + page_offset; std::memcpy(dest_buffer, src_ptr, copy_amount); break; } case PageType::Special: { - DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); - - GetMMIOHandler(current_vaddr)->ReadBlock(current_vaddr, dest_buffer, copy_amount); + MMIORegionPointer handler = GetMMIOHandler(page_table, current_vaddr); + DEBUG_ASSERT(handler); + handler->ReadBlock(current_vaddr, dest_buffer, copy_amount); break; } case PageType::RasterizerCachedMemory: { RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), FlushMode::Flush); - std::memcpy(dest_buffer, GetPointerFromVMA(current_vaddr), copy_amount); + std::memcpy(dest_buffer, GetPointerFromVMA(process, current_vaddr), copy_amount); break; } case PageType::RasterizerCachedSpecial: { - DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); + MMIORegionPointer handler = GetMMIOHandler(page_table, current_vaddr); + DEBUG_ASSERT(handler); RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), FlushMode::Flush); - GetMMIOHandler(current_vaddr)->ReadBlock(current_vaddr, dest_buffer, copy_amount); + handler->ReadBlock(current_vaddr, dest_buffer, copy_amount); break; } default: @@ -523,6 +535,10 @@ void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { } } +void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { + ReadBlock(*Kernel::g_current_process, src_addr, dest_buffer, size); +} + void Write8(const VAddr addr, const u8 data) { Write(addr, data); } diff --git a/src/core/memory.h b/src/core/memory.h index 347c08c781..5d4eb56a93 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -205,6 +205,8 @@ void Write16(VAddr addr, u16 data); void Write32(VAddr addr, u32 data); void Write64(VAddr addr, u64 data); +void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_buffer, + size_t size); void ReadBlock(const VAddr src_addr, void* dest_buffer, size_t size); void WriteBlock(const VAddr dest_addr, const void* src_buffer, size_t size); void ZeroBlock(const VAddr dest_addr, const size_t size); From 1f2de7501b427f9f5ac1e5d244f8ec52eca9bc64 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 29 Sep 2017 22:42:25 -0500 Subject: [PATCH 183/195] Memory: Make WriteBlock take a Process parameter on which to operate --- src/core/memory.cpp | 27 +++++++++++++++++---------- src/core/memory.h | 2 ++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index da97038c65..7f58be6de8 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -555,7 +555,9 @@ void Write64(const VAddr addr, const u64 data) { Write(addr, data); } -void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size) { +void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const void* src_buffer, + const size_t size) { + auto& page_table = process.vm_manager.page_table; size_t remaining_size = size; size_t page_index = dest_addr >> PAGE_BITS; size_t page_offset = dest_addr & PAGE_MASK; @@ -564,7 +566,7 @@ void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size const size_t copy_amount = std::min(PAGE_SIZE - page_offset, remaining_size); const VAddr current_vaddr = static_cast((page_index << PAGE_BITS) + page_offset); - switch (current_page_table->attributes[page_index]) { + switch (page_table.attributes[page_index]) { case PageType::Unmapped: { LOG_ERROR(HW_Memory, "unmapped WriteBlock @ 0x%08X (start address = 0x%08X, size = %zu)", @@ -572,29 +574,30 @@ void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size break; } case PageType::Memory: { - DEBUG_ASSERT(current_page_table->pointers[page_index]); + DEBUG_ASSERT(page_table.pointers[page_index]); - u8* dest_ptr = current_page_table->pointers[page_index] + page_offset; + u8* dest_ptr = page_table.pointers[page_index] + page_offset; std::memcpy(dest_ptr, src_buffer, copy_amount); break; } case PageType::Special: { - DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); - - GetMMIOHandler(current_vaddr)->WriteBlock(current_vaddr, src_buffer, copy_amount); + MMIORegionPointer handler = GetMMIOHandler(page_table, current_vaddr); + DEBUG_ASSERT(handler); + handler->WriteBlock(current_vaddr, src_buffer, copy_amount); break; } case PageType::RasterizerCachedMemory: { RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), FlushMode::FlushAndInvalidate); - std::memcpy(GetPointerFromVMA(current_vaddr), src_buffer, copy_amount); + std::memcpy(GetPointerFromVMA(process, current_vaddr), src_buffer, copy_amount); break; } case PageType::RasterizerCachedSpecial: { - DEBUG_ASSERT(GetMMIOHandler(current_vaddr)); + MMIORegionPointer handler = GetMMIOHandler(page_table, current_vaddr); + DEBUG_ASSERT(handler); RasterizerFlushVirtualRegion(current_vaddr, static_cast(copy_amount), FlushMode::FlushAndInvalidate); - GetMMIOHandler(current_vaddr)->WriteBlock(current_vaddr, src_buffer, copy_amount); + handler->WriteBlock(current_vaddr, src_buffer, copy_amount); break; } default: @@ -608,6 +611,10 @@ void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size } } +void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size) { + WriteBlock(*Kernel::g_current_process, dest_addr, src_buffer, size); +} + void ZeroBlock(const VAddr dest_addr, const size_t size) { size_t remaining_size = size; size_t page_index = dest_addr >> PAGE_BITS; diff --git a/src/core/memory.h b/src/core/memory.h index 5d4eb56a93..dd599f73ec 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -208,6 +208,8 @@ void Write64(VAddr addr, u64 data); void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_buffer, size_t size); void ReadBlock(const VAddr src_addr, void* dest_buffer, size_t size); +void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const void* src_buffer, + size_t size); void WriteBlock(const VAddr dest_addr, const void* src_buffer, size_t size); void ZeroBlock(const VAddr dest_addr, const size_t size); void CopyBlock(VAddr dest_addr, VAddr src_addr, size_t size); From 29a6fbacd5cfb4ca91466ddb099cb0cc3c3c4632 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Mon, 2 Oct 2017 09:43:30 +0100 Subject: [PATCH 184/195] macOS: Build x86_64h slice This commit produces a fat-binary with two slices. The x86_64 slice is for all x64 systems, and the x86_64h slice targets x64 systems starting with Haswell. The latter allows the compiler to use newer instructions that are not available on older microarchitectures. --- .travis-build.sh | 4 ++-- .travis-upload.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis-build.sh b/.travis-build.sh index bb4e6fc47e..fc5a5f8b2a 100755 --- a/.travis-build.sh +++ b/.travis-build.sh @@ -52,8 +52,8 @@ elif [ "$TRAVIS_OS_NAME" = "osx" ]; then export Qt5_DIR=$(brew --prefix)/opt/qt5 mkdir build && cd build - cmake .. -DUSE_SYSTEM_CURL=ON -GXcode - xcodebuild -configuration Release + cmake .. -DUSE_SYSTEM_CURL=ON -DCMAKE_OSX_ARCHITECTURES="x86_64;x86_64h" -DCMAKE_BUILD_TYPE=Release + make -j4 ctest -VV -C Release fi diff --git a/.travis-upload.sh b/.travis-upload.sh index 8c1fa21c5b..edf195f7d5 100755 --- a/.travis-upload.sh +++ b/.travis-upload.sh @@ -16,8 +16,8 @@ elif [ "$TRAVIS_OS_NAME" = "osx" ]; then COMPRESSION_FLAGS="-czvf" mkdir "$REV_NAME" - cp build/src/citra/Release/citra "$REV_NAME" - cp -r build/src/citra_qt/Release/citra-qt.app "$REV_NAME" + cp build/src/citra/citra "$REV_NAME" + cp -r build/src/citra_qt/citra-qt.app "$REV_NAME" # move qt libs into app bundle for deployment $(brew --prefix)/opt/qt5/bin/macdeployqt "${REV_NAME}/citra-qt.app" From b18589ecf780ca479e077529b789ec481e58f715 Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 1 Oct 2017 13:57:50 -0500 Subject: [PATCH 185/195] Kernel/SharedMemory: Don't take over and unmap the source memory block when creating a shared memory, just reference it. Also reference the right offset into the backing block for the requested address. --- src/core/hle/kernel/shared_memory.cpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index 02d5a7a360..d45daca352 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -55,22 +55,19 @@ SharedPtr SharedMemory::Create(SharedPtr owner_process, u Kernel::g_current_process->vm_manager.RefreshMemoryBlockMappings(linheap_memory.get()); } } else { - // TODO(Subv): What happens if an application tries to create multiple memory blocks - // pointing to the same address? auto& vm_manager = shared_memory->owner_process->vm_manager; // The memory is already available and mapped in the owner process. - auto vma = vm_manager.FindVMA(address)->second; - // Copy it over to our own storage - shared_memory->backing_block = std::make_shared>( - vma.backing_block->data() + vma.offset, vma.backing_block->data() + vma.offset + size); - shared_memory->backing_block_offset = 0; - // Unmap the existing pages - vm_manager.UnmapRange(address, size); - // Map our own block into the address space - vm_manager.MapMemoryBlock(address, shared_memory->backing_block, 0, size, - MemoryState::Shared); - // Reprotect the block with the new permissions - vm_manager.ReprotectRange(address, size, ConvertPermissions(permissions)); + auto vma = vm_manager.FindVMA(address); + ASSERT_MSG(vma != vm_manager.vma_map.end(), "Invalid memory address"); + ASSERT_MSG(vma->second.backing_block, "Backing block doesn't exist for address"); + + // The returned VMA might be a bigger one encompassing the desired address. + auto vma_offset = address - vma->first; + ASSERT_MSG(vma_offset + size <= vma->second.size, + "Shared memory exceeds bounds of mapped block"); + + shared_memory->backing_block = vma->second.backing_block; + shared_memory->backing_block_offset = vma->second.offset + vma_offset; } shared_memory->base_address = address; @@ -184,4 +181,4 @@ u8* SharedMemory::GetPointer(u32 offset) { return backing_block->data() + backing_block_offset + offset; } -} // namespace +} // namespace Kernel From b3b34a1e76664c412fd7b37b3529cadd3983acfb Mon Sep 17 00:00:00 2001 From: Huw Pascoe Date: Tue, 3 Oct 2017 12:21:37 +0100 Subject: [PATCH 186/195] Extracted the attribute setup and draw commands into their own functions --- src/video_core/command_processor.cpp | 439 ++++++++++++++------------- 1 file changed, 222 insertions(+), 217 deletions(-) diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index 3ab4af3747..caf9f7a06a 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp @@ -119,6 +119,224 @@ static void WriteUniformFloatReg(ShaderRegs& config, Shader::ShaderSetup& setup, } } +static void LoadDefaultVertexAttributes(u32 register_value) { + auto& regs = g_state.regs; + + // TODO: Does actual hardware indeed keep an intermediate buffer or does + // it directly write the values? + default_attr_write_buffer[default_attr_counter++] = register_value; + + // Default attributes are written in a packed format such that four float24 values are encoded + // in three 32-bit numbers. + // We write to internal memory once a full such vector is written. + if (default_attr_counter >= 3) { + default_attr_counter = 0; + + auto& setup = regs.pipeline.vs_default_attributes_setup; + + if (setup.index >= 16) { + LOG_ERROR(HW_GPU, "Invalid VS default attribute index %d", (int)setup.index); + return; + } + + Math::Vec4 attribute; + + // NOTE: The destination component order indeed is "backwards" + attribute.w = float24::FromRaw(default_attr_write_buffer[0] >> 8); + attribute.z = float24::FromRaw(((default_attr_write_buffer[0] & 0xFF) << 16) | + ((default_attr_write_buffer[1] >> 16) & 0xFFFF)); + attribute.y = float24::FromRaw(((default_attr_write_buffer[1] & 0xFFFF) << 8) | + ((default_attr_write_buffer[2] >> 24) & 0xFF)); + attribute.x = float24::FromRaw(default_attr_write_buffer[2] & 0xFFFFFF); + + LOG_TRACE(HW_GPU, "Set default VS attribute %x to (%f %f %f %f)", (int)setup.index, + attribute.x.ToFloat32(), attribute.y.ToFloat32(), attribute.z.ToFloat32(), + attribute.w.ToFloat32()); + + // TODO: Verify that this actually modifies the register! + if (setup.index < 15) { + g_state.input_default_attributes.attr[setup.index] = attribute; + setup.index++; + } else { + // Put each attribute into an immediate input buffer. When all specified immediate + // attributes are present, the Vertex Shader is invoked and everything is sent to + // the primitive assembler. + + auto& immediate_input = g_state.immediate.input_vertex; + auto& immediate_attribute_id = g_state.immediate.current_attribute; + + immediate_input.attr[immediate_attribute_id] = attribute; + + if (immediate_attribute_id < regs.pipeline.max_input_attrib_index) { + immediate_attribute_id += 1; + } else { + MICROPROFILE_SCOPE(GPU_Drawing); + immediate_attribute_id = 0; + + auto* shader_engine = Shader::GetEngine(); + shader_engine->SetupBatch(g_state.vs, regs.vs.main_offset); + + // Send to vertex shader + if (g_debug_context) + g_debug_context->OnEvent(DebugContext::Event::VertexShaderInvocation, + static_cast(&immediate_input)); + Shader::UnitState shader_unit; + Shader::AttributeBuffer output{}; + + shader_unit.LoadInput(regs.vs, immediate_input); + shader_engine->Run(g_state.vs, shader_unit); + shader_unit.WriteOutput(regs.vs, output); + + // Send to geometry pipeline + if (g_state.immediate.reset_geometry_pipeline) { + g_state.geometry_pipeline.Reconfigure(); + g_state.immediate.reset_geometry_pipeline = false; + } + ASSERT(!g_state.geometry_pipeline.NeedIndexInput()); + g_state.geometry_pipeline.Setup(shader_engine); + g_state.geometry_pipeline.SubmitVertex(output); + + // TODO: If drawing after every immediate mode triangle kills performance, + // change it to flush triangles whenever a drawing config register changes + // See: https://github.com/citra-emu/citra/pull/2866#issuecomment-327011550 + VideoCore::g_renderer->Rasterizer()->DrawTriangles(); + if (g_debug_context) { + g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); + } + } + } + } +} + +static void Draw(u32 command_id) { + MICROPROFILE_SCOPE(GPU_Drawing); + auto& regs = g_state.regs; + +#if PICA_LOG_TEV + DebugUtils::DumpTevStageConfig(regs.GetTevStages()); +#endif + if (g_debug_context) + g_debug_context->OnEvent(DebugContext::Event::IncomingPrimitiveBatch, nullptr); + + // Processes information about internal vertex attributes to figure out how a vertex is + // loaded. + // Later, these can be compiled and cached. + const u32 base_address = regs.pipeline.vertex_attributes.GetPhysicalBaseAddress(); + VertexLoader loader(regs.pipeline); + + // Load vertices + bool is_indexed = (command_id == PICA_REG_INDEX(pipeline.trigger_draw_indexed)); + + const auto& index_info = regs.pipeline.index_array; + const u8* index_address_8 = Memory::GetPhysicalPointer(base_address + index_info.offset); + const u16* index_address_16 = reinterpret_cast(index_address_8); + bool index_u16 = index_info.format != 0; + + PrimitiveAssembler& primitive_assembler = g_state.primitive_assembler; + + if (g_debug_context && g_debug_context->recorder) { + for (int i = 0; i < 3; ++i) { + const auto texture = regs.texturing.GetTextures()[i]; + if (!texture.enabled) + continue; + + u8* texture_data = Memory::GetPhysicalPointer(texture.config.GetPhysicalAddress()); + g_debug_context->recorder->MemoryAccessed( + texture_data, Pica::TexturingRegs::NibblesPerPixel(texture.format) * + texture.config.width / 2 * texture.config.height, + texture.config.GetPhysicalAddress()); + } + } + + DebugUtils::MemoryAccessTracker memory_accesses; + + // Simple circular-replacement vertex cache + // The size has been tuned for optimal balance between hit-rate and the cost of lookup + const size_t VERTEX_CACHE_SIZE = 32; + std::array vertex_cache_ids; + std::array vertex_cache; + Shader::AttributeBuffer vs_output; + + unsigned int vertex_cache_pos = 0; + vertex_cache_ids.fill(-1); + + auto* shader_engine = Shader::GetEngine(); + Shader::UnitState shader_unit; + + shader_engine->SetupBatch(g_state.vs, regs.vs.main_offset); + + g_state.geometry_pipeline.Reconfigure(); + g_state.geometry_pipeline.Setup(shader_engine); + if (g_state.geometry_pipeline.NeedIndexInput()) + ASSERT(is_indexed); + + for (unsigned int index = 0; index < regs.pipeline.num_vertices; ++index) { + // Indexed rendering doesn't use the start offset + unsigned int vertex = is_indexed + ? (index_u16 ? index_address_16[index] : index_address_8[index]) + : (index + regs.pipeline.vertex_offset); + + // -1 is a common special value used for primitive restart. Since it's unknown if + // the PICA supports it, and it would mess up the caching, guard against it here. + ASSERT(vertex != -1); + + bool vertex_cache_hit = false; + + if (is_indexed) { + if (g_state.geometry_pipeline.NeedIndexInput()) { + g_state.geometry_pipeline.SubmitIndex(vertex); + continue; + } + + if (g_debug_context && Pica::g_debug_context->recorder) { + int size = index_u16 ? 2 : 1; + memory_accesses.AddAccess(base_address + index_info.offset + size * index, size); + } + + for (unsigned int i = 0; i < VERTEX_CACHE_SIZE; ++i) { + if (vertex == vertex_cache_ids[i]) { + vs_output = vertex_cache[i]; + vertex_cache_hit = true; + break; + } + } + } + + if (!vertex_cache_hit) { + // Initialize data for the current vertex + Shader::AttributeBuffer input; + loader.LoadVertex(base_address, index, vertex, input, memory_accesses); + + // Send to vertex shader + if (g_debug_context) + g_debug_context->OnEvent(DebugContext::Event::VertexShaderInvocation, + (void*)&input); + shader_unit.LoadInput(regs.vs, input); + shader_engine->Run(g_state.vs, shader_unit); + shader_unit.WriteOutput(regs.vs, vs_output); + + if (is_indexed) { + vertex_cache[vertex_cache_pos] = vs_output; + vertex_cache_ids[vertex_cache_pos] = vertex; + vertex_cache_pos = (vertex_cache_pos + 1) % VERTEX_CACHE_SIZE; + } + } + + // Send to geometry pipeline + g_state.geometry_pipeline.SubmitVertex(vs_output); + } + + for (auto& range : memory_accesses.ranges) { + g_debug_context->recorder->MemoryAccessed(Memory::GetPhysicalPointer(range.first), + range.second, range.first); + } + + VideoCore::g_renderer->Rasterizer()->DrawTriangles(); + if (g_debug_context) { + g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); + } +} + static void WritePicaReg(u32 id, u32 value, u32 mask) { auto& regs = g_state.regs; @@ -168,95 +386,9 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { // Load default vertex input attributes case PICA_REG_INDEX_WORKAROUND(pipeline.vs_default_attributes_setup.set_value[0], 0x233): case PICA_REG_INDEX_WORKAROUND(pipeline.vs_default_attributes_setup.set_value[1], 0x234): - case PICA_REG_INDEX_WORKAROUND(pipeline.vs_default_attributes_setup.set_value[2], 0x235): { - // TODO: Does actual hardware indeed keep an intermediate buffer or does - // it directly write the values? - default_attr_write_buffer[default_attr_counter++] = value; - - // Default attributes are written in a packed format such that four float24 values are - // encoded in - // three 32-bit numbers. We write to internal memory once a full such vector is - // written. - if (default_attr_counter >= 3) { - default_attr_counter = 0; - - auto& setup = regs.pipeline.vs_default_attributes_setup; - - if (setup.index >= 16) { - LOG_ERROR(HW_GPU, "Invalid VS default attribute index %d", (int)setup.index); - break; - } - - Math::Vec4 attribute; - - // NOTE: The destination component order indeed is "backwards" - attribute.w = float24::FromRaw(default_attr_write_buffer[0] >> 8); - attribute.z = float24::FromRaw(((default_attr_write_buffer[0] & 0xFF) << 16) | - ((default_attr_write_buffer[1] >> 16) & 0xFFFF)); - attribute.y = float24::FromRaw(((default_attr_write_buffer[1] & 0xFFFF) << 8) | - ((default_attr_write_buffer[2] >> 24) & 0xFF)); - attribute.x = float24::FromRaw(default_attr_write_buffer[2] & 0xFFFFFF); - - LOG_TRACE(HW_GPU, "Set default VS attribute %x to (%f %f %f %f)", (int)setup.index, - attribute.x.ToFloat32(), attribute.y.ToFloat32(), attribute.z.ToFloat32(), - attribute.w.ToFloat32()); - - // TODO: Verify that this actually modifies the register! - if (setup.index < 15) { - g_state.input_default_attributes.attr[setup.index] = attribute; - setup.index++; - } else { - // Put each attribute into an immediate input buffer. When all specified immediate - // attributes are present, the Vertex Shader is invoked and everything is sent to - // the primitive assembler. - - auto& immediate_input = g_state.immediate.input_vertex; - auto& immediate_attribute_id = g_state.immediate.current_attribute; - - immediate_input.attr[immediate_attribute_id] = attribute; - - if (immediate_attribute_id < regs.pipeline.max_input_attrib_index) { - immediate_attribute_id += 1; - } else { - MICROPROFILE_SCOPE(GPU_Drawing); - immediate_attribute_id = 0; - - auto* shader_engine = Shader::GetEngine(); - shader_engine->SetupBatch(g_state.vs, regs.vs.main_offset); - - // Send to vertex shader - if (g_debug_context) - g_debug_context->OnEvent(DebugContext::Event::VertexShaderInvocation, - static_cast(&immediate_input)); - Shader::UnitState shader_unit; - Shader::AttributeBuffer output{}; - - shader_unit.LoadInput(regs.vs, immediate_input); - shader_engine->Run(g_state.vs, shader_unit); - shader_unit.WriteOutput(regs.vs, output); - - // Send to geometry pipeline - if (g_state.immediate.reset_geometry_pipeline) { - g_state.geometry_pipeline.Reconfigure(); - g_state.immediate.reset_geometry_pipeline = false; - } - ASSERT(!g_state.geometry_pipeline.NeedIndexInput()); - g_state.geometry_pipeline.Setup(shader_engine); - g_state.geometry_pipeline.SubmitVertex(output); - - // TODO: If drawing after every immediate mode triangle kills performance, - // change it to flush triangles whenever a drawing config register changes - // See: https://github.com/citra-emu/citra/pull/2866#issuecomment-327011550 - VideoCore::g_renderer->Rasterizer()->DrawTriangles(); - if (g_debug_context) { - g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, - nullptr); - } - } - } - } + case PICA_REG_INDEX_WORKAROUND(pipeline.vs_default_attributes_setup.set_value[2], 0x235): + LoadDefaultVertexAttributes(value); break; - } case PICA_REG_INDEX(pipeline.gpu_mode): // This register likely just enables vertex processing and doesn't need any special handling @@ -275,136 +407,9 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { // It seems like these trigger vertex rendering case PICA_REG_INDEX(pipeline.trigger_draw): - case PICA_REG_INDEX(pipeline.trigger_draw_indexed): { - MICROPROFILE_SCOPE(GPU_Drawing); - -#if PICA_LOG_TEV - DebugUtils::DumpTevStageConfig(regs.GetTevStages()); -#endif - if (g_debug_context) - g_debug_context->OnEvent(DebugContext::Event::IncomingPrimitiveBatch, nullptr); - - // Processes information about internal vertex attributes to figure out how a vertex is - // loaded. - // Later, these can be compiled and cached. - const u32 base_address = regs.pipeline.vertex_attributes.GetPhysicalBaseAddress(); - VertexLoader loader(regs.pipeline); - - // Load vertices - bool is_indexed = (id == PICA_REG_INDEX(pipeline.trigger_draw_indexed)); - - const auto& index_info = regs.pipeline.index_array; - const u8* index_address_8 = Memory::GetPhysicalPointer(base_address + index_info.offset); - const u16* index_address_16 = reinterpret_cast(index_address_8); - bool index_u16 = index_info.format != 0; - - PrimitiveAssembler& primitive_assembler = g_state.primitive_assembler; - - if (g_debug_context && g_debug_context->recorder) { - for (int i = 0; i < 3; ++i) { - const auto texture = regs.texturing.GetTextures()[i]; - if (!texture.enabled) - continue; - - u8* texture_data = Memory::GetPhysicalPointer(texture.config.GetPhysicalAddress()); - g_debug_context->recorder->MemoryAccessed( - texture_data, Pica::TexturingRegs::NibblesPerPixel(texture.format) * - texture.config.width / 2 * texture.config.height, - texture.config.GetPhysicalAddress()); - } - } - - DebugUtils::MemoryAccessTracker memory_accesses; - - // Simple circular-replacement vertex cache - // The size has been tuned for optimal balance between hit-rate and the cost of lookup - const size_t VERTEX_CACHE_SIZE = 32; - std::array vertex_cache_ids; - std::array vertex_cache; - Shader::AttributeBuffer vs_output; - - unsigned int vertex_cache_pos = 0; - vertex_cache_ids.fill(-1); - - auto* shader_engine = Shader::GetEngine(); - Shader::UnitState shader_unit; - - shader_engine->SetupBatch(g_state.vs, regs.vs.main_offset); - - g_state.geometry_pipeline.Reconfigure(); - g_state.geometry_pipeline.Setup(shader_engine); - if (g_state.geometry_pipeline.NeedIndexInput()) - ASSERT(is_indexed); - - for (unsigned int index = 0; index < regs.pipeline.num_vertices; ++index) { - // Indexed rendering doesn't use the start offset - unsigned int vertex = - is_indexed ? (index_u16 ? index_address_16[index] : index_address_8[index]) - : (index + regs.pipeline.vertex_offset); - - // -1 is a common special value used for primitive restart. Since it's unknown if - // the PICA supports it, and it would mess up the caching, guard against it here. - ASSERT(vertex != -1); - - bool vertex_cache_hit = false; - - if (is_indexed) { - if (g_state.geometry_pipeline.NeedIndexInput()) { - g_state.geometry_pipeline.SubmitIndex(vertex); - continue; - } - - if (g_debug_context && Pica::g_debug_context->recorder) { - int size = index_u16 ? 2 : 1; - memory_accesses.AddAccess(base_address + index_info.offset + size * index, - size); - } - - for (unsigned int i = 0; i < VERTEX_CACHE_SIZE; ++i) { - if (vertex == vertex_cache_ids[i]) { - vs_output = vertex_cache[i]; - vertex_cache_hit = true; - break; - } - } - } - - if (!vertex_cache_hit) { - // Initialize data for the current vertex - Shader::AttributeBuffer input; - loader.LoadVertex(base_address, index, vertex, input, memory_accesses); - - // Send to vertex shader - if (g_debug_context) - g_debug_context->OnEvent(DebugContext::Event::VertexShaderInvocation, - (void*)&input); - shader_unit.LoadInput(regs.vs, input); - shader_engine->Run(g_state.vs, shader_unit); - shader_unit.WriteOutput(regs.vs, vs_output); - - if (is_indexed) { - vertex_cache[vertex_cache_pos] = vs_output; - vertex_cache_ids[vertex_cache_pos] = vertex; - vertex_cache_pos = (vertex_cache_pos + 1) % VERTEX_CACHE_SIZE; - } - } - - // Send to geometry pipeline - g_state.geometry_pipeline.SubmitVertex(vs_output); - } - - for (auto& range : memory_accesses.ranges) { - g_debug_context->recorder->MemoryAccessed(Memory::GetPhysicalPointer(range.first), - range.second, range.first); - } - - VideoCore::g_renderer->Rasterizer()->DrawTriangles(); - if (g_debug_context) { - g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); - } - + case PICA_REG_INDEX(pipeline.trigger_draw_indexed): + Draw(id); break; - } case PICA_REG_INDEX(gs.bool_uniforms): WriteUniformBoolReg(g_state.gs, g_state.regs.gs.bool_uniforms.Value()); From 7772fc07314d568939b0e9c12e4ead47e35d3c86 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 4 Oct 2017 11:33:32 -0500 Subject: [PATCH 187/195] Memory: Remove all GetPointer usages from the GDB stub. --- src/core/gdbstub/gdbstub.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/core/gdbstub/gdbstub.cpp b/src/core/gdbstub/gdbstub.cpp index be2b2e25f3..d6be16ef66 100644 --- a/src/core/gdbstub/gdbstub.cpp +++ b/src/core/gdbstub/gdbstub.cpp @@ -644,7 +644,7 @@ static void ReadMemory() { auto start_offset = command_buffer + 1; auto addr_pos = std::find(start_offset, command_buffer + command_length, ','); - PAddr addr = HexToInt(start_offset, static_cast(addr_pos - start_offset)); + VAddr addr = HexToInt(start_offset, static_cast(addr_pos - start_offset)); start_offset = addr_pos + 1; u32 len = @@ -656,12 +656,14 @@ static void ReadMemory() { SendReply("E01"); } - const u8* data = Memory::GetPointer(addr); - if (!data) { + if (!Memory::IsValidVirtualAddress(addr)) { return SendReply("E00"); } - MemToGdbHex(reply, data, len); + std::vector data(len); + Memory::ReadBlock(addr, data.data(), len); + + MemToGdbHex(reply, data.data(), len); reply[len * 2] = '\0'; SendReply(reinterpret_cast(reply)); } @@ -670,18 +672,20 @@ static void ReadMemory() { static void WriteMemory() { auto start_offset = command_buffer + 1; auto addr_pos = std::find(start_offset, command_buffer + command_length, ','); - PAddr addr = HexToInt(start_offset, static_cast(addr_pos - start_offset)); + VAddr addr = HexToInt(start_offset, static_cast(addr_pos - start_offset)); start_offset = addr_pos + 1; auto len_pos = std::find(start_offset, command_buffer + command_length, ':'); u32 len = HexToInt(start_offset, static_cast(len_pos - start_offset)); - u8* dst = Memory::GetPointer(addr); - if (!dst) { + if (!Memory::IsValidVirtualAddress(addr)) { return SendReply("E00"); } - GdbHexToMem(dst, len_pos + 1, len); + std::vector data(len); + + GdbHexToMem(data.data(), len_pos + 1, len); + Memory::WriteBlock(addr, data.data(), len); SendReply("OK"); } From b863d6c86043226c8c88749c4e0eecaf9865c569 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 4 Oct 2017 11:40:40 -0500 Subject: [PATCH 188/195] SVC: Replace GetPointer usage with Read32 in WaitSynchronizationN. --- src/core/hle/function_wrappers.h | 8 ++++---- src/core/hle/svc.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/hle/function_wrappers.h b/src/core/hle/function_wrappers.h index 5e6002f4ee..17892d81cd 100644 --- a/src/core/hle/function_wrappers.h +++ b/src/core/hle/function_wrappers.h @@ -58,12 +58,12 @@ void Wrap() { FuncReturn(retval); } -template +template void Wrap() { s32 param_1 = 0; - s32 retval = func(¶m_1, (Kernel::Handle*)Memory::GetPointer(PARAM(1)), (s32)PARAM(2), - (PARAM(3) != 0), (((s64)PARAM(4) << 32) | PARAM(0))) - .raw; + s32 retval = + func(¶m_1, PARAM(1), (s32)PARAM(2), (PARAM(3) != 0), (((s64)PARAM(4) << 32) | PARAM(0))) + .raw; Core::CPU().SetReg(1, (u32)param_1); FuncReturn(retval); diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 6be5db13ff..9edce7ab7f 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -303,12 +303,11 @@ static ResultCode WaitSynchronization1(Kernel::Handle handle, s64 nano_seconds) } /// Wait for the given handles to synchronize, timeout after the specified nanoseconds -static ResultCode WaitSynchronizationN(s32* out, Kernel::Handle* handles, s32 handle_count, +static ResultCode WaitSynchronizationN(s32* out, VAddr handles_address, s32 handle_count, bool wait_all, s64 nano_seconds) { Kernel::Thread* thread = Kernel::GetCurrentThread(); - // Check if 'handles' is invalid - if (handles == nullptr) + if (!Memory::IsValidVirtualAddress(handles_address)) return Kernel::ERR_INVALID_POINTER; // NOTE: on real hardware, there is no nullptr check for 'out' (tested with firmware 4.4). If @@ -323,7 +322,8 @@ static ResultCode WaitSynchronizationN(s32* out, Kernel::Handle* handles, s32 ha std::vector objects(handle_count); for (int i = 0; i < handle_count; ++i) { - auto object = Kernel::g_handle_table.Get(handles[i]); + Kernel::Handle handle = Memory::Read32(handles_address + i * sizeof(Kernel::Handle)); + auto object = Kernel::g_handle_table.Get(handle); if (object == nullptr) return ERR_INVALID_HANDLE; objects[i] = object; From 0cfb231e002629172337c048e8cabc8c653e34e3 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 4 Oct 2017 11:49:29 -0500 Subject: [PATCH 189/195] SVC: Replace GetPointer usage with Read32 in ReplyAndReceive. --- src/core/hle/function_wrappers.h | 5 ++--- src/core/hle/svc.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/core/hle/function_wrappers.h b/src/core/hle/function_wrappers.h index 17892d81cd..cd500e83da 100644 --- a/src/core/hle/function_wrappers.h +++ b/src/core/hle/function_wrappers.h @@ -69,11 +69,10 @@ void Wrap() { FuncReturn(retval); } -template +template void Wrap() { s32 param_1 = 0; - u32 retval = - func(¶m_1, (Kernel::Handle*)Memory::GetPointer(PARAM(1)), (s32)PARAM(2), PARAM(3)).raw; + u32 retval = func(¶m_1, PARAM(1), (s32)PARAM(2), PARAM(3)).raw; Core::CPU().SetReg(1, (u32)param_1); FuncReturn(retval); diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 9edce7ab7f..61360bedeb 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -452,10 +452,9 @@ static ResultCode WaitSynchronizationN(s32* out, VAddr handles_address, s32 hand } /// In a single operation, sends a IPC reply and waits for a new request. -static ResultCode ReplyAndReceive(s32* index, Kernel::Handle* handles, s32 handle_count, +static ResultCode ReplyAndReceive(s32* index, VAddr handles_address, s32 handle_count, Kernel::Handle reply_target) { - // 'handles' has to be a valid pointer even if 'handle_count' is 0. - if (handles == nullptr) + if (!Memory::IsValidVirtualAddress(handles_address)) return Kernel::ERR_INVALID_POINTER; // Check if 'handle_count' is invalid @@ -466,7 +465,8 @@ static ResultCode ReplyAndReceive(s32* index, Kernel::Handle* handles, s32 handl std::vector objects(handle_count); for (int i = 0; i < handle_count; ++i) { - auto object = Kernel::g_handle_table.Get(handles[i]); + Kernel::Handle handle = Memory::Read32(handles_address + i * sizeof(Kernel::Handle)); + auto object = Kernel::g_handle_table.Get(handle); if (object == nullptr) return ERR_INVALID_HANDLE; objects[i] = object; From 3c0113632dc4fb4e55b5dad9278a5b766dcaec14 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 4 Oct 2017 11:52:39 -0500 Subject: [PATCH 190/195] SVC: Replace GetPointer usage with ReadBlock in OutputDebugString. --- src/core/hle/function_wrappers.h | 4 ++-- src/core/hle/svc.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/hle/function_wrappers.h b/src/core/hle/function_wrappers.h index cd500e83da..cb0b430ee9 100644 --- a/src/core/hle/function_wrappers.h +++ b/src/core/hle/function_wrappers.h @@ -267,9 +267,9 @@ void Wrap() { func(((s64)PARAM(1) << 32) | PARAM(0)); } -template +template void Wrap() { - func((char*)Memory::GetPointer(PARAM(0)), PARAM(1)); + func(PARAM(0), PARAM(1)); } template diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 61360bedeb..37eeeb860b 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -619,8 +619,10 @@ static void Break(u8 break_reason) { } /// Used to output a message on a debug hardware unit - does nothing on a retail unit -static void OutputDebugString(const char* string, int len) { - LOG_DEBUG(Debug_Emulated, "%.*s", len, string); +static void OutputDebugString(VAddr address, int len) { + std::vector string(len); + Memory::ReadBlock(address, string.data(), len); + LOG_DEBUG(Debug_Emulated, "%.*s", len, string.data()); } /// Get resource limit From 7b09b30ef11d1d4001a50bbb91abdfb86b954ce2 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 4 Oct 2017 12:05:13 -0500 Subject: [PATCH 191/195] SVC: Replace GetPointer usage with ReadCString in ConnectToPort. --- src/core/hle/function_wrappers.h | 15 --------------- src/core/hle/svc.cpp | 14 +++++++++----- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/core/hle/function_wrappers.h b/src/core/hle/function_wrappers.h index cb0b430ee9..a982b2b545 100644 --- a/src/core/hle/function_wrappers.h +++ b/src/core/hle/function_wrappers.h @@ -151,21 +151,6 @@ void Wrap() { FuncReturn(func(PARAM(0)).raw); } -template -void Wrap() { - FuncReturn(func((s64*)Memory::GetPointer(PARAM(0)), PARAM(1), - (u32*)Memory::GetPointer(PARAM(2)), (s32)PARAM(3)) - .raw); -} - -template -void Wrap() { - u32 param_1 = 0; - u32 retval = func(¶m_1, (char*)Memory::GetPointer(PARAM(1))).raw; - Core::CPU().SetReg(1, param_1); - FuncReturn(retval); -} - template void Wrap() { u32 param_1 = 0; diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 37eeeb860b..2ae177ab56 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -201,17 +201,21 @@ static ResultCode UnmapMemoryBlock(Kernel::Handle handle, u32 addr) { } /// Connect to an OS service given the port name, returns the handle to the port to out -static ResultCode ConnectToPort(Kernel::Handle* out_handle, const char* port_name) { - if (port_name == nullptr) +static ResultCode ConnectToPort(Kernel::Handle* out_handle, VAddr port_name_address) { + if (!Memory::IsValidVirtualAddress(port_name_address)) return Kernel::ERR_NOT_FOUND; - if (std::strlen(port_name) > 11) + + static constexpr std::size_t PortNameMaxLength = 11; + // Read 1 char beyond the max allowed port name to detect names that are too long. + std::string port_name = Memory::ReadCString(port_name_address, PortNameMaxLength + 1); + if (port_name.size() > PortNameMaxLength) return Kernel::ERR_PORT_NAME_TOO_LONG; - LOG_TRACE(Kernel_SVC, "called port_name=%s", port_name); + LOG_TRACE(Kernel_SVC, "called port_name=%s", port_name.c_str()); auto it = Service::g_kernel_named_ports.find(port_name); if (it == Service::g_kernel_named_ports.end()) { - LOG_WARNING(Kernel_SVC, "tried to connect to unknown port: %s", port_name); + LOG_WARNING(Kernel_SVC, "tried to connect to unknown port: %s", port_name.c_str()); return Kernel::ERR_NOT_FOUND; } From 46fc7595b4f5f161ecd5ae21259c661c15ca46f3 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 4 Oct 2017 12:11:55 -0500 Subject: [PATCH 192/195] SVC: Remove GetPointer usage in CreatePort. --- src/core/hle/function_wrappers.h | 6 ++---- src/core/hle/svc.cpp | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/core/hle/function_wrappers.h b/src/core/hle/function_wrappers.h index a982b2b545..f93439f21f 100644 --- a/src/core/hle/function_wrappers.h +++ b/src/core/hle/function_wrappers.h @@ -206,13 +206,11 @@ void Wrap() { FuncReturn(func(PARAM(0), PARAM(1)).raw); } -template +template void Wrap() { Kernel::Handle param_1 = 0; Kernel::Handle param_2 = 0; - u32 retval = func(¶m_1, ¶m_2, - reinterpret_cast(Memory::GetPointer(PARAM(2))), PARAM(3)) - .raw; + u32 retval = func(¶m_1, ¶m_2, PARAM(2), PARAM(3)).raw; Core::CPU().SetReg(1, param_1); Core::CPU().SetReg(2, param_2); FuncReturn(retval); diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 2ae177ab56..b72ca3581c 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -1104,9 +1104,9 @@ static ResultCode CreateMemoryBlock(Kernel::Handle* out_handle, u32 addr, u32 si } static ResultCode CreatePort(Kernel::Handle* server_port, Kernel::Handle* client_port, - const char* name, u32 max_sessions) { + VAddr name_address, u32 max_sessions) { // TODO(Subv): Implement named ports. - ASSERT_MSG(name == nullptr, "Named ports are currently unimplemented"); + ASSERT_MSG(name_address == 0, "Named ports are currently unimplemented"); using Kernel::ServerPort; using Kernel::ClientPort; From 97f262c1f5c39e51d6fe2e32429610599299db60 Mon Sep 17 00:00:00 2001 From: Subv Date: Wed, 4 Oct 2017 12:23:08 -0500 Subject: [PATCH 193/195] SVC: Removed GetPointer usage in the GetResourceLimit functions. --- src/core/hle/svc.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index b72ca3581c..e8ca419d5e 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -644,9 +644,9 @@ static ResultCode GetResourceLimit(Kernel::Handle* resource_limit, Kernel::Handl } /// Get resource limit current values -static ResultCode GetResourceLimitCurrentValues(s64* values, Kernel::Handle resource_limit_handle, - u32* names, u32 name_count) { - LOG_TRACE(Kernel_SVC, "called resource_limit=%08X, names=%p, name_count=%d", +static ResultCode GetResourceLimitCurrentValues(VAddr values, Kernel::Handle resource_limit_handle, + VAddr names, u32 name_count) { + LOG_TRACE(Kernel_SVC, "called resource_limit=%08X, names=%08X, name_count=%d", resource_limit_handle, names, name_count); SharedPtr resource_limit = @@ -654,16 +654,19 @@ static ResultCode GetResourceLimitCurrentValues(s64* values, Kernel::Handle reso if (resource_limit == nullptr) return ERR_INVALID_HANDLE; - for (unsigned int i = 0; i < name_count; ++i) - values[i] = resource_limit->GetCurrentResourceValue(names[i]); + for (unsigned int i = 0; i < name_count; ++i) { + u32 name = Memory::Read32(names + i * sizeof(u32)); + s64 value = resource_limit->GetCurrentResourceValue(name); + Memory::Write64(values + i * sizeof(u64), value); + } return RESULT_SUCCESS; } /// Get resource limit max values -static ResultCode GetResourceLimitLimitValues(s64* values, Kernel::Handle resource_limit_handle, - u32* names, u32 name_count) { - LOG_TRACE(Kernel_SVC, "called resource_limit=%08X, names=%p, name_count=%d", +static ResultCode GetResourceLimitLimitValues(VAddr values, Kernel::Handle resource_limit_handle, + VAddr names, u32 name_count) { + LOG_TRACE(Kernel_SVC, "called resource_limit=%08X, names=%08X, name_count=%d", resource_limit_handle, names, name_count); SharedPtr resource_limit = @@ -671,8 +674,11 @@ static ResultCode GetResourceLimitLimitValues(s64* values, Kernel::Handle resour if (resource_limit == nullptr) return ERR_INVALID_HANDLE; - for (unsigned int i = 0; i < name_count; ++i) - values[i] = resource_limit->GetMaxResourceValue(names[i]); + for (unsigned int i = 0; i < name_count; ++i) { + u32 name = Memory::Read32(names + i * sizeof(u32)); + s64 value = resource_limit->GetMaxResourceValue(names); + Memory::Write64(values + i * sizeof(u64), value); + } return RESULT_SUCCESS; } From 15a2388a33b1306dcaf16b62432c7a13b40ca2a3 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Fri, 6 Oct 2017 20:58:48 +0100 Subject: [PATCH 194/195] travis: Split build scripts for different platforms This commit also separates clang-format from the linux build, closing #2702. --- .travis-build.sh | 59 -------- .travis-deps.sh | 12 -- .travis-upload.sh | 139 ------------------ .travis.yml | 34 +++-- .travis/clang-format/script.sh | 37 +++++ .travis/common/post-upload.sh | 22 +++ .travis/common/pre-upload.sh | 6 + .travis/linux/build.sh | 3 + .travis/linux/deps.sh | 3 + .../linux/docker.sh | 5 +- .travis/linux/upload.sh | 14 ++ .travis/macos/build.sh | 12 ++ .travis/macos/deps.sh | 4 + .travis/macos/upload.sh | 110 ++++++++++++++ 14 files changed, 233 insertions(+), 227 deletions(-) delete mode 100755 .travis-build.sh delete mode 100755 .travis-deps.sh delete mode 100755 .travis-upload.sh create mode 100755 .travis/clang-format/script.sh create mode 100755 .travis/common/post-upload.sh create mode 100755 .travis/common/pre-upload.sh create mode 100755 .travis/linux/build.sh create mode 100755 .travis/linux/deps.sh rename .travis-build-docker.sh => .travis/linux/docker.sh (94%) mode change 100644 => 100755 create mode 100755 .travis/linux/upload.sh create mode 100755 .travis/macos/build.sh create mode 100755 .travis/macos/deps.sh create mode 100755 .travis/macos/upload.sh diff --git a/.travis-build.sh b/.travis-build.sh deleted file mode 100755 index fc5a5f8b2a..0000000000 --- a/.travis-build.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -set -e -set -x - -if grep -nr '\s$' src *.yml *.txt *.md Doxyfile .gitignore .gitmodules .travis* dist/*.desktop \ - dist/*.svg dist/*.xml; then - echo Trailing whitespace found, aborting - exit 1 -fi - -# Only run clang-format on Linux because we don't have 4.0 on OS X images -if [ "$TRAVIS_OS_NAME" = "linux" ]; then - # Default clang-format points to default 3.5 version one - CLANG_FORMAT=clang-format-3.9 - $CLANG_FORMAT --version - - if [ "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then - # Get list of every file modified in this pull request - files_to_lint="$(git diff --name-only --diff-filter=ACMRTUXB $TRAVIS_COMMIT_RANGE | grep '^src/[^.]*[.]\(cpp\|h\)$' || true)" - else - # Check everything for branch pushes - files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')" - fi - - # Turn off tracing for this because it's too verbose - set +x - - for f in $files_to_lint; do - d=$(diff -u "$f" <($CLANG_FORMAT "$f") || true) - if ! [ -z "$d" ]; then - echo "!!! $f not compliant to coding style, here is the fix:" - echo "$d" - fail=1 - fi - done - - set -x - - if [ "$fail" = 1 ]; then - exit 1 - fi -fi - -#if OS is linux or is not set -if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then - docker run -v $(pwd):/citra ubuntu:16.04 /bin/bash /citra/.travis-build-docker.sh -elif [ "$TRAVIS_OS_NAME" = "osx" ]; then - set -o pipefail - - export MACOSX_DEPLOYMENT_TARGET=10.9 - export Qt5_DIR=$(brew --prefix)/opt/qt5 - - mkdir build && cd build - cmake .. -DUSE_SYSTEM_CURL=ON -DCMAKE_OSX_ARCHITECTURES="x86_64;x86_64h" -DCMAKE_BUILD_TYPE=Release - make -j4 - - ctest -VV -C Release -fi diff --git a/.travis-deps.sh b/.travis-deps.sh deleted file mode 100755 index 0cee68041b..0000000000 --- a/.travis-deps.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -set -e -set -x - -#if OS is linux or is not set -if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then - docker pull ubuntu:16.04 -elif [ "$TRAVIS_OS_NAME" = "osx" ]; then - brew update - brew install qt5 sdl2 dylibbundler p7zip -fi diff --git a/.travis-upload.sh b/.travis-upload.sh deleted file mode 100755 index edf195f7d5..0000000000 --- a/.travis-upload.sh +++ /dev/null @@ -1,139 +0,0 @@ -GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`" -GITREV="`git show -s --format='%h'`" -mkdir -p artifacts - -if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then - REV_NAME="citra-linux-${GITDATE}-${GITREV}" - ARCHIVE_NAME="${REV_NAME}.tar.xz" - COMPRESSION_FLAGS="-cJvf" - mkdir "$REV_NAME" - - cp build/src/citra/citra "$REV_NAME" - cp build/src/citra_qt/citra-qt "$REV_NAME" -elif [ "$TRAVIS_OS_NAME" = "osx" ]; then - REV_NAME="citra-osx-${GITDATE}-${GITREV}" - ARCHIVE_NAME="${REV_NAME}.tar.gz" - COMPRESSION_FLAGS="-czvf" - mkdir "$REV_NAME" - - cp build/src/citra/citra "$REV_NAME" - cp -r build/src/citra_qt/citra-qt.app "$REV_NAME" - - # move qt libs into app bundle for deployment - $(brew --prefix)/opt/qt5/bin/macdeployqt "${REV_NAME}/citra-qt.app" - - # move SDL2 libs into folder for deployment - dylibbundler -b -x "${REV_NAME}/citra" -cd -d "${REV_NAME}/libs" -p "@executable_path/libs/" - - # Make the changes to make the citra-qt app standalone (i.e. not dependent on the current brew installation). - # To do this, the absolute references to each and every QT framework must be re-written to point to the local frameworks - # (in the Contents/Frameworks folder). - # The "install_name_tool" is used to do so. - - # Coreutils is a hack to coerce Homebrew to point to the absolute Cellar path (symlink dereferenced). i.e: - # ls -l /usr/local/opt/qt5:: /usr/local/opt/qt5 -> ../Cellar/qt5/5.6.1-1 - # grealpath ../Cellar/qt5/5.6.1-1:: /usr/local/Cellar/qt5/5.6.1-1 - brew install coreutils - - REV_NAME_ALT=$REV_NAME/ - # grealpath is located in coreutils, there is no "realpath" for OS X :( - QT_BREWS_PATH=$(grealpath "$(brew --prefix qt5)") - BREW_PATH=$(brew --prefix) - QT_VERSION_NUM=5 - - $BREW_PATH/opt/qt5/bin/macdeployqt "${REV_NAME_ALT}citra-qt.app" \ - -executable="${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt" - - # These are the files that macdeployqt packed into Contents/Frameworks/ - we don't want those, so we replace them. - declare -a macos_libs=("QtCore" "QtWidgets" "QtGui" "QtOpenGL" "QtPrintSupport") - - for macos_lib in "${macos_libs[@]}" - do - SC_FRAMEWORK_PART=$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib - # Replace macdeployqt versions of the Frameworks with our own (from /usr/local/opt/qt5/lib/) - cp "$BREW_PATH/opt/qt5/lib/$SC_FRAMEWORK_PART" "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" - - # Replace references within the embedded Framework files with "internal" versions. - for macos_lib2 in "${macos_libs[@]}" - do - # Since brew references both the non-symlinked and symlink paths of QT5, it needs to be duplicated. - # /usr/local/Cellar/qt5/5.6.1-1/lib and /usr/local/opt/qt5/lib both resolve to the same files. - # So the two lines below are effectively duplicates when resolved as a path, but as strings, they aren't. - RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 - install_name_tool -change \ - $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" - install_name_tool -change \ - "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" - done - done - - # Handles `This application failed to start because it could not find or load the Qt platform plugin "cocoa"` - # Which manifests itself as: - # "Exception Type: EXC_CRASH (SIGABRT) | Exception Codes: 0x0000000000000000, 0x0000000000000000 | Exception Note: EXC_CORPSE_NOTIFY" - # There may be more dylibs needed to be fixed... - declare -a macos_plugins=("Plugins/platforms/libqcocoa.dylib") - - for macos_lib in "${macos_plugins[@]}" - do - install_name_tool -id @executable_path/../$macos_lib "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" - for macos_lib2 in "${macos_libs[@]}" - do - RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 - install_name_tool -change \ - $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" - install_name_tool -change \ - "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ - @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ - "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" - done - done - - for macos_lib in "${macos_libs[@]}" - do - # Debugging info for Travis-CI - otool -L "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib" - done - - # Make the citra-qt.app application launch a debugging terminal. - # Store away the actual binary - mv ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt-bin - - cat > ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt < ../Cellar/qt5/5.6.1-1 +# grealpath ../Cellar/qt5/5.6.1-1:: /usr/local/Cellar/qt5/5.6.1-1 +brew install coreutils || brew upgrade coreutils || true + +REV_NAME_ALT=$REV_NAME/ +# grealpath is located in coreutils, there is no "realpath" for OS X :( +QT_BREWS_PATH=$(grealpath "$(brew --prefix qt5)") +BREW_PATH=$(brew --prefix) +QT_VERSION_NUM=5 + +$BREW_PATH/opt/qt5/bin/macdeployqt "${REV_NAME_ALT}citra-qt.app" \ + -executable="${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt" + +# These are the files that macdeployqt packed into Contents/Frameworks/ - we don't want those, so we replace them. +declare -a macos_libs=("QtCore" "QtWidgets" "QtGui" "QtOpenGL" "QtPrintSupport") + +for macos_lib in "${macos_libs[@]}" +do + SC_FRAMEWORK_PART=$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib + # Replace macdeployqt versions of the Frameworks with our own (from /usr/local/opt/qt5/lib/) + cp "$BREW_PATH/opt/qt5/lib/$SC_FRAMEWORK_PART" "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" + + # Replace references within the embedded Framework files with "internal" versions. + for macos_lib2 in "${macos_libs[@]}" + do + # Since brew references both the non-symlinked and symlink paths of QT5, it needs to be duplicated. + # /usr/local/Cellar/qt5/5.6.1-1/lib and /usr/local/opt/qt5/lib both resolve to the same files. + # So the two lines below are effectively duplicates when resolved as a path, but as strings, they aren't. + RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 + install_name_tool -change \ + $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" + install_name_tool -change \ + "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$SC_FRAMEWORK_PART" + done +done + +# Handles `This application failed to start because it could not find or load the Qt platform plugin "cocoa"` +# Which manifests itself as: +# "Exception Type: EXC_CRASH (SIGABRT) | Exception Codes: 0x0000000000000000, 0x0000000000000000 | Exception Note: EXC_CORPSE_NOTIFY" +# There may be more dylibs needed to be fixed... +declare -a macos_plugins=("Plugins/platforms/libqcocoa.dylib") + +for macos_lib in "${macos_plugins[@]}" +do + install_name_tool -id @executable_path/../$macos_lib "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" + for macos_lib2 in "${macos_libs[@]}" + do + RM_FRAMEWORK_PART=$macos_lib2.framework/Versions/$QT_VERSION_NUM/$macos_lib2 + install_name_tool -change \ + $QT_BREWS_PATH/lib/$RM_FRAMEWORK_PART \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" + install_name_tool -change \ + "$BREW_PATH/opt/qt5/lib/$RM_FRAMEWORK_PART" \ + @executable_path/../Frameworks/$RM_FRAMEWORK_PART \ + "${REV_NAME_ALT}citra-qt.app/Contents/$macos_lib" + done +done + +for macos_lib in "${macos_libs[@]}" +do + # Debugging info for Travis-CI + otool -L "${REV_NAME_ALT}citra-qt.app/Contents/Frameworks/$macos_lib.framework/Versions/$QT_VERSION_NUM/$macos_lib" +done + +# Make the citra-qt.app application launch a debugging terminal. +# Store away the actual binary +mv ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt-bin + +cat > ${REV_NAME_ALT}citra-qt.app/Contents/MacOS/citra-qt < Date: Mon, 9 Oct 2017 09:10:48 +0800 Subject: [PATCH 195/195] Change command header in nwm::UDS Initialize function --- src/core/hle/service/nwm/nwm_uds.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp index 0aa63cc1e1..87a6b0ecaa 100644 --- a/src/core/hle/service/nwm/nwm_uds.cpp +++ b/src/core/hle/service/nwm/nwm_uds.cpp @@ -975,7 +975,7 @@ void OnClientConnected(u16 network_node_id) { } const Interface::FunctionInfo FunctionTable[] = { - {0x00010442, nullptr, "Initialize (deprecated)"}, + {0x000102C2, nullptr, "Initialize (deprecated)"}, {0x00020000, nullptr, "Scrap"}, {0x00030000, Shutdown, "Shutdown"}, {0x00040402, nullptr, "CreateNetwork (deprecated)"},