//matrices
// ---- Created with 3Dmigoto v0.6.164 on Thu Aug  7 09:21:12 2025

cbuffer _Globals : register(b0)
{
  row_major float4x4 m001_ViewProjMat : packoffset(c0);
  float4 d002_CameraNearAndFarAndNearRelAndFarInv : packoffset(c5);
  float4 d004_CamWorldMatRight : packoffset(c6);
  float4 d005_CamWorldMatUp : packoffset(c7);
  float3 d006_CamWorldDir : packoffset(c8);
  float3 d105_Camera2WorldPosition : packoffset(c9);
  float4 D250_BBRotAnim : packoffset(c29);
  float t000_Timer : packoffset(c30);
  float4 ucp0_ClipPlane : packoffset(c31);
  row_major float3x4 m000_WorldMat : packoffset(c49);
  float4 d007_PosDecompressionScaleAndOffset : packoffset(c56);
}



// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  uint4 v0 : POSITION0,
  uint4 v1 : TANGENT0,
  float3 v2 : BLENDWEIGHT0,
  float4 v3 : TEXCOORD0,
  out float4 o0 : SV_Position0,
  out float4 o1 : TEXCOORD0,
  out float4 o2 : TEXCOORD1,
  out float4 o3 : SV_ClipDistance0)
{
  float4 r0,r1,r2,r3;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xyz = d005_CamWorldMatUp.yzx * d004_CamWorldMatRight.zxy;
  r0.xyz = d004_CamWorldMatRight.yzx * d005_CamWorldMatUp.zxy + -r0.xyz;
  r1.x = m000_WorldMat._m00;
  r1.y = m000_WorldMat._m10;
  r1.z = m000_WorldMat._m20;
  r0.w = dot(r1.xyz, r1.xyz);
  r0.w = sqrt(r0.w);
  r0.w = v2.x * r0.w;
  r1.xy = (uint2)v1.xy;
  r1.w = cmp(r1.y >= 128);
  r1.w = r1.w ? -128 : -0;
  r1.z = r1.y + r1.w;
  r1.yw = d007_PosDecompressionScaleAndOffset.ww * float2(1,256);
  r2.z = dot(r1.xz, r1.yw);
  r3.xyzw = (uint4)v0.xyzw;
  r2.x = dot(r3.xy, r1.yw);
  r2.y = dot(r3.zw, r1.yw);
  r1.xyzw = d007_PosDecompressionScaleAndOffset.xyzx + r2.xyzx;
  r2.xyzw = t000_Timer * D250_BBRotAnim.zzzw + r1.xyzw;
  r2.xyzw = sin(r2.xyzw);
  r1.x = dot(r2.ww, D250_BBRotAnim.yy);
  r1.x = D250_BBRotAnim.y + -r1.x;
  r1.x = v2.y + r1.x;
  r2.w = cos(r1.x);
  r2.w = r2.w * r0.w;
  r3.xyz = d005_CamWorldMatUp.xyz * r2.www;
  r2.w = sin(-r1.x);
  r1.x = r1.x + r1.x;
  r1.x = sin(r1.x);
  r2.w = r2.w * r0.w;
  r0.w = 0.25 * r0.w;
  r3.xyz = r2.www * d004_CamWorldMatRight.xyz + r3.xyz;
  r2.w = cos(r1.w);
  r0.w = r2.w * r0.w;
  r0.w = r0.w * r1.x;
  r0.xyz = r0.www * r0.xyz + r3.xyz;
  r0.w = dot(r2.xx, D250_BBRotAnim.xx);
  r0.w = D250_BBRotAnim.x + -r0.w;
  r3.x = r1.w + r0.w;
  r0.w = dot(r2.yy, D250_BBRotAnim.xx);
  r1.x = dot(r2.zz, D250_BBRotAnim.xx);
  r1.x = D250_BBRotAnim.x + -r1.x;
  r3.z = r1.z + r1.x;
  r0.w = D250_BBRotAnim.x + -r0.w;
  r3.y = r1.y + r0.w;
  r3.w = 1;
  r1.x = dot(m000_WorldMat._m00_m01_m02_m03, r3.xyzw);
  r1.y = dot(m000_WorldMat._m10_m11_m12_m13, r3.xyzw);
  r1.z = dot(m000_WorldMat._m20_m21_m22_m23, r3.xyzw);
  r0.xyz = r1.xyz + r0.xyz;
  r0.w = 1;
  r1.x = dot(m001_ViewProjMat._m00_m01_m02_m03, r0.xyzw);
  r1.y = dot(m001_ViewProjMat._m10_m11_m12_m13, r0.xyzw);
  r1.z = dot(m001_ViewProjMat._m20_m21_m22_m23, r0.xyzw);
  r1.w = dot(m001_ViewProjMat._m30_m31_m32_m33, r0.xyzw);
  o2.xyz = r0.xyz;
  o0.xyzw = r1.xyzw;
  o3.xyzw = dot(r1.xyzw, ucp0_ClipPlane.xyzw);
  o2.w = d002_CameraNearAndFarAndNearRelAndFarInv.w * r1.w;
  o1.xy = v3.xy;
  o1.zw = float2(0,0);
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.164 on Thu Aug  7 09:21:12 2025
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   row_major float4x4 m001_ViewProjMat;// Offset:    0 Size:    64
//   float4 d002_CameraNearAndFarAndNearRelAndFarInv;// Offset:   80 Size:    16
//   float4 d004_CamWorldMatRight;      // Offset:   96 Size:    16
//   float4 d005_CamWorldMatUp;         // Offset:  112 Size:    16
//   float3 d006_CamWorldDir;           // Offset:  128 Size:    12 [unused]
//   float3 d105_Camera2WorldPosition;  // Offset:  144 Size:    12 [unused]
//   float4 D250_BBRotAnim;             // Offset:  464 Size:    16
//   float t000_Timer;                  // Offset:  480 Size:     4
//   float4 ucp0_ClipPlane;             // Offset:  496 Size:    16
//   row_major float3x4 m000_WorldMat;  // Offset:  784 Size:    48
//   float4 d007_PosDecompressionScaleAndOffset;// Offset:  896 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyzw        0     NONE    uint   xyzw
// TANGENT                  0   xyzw        1     NONE    uint   xy
// BLENDWEIGHT              0   xyz         2     NONE   float   xy
// TEXCOORD                 0   xyzw        3     NONE   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 1   xyzw        2     NONE   float   xyzw
// SV_ClipDistance          0   xyzw        3  CLIPDST   float   xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[57], immediateIndexed
dcl_input v0.xyzw
dcl_input v1.xy
dcl_input v2.xy
dcl_input v3.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output_siv o3.xyzw, clip_distance
dcl_temps 4
mul r0.xyz, cb0[6].zxyz, cb0[7].yzxy
mad r0.xyz, cb0[6].yzxy, cb0[7].zxyz, -r0.xyzx
mov r1.x, cb0[49].x
mov r1.y, cb0[50].x
mov r1.z, cb0[51].x
dp3 r0.w, r1.xyzx, r1.xyzx
sqrt r0.w, r0.w
mul r0.w, r0.w, v2.x
utof r1.xy, v1.xyxx
ge r1.w, r1.y, l(128.000000)
movc r1.w, r1.w, l(-128.000000), l(-0.000000)
add r1.z, r1.w, r1.y
mul r1.yw, l(0.000000, 1.000000, 0.000000, 256.000000), cb0[56].wwww
dp2 r2.z, r1.xzxx, r1.ywyy
utof r3.xyzw, v0.xyzw
dp2 r2.x, r3.xyxx, r1.ywyy
dp2 r2.y, r3.zwzz, r1.ywyy
add r1.xyzw, r2.xyzx, cb0[56].xyzx
mad r2.xyzw, cb0[30].xxxx, cb0[29].zzzw, r1.xyzw
sincos r2.xyzw, null, r2.xyzw
dp2 r1.x, r2.wwww, cb0[29].yyyy
add r1.x, -r1.x, cb0[29].y
add r1.x, r1.x, v2.y
sincos null, r2.w, r1.x
mul r2.w, r0.w, r2.w
mul r3.xyz, r2.wwww, cb0[7].xyzx
sincos r2.w, null, -r1.x
add r1.x, r1.x, r1.x
sincos r1.x, null, r1.x
mul r2.w, r0.w, r2.w
mul r0.w, r0.w, l(0.250000)
mad r3.xyz, r2.wwww, cb0[6].xyzx, r3.xyzx
sincos null, r2.w, r1.w
mul r0.w, r0.w, r2.w
mul r0.w, r1.x, r0.w
mad r0.xyz, r0.wwww, r0.xyzx, r3.xyzx
dp2 r0.w, r2.xxxx, cb0[29].xxxx
add r0.w, -r0.w, cb0[29].x
add r3.x, r0.w, r1.w
dp2 r0.w, r2.yyyy, cb0[29].xxxx
dp2 r1.x, r2.zzzz, cb0[29].xxxx
add r1.x, -r1.x, cb0[29].x
add r3.z, r1.x, r1.z
add r0.w, -r0.w, cb0[29].x
add r3.y, r0.w, r1.y
mov r3.w, l(1.000000)
dp4 r1.x, cb0[49].xyzw, r3.xyzw
dp4 r1.y, cb0[50].xyzw, r3.xyzw
dp4 r1.z, cb0[51].xyzw, r3.xyzw
add r0.xyz, r0.xyzx, r1.xyzx
mov r0.w, l(1.000000)
dp4 r1.x, cb0[0].xyzw, r0.xyzw
dp4 r1.y, cb0[1].xyzw, r0.xyzw
dp4 r1.z, cb0[2].xyzw, r0.xyzw
dp4 r1.w, cb0[3].xyzw, r0.xyzw
mov o2.xyz, r0.xyzx
mov o0.xyzw, r1.xyzw
dp4 o3.xyzw, r1.xyzw, cb0[31].xyzw
mul o2.w, r1.w, cb0[5].w
mov o1.xy, v3.xyxx
mov o1.zw, l(0,0,0,0)
ret
// Approximately 62 instruction slots used

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
